기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
EKS 액세스 항목
eksctl을 사용하여 EKS 액세스 항목을 관리할 수 있습니다. 액세스 항목을 사용하여 AWS IAM 자격 증명에 Kubernetes 권한을 부여합니다. 예를 들어 개발자 역할에 클러스터의 Kubernetes 리소스를 읽을 수 있는 권한을 부여할 수 있습니다.
이 주제에서는 eksctl을 사용하여 액세스 항목을 관리하는 방법을 다룹니다. 액세스 항목에 대한 일반적인 내용은 IAM 사용자에게 EKS 액세스 항목을 사용하여 Kubernetes에 대한 액세스 권한 부여를 참조하세요.
AWS에서 정의한 Kubernetes 액세스 정책을 연결하거나 IAM 자격 증명을 Kubernetes 그룹과 연결할 수 있습니다.
사용 가능한 사전 정의된 정책에 대한 자세한 내용은 액세스 정책과 액세스 항목 연결을 참조하세요.
고객 Kubernetes 정책을 정의해야 하는 경우 IAM 자격 증명을 Kubernetes 그룹과 연결하고 해당 그룹에 권한을 부여합니다.
클러스터 인증 모드
클러스터의 인증 모드에서 허용하는 경우에만 액세스 항목을 사용할 수 있습니다.
자세한 내용은 클러스터 인증 모드 설정을 참조하세요.
YAML 파일로 인증 모드 설정
eksctl는 ClusterConfig 아래에 다음 세 가지 값 중 하나로 설정할 수 있는 새 accessConfig.authenticationMode 필드를 추가했습니다.
-
CONFIG_MAP- EKS API의 기본값 -aws-authConfigMap만 사용됩니다. -
API- 액세스 항목 API만 사용됩니다. -
API_AND_CONFIG_MAP-의 기본값eksctl-aws-authConfigMap 및 액세스 항목 모두 API를 사용할 수 있습니다.
ClusterConfig YAML에서 인증 모드 설정:
accessConfig: authenticationMode: <>
명령을 사용하여 인증 모드 업데이트
CONFIG_MAP 옵션이 사용되는 이미 존재하는eksctl이 아닌 생성된 클러스터에서 액세스 항목을 사용하려면 먼저 사용자가를 authenticationMode로 설정해야 합니다API_AND_CONFIG_MAP. 이를 위해 eksctl는 CLI 플래그와 함께 작동하는 클러스터 인증 모드를 업데이트하기 위한 새 명령을 도입했습니다. 예:
eksctl utils update-authentication-mode --cluster my-cluster --authentication-mode API_AND_CONFIG_MAP
액세스 항목 리소스
액세스 항목에는 STANDARD 또는와 같은 유형이 있습니다EC2_LINUX. 유형은 액세스 항목을 사용하는 방법에 따라 달라집니다.
-
standard유형은 IAM 사용자 및 IAM 역할에 Kubernetes 권한을 부여하는 것입니다.-
예를 들어, 콘솔에 액세스하는 데 사용하는 역할 또는 사용자에 액세스 정책을 연결하여 AWS 콘솔에서 Kubernetes 리소스를 볼 수 있습니다.
-
-
EC2_LINUX및EC2_WINDOWS유형은 EC2 인스턴스에 Kubernetes 권한을 부여하기 위한 것입니다. 인스턴스는 이러한 권한을 사용하여 클러스터에 조인합니다.
액세스 항목 유형에 대한 자세한 내용은 액세스 항목 생성을 참조하세요.
IAM 엔터티
액세스 항목을 사용하여 IAM 사용자 및 IAM 역할과 같은 IAM 자격 증명에 Kubernetes 권한을 부여할 수 있습니다.
accessConfig.accessEntries 필드를 사용하여 IAM 리소스의 ARN을 액세스 항목 EKS API와 연결합니다. 예제:
accessConfig: authenticationMode: API_AND_CONFIG_MAP accessEntries: - principalARN: arn:aws:iam::111122223333:user/my-user-name type: STANDARD kubernetesGroups: # optional Kubernetes groups - group1 # groups can used to give permissions via RBAC - group2 - principalARN: arn:aws:iam::111122223333:role/role-name-1 accessPolicies: # optional access polices - policyARN: arn:aws:eks::aws:cluster-access-policy/AmazonEKSViewPolicy accessScope: type: namespace namespaces: - default - my-namespace - dev-* - principalARN: arn:aws:iam::111122223333:role/admin-role accessPolicies: # optional access polices - policyARN: arn:aws:eks::aws:cluster-access-policy/AmazonEKSClusterAdminPolicy accessScope: type: cluster - principalARN: arn:aws:iam::111122223333:role/role-name-2 type: EC2_LINUX
EKS 정책을 연결하는 것 외에도 IAM 엔터티가 속한 Kubernetes 그룹을 지정하여 RBAC를 통해 권한을 부여할 수도 있습니다.
관리형 노드 그룹 및 Fargate
이러한 리소스에 대한 액세스 항목과의 통합은 EKS API에 의해 백그라운드에서 이루어집니다. 새로 생성된 관리형 노드 그룹 및 Fargate 포드는 사전 로드된 RBAC 리소스를 사용하는 대신 API 액세스 항목을 생성합니다. 기존 노드 그룹과 Fargate 포드는 변경되지 않으며 aws-auth 구성 맵의 항목에 계속 의존합니다.
자체 관리형 노드 그룹
각 액세스 항목에는 유형이 있습니다. 자체 관리형 노드 그룹에 권한을 부여하기 위해 eksctl는 보안 주체 ARN이 노드 역할 ARN으로 설정되고 유형이 노드 그룹 amiFamily에 EC2_WINDOWS 따라 EC2_LINUX 또는 로 설정된 각 노드 그룹에 대해 고유한 액세스 항목을 생성합니다.
자체 액세스 항목을 생성할 때 EC2_LINUX (Linux 또는 Bottlerocket 자체 관리형 노드에 사용되는 IAM 역할의 경우), EC2_WINDOWS (Windows 자체 관리형 노드에 사용되는 IAM 역할의 경우), FARGATE_LINUX (AWS Fargate(Fargate)에 사용되는 IAM 역할의 경우) 또는 STANDARD 유형을 지정할 수도 있습니다. 유형을 지정하지 않으면 기본 유형이 로 설정됩니다STANDARD.
참고
기존 로 생성된 노드 그룹을 삭제할 때 연결된 노드 그룹이 더 이상 없을 때 해당 액세스 항목을 삭제하는 instanceRoleARN것은 사용자의 책임입니다. 이는 eksctl이 액세스 항목이 아직 eksctl이 생성하지 않은 자체 관리형 노드 그룹에서 사용 중인지 여부를 확인하려고 시도하지 않기 때문입니다. 복잡한 프로세스이기 때문입니다.
액세스 항목 생성
이는 클러스터 생성 중에 구성 파일의 일부로 원하는 액세스 항목을 지정하고 실행하는 두 가지 방법으로 수행할 수 있습니다.
eksctl create cluster -f config.yaml
다음을 실행하여 클러스터 생성 후 OR:
eksctl create accessentry -f config.yaml
액세스 항목을 생성하기 위한 구성 파일의 예는 eksctl GitHub 리포지토리의 40-access-entries.yaml
액세스 항목 가져오기
사용자는 다음 중 하나를 실행하여 특정 클러스터와 연결된 모든 액세스 항목을 검색할 수 있습니다.
eksctl get accessentry -f config.yaml
또는
eksctl get accessentry --cluster my-cluster
또는 특정 IAM 엔터티에 해당하는 액세스 항목만 검색하려면 --principal-arn 플래그를 사용해야 합니다. 예:
eksctl get accessentry --cluster my-cluster --principal-arn arn:aws:iam::111122223333:user/admin
액세스 항목 삭제
한 번에 단일 액세스 항목을 삭제하려면 다음을 사용합니다.
eksctl delete accessentry --cluster my-cluster --principal-arn arn:aws:iam::111122223333:user/admin
여러 액세스 항목을 삭제하려면 --config-file 플래그를 사용하고 최상위 accessEntry 필드에서 액세스 항목에 principalARN’s 해당하는를 모두 지정합니다. 예:
... accessEntry: - principalARN: arn:aws:iam::111122223333:user/my-user-name - principalARN: arn:aws:iam::111122223333:role/role-name-1 - principalARN: arn:aws:iam::111122223333:role/admin-role
eksctl delete accessentry -f config.yaml
aws-auth ConfigMap에서 마이그레이션
사용자는 다음을 실행하여 기존 IAM 자격 증명을 aws-auth configmap에서 액세스 항목으로 마이그레이션할 수 있습니다.
eksctl utils migrate-to-access-entry --cluster my-cluster --target-authentication-mode <API or API_AND_CONFIG_MAP>
--target-authentication-mode 플래그를 로 설정하면 API인증 모드가 API 모드로 전환되고(이미 API 모드에 있는 경우 건너뛰기), IAM 자격 증명 매핑이 액세스 항목으로 마이그레이션되며, aws-auth configmap이 클러스터에서 삭제됩니다.
--target-authentication-mode 플래그를 로 설정하면 API_AND_CONFIG_MAP인증 모드가 API_AND_CONFIG_MAP 모드로 전환되고(이미 API_AND_CONFIG_MAP 모드에 있는 경우 건너뛰기), IAM 자격 증명 매핑이 액세스 항목으로 마이그레이션되지만 구성 aws-auth 맵은 보존됩니다.
참고
--target-authentication-mode 플래그가 로 설정된 경우 APIaws-authconfigmap에 아래 제약 조건 중 하나가 있는 경우이 명령은 인증 API 모드를 모드로 업데이트하지 않습니다.
-
계정 수준 자격 증명 매핑이 있습니다.
-
하나 이상의 역할/사용자가 접두사로 시작하는 kubernetes 그룹(들)에 매핑됩니다
system:(예:system:masters,system:bootstrapperssystem:nodes등의 EKS 특정 그룹 제외). -
하나 이상의 IAM 자격 증명 매핑(Service Linked Role](link:IAM/latest/UserGuide/using-service-linked-roles.html)입니다.
클러스터 생성자 관리자 권한 비활성화
eksctl는 false로 설정하면 클러스터를 생성하는 IAM 자격 증명에 클러스터 관리자 권한 부여를 비활성화accessConfig.bootstrapClusterCreatorAdminPermissions: boolean하는 새 필드를 추가했습니다.
구성 파일에 옵션을 추가합니다.
accessConfig: bootstrapClusterCreatorAdminPermissions: false
및 실행:
eksctl create cluster -f config.yaml