kOpsでIRSAをやる(1.21)

以前こういう記事を書いた.

h3poteto.hatenablog.com

この当時はIssuerも自分で作らなければいけなかったが,kOps 1.21からIRSAのサポートが入り,これがだいぶ簡略化されるようになった. というわけでこれを紹介しておく.

serviceAccountIssuerDiscoveryを使う

kops.sigs.k8s.io

基本的にこのガイドどおりに,kOpsのspecにserviceAccountIssuerDiscoveryを指定する.以前は,URLの都合上us-east-1のS3 bucketを推奨していたが,kOps側でS3のURLはいい感じに変換してくれるので,どのregionでも問題ない. ただし,ここにも書いてあるがObjects can be publicにすることを忘れないこと.

serviceAccountExternalPermissionsはどちらでも良いのだが,ここで指定しない場合,sts:AssumeRoleWithWebIdentityをAssumeRoleに指定したRoleは自分で作る必要がある. また,serviceAccountExternalPermissionsではnamespaceの指定が入るが,ここに*は使えない.この修正はすでにマージされており,

github.com

おそらく1.23で入ると思われる.

PodIdentityWebhookを入れる

これは前回と同じで,

github.com

を入れる必要がある.kOpsはissuerやroleの準備はしてくれるが,webhookまではやってくれない.

ただし,今回tokenAudienceはissuerHostではなく,amazonaws.comを入れる必要がある.ここもカスタマイズできるようなPRがマージされていて,

github.com

1.23には入るだろう.

PodIdentityWebhook入れるの面倒じゃね?

どうせkOps側で自動化してくれるならここまで自動化して欲しくね?と思いますよね. そういうIssue,立てておいた.

github.com

この中でも触れているけど,PodIdentityWebhookを自動でインストールするようなコントローラも作ってみたので,

github.com

こいつをhelmでインストールすると一発でwehookが入る.