AWS EKSのコンソールで表示される権限エラーへの対応
最近、ちょっとした検証環境として使っていたGKEからAWS EKSへ乗り換えることになりました。
クラスタを起動してマネジメントコンソールから状況を参照しようとしたところ次のようなエラーが表示されたので対応します。エラーメッセージに詳細へのリンクがありますが、具体的な対応方法を得るのに時間がかかったため記事にしました。
EKSは経験不足のため、もし他に対応方法などありましたらコメント頂けると幸いです
症状
EKSのコンソールでクラスタを選択すると、次のエラーが出てクラスタの内容を表示できない。
現在のユーザーまたはロールには、この EKS クラスター上の Kubernetes オブジェクトへのアクセス権がありません
これは現在のユーザーまたはロールがクラスターリソースを記述するための Kubernetes RBAC アクセス許可を持っていないか、クラスターの認証設定マップにエントリがないことが原因である可能性があります。詳細はこちら
原因
書いてある通りですが、コンソールにログインしているユーザにクラスタ情報にアクセスするための権限が無い事が原因です。
作業の概要
(この文章で作業できれば以降は読む必要がありません)
KubernetesのconfigMapを利用して、対象クラスタにコンソールユーザからのアクセス許可を付与します。
次のページを参考にしました。
Amazon EKS でクラスターを作成した後、他の IAM ユーザーおよびロールにアクセス権を付与するにはどうすればよいですか?
準備
下準備1、コンソールユーザのARNを確認する
configmap作成時に必要になります。
マネジメントコンソールのユーザメニューから表示できます。
次のようなやつです。
arn:aws:iam::<アカウントNo>:user/< Iamユーザ名>
下準備2、クラスタ用ロールのARNを確認する
対象のクラスタに設定されているIAMロールのARNを確認します。
マネジメントコンソールを使う方法と、AWS CLIを使う方法があります。
方法1(マネジメントコンソールで確認)
コンソールでEC2サービスを開き、でクラスタ用として自動起動しているインスタンスを選択して詳細を開くと「インスタンス概要」の部分にIAMロール名が表示されています。
このIAMロール名をアカウントNoと組み合わせると目的のARNになります。
例:
arn:aws:iam::<アカウントNo>:role/< IAMロール名>
方法2(CLIで確認)
あるいは、次のコマンドで確認できます。
> eksctl get iamidentitymapping --region ap-northeast-1 --cluster <クラスター名>
ARN USERNAME GROUPS
arn:aws:iam::455999999999:role/eksctl-eks-cluster-nodegroup-NodeInstanceRole-XXXXXXXX system:node:{{EC2PrivateDNSName}} system:bootstrappers,system:nodes
処理
上記の情報をもとに権限の付与を実施します。
コンフィグマップの雛形を取得
クラスタロール設定用のコンフィグマップのひな形をダウンロードします。
curl -o aws-auth-cm.yaml https://s3.us-west-2.amazonaws.com/amazon-eks/cloudformation/2020-10-29/aws-auth-cm.yaml
コンフィグマップを編集
次の<ARN of instance role (not instance profile)>の部分をクラスタ用ロール名のARNに置き換えます。
data:
mapRoles: |
- rolearn: <ARN of instance role (not instance profile)>
上記mapRolesと同じ深さで次に示すmapUsersの項目を追加します。
mapUsers: |
- userarn: <ユーザARN>
username: <ユーザ名>
groups:
- system:masters
完成形は次のようになります。
apiVersion: v1
kind: ConfigMap
metadata:
name: aws-auth
namespace: kube-system
data:
mapRoles: |
- rolearn: <ロールARN>
username: system:node:{{EC2PrivateDNSName}}
groups:
- system:bootstrappers
- system:nodes
mapUsers: |
- userarn: <ユーザARN>
username: <ユーザ名>
groups:
- system:masters
作成したコンフィグマップを適用する
> kubectl apply -f aws-auth-cm.yaml
Warning: kubectl apply should be used on resource created by either kubectl create --save-config or kubectl apply configmap/aws-auth configured
ワーニングが出ますが設定自体は出来ています。
(気になる方はこちらなど参考になりそうです)
設定の確認は次のコマンドで行います。
kubectl describe configmap -n kube-system aws-auth
設定内容が表示されます。
確認
EKSのコンソールでクラスタを選択し、詳細などが表示されれば成功です。
Author And Source
この問題について(AWS EKSのコンソールで表示される権限エラーへの対応), 我々は、より多くの情報をここで見つけました https://qiita.com/YuukiMiyoshi/items/df153a6858fec58b7418著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .