新しい人が入ってきた時や、誰かが出ていく時など、EKSのaws-auth ConfigMapにIAMユーザーを足したり引いたりすることはよくあると思います。このConfigMap、構文が間違っていても保存できてしまうんですよね。エラーのまま保存してしまうと、そこで管理されているIAMロールやユーザーがアクセスできなくなってしまいます。そこで、EKSのベストプラクティスではツールを使って更新しましょうということになっているようです。
インストール
こちらの手順に沿って進めてみてください。
https://github.com/keikoproj/aws-auth#install
私はKrewの方でインストールしてみました。Krew自体のインストール方法はこちらを参考にしてください。
使ってみる
実際に値を入れたりするので実験できる環境が必要です。もし、遊べるEKSがない場合は以下のように作ると簡単です。
eksctl create cluster -n playground
使い方を見てみましょう。
kubectl aws-auth help
サブコマンドが確認できたと思います。サブコマンドのオプションを確認するには、実行したいサブコマンドの後ろに--help
をつけて確認してください。
それでは実際に一覧を取得してみます。
kubectl aws-auth get
aws-auth ConfigMapに定義されている一覧が取得できます。
TYPE ARN USERNAME GROUPS Role Mapping arn:aws:iam::XXXXXXXXXXXX:role/eksctl-playground-nodegroup-ng-b2-NodeInstanceRole-D6LMIQFQ5VYC system:node:{{EC2PrivateDNSName}} system:bootstrappers, system:nodes
次はIAMユーザーを追加してみます。実際に追加できるIAMユーザーが必要になるので、使えるIAMユーザーがいない場合は先にIAMユーザーを作っておいてください。
kubectl aws-auth upsert --append --groups system:masters --mapusers --userarn arn:aws:iam::XXXXXXXXXXXX:user/demo_user --username demo_user
もう一度一覧を取得すると、追加されていることがわかると思います。
$ kubectl aws-auth get TYPE ARN USERNAME GROUPS Role Mapping arn:aws:iam::XXXXXXXXXXXX:role/eksctl-playground-nodegroup-ng-b2-NodeInstanceRole-D6LMIQFQ5VYC system:node:{{EC2PrivateDNSName}} system:bootstrappers, system:nodes User Mapping arn:aws:iam::XXXXXXXXXXXX:user/demo_user demo_user system:masters
追加したユーザーを削除します。
kubectl aws-auth remove --groups system:masters --mapusers --userarn arn:aws:iam::XXXXXXXXXXXX:user/demo_user --username demo_user
まとめ
今回は一覧の取得からユーザーの追加、削除をみてみましたが、ロールの追加削除もできます。やり方も同じです。aws-auth ConfigMapを手でいじるのはとても危険なので、ツールで更新できればミスを減らせるので精神衛生上とてもよいことだと思います。AWSも手作業での更新は推奨していないので、もしまだ手作業で更新してる場合は試してみるといいかと思います。