〜空の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を使用してクラスターにアクセスしてアクセスするにはどうすればよいですか?
system:master
のアクセス許可を自動的に受け取り、kubectl
を機能させるのに十分です。クラスターにアクセスするには、このユーザー資格情報(AWS_ACCESS_KEY_ID
およびAWS_SECRET_ACCESS_KEY
)を使用する必要があります。特定のIAMユーザーを作成してクラスターを作成しなかった場合は、おそらくルートAWSアカウントを使用して作成しました。この場合、ルートユーザー資格情報を使用できます( ルートユーザーのアクセスキーの作成 )。aws-auth
ConfigMap内にあります。IAMエンティティが含まれます-> kubernetes ServiceAccountマッピング。aws-iam-authenticator
の資格情報をどのように渡すかわかりません。
~/.aws/credentials
にaws_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ユーザー作成の理解に役立つ場合があります。