Pod Identity를 사용하여 Amazon EKS 추가 기능에 IAM 역할 연결 - Amazon EKS

이 페이지 개선에 도움 주기

이 사용자 설명서에 기여하고 싶으신가요? 이 페이지 하단으로 스크롤하여 GitHub에서 이 페이지 편집을 선택하세요. 여러분의 기여는 모두를 위한 더 나은 사용자 설명서를 만드는 데 도움이 됩니다.

Pod Identity를 사용하여 Amazon EKS 추가 기능에 IAM 역할 연결

특정 Amazon EKS 추가 기능은 AWS API를 호출하려면 IAM 역할 권한이 필요합니다. 예를 들어 Amazon VPC CNI 추가 기능은 특정 AWS API를 호출하여 계정의 네트워킹 리소스를 구성합니다. 이러한 추가 기능에는 AWS IAM을 사용하여 권한을 부여해야 합니다. 좀 더 구체적으로 설명하자면, 추가 기능을 실행하는 포드의 서비스 계정을 충분한 IAM 정책이 있는 IAM 역할과 연결해야 합니다.

클러스터 워크로드에 AWS 권한을 부여하는 방법으로 Amazon EKS 기능인 Pod Identity 사용을 권장합니다. Pod Identity 연결을 사용하여 추가 기능의 서비스 계정을 IAM 역할에 매핑할 수 있습니다. 포드가 연결이 있는 서비스 계정을 사용하는 경우 Amazon EKS는 포드의 컨테이너에 환경 변수를 설정합니다. 환경 변수는 AWS CLI를 포함한 AWS SDK를 구성하여 EKS Pod Identity 보안 인증 정보를 사용합니다. EKS Pod Identity에 대해 자세히 알아보세요.

Amazon EKS 추가 기능은 추가 기능에 해당하는 Pod Identity 연결의 수명 주기를 관리하는 데 도움이 될 수 있습니다. 예를 들어, Amazon EKS 추가 기능과 필요한 Pod Identity 연결을 단일 API 호출로 생성하거나 업데이트할 수 있습니다. Amazon EKS는 제안된 IAM 정책을 검색하기 위한 API도 제공합니다.

권장 사용법:
  1. Amazon EKS Pod Identity 에이전트가 클러스터에 설치되어 있는지 확인합니다.

  2. describe-addon-versions AWS CLI 작업을 사용하여 설치하려는 추가 기능에 IAM 권한이 필요한지 확인하세요. requiresIamPermissions 플래그가 true인 경우 describe-addon-configurations 작업을 사용하여 추가 기능에 필요한 권한을 결정해야 합니다. 응답에는 권장 관리형 IAM 정책 목록이 포함됩니다.

  3. describe-addon-configuration CLI 작업을 사용하여 Kubernetes 서비스 계정의 이름과 제안된 IAM 정책을 검색합니다. 보안 요구 사항을 기준으로 제안된 정책의 범위를 평가합니다.

  4. 제안된 권한 정책과 Pod Identity에 필요한 신뢰 정책을 사용하여 IAM 역할을 생성합니다. 자세한 내용은 EKS Pod Identity 연결 생성 단원을 참조하십시오.

  5. CLI를 사용하여 Amazon EKS 추가 기능을 생성 또는 업데이트합니다. Pod Identity 연결을 하나 이상 지정합니다. Pod Identity 연결은 (1) 쿠버네티스 서비스 계정의 이름, (2) IAM 역할의 ARN입니다.

