내 클러스터와 상호 작용할 수 있는 기능을 추가 AWS 역할에 부여할 수 없습니다.

내 클러스터와 상호 작용할 수 있는 기능을 추가 AWS 역할에 부여할 수 없습니다.

AWS EKS를 배우려고 노력 중입니다.Amazon EKS 시작하기 – AWS Management Console 및 AWS CLIus-east-1로 변경한 지역을 제외하고 단계별로 안내해 드립니다.

클러스터를 생성할 수 있지만 my-cluster클러스터와 통신하기 위해 EC2 인스턴스(T2.Micro)인 컴퓨터를 구성하려고 하면 error: You must be logged in to the server (Unauthorized)오류가 발생합니다. 심층 분석에서 EC2 역할(ARN - arn:aws:iam::123456789012:role/ec2-admin)이 클러스터를 생성한 역할(ARN - arn:aws:iam::123456789012:role)을 맡아야 한다는 사실을 발견했습니다. /myAmazonEKSClusterRole). myAmazonEKSClusterRole이후 에는 명령을 arn:aws:sts::123456789012:assumed-role/myAmazonEKSClusterRole/test-session실행할 수 있지만 명령이 여전히 실행되지 않습니다.aws ekskubectl

명령을 실행하기 위해 kubectl다음 단계를 따르려고 합니다.클러스터의 사용자 또는 IAM 역할 관리. 그러나 그들은 aws-auth-cm.yaml나에게 명령을 실행할 수 없기 때문에 내가 할 수 없는 configMap 파일 을 변경하라고 요청하고 있습니다 kubectl apply.

kubeconfig파일 -

apiVersion: v1
clusters:
- cluster:
    certificate-authority-data: <cert>
  name: arn:aws:eks:us-east-1:123456789012:cluster/my-cluster
contexts:
- context:
    cluster: arn:aws:eks:us-east-1:123456789012:cluster/my-cluster
    user: arn:aws:eks:us-east-1:123456789012:cluster/my-cluster
  name: arn:aws:eks:us-east-1:123456789012:cluster/my-cluster
current-context: arn:aws:eks:us-east-1:123456789012:cluster/my-cluster
kind: Config
preferences: {}
users:
- name: arn:aws:eks:us-east-1:123456789012:cluster/my-cluster
  user:
    exec:
      apiVersion: client.authentication.k8s.io/v1alpha1
      args:
      - --region
      - us-east-1
      - eks
      - get-token
      - --cluster-name
      - my-cluster
      command: aws

변경 후 aws-auth-cm.yaml 파일의 내용은 다음과 같습니다.

apiVersion: v1
kind: ConfigMap
metadata:
  name: aws-auth
  namespace: kube-system
data:
  mapRoles: |
          #    - rolearn: <ARN of instance role (not instance profile)>
          #      username: system:node:{{EC2PrivateDNSName}}
          #      groups:
          #        - system:bootstrappers
          #        - system:nodes
    - rolearn: arn:aws:iam::375712918983:role/myAmazonEKSClusterRole
      username: myAmazonEKSClusterRole
      groups:
        - system:masters

이에 대해 도움을 주시거나 조언을 해주실 수 있나요?

궁금한 점이 있으면 알려주시기 바랍니다.

답변1

당신은 세 가지 중 하나를 원할 것입니다; 어느 하나:

  • run by 가 올바르게 작동 arn:aws:iam::123456789012:role/myAmazonEKSClusterRole하도록 터미널 세션에서 가정합니다.aws eks get-tokenkubectl
  • 역할을 맡는 awscli 프로필을 생성 arn:aws:iam::123456789012:role/myAmazonEKSClusterRole하고 다음을 args:포함하도록 업데이트합니다.[..., "--profile", "whatever-you-call-that-profile",...]
  • 또는 터미널에서 역할을 맡고 를 실행하고 aws eks get-token해당 ConfigMap을 업데이트하기 위해 오랫동안 자격 증명이 필요하지 않은 것 같으므로 해당 정적 자격 증명을 kubeconfig에 넣습니다.

첫 번째는 해당 json의 내용을 기반으로 한다는 aws sts assume-role --role-arn arn:aws:iam::123456789012:role/myAmazonEKSClusterRole ... | tee sts-creds.json뜻 입니다.export AWS_ACCESS_KEY_ID= AWS_SECRET_KEY= AWS_SESSION_TOKEN=

두 번째 의미는 다음과 같습니다.

$ cat >> $HOME/.aws/config <<FOO
[profile my-cluster]
assume_role = arn:aws:iam::123456789012:role/myAmazonEKSClusterRole
source_profile = whatever
; or credential_source = whatever
FOO

~에 따르면이 문서

관련 정보