EKS 클러스터에 액세스할 수 없는 경우 kubectl 명령을 실행하면 다음과 비슷한 오류가 표시됩니다.
aws eks 액세스 항목 API를 사용하여 Amazon EKS 클러스터 액세스를 관리하려면 다음 단계를 완료하십시오.
-
kubectl이 설치된 호스트 머신에서 다음 권한을 가진 IAM 역할을 맡습니다.
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"eks:ListAccessEntries",
"eks:CreateAccessEntry",
"eks:DescribeCluster",
"eks:UpdateClusterConfig"
],
"Resource": [
"arn:aws:eks:<REGION>:<ACCOUNT_ID>:cluster/<CLUSTER_NAME>"
]
},
{
"Effect": "Allow",
"Action": [
"eks:DeleteAccessEntry",
"eks:ListAssociatedAccessPolicies",
"eks:DisassociateAccessPolicy",
"eks:AssociateAccessPolicy",
"eks:UpdateAccessEntry",
"eks:DescribeAccessEntry"
],
"Resource": [
"arn:aws:eks:<REGION>:<ACCOUNT_ID>:access-entry/<CLUSTER_NAME>/*"
]
}
]
}
-
자격 증명을 확인하려면 다음 명령을 실행합니다.
aws sts get-caller-identity
명령 출력에서 ARN을 기록해 두십시오. 해당 출력은 arn:aws:iam::<ACCOUNT_ID>:user/new-cluster-admin과 유사합니다.
-
다음 명령을 실행하여 Amazon EKS 클러스터의 현재 인증 모드를 확인합니다.
aws eks describe-cluster --name <CLUSTER_NAME> --query 'cluster.accessConfig.authenticationMode' --region <REGION>
Amazon EKS 클러스터의 현재 인증 모드가 API_AND_CONFIG_MAP인 경우 클러스터에는 이미 필요한 액세스 모드가 있습니다. 5단계로 건너뛰십시오.
-
다음 명령을 실행하여 Amazon EKS 클러스터의 인증 모드를 업데이트합니다.
aws eks update-cluster-config --name <CLUSTER_NAME> --access-config authenticationMode=API_AND_CONFIG_MAP --region <REGION>
참고: CONFIG_MAP 인증 모드에서 API 모드로 전환할 수 있지만 API 모드에서 다시 CONFIG_MAP 모드로 전환할 수는 없습니다.
-
다음 명령을 실행하여 클러스터 및 IAM 역할에 대한 액세스 항목을 생성합니다.
aws eks create-access-entry --cluster-name <CLUSTER_NAME> --principal-arn <IAM_PRINCIPAL_ARN> --region <REGION>
다음과 같은 출력이 나타납니다.
{
"accessEntry": {
"clusterName": "<CLUSTER_NAME>",
"principalArn": "arn:aws:iam::<ACCOUNT_ID>:user/new-cluster-admin",
"kubernetesGroups": [],
"accessEntryArn": "arn:aws:eks:<REGION>:<ACCOUNT_ID>:access-entry/<CLUSTER_NAME>/user/<ACCOUNT_ID>/new-cluster-admin/26c6d1f8-4211-3fe0-f9d2-734b912dcd9a",
"createdAt": "2024-02-13T19:27:45.370000+00:00",
"modifiedAt": "2024-02-13T19:27:45.370000+00:00",
"tags": {},
"username": "arn:aws:iam::<ACCOUNT_ID>:user/new-cluster-admin",
"type": "STANDARD"
}
}
-
다음 명령을 실행하여 AmazonEKSClusterAdminPolicy를 Amazon EKS 클러스터 및 IAM 역할에 연결합니다.
aws eks associate-access-policy --cluster-name <CLUSTER_NAME> \
--principal-arn <IAM_PRINCIPAL_ARN> \
--policy-arn arn:aws:eks::aws:cluster-access-policy/AmazonEKSClusterAdminPolicy \
--access-scope type=cluster \
--region <REGION>
다음과 같은 출력이 나타납니다.
{
"accessEntry": {
"clusterName": "<CLUSTER_NAME>",
"principalArn": "arn:aws:iam::<ACCOUNT_ID>:user/new-cluster-admin",
"kubernetesGroups": [],
"accessEntryArn": "arn:aws:eks:<REGION>:<ACCOUNT_ID>:access-entry/<cluster_name>/user/<ACCOUNT_ID>/new-cluster-admin/7ec6efb3-31c8-edcf-3039-ca2b38e0d708",
"createdAt": "2024-02-25T08:34:06.002000+00:00",
"modifiedAt": "2024-02-25T08:34:06.002000+00:00",
"tags": {},
"username": "arn:aws:iam::<ACCOUNT_ID>:user/new-cluster-admin",
"type": "STANDARD"
}
}
-
kubeconfig 파일을 업데이트하거나 생성하려면 다음 명령을 실행하여 EKS 클러스터에 연결합니다.
aws eks update-kubeconfig --name <CLUSTER_NAME> --region <REGION>
-
다음 명령을 실행하여 사용자가 관리자로 EKS 클러스터에 액세스할 수 있는지 확인합니다.
kubectl auth can-i '*' '*' --all-namespaces