고려 사항:
  • 추가 기능 API를 사용하여 생성된 Pod Identity 연결은 해당 추가 기능이 소유합니다. 추가 기능을 삭제하면 Pod Identity 연결도 삭제됩니다. AWS CLI 또는 API를 사용하여 추가 기능을 삭제할 때 preserve 옵션을 사용하면 이러한 연속 삭제를 방지할 수 있습니다. 필요한 경우 Pod Identity 연결을 직접 업데이트하거나 삭제할 수도 있습니다. 추가 기능은 기존 Pod Identity 연결의 소유권을 수임할 수 없습니다. 추가 기능 생성 또는 업데이트 작업을 사용하여 기존 연결을 삭제하고 다시 생성해야 합니다.

  • Amazon EKS는 Pod Identity 연결을 사용하여 추가 기능에 대한 IAM 권한을 관리할 것을 권장합니다. 이전 방법인 서비스 계정에 대한 IAM 역할(IRSA)은 여전히 지원됩니다. 추가 기능에 대해 IRSA serviceAccountRoleArn 및 Pod Identity 연결을 모두 지정할 수 있습니다. EKS Pod Identity 에이전트가 클러스터에 설치된 경우 serviceAccountRoleArn은 무시되고 EKS는 제공된 Pod Identity 연결을 사용합니다. Pod Identity가 활성화되지 않은 경우, serviceAccountRoleArn이 사용됩니다.

  • 기존 추가 기능의 Pod Identity 연결을 업데이트하면 Amazon EKS가 추가 기능 포드의 롤링 재시작을 시작합니다.

추가 기능에 대한 IAM 정보 검색

AWS CLI를 사용하여 (1) 추가 기능에 IAM 권한이 필요한지 여부와 (2) 해당 추가 기능에 대한 권장 IAM 정책을 결정할 수 있습니다.

