클러스터용 IAM OIDC 공급자 생성

클러스터용 IAM OIDC 공급자 생성

서비스 계정용 IAM 역할(IRSA)을 사용하기 위해 클러스터에 IAM OpenID Connect(OIDC) 공급자를 생성하는 방법을 설명합니다.

출처: 문서

본문

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

전제 조건

  • 기존 Amazon EKS 클러스터. 배포하려면 "Amazon EKS 시작하기"를 참고하세요.
  • 사용 기기나 AWS CloudShell에 버전 2.12.3 이상 또는 버전 1.27.160 이상의 AWS Command Line Interface(AWS CLI)가 설치되어 구성되어 있어야 합니다. 현재 버전을 확인하려면 aws --version | cut -d / -f2 | cut -d ' ' -f1을 사용하세요. yum, apt-get, macOS용 Homebrew 같은 패키지 관리자는 AWS CLI 최신 버전보다 몇 버전 뒤처져 있는 경우가 많습니다. 최신 버전 설치 방법은 AWS Command Line Interface 사용 설명서의 "Installing" 및 "aws configure를 사용한 빠른 구성"을 참고하세요. AWS CloudShell에 설치된 AWS CLI 버전도 최신 버전보다 몇 버전 뒤처져 있을 수 있습니다. 업데이트 방법은 AWS CloudShell 사용 설명서의 "홈 디렉터리에 AWS CLI 설치"를 참고하세요.
  • 사용 기기나 AWS CloudShell에 kubectl 명령줄 도구가 설치되어 있어야 합니다. 버전은 클러스터의 Kubernetes 버전과 같거나 최대 한 개의 부 버전 앞뒤가 될 수 있습니다. 예를 들어 클러스터 버전이 1.29라면 kubectl 버전 1.28, 1.29, 1.30을 사용할 수 있습니다. kubectl 설치 또는 업그레이드 방법은 "kubectl 및 eksctl 설정"을 참고하세요.
  • 클러스터 구성이 포함된 기존 kubectl config 파일. kubectl config 파일을 만들려면 "kubeconfig 파일을 만들어 kubectl을 EKS 클러스터에 연결"을 참고하세요.

eksctl 또는 AWS Management Console을 사용해 클러스터용 IAM OIDC 공급자를 생성할 수 있습니다.

OIDC 공급자 생성 (eksctl)

사용 기기나 AWS CloudShell에 eksctl 명령줄 도구 버전 0.215.0 이상이 설치되어 있어야 합니다. eksctl을 설치하거나 업데이트하려면 eksctl 문서의 "Installation"을 참고하세요.

  1. 클러스터의 OIDC 발급자 ID를 확인합니다.

클러스터의 OIDC 발급자 ID를 검색해 변수에 저장합니다. ``를 자신의 값으로 바꾸세요.

cluster_name=
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

참고: 클러스터의 VPC에 아웃바운드 인터넷 액세스가 없고 클러스터 OIDC 엔드포인트에 대한 프라이빗 액세스를 설정하지 않았다면, eksctl로 OIDC 공급자를 생성하는 것처럼 VPC 내부에서 해당 엔드포인트에 도달하는 작업은 OIDC 발급자 호스트 이름을 확인할 수 없습니다. 예제 오류 메시지는 다음과 같습니다.

** server cant find oidc.eks..amazonaws.com: NXDOMAIN

VPC에서 클러스터 OIDC 엔드포인트에 프라이빗으로 도달하려면, 프라이빗 DNS를 활성화한 상태에서 이에 대한 VPC 인터페이스 엔드포인트(com.amazonaws..oidc-eks)를 생성하세요. 자세한 내용은 "AWS PrivateLink를 사용한 클러스터 OIDC 엔드포인트 액세스"를 참고하세요. 또는 VPC 외부(예: AWS CloudShell)에서 명령을 실행하거나 split-horizon 조건부 리졸버를 만들 수도 있습니다. 예제는 GitHub의 Amazon EKS 기능 요청을 참고하세요.

OIDC 공급자 생성 (AWS 콘솔)

  1. Amazon EKS 콘솔을 엽니다.
  2. 왼쪽 창에서 Clusters를 선택하고 Clusters 페이지에서 클러스터의 이름을 선택합니다.
  3. Overview 탭의 Details 섹션에서 OpenID Connect provider URL 값을 기록해 둡니다.
  4. https://console.aws.amazon.com/iam/에서 IAM 콘솔을 엽니다.
  5. 왼쪽 탐색 창에서 Access management 아래 Identity Providers를 선택합니다. 클러스터의 URL과 일치하는 Provider가 나열되어 있다면 이미 클러스터용 공급자가 있는 것입니다. 클러스터의 URL과 일치하는 공급자가 나열되지 않았다면 생성해야 합니다.
  6. 공급자를 만들려면 Add provider를 선택합니다.
  7. Provider type에서 OpenID Connect를 선택합니다.
  8. Provider URL에 클러스터의 OIDC 공급자 URL을 입력합니다.
  9. Audience에 sts.amazonaws.com을 입력합니다.
  10. (선택 사항) 이 공급자가 어떤 클러스터용인지 식별하는 태그 같은 태그를 추가합니다.
  11. Add provider를 선택합니다.

다음 단계

  • Kubernetes 서비스 계정에 IAM 역할 할당

더 알아보기 (Learn more)