이 페이지 개선에 도움 주기
이 사용자 설명서에 기여하고 싶으신가요? 이 페이지 하단으로 스크롤하여 GitHub에서 이 페이지 편집을 선택하세요. 여러분의 기여는 모두를 위한 더 나은 사용자 설명서를 만드는 데 도움이 됩니다.
IRSA를 사용하도록 Amazon VPC CNI 플러그인 구성
Amazon VPC CNI plugin for Kubernetes
-
AWS Identity and Access Management(IAM) 권한이 필요합니다. 클러스터에서 IPv4 패밀리를 사용하는 경우 권한은
AmazonEKS_CNI_Policy
AWS 관리형 정책에 지정됩니다. 클러스터에서 IPv6 패밀리를 사용하는 경우 권한이 생성하는 IAM 정책에 추가되어야 합니다. 정책을 Amazon EKS 노드 IAM 역할 또는 별도의 IAM 역할에 연결할 수 있습니다. 이 주제에 설명된 대로 별도의 역할에 할당하는 것이 좋습니다. -
배포되면
aws-node
라는 Kubernetes 서비스 계정을 생성하고 해당 계정을 사용하도록 구성됩니다. 이 서비스 계정은aws-node
라는 Kubernetesclusterrole
에 바인딩되어 있습니다. 이 역할에는 필요한 Kubernetes 권한이 할당되어 있습니다.
참고
IMDS에 대한 액세스 권한을 차단하지 않는 한 Amazon VPC CNI plugin for Kubernetes의 Pods은 Amazon EKS 노드 IAM 역할에 할당된 권한에 액세스 권한이 있습니다. 자세한 내용은 워커 노드에 할당된 인스턴스 프로파일에 대한 액세스 제한
사전 조건
-
기존 Amazon EKS 클러스터. 배포하려면 Amazon EKS 시작하기 섹션을 참조하세요.
-
클러스터에 대한 기존 AWS Identity and Access Management(IAM) OpenID Connect(OIDC) 제공업체입니다. 이미 있는지 아니면 생성해야 하는지 확인하려면 클러스터에 대한 IAM OIDC 공급자 생성 부분을 참조하세요.
1단계 - Amazon VPC CNI plugin for Kubernetes IAM 역할 생성
IAM 역할 생성
-
클러스터의 IP 패밀리를 확인합니다.
aws eks describe-cluster --name
my-cluster
| grep ipFamily예제 출력은 다음과 같습니다.
"ipFamily": "ipv
4
"출력에서 대신
ipv6
가 반환될 수 있습니다. -
IAM 역할을 생성합니다.
eksctl
또는kubectl
및 AWS CLI를 사용하여 IAM 역할을 생성할 수 있습니다. (선택 사항) Kubernetes 서비스 계정에서 사용하는 AWS Security Token Service 엔드포인트 유형을 구성합니다. 자세한 내용은 서비스 계정의 AWS Security Token Service 엔드포인트 구성 단원을 참조하십시오.
2단계: Amazon VPC CNI plugin for KubernetesPods 재배포
-
서비스 계정에 연결된 기존 Pods를 삭제하고 다시 생성하여 보안 인증 정보 환경 변수를 적용합니다. 주석은 현재 주석 없이 실행 중인 Pods에는 적용되지 않습니다. 다음 명령은 기존의
aws-node
DaemonSet Pods를 삭제하고 서비스 계정 주석을 사용하여 배포합니다.kubectl delete Pods -n kube-system -l k8s-app=aws-node
-
모든 Pods가 다시 시작되었는지 확인합니다.
kubectl get pods -n kube-system -l k8s-app=aws-node
-
Pods 중 하나를 설명하고
AWS_WEB_IDENTITY_TOKEN_FILE
및AWS_ROLE_ARN
환경 변수가 있는지 확인합니다.cpjw7
을 이전 단계의 출력에서 반환된 Pods 중 하나의 이름으로 바꿉니다.kubectl describe pod -n kube-system aws-node-
cpjw7
| grep 'AWS_ROLE_ARN:\|AWS_WEB_IDENTITY_TOKEN_FILE:'예제 출력은 다음과 같습니다.
AWS_ROLE_ARN: arn:aws:iam::
111122223333
:role/AmazonEKSVPCCNIRole
AWS_WEB_IDENTITY_TOKEN_FILE: /var/run/secrets/eks.amazonaws.com/serviceaccount/token AWS_ROLE_ARN: arn:aws:iam::111122223333
:role/AmazonEKSVPCCNIRole
AWS_WEB_IDENTITY_TOKEN_FILE: /var/run/secrets/eks.amazonaws.com/serviceaccount/tokenPod에 두 개의 컨테이너가 포함되어 있으므로 두 세트의 중복 결과가 반환됩니다. 두 컨테이너의 값이 같은 경우입니다.
Pod에서 AWS 리전 엔드포인트를 사용하고 있는 경우 이전 출력에서 다음 줄도 반환됩니다.
AWS_STS_REGIONAL_ENDPOINTS=regional
3단계: 노드 IAM 역할에서 CNI 정책 제거
Amazon EKS 노드 IAM 역할에 현재 AmazonEKS_CNI_Policy
IAM(IPv4
) 정책 또는 IPv6 정책이 연결되어 있고 별도의 IAM 역할을 생성한 경우, 정책을 대신 연결한 다음, aws-node
Kubernetes 서비스 계정에 할당한 후 클러스터의 IP 패밀리와 일치하는 AWS CLI 명령을 사용하여 노드 역할에서 정책을 제거하는 것이 좋습니다.
을 노드 역할의 이름으로 바꿉니다.AmazonEKSNodeRole
-
IPv4
aws iam detach-role-policy --role-name
AmazonEKSNodeRole
--policy-arn arn:aws:iam::aws:policy/AmazonEKS_CNI_Policy -
IPv6
를 계정 ID로 바꾸고111122223333
를AmazonEKS_CNI_IPv6_Policy
IPv6
정책 이름으로 바꿉니다.aws iam detach-role-policy --role-name
AmazonEKSNodeRole
--policy-arn arn:aws:iam::111122223333
:policy/AmazonEKS_CNI_IPv6_Policy
IPv6
패밀리를 사용하는 클러스터에 대한 IAM 정책 생성
IPv6
패밀리를 사용하는 클러스터를 생성했고 클러스터에 버전 1.10.1
이상의 Amazon VPC CNI plugin for Kubernetes 추가 기능이 구성되어 있으면 IAM 역할에 할당할 수 있는 IAM 정책을 생성해야 합니다. 생성할 때 IPv6
패밀리로 구성하지 않은 기존 클러스터가 있는 경우 IPv6
을 사용하려면 새 클러스터를 생성해야 합니다. 클러스터에서 IPv6
사용에 대한 자세한 내용을 알아보려면 클러스터, pods 및 서비스에 IPv6 주소 할당 섹션을 참조하세요.
-
다음 텍스트를 복사해
파일에 저장합니다.vpc-cni-ipv6-policy
.json{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ec2:AssignIpv6Addresses", "ec2:DescribeInstances", "ec2:DescribeTags", "ec2:DescribeNetworkInterfaces", "ec2:DescribeInstanceTypes" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "ec2:CreateTags" ], "Resource": [ "arn:aws:ec2:*:*:network-interface/*" ] } ] }
IAM 정책을 생성합니다.
aws iam create-policy --policy-name
AmazonEKS_CNI_IPv6_Policy
--policy-document file://vpc-cni-ipv6-policy.json