以前こういう記事を書いた.
この当時はIssuerも自分で作らなければいけなかったが,kOps 1.21からIRSAのサポートが入り,これがだいぶ簡略化されるようになった. というわけでこれを紹介しておく.
serviceAccountIssuerDiscoveryを使う
基本的にこのガイドどおりに,kOpsのspecにserviceAccountIssuerDiscovery
を指定する.以前は,URLの都合上us-east-1のS3 bucketを推奨していたが,kOps側でS3のURLはいい感じに変換してくれるので,どのregionでも問題ない.
ただし,ここにも書いてあるがObjects can be public
にすることを忘れないこと.
serviceAccountExternalPermissions
はどちらでも良いのだが,ここで指定しない場合,sts:AssumeRoleWithWebIdentity
をAssumeRoleに指定したRoleは自分で作る必要がある.
また,serviceAccountExternalPermissions
ではnamespace
の指定が入るが,ここに*
は使えない.この修正はすでにマージされており,
おそらく1.23で入ると思われる.
PodIdentityWebhookを入れる
これは前回と同じで,
を入れる必要がある.kOpsはissuerやroleの準備はしてくれるが,webhookまではやってくれない.
ただし,今回tokenAudienceはissuerHostではなく,amazonaws.com
を入れる必要がある.ここもカスタマイズできるようなPRがマージされていて,
1.23には入るだろう.
PodIdentityWebhook入れるの面倒じゃね?
どうせkOps側で自動化してくれるならここまで自動化して欲しくね?と思いますよね. そういうIssue,立てておいた.
この中でも触れているけど,PodIdentityWebhookを自動でインストールするようなコントローラも作ってみたので,
こいつをhelmでインストールすると一発でwehookが入る.