web-dev-qa-db-ja.com

AWS EKSクラスターにログインするには、kubectlをどのように取得しますか?

〜空のAWSアカウントから始めて、私はフォローしようとしています https://docs.aws.Amazon.com/eks/latest/userguide/getting-started.html

つまり、VPSスタックを作成し、aws-iam-authenticator、awscli、およびkubectlをインストールしてから、プログラムによるアクセスとAmazonEKSAdminPolicyを直接接続したIAMユーザーを作成しました。

次に、Webサイトを使用してEKSクラスターを作成し、aws configure IAMユーザーのアクセスキーとシークレットを設定します。

aws eks update-kubeconfig --name wr-eks-clusterうまくいきましたが、:

kubectl get svc
error: the server doesn't have a resource type "svc"

とにかく続けて、ワーカーノードスタックを作成しましたが、今は次のように行き詰まっています。

kubectl apply -f aws-auth-cm.yaml
error: You must be logged in to the server (the server has asked for the client to provide credentials)

aws-iam-authenticator token -i <my cluster name>は正常に動作するようです。

欠けているように見えるのは、クラスターを作成するときにIAMロールを指定しますが、ユーザーを作成するときに(ガイドに従って)ポリシーをアタッチすることです。ユーザーはこのクラスターにどのようにアクセスすることになっていますか?

または、最終的に、kubectlを使用してクラスターにアクセスしてアクセスするにはどうすればよいですか?

7
sbs
  1. docs で述べたように、EKSクラスターを作成したAWS IAMユーザーはsystem:masterのアクセス許可を自動的に受け取り、kubectlを機能させるのに十分です。クラスターにアクセスするには、このユーザー資格情報(AWS_ACCESS_KEY_IDおよびAWS_SECRET_ACCESS_KEY)を使用する必要があります。特定のIAMユーザーを作成してクラスターを作成しなかった場合は、おそらくルートAWSアカウントを使用して作成しました。この場合、ルートユーザー資格情報を使用できます( ルートユーザーのアクセスキーの作成 )。
  2. 主なマジックは、クラスターのaws-auth ConfigMap内にあります。IAMエンティティが含まれます-> kubernetes ServiceAccountマッピング。

aws-iam-authenticatorの資格情報をどのように渡すかわかりません。

  • ~/.aws/credentialsaws_profile_of_eks_iam_creatorがある場合は、$ AWS_PROFILE=aws_profile_of_eks_iam_creator kubectl get all --all-namespacesを試すことができます
  • また、環境変数$ AWS_ACCESS_KEY_ID=XXX AWS_SECRET_ACCESS_KEY=YYY AWS_DEFAULT_REGION=your-region-1 kubectl get all --all-namespacesを使用できます

kubectl ...~/.kube/configコマンドを含む生成されたaws-iam-authenticator token -i cluster_nameを使用するため、両方とも機能するはずです。 aws-iam-authenticatorは環境変数または~/.aws/credentialsを使用してトークンを提供します。

また、 この回答 は、最初のEKSユーザー作成の理解に役立つ場合があります。

11
Ivan Kalita