클러스터용 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 설정"을 참고하세요. - 클러스터 구성이 포함된 기존
kubectlconfig파일.kubectlconfig파일을 만들려면 "kubeconfig 파일을 만들어 kubectl을 EKS 클러스터에 연결"을 참고하세요.
eksctl 또는 AWS Management Console을 사용해 클러스터용 IAM OIDC 공급자를 생성할 수 있습니다.
OIDC 공급자 생성 (eksctl)
사용 기기나 AWS CloudShell에 eksctl 명령줄 도구 버전 0.215.0 이상이 설치되어 있어야 합니다. eksctl을 설치하거나 업데이트하려면 eksctl 문서의 "Installation"을 참고하세요.
- 클러스터의 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
- 클러스터의 발급자 ID를 가진 IAM OIDC 공급자가 계정에 이미 있는지 확인합니다.
aws iam list-open-id-connect-providers | grep $oidc_id | cut -d "/" -f4
출력이 반환되면 이미 클러스터용 IAM OIDC 공급자가 있으므로 다음 단계를 건너뛸 수 있습니다. 출력이 없으면 클러스터용 IAM OIDC 공급자를 생성해야 합니다.
- 다음 명령으로 클러스터용 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 콘솔)
- Amazon EKS 콘솔을 엽니다.
- 왼쪽 창에서 Clusters를 선택하고 Clusters 페이지에서 클러스터의 이름을 선택합니다.
- Overview 탭의 Details 섹션에서 OpenID Connect provider URL 값을 기록해 둡니다.
- https://console.aws.amazon.com/iam/에서 IAM 콘솔을 엽니다.
- 왼쪽 탐색 창에서 Access management 아래 Identity Providers를 선택합니다. 클러스터의 URL과 일치하는 Provider가 나열되어 있다면 이미 클러스터용 공급자가 있는 것입니다. 클러스터의 URL과 일치하는 공급자가 나열되지 않았다면 생성해야 합니다.
- 공급자를 만들려면 Add provider를 선택합니다.
- Provider type에서 OpenID Connect를 선택합니다.
- Provider URL에 클러스터의 OIDC 공급자 URL을 입력합니다.
- Audience에
sts.amazonaws.com을 입력합니다. - (선택 사항) 이 공급자가 어떤 클러스터용인지 식별하는 태그 같은 태그를 추가합니다.
- Add provider를 선택합니다.
다음 단계
- Kubernetes 서비스 계정에 IAM 역할 할당