EKS Pod Identity 작동 방식 이해하기

EKS Pod Identity 작동 방식 이해하기

Amazon EKS Pod Identity가 워크로드에 자격 증명을 제공하는 방식을 설명합니다.

출처: 문서

본문

Amazon EKS Pod Identity 연결은 Amazon EC2 인스턴스 프로파일이 Amazon EC2 인스턴스에 자격 증명을 제공하는 방식과 유사하게, 애플리케이션의 자격 증명을 관리하는 기능을 제공합니다.

Amazon EKS Pod Identity는 추가 EKS Auth API와 각 노드에서 실행되는 에이전트 Pod를 통해 워크로드에 자격 증명을 제공합니다.

Amazon EKS 애드온, 자체 관리형 컨트롤러, 운영자 및 기타 애드온 같은 애드온에서, 작성자는 소프트웨어를 최신 AWS SDK를 사용하도록 업데이트해야 합니다. EKS Pod Identity와 Amazon EKS가 제공하는 애드온 간의 호환성 목록은 이전 섹션 "EKS Pod Identity 제한 사항"을 참고하세요.

코드에서 EKS Pod Identity 사용

코드에서 AWS SDK를 사용해 AWS 서비스에 액세스할 수 있습니다. SDK로 AWS 서비스용 클라이언트를 만드는 코드를 작성하면, 기본적으로 SDK는 사용할 AWS Identity and Access Management 자격 증명을 위해 일련의 위치에서 검색합니다. 유효한 자격 증명을 찾으면 검색이 중지됩니다. 기본적으로 사용되는 위치에 대한 자세한 내용은 AWS SDKs and Tools Reference Guide의 "Credential provider chain"을 참고하세요.

EKS Pod Identity는 기본 자격 증명 체인의 한 단계에서 검색되는 Container credential provider에 추가되었습니다. 워크로드가 현재 자격 증명 체인에서 더 앞선 자격 증명을 사용한다면, 같은 워크로드에 EKS Pod Identity 연결을 구성하더라도 그 자격 증명이 계속 사용됩니다. 이렇게 하면 기존 자격 증명을 제거하기 전에 먼저 연결을 만들어 다른 유형의 자격 증명에서 안전하게 마이그레이션할 수 있습니다.

컨테이너 자격 증명 공급자는 각 노드에서 실행되는 에이전트의 임시 자격 증명을 제공합니다. Amazon EKS에서 에이전트는 Amazon EKS Pod Identity Agent이고, Amazon Elastic Container Service에서는 에이전트는 amazon-ecs-agent입니다. SDK는 환경 변수를 사용해 연결할 에이전트를 찾습니다.

반면, 서비스 계정용 IAM 역할은 AWS SDK가 AssumeRoleWithWebIdentity를 사용해 AWS Security Token Service와 교환해야 하는 웹 ID 토큰을 제공합니다.

EKS Pod Identity Agent가 Pod와 함께 작동하는 방식

Amazon EKS가 EKS Pod Identity 연결이 있는 서비스 계정을 사용하는 새 Pod를 시작하면 클러스터는 Pod 매니페스트에 다음 내용을 추가합니다.

    env:
    - name: AWS_CONTAINER_AUTHORIZATION_TOKEN_FILE
      value: "/var/run/secrets/pods.eks.amazonaws.com/serviceaccount/eks-pod-identity-token"
    - name: AWS_CONTAINER_CREDENTIALS_FULL_URI
      value: "http://169.254.170.23/v1/credentials"
    volumeMounts:
    - mountPath: "/var/run/secrets/pods.eks.amazonaws.com/serviceaccount/"
      name: eks-pod-identity-token
  volumes:
  - name: eks-pod-identity-token
    projected:
      defaultMode: 420
      sources:
      - serviceAccountToken:
          audience: pods.eks.amazonaws.com
          expirationSeconds: 86400 # 24 hours
          path: eks-pod-identity-token

Kubernetes는 Pod를 실행할 노드를 선택합니다. 그런 다음 노드의 Amazon EKS Pod Identity Agent가 AssumeRoleForPodIdentity 작업을 사용해 EKS Auth API에서 임시 자격 증명을 검색합니다.

EKS Pod Identity Agent는 컨테이너 내부에서 실행하는 AWS SDK가 사용할 수 있도록 이 자격 증명을 제공합니다.

애플리케이션에서 SDK를 사용하되 기본 자격 증명 체인을 사용하기 위해 자격 증명 공급자를 지정하지 않거나, 컨테이너 자격 증명 공급자를 지정할 수 있습니다. 기본적으로 사용되는 위치에 대한 자세한 내용은 AWS SDKs and Tools Reference Guide의 "Credential provider chain"을 참고하세요.

SDK는 환경 변수를 사용해 EKS Pod Identity Agent에 연결하고 자격 증명을 검색합니다.

참고: 워크로드가 현재 자격 증명 체인에서 더 앞선 자격 증명을 사용한다면, 같은 워크로드에 EKS Pod Identity 연결을 구성하더라도 그 자격 증명이 계속 사용됩니다.

더 알아보기 (Learn more)