概要
下記ののリンクの手順に従い、できなかった場合、kubeconfig
ファイルを手動で編集する
- 例)会社のSSOの設定により、EC2(デプロイ専用)からEKS Clusterに連携できなかった場合、下記のエラーになる
[ec2-user@ip-XX-XX-XX-XX ~]# aws eks update-kubeconfig --region ap-northeast-1 --name <クラスター名>
An error occurred (AccessDeniedException) when calling the DescribeCluster operation: User: arn:aws:sts::1111111111111:assumed-role/AWSReservedSSO_XXXXXXXX_xxxxxxxxxxxxxxxx/xxxxx is not authorized to perform: eks:DescribeCluster on resource: arn:aws:eks:ap-northeast-1:xxxxxxxxxxxx:cluster/<クラスター名> with an explicit deny
- 上記のエラーは命令語を叩くEC2に、IAM
eks:DescribeCluster
を追加しても解決できなかった
回避方法
-
.kube/config
を作成すること
cd ~
mkdir .kube
cd .kube
vi config
apiVersion: v1
clusters:
- cluster:
certificate-authority-data: <クラスター画面の認証機関>
server: <クラスター画面のAPI サーバーエンドポイント>
name: <クラスター画面の ARN>
contexts:
- context:
cluster: <クラスター画面の ARN>
user: <クラスター画面の ARN>
name: <クラスター画面の ARN>
current-context: <クラスター画面の ARN>
kind: Config
preferences: {}
users:
- name: <クラスター画面の ARN>
user:
exec:
apiVersion: client.authentication.k8s.io/v1beta1
args:
- --region
- ap-northeast-1
- eks
- get-token
- --cluster-name
- <クラスター名>
command: aws
対応結果
- EC2からk8sの命令語を叩けるようになる
[ec2-user@ip-XX-XX-XX-XX ~]$ kubectl run nginx --image nginx
pod/nginx created
[ec2-user@ip-XX-XX-XX-XX ~]$ kubectl get pods
NAME READY STATUS RESTARTS AGE
nginx 1/1 Running 0 10s
- EKSクラスター画面で、
nginx
Podが作成されたことを確認する