とことんDevOps | 日本仮想化技術のDevOps技術情報メディア

DevOpsに関連する技術情報を幅広く提供していきます。

日本仮想化技術がお届けする「とことんDevOps」では、DevOpsに関する技術情報や、日々のDevOps業務の中での検証結果、TipsなどDevOpsのお役立ち情報をお届けします。
主なテーマ: DevOps、CI/CD、コンテナ開発、IaCなど
読者登録と各種SNSのフォローもよろしくお願いいたします。

aws-auth ConfigMapを安全に更新する

新しい人が入ってきた時や、誰かが出ていく時など、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も手作業での更新は推奨していないので、もしまだ手作業で更新してる場合は試してみるといいかと思います。