

 **이 페이지 개선에 도움 주기** 

이 사용자 가이드에 기여하려면 모든 페이지의 오른쪽 창에 있는 **GitHub에서 이 페이지 편집** 링크를 선택합니다.

# 클러스터에 대한 IAM OIDC 공급자 생성
<a name="enable-iam-roles-for-service-accounts"></a>

클러스터에는 [OpenID Connect](https://openid.net/connect/)(OIDC) 발급자 URL이 연결되어 있습니다. 서비스 계정에 AWS Identity and Access Management(IAM) 역할을 사용하려면 클러스터의 OIDC 발급자 URL에 IAM OIDC 제공자가 있어야 합니다.

## 사전 조건
<a name="_prerequisites"></a>
+ 기존 Amazon EKS 클러스터. 배포하려면 [Amazon EKS 시작하기](getting-started.md) 섹션을 참조하세요.
+ 장치에 설치 및 구성된 AWS 명령줄 인터페이스(AWS CLI)의 버전 `2.12.3` 이상 또는 버전 `1.27.160` 이상 또는 AWS CloudShell. 현재 버전을 확인하려면 `aws --version | cut -d / -f2 | cut -d ' ' -f1`을 사용합니다. `yum`, `apt-get` 또는 macOS용 Homebrew와 같은 패키지 관리자는 최신 버전의 AWS CLI 이전에 나온 버전이 몇 가지 있을 때도 있습니다. 최신 버전을 설치하려면 * AWS 명령줄 인터페이스 사용 설명서*에서 [설치](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-install.html) 및 [aws config를 사용하여 빠른 구성](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-quickstart.html#cli-configure-quickstart-config)을 참조하세요. AWS CloudShell에 설치된 AWS CLI 버전도 최신 버전보다 여러 버전 이전일 수도 있습니다. 업데이트하려면 * AWS CloudShell 사용 설명서*의 [홈 디렉터리에 AWS CLI 설치하기](https://docs.aws.amazon.com/cloudshell/latest/userguide/vm-specs.html#install-cli-software)를 참조하세요.
+ `kubectl` 명령줄 도구는 장치 또는 AWS CloudShell에 설치됩니다. 버전은 클러스터의 Kubernetes 버전과 동일하거나 최대 하나 이전 또는 이후의 마이너 버전일 수 있습니다. 예를 들어, 클러스터 버전이 `1.29`인 경우 `kubectl` 버전 `1.28`, `1.29` 또는 `1.30`를 함께 사용할 수 있습니다. `kubectl`을 설치하거나 업그레이드하려면 [`kubectl` 및 `eksctl` 설정](install-kubectl.md) 부분을 참조하세요.
+ 클러스터 구성이 포함된 기존 `kubectl` `config` 파일입니다. `kubectl` `config` 파일을 생성하려면 [Kubeconfig 파일을 생성하여 kubectl을 EKS 클러스터에 연결](create-kubeconfig.md) 섹션을 참조하세요.

`eksctl` 또는 AWS Management Console을 사용하여 클러스터에 대한 IAM OIDC 제공자를 생성할 수 있습니다.

## OIDC 공급자 생성(eksctl)
<a name="_create_oidc_provider_eksctl"></a>

1. 장치에 설치된 `eksctl` 명령줄 도구의 버전 `0.215.0` 이상 또는 AWS CloudShell이 필요합니다. `eksctl`을 설치 또는 업그레이드하려면 `eksctl` 설명서에서 [설치](https://eksctl.io/installation)를 참조하세요.

1. 클러스터의 OIDC 발행자 ID를 판단합니다.

   클러스터의 OIDC 발행자 ID를 검색하고 변수에 저장합니다. `<my-cluster>`을 사용자의 고유한 값으로 교체합니다.

   ```
   cluster_name=<my-cluster>
   oidc_id=$(aws eks describe-cluster --name $cluster_name --query "cluster.identity.oidc.issuer" --output text | cut -d '/' -f 5)
   echo $oidc_id
   ```

1. 클러스터의 발행자 ID를 가진 IAM OIDC 제공자가 이미 계정에 있는지 판단합니다.

   ```
   aws iam list-open-id-connect-providers | grep $oidc_id | cut -d "/" -f4
   ```

   출력이 반환되면 클러스터에 대한 IAM OIDC 제공자가 이미 있는 것이므로 다음 단계를 건너뛸 수 있습니다. 출력이 반환되지 않은 경우 해당 클러스터에 대한 IAM OIDC 공급자를 생성해야 합니다.

1. 다음 명령을 사용하여 클러스터의 IAM OIDC ID 공급자를 생성합니다.

   ```
   eksctl utils associate-iam-oidc-provider --cluster $cluster_name --approve
   ```
**참고**  
EKS VPC 엔드포인트를 활성화한 경우 해당 VPC 내에서 EKS OIDC 서비스 엔드포인트에 액세스할 수 없습니다. 그에 따라 VPC에서 `eksctl`을 통해 OIDC 공급자를 생성하는 등의 작업은 작동하지 않으며 시간 초과가 발생합니다. 오류 메시지의 예는 다음과 같습니다.  

   ```
   ** server cant find oidc.eks.<region-code>.amazonaws.com: NXDOMAIN
   ```

   이 단계를 완료하려면 VPC 외부(예: AWS CloudShell 또는 인터넷에 연결된 컴퓨터)에서 명령을 실행할 수 있습니다. 또는 VPC에서 Route 53 Resolver와 같은 분할-수평 조건부 확인자를 생성하여 OIDC 발급자 URL에 대해 다른 확인자를 사용하고 VPC DNS를 사용하지 않을 수 있습니다. CoreDNS의 조건부 전달의 예는 GitHub의 [Amazon EKS feature request](https://github.com/aws/containers-roadmap/issues/2038)를 참조하세요.

## OIDC 공급자 생성(AWS 콘솔)
<a name="create_oidc_provider_shared_aws_console"></a>

1. [Amazon EKS 콘솔](https://console.aws.amazon.com/eks/home#/clusters)을 엽니다.

1. 왼쪽 창에서 **클러스터**를 선택한 다음 **클러스터** 페이지에서 클러스터 이름을 선택합니다.

1. **개요** 탭의 **세부 정보** 섹션에서 **OpenID Connect 공급자 URL**의 값을 적어 둡니다.

1. IAM 콘솔(https://console.aws.amazon.com/iam/)을 엽니다.

1. 왼쪽 탐색 창의 **액세스 관리**에서 **자격 증명 공급자**를 선택합니다. 클러스터의 URL과 일치하는 **공급자**가 목록에 있으면 클러스터에 대한 공급자가 이미 있는 것입니다. 클러스터의 URL과 일치하는 공급자가 나열되지 않는 경우 공급자를 생성해야 합니다.

1. 공급자를 생성하려면 **공급자 추가**를 선택합니다.

1. **제공업체 유형**에서 **OpenID Connect**를 선택합니다.

1. **공급자 URL**에 클러스터의 OIDC 제공자 URL을 입력합니다.

1. **대상**에 `sts.amazonaws.com`을 입력합니다.

1. (선택사항) 원하는 태그(예: 이 공급자의 클러스터를 식별하는 태그)를 추가합니다.

1. **공급자 추가**를 선택합니다.

다음 단계: [Kubernetes 서비스 계정에 IAM 역할 할당](associate-service-account-role.md) 