事象
マネージメントコンソールから作成したEKSに対してCloud9からkubectlコマンドで接続に行くも以下のようなエラーとなる。
$ kubectl get svc error: You must be logged in to the server (Unauthorized)
詳細なデバッグログは以下。
$ kubectl get svc -v=9 ... helpers.go:246] server response object: [{ "metadata": {}, "status": "Failure", "message": "Unauthorized", "reason": "Unauthorized", "code": 401 }] error: You must be logged in to the server (Unauthorized)
環境情報
- EKS : 1.28
- aws-cli/2.15.5
原因/解決策
クラスターを作成した際のユーザと接続に行っているユーザが異なっている。
コンソール上で情報を確認した上で
$ aws sts get-caller-identity { "UserId": "xx", "Account": "xx", "Arn": "arn:aws:sts::xx" }
EKS側の「Access」>「IAM access entries」より同権限を追加すると
表題の事象は解消した。
$ kubectl get svc NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
以下、補足です。
補足
EKSを作成時にオーダーを行なったユーザ情報が「AmazonEKSClusterAdminPolicy」等でIAM access entriesに存在しています。
Access entries selection | IAM principal ARN | Type | Username | Group names | Access policies |
なので、ここに新たに必要なユーザ情報を追加することで、EKSクラスターへのアクセスを許可します。
ちなみに追加する際にはネームスペース毎にも権限設定ができるので、例えば必要な権限を与えなかった場合には以下のようなエラーにもなりました。
$ kubectl get svc Error from server (Forbidden): services is forbidden: User "xx" cannot list resource "services" in API group "" in the namespace "default"
以上、ご参考になれば幸いです。