IAM 역할을 서비스 계정에 연결 - Amazon EKS

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

IAM 역할을 서비스 계정에 연결

Kubernetes에서 다음 주석을 서비스 계정에 연결하여 클러스터의 서비스 계정에 연결할 IAM 역할을 정의합니다.

참고

를 사용하여 서비스 계정에 사용할 IAM 역할을 생성한 경우eksctl역할을 생성할 때 지정한 서비스 계정에서는 이 작업이 이미 완료되어 있습니다.

apiVersion: v1 kind: ServiceAccount metadata: annotations: eks.amazonaws.com/role-arn: arn:aws:iam::<ACCOUNT_ID>:role/<IAM_ROLE_NAME>

Prerequisites

서비스 계정에 IAM 역할을 주석을 달려면

  1. 다음 명령을 사용하여 서비스 계정에서 사용할 IAM 역할의 ARN 으로 서비스 계정에 주석을 답니다. 단원을 교체해야 합니다.<example values>포함<>) 를 사용자의 값으로 설정합니다.

    kubectl annotate serviceaccount -n <SERVICE_ACCOUNT_NAMESPACE> <SERVICE_ACCOUNT_NAME> \ eks.amazonaws.com/role-arn=arn:aws:iam::<ACCOUNT_ID>:role/<IAM_ROLE_NAME>
    참고

    기존 서비스 계정이 없다면 하나 만들어야 합니다. 자세한 내용은 단원을 참조하십시오.포드에 대한 서비스 계정 구성Kubernetes 설명서의 내용을 참조하십시오. 서비스 계정이 Kubernetes 권한을 사용할 수 있으려면Role또는ClusterRole을 클릭한 다음 역할을 서비스 계정에 바인딩합니다. 자세한 내용은 Kubernetes 문서의 Using RBAC Authorization(RBAC 승인 사용)을 참조하십시오. 다음을 수행하는 경우AWSVPC I 플러그인예를 들어 배포 매니페스트에서 서비스 계정, 클러스터 역할, 클러스터 역할 바인딩을 생성합니다. 다음을 볼 수 있습니다.매니페스트를 GitHub 예제로 사용할 수 있습니다.

  2. 서비스 계정에 연결된 기존 포드를 삭제하고 다시 생성하여 자격 증명 환경 변수를 적용합니다. 변형 웹 후크는 이미 실행 중인 포드에 이 변수를 적용하지 않습니다. 다음 명령은 기존의 aws-node DaemonSet 포드를 삭제하고 서비스 계정 주석을 사용하여 배포합니다. 네임스페이스, 배포 유형 및 라벨을 수정하여 특정 포드를 업데이트할 수 있습니다.

    kubectl delete pods -n <kube-system> -l <k8s-app=aws-node>
  3. 모든 포드가 다시 시작되었는지 확인합니다.

    kubectl get pods -n <kube-system> -l <k8s-app=aws-node>
  4. 포드 중 하나를 설명하고 AWS_WEB_IDENTITY_TOKEN_FILEAWS_ROLE_ARN 환경 변수가 있는지 확인합니다.

    kubectl exec -n kube-system <aws-node-9rgzw> env | grep AWS

    결과:

    AWS_VPC_K8S_CNI_LOGLEVEL=DEBUG AWS_ROLE_ARN=arn:aws:iam::<ACCOUNT_ID>:role/<IAM_ROLE_NAME> AWS_WEB_IDENTITY_TOKEN_FILE=/var/run/secrets/eks.amazonaws.com/serviceaccount/token