이 페이지 개선에 도움 주기
이 사용자 설명서에 기여하고 싶으신가요? 이 페이지 하단으로 스크롤하여 GitHub에서 이 페이지 편집을 선택하세요. 여러분의 기여는 모두를 위한 더 나은 사용자 설명서를 만드는 데 도움이 됩니다.
Kubernetes 서비스 계정을 사용하도록 Pods 구성
Pod가 AWS 서비스에 액세스해야 하는 경우 Kubernetes 서비스 계정을 사용하도록 구성해야 합니다. 서비스 계정은 AWS 서비스에 액세스할 수 있는 권한이 있는 AWS Identity and Access Management(IAM) 역할에 연결되어야 합니다.
필수 조건
-
기존 클러스터가 있어야 합니다. 아직 없는 경우 Amazon EKS 시작하기 가이드 중 하나를 사용하여 생성할 수 있습니다.
-
기존 Kubernetes 서비스 계정 및 서비스 계정을 IAM 역할에 연결하는 EKS Pod Identity 연결 Pods가 AWS 서비스를 사용하는 데 필요한 권한을 포함하는 연결된 IAM 정책이 역할에 있어야 합니다. 서비스 계정 및 역할을 만들고 구성하는 방법에 대한 자세한 내용을 알아보려면 EKS Pod Identity 관련 IAM 역할을 수임하도록 Kubernetes 서비스 계정 구성 섹션을 참조하세요.
-
AWS CLI의 최신 버전이 디바이스나 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.29
인 경우kubectl
버전1.28
,1.29
또는1.30
를 함께 사용할 수 있습니다.kubectl
을 설치하거나 업그레이드하려면 kubectl 설치 또는 업데이트 부분을 참조하세요. -
클러스터 구성이 포함된 기존
kubectl
config
파일입니다.kubectl
config
파일을 생성하려면 Amazon EKS 클러스터용 kubeconfig 파일 생성 또는 업데이트 섹션을 참조하세요.
서비스 계정을 사용하도록 Pod 구성
-
다음 명령을 사용하여 구성을 확인할 Pod를 배포할 수 있는 배포 매니페스트를 생성합니다.
를 고유한 값으로 바꿉니다.example values
cat >
my-deployment.yaml
<<EOF apiVersion: apps/v1 kind: Deployment metadata: name:my-app
spec: selector: matchLabels: app:my-app
template: metadata: labels: app:my-app
spec: serviceAccountName:my-service-account
containers: - name:my-app
image:public.ecr.aws/nginx/nginx:X.XX
EOF -
클러스터에 매니페스트를 배포합니다.
kubectl apply -f
my-deployment.yaml
-
Pod에 필요한 환경 변수가 있는지 확인합니다.
-
이전 단계에서 배포와 함께 배포된 Pods를 봅니다.
kubectl get pods | grep
my-app
예제 출력은 다음과 같습니다.
my-app
-6f4dfff6cb-76cv9
1/1 Running 0 3m28s -
Pod에 서비스 계정 토큰 파일 탑재가 있는지 확인합니다.
kubectl describe pod
my-app
-6f4dfff6cb-76cv9
| grep AWS_CONTAINER_AUTHORIZATION_TOKEN_FILE:예제 출력은 다음과 같습니다.
AWS_CONTAINER_AUTHORIZATION_TOKEN_FILE: /var/run/secrets/pods.eks.amazonaws.com/serviceaccount/eks-pod-identity-token
-
-
역할에 연결된 IAM 정책에서 할당한 권한을 사용하여 Pods가 AWS 서비스와 상호 작용할 수 있는지 확인합니다.
참고
Pod가 서비스 계정과 연결된 IAM 역할의 AWS 자격 증명을 사용하는 경우 해당 AWS CLI의 컨테이너에 있는 Pod 또는 기타 SDK에서는 이 역할이 제공하는 자격 증명을 사용합니다. Amazon EKS 노드 IAM 역할에 제공된 자격 증명에 대한 액세스를 제한하지 않으면 Pod는 계속해서 해당 자격 증명에 액세스할 수 있습니다. 자세한 내용은 작업자 노드에 할당된 인스턴스 프로파일에 대한 액세스 제한
부분을 참조하세요. Pods가 예상대로 서비스와 상호 작용할 수 없으면 다음 단계를 완료하여 모두 제대로 구성되었는지 확인합니다.
-
Pods에서 EKS Pod Identity 연결을 통해 IAM 역할을 수임할 수 있도록 지원하는 AWS SDK 버전을 사용하는지 확인합니다. 자세한 내용은 지원되는 AWS SDK 사용 단원을 참조하십시오.
-
배포에서 서비스 계정을 사용하고 있는지 확인합니다.
kubectl describe deployment
my-app
| grep "Service Account"예제 출력은 다음과 같습니다.
Service Account:
my-service-account
-