Kubernetes 1.24 LegacyServiceAccountTokenNoAutoGeneration
The
LegacyServiceAccountTokenNoAutoGeneration
feature gate is beta, and enabled by default. When enabled, Secret API objects containing service account tokens are no longer auto-generated for every ServiceAccount.
これまでServiceAccountを作成すると自動的に生成されていたトークンを含むSecretオブジェクトが作成されなくなる
有効期限のないトークンが必要な場合はToken Request APIを使用してBound Service Account Tokenを生成するか、いくつかのステップを踏んでSecret-basedトークンを生成できる
Bound Service Account Tokenは、従来のService Account Tokenの問題を解消し、Kubernetes APIサーバへのアクセスだけでなく広い用途で利用されることを想定したService Account Tokenです。
Bound Service Account Tokenに移行済みでLegacy Service Account Tokenを使ってないものについては、Secretが生成されなくなっても影響はない
上がLegacy Service Account Token
下がBound Service Account Token
Argo Workflows(コントローラー自身ではなくWorkflowから作られるPod)にはLegacy Service Account Tokenへの依存が残っている
サーバーにログインするユーザー用のSAにも依存があった
Bound Service Account Tokenには有効期限があるため、それに依存しているアプリケーションはトークンの更新を行える必要がある(client-goを使うなら0.15.7以降が必須、など)。
1.24ではLegacy Service Account Token自体の挙動も少し変わっている
- 削除時に自動再生成されない
- Secretリソース再生成時にトークンがリフレッシュされない
1.27から警告されるようになった
まだlegacy tokenのSecretが残っていると、こういうログが出る
Use tokens from the TokenRequest API or manually created secret-based tokens instead of auto-generated secret-based tokens.