Amazon EKS 추가 기능에 대한 IAM 정보 검색(AWS CLI)
  1. 설치하려는 추가 기능의 이름과 클러스터의 Kubernetes 버전을 결정합니다. 사용할 수 있는 Amazon EKS 추가 기능에 대해 자세히 알아보세요.

  2. AWS CLI를 사용하여 추가 기능에 IAM 권한이 필요한지 확인할 수 있습니다.

    aws eks describe-addon-versions \ --addon-name <addon-name> \ --kubernetes-version <kubernetes-version>

    예:

    aws eks describe-addon-versions \ --addon-name aws-ebs-csi-driver \ --kubernetes-version 1.30

    다음 샘플 출력을 검토하세요. 또한 requiresIamPermissionstrue이며 기본 추가 기능 버전입니다. 권장 IAM 정책을 검색할 때 추가 기능 버전을 지정해야 합니다.

    { "addons": [ { "addonName": "aws-ebs-csi-driver", "type": "storage", "addonVersions": [ { "addonVersion": "v1.31.0-eksbuild.1", "architecture": [ "amd64", "arm64" ], "compatibilities": [ { "clusterVersion": "1.30", "platformVersions": [ "*" ], "defaultVersion": true } ], "requiresConfiguration": false, "requiresIamPermissions": true }, [...]
  3. 추가 기능에 IAM 권한이 필요한 경우 AWS CLI를 사용하여 권장 IAM 정책을 검색하세요.

    aws eks describe-addon-configuration \ --query podIdentityConfiguration \ --addon-name <addon-name> \ --addon-version <addon-version>

    예:

    aws eks describe-addon-configuration \ --query podIdentityConfiguration \ --addon-name aws-ebs-csi-driver \ --addon-version v1.31.0-eksbuild.1

    다음 출력을 검토하세요. recommendedManagedPolicies을 기록합니다.

    [ { "serviceAccount": "ebs-csi-controller-sa", "recommendedManagedPolicies": [ "arn:aws:iam::aws:policy/service-role/AmazonEBSCSIDriverPolicy" ] } ]
  4. IAM 역할을 생성하고 관리형 정책을 연결합니다. 또는 관리형 정책을 검토하고 필요에 따라 권한 범위를 좁힐 수도 있습니다. EKS Pod Identity와 함께 사용할 IAM 역할 생성 지침을 검토하세요.

IAM 역할을 사용한 추가 기능 업데이트

Pod Identity 연결을 사용하도록 Amazon EKS 추가 기능 업데이트(AWS CLI)
  1. 결정 필요:

    • cluster-name - 추가 기능을 설치할 EKS 클러스터의 이름입니다.

    • addon-name - 설치할 Amazon EKS 추가 기능의 이름입니다.

    • service-account-name - 추가 기능이 사용하는 Kubernetes 서비스 계정의 이름입니다.

    • iam-role-arn - 추가 기능에 대한 충분한 권한이 있는 IAM 역할의 ARN입니다. IAM 역할에는 EKS Pod Identity에 필요한 신뢰 정책이 있어야 합니다.

  2. AWS CLI를 사용하여 추가 기능을 업데이트합니다. 추가 기능을 생성할 때 동일한 --pod-identity-assocations 구문을 사용하여 Pod Identity 연결을 지정할 수도 있습니다. 추가 기능을 업데이트하는 동안 Pod Identity 연결을 지정하면 이전의 모든 Pod Identity 연결이 덮어쓰여진다는 점에 유의하세요.

    aws eks update-addon --cluster-name <cluster-name> \ --addon-name <addon-name> \ --pod-identity-associations 'serviceAccount=<service-account-name>,roleArn=<role-arn>'

    예:

    aws eks update-addon --cluster-name mycluster \ --addon-name aws-ebs-csi-driver \ --pod-identity-associations 'serviceAccount=ebs-csi-controller-sa,roleArn=arn:aws:iam::123456789012:role/StorageDriver'
  3. Pod Identity 연결이 생성되었는지 확인합니다.

    aws eks list-pod-identity-associations --cluster-name <cluster-name>

    성공한 경우 다음과 유사한 출력 화면이 표시되어야 합니다. EKS 추가 기능의 OwnerARN을 기록해 둡니다.

    { "associations": [ { "clusterName": "mycluster", "namespace": "kube-system", "serviceAccount": "ebs-csi-controller-sa", "associationArn": "arn:aws:eks:us-west-2:123456789012:podidentityassociation/mycluster/a-4wvljrezsukshq1bv", "associationId": "a-4wvljrezsukshq1bv", "ownerArn": "arn:aws:eks:us-west-2:123456789012:addon/mycluster/aws-ebs-csi-driver/9cc7ce8c-2e15-b0a7-f311-426691cd8546" } ] }

추가 기능에서 연결 제거

Amazon EKS 추가 기능에서 모든 Pod Identity 연결 제거(AWS CLI)
  1. 결정 필요:

    • cluster-name - 추가 기능을 설치할 EKS 클러스터의 이름입니다.

    • addon-name - 설치할 Amazon EKS 추가 기능의 이름입니다.

  2. 추가 기능을 업데이트하여 Pod Identity 연결의 빈 배열을 지정합니다.

    aws eks update-addon --cluster-name <cluster-name> \ --addon-name <addon-name> \ --pod-identity-associations "[]"

EKS 추가 기능의 Pod Identity 문제 해결

AWS API, SDK 또는 CLI 작업을 시도하는 동안 추가 기능에 오류가 발생하는 경우 다음 사항을 확인하세요.

  • Pod Identity 에이전트가 클러스터에 설치되어 있습니다.

  • 추가 기능에 유효한 Pod Identity 연결이 있습니다.

    • AWS CLI를 사용하여 추가 기능이 사용하는 서비스 계정 이름에 대한 연결을 검색할 수 있습니다.

      aws eks list-pod-identity-associations --cluster-name <cluster-name>
  • 의도된 IAM 역할에는 EKS Pod Identity에 필요한 신뢰 정책이 있습니다.

    • AWS CLI를 사용하여 추가 기능에 대한 신뢰 정책을 검색할 수 있습니다.

      aws iam get-role --role-name <role-name> --query Role.AssumeRolePolicyDocument
  • 의도된 IAM 역할에는 추가 기능에 필요한 권한이 있습니다.

    • AWS CloudTrail를 사용해 AccessDenied UnauthorizedOperation 이벤트를 검토합니다.

  • Pod Identity 연결의 서비스 계정 이름이 추가 기능이 사용하는 서비스 계정 이름과 일치합니다.