클러스터에 대한 IAM OIDC 공급자 생성 - Amazon EKS

클러스터에 대한 IAM OIDC 공급자 생성

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

필수 조건
  • 기존 Amazon EKS 클러스터. 배포하려면 Amazon EKS 시작하기 섹션을 참조하세요.

  • AWS Command Line Interface(AWS CLI) 버전 2.12.3 이상 또는 1.27.160 이상이 디바이스나 AWS CloudShell에 설치 및 구성되어 있습니다. 현재 버전을 확인하려면 aws --version | cut -d / -f2 | cut -d ' ' -f1을 사용합니다. macOS용 yum, apt-get 또는 Homebrew와 같은 패키지 관리자는 최신 버전의 AWS CLI보다 여러 버전 이전인 경우가 많습니다. 최신 버전을 설치하려면 AWS Command Line Interface 사용 설명서의 AWS CLI 설치, 업데이트 및 제거aws configure를 통한 빠른 구성을 참조하세요. AWS CloudShell에 설치된 AWS CLI 버전도 최신 버전보다 여러 버전 이전일 수도 있습니다. 업데이트하려면 AWS CloudShell 사용 설명서의 홈 디렉터리에 AWS CLI 설치를 참조하세요.

  • 디바이스 또는 AWS CloudShell에 설치된 kubectl 명령줄 도구. 버전은 클러스터의 Kubernetes 버전과 동일하거나 최대 하나 이전 또는 이후의 마이너 버전일 수 있습니다. 예를 들어 클러스터 버전이 1.28인 경우 kubectl 버전 1.27, 1.28 또는 1.29를 함께 사용할 수 있습니다. kubectl을 설치하거나 업그레이드하려면 kubectl 설치 또는 업데이트 부분을 참조하세요.

  • 클러스터 구성이 포함된 기존 kubectl config 파일입니다. kubectl config 파일을 생성하려면 Amazon EKS 클러스터용 kubeconfig 파일 생성 또는 업데이트 섹션을 참조하세요.

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

eksctl
전제 조건

디바이스 또는 0.175.0에 설치된 버전 AWS CloudShell 이상의 eksctl 명령줄 도구. eksctl을 설치 또는 업그레이드하려면 eksctl 설명서에서 Installation을 참조하세요.

eksctl로 클러스터의 IAM OIDC ID 제공업체 생성
  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
  2. 클러스터의 발행자 ID를 가진 IAM OIDC 제공업체가 이미 계정에 있는지 판단합니다.

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

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

  3. 다음 명령을 사용하여 클러스터의 IAM OIDC ID 제공업체를 생성합니다.

    eksctl utils associate-iam-oidc-provider --cluster $cluster_name --approve
    참고

    EKS VPC 엔드포인트를 활성화할 경우 해당 VPC 내에서 EKS OIDC 서비스 엔드포인트에 액세스할 수 없습니다. 따라서 VPC에서 eksctl을 통해 OIDC 공급자를 생성하는 등의 작업은 작동하지 않으며 https://oidc.eks.region.amazonaws.com 요청을 시도할 때 시간 초과가 발생합니다. 오류 메시지의 예는 다음과 같습니다.

    ** server can't find oidc.eks.region.amazonaws.com: NXDOMAIN

    이 단계를 완료하려면 VPC 외부(예: AWS CloudShell 또는 인터넷에 연결된 컴퓨터)에서 명령을 실행할 수 있습니다.

AWS Management Console
AWS Management Console로 클러스터의 IAM OIDC ID 제공업체 생성
  1. https://console.aws.amazon.com/eks/home#/clusters에서 Amazon EKS 콘솔을 엽니다.

  2. 왼쪽 창에서 클러스터(Clusters)를 선택한 다음 클러스터(Clusters) 페이지에서 클러스터 이름을 선택합니다.

  3. 개요(Overview) 탭의 세부 정보(Details) 섹션에서 OpenID Connect 공급자 URL(OpenID Connect provider URL)의 값을 적어 둡니다.

  4. https://console.aws.amazon.com/iam/에서 IAM 콘솔을 엽니다.

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

  6. 제공업체를 생성하려면 Add Provider(공급자 추가)를 선택합니다.

  7. Provider type(제공업체 유형)에서 OpenID Connect를 선택합니다.

  8. Provider URL(제공업체 URL)에 클러스터의 OIDC 제공업체 URL을 입력하고 Get thumbprint(지문 가져오기)를 선택합니다.

  9. [대상(Audience)에서 sts.amazonaws.com을 입력하고 [공급자 추가(Add provider)]를 선택합니다.

다음 단계

IAM 역할을 수임하도록 Kubernetes 서비스 계정 구성