説明
AlwaysPullImages admission plugin は、新しい Pod のイメージ取得ポリシーを Always に設定します。共有ノードに残った非公開イメージを、レジストリへのアクセス権限を持たない利用者が再利用するリスクを抑えるのに役立ちます。
Always は、毎回すべてのイメージデータを再ダウンロードしたり、最新の承認済みイメージであることを保証したりする機能ではありません。同じ digest のキャッシュを再利用できるため、イメージの承認、署名検証、脆弱性管理は別途適用してください。
想定される影響
- 共有ノードのキャッシュから、必要なレジストリ権限のない非公開イメージが再利用されるおそれがあります。
- 取得ポリシーだけでは、イメージの出所や安全性を保証できません。
対処方法
- 共有環境の要件を確認し、必要に応じて
--enable-admission-pluginsにAlwaysPullImagesを含めてください。 - 各ワークロードに必要なレジストリ認証情報を提供し、レジストリ障害による Pod 起動への影響も確認してください。
- 承認済みイメージや digest の使用、署名検証などのサプライチェーン対策を別途適用してください。
例
API サーバーの引数を比較する抜粋です。イメージは実際のクラスターのバージョンに合わせ、残りの制御プレーン設定を別途用意してください。このプラグインに専用の admission 設定ファイルは必要ありません。
変更前
yaml
apiVersion: v1
kind: Pod
metadata:
name: command-demo
spec:
containers:
- name: command-demo-container
image: registry.k8s.io/kube-apiserver:v1.34.0
command: ["kube-apiserver"]
args: ["--disable-admission-plugins=AlwaysPullImages"]
変更後
yaml
apiVersion: v1
kind: Pod
metadata:
name: command-demo
spec:
containers:
- name: command-demo-container
image: registry.k8s.io/kube-apiserver:v1.34.0
command: ["kube-apiserver"]
args:
["--enable-admission-plugins=AlwaysPullImages"]
補足:
- 変更前:
AlwaysPullImagesを無効にします。実際の再利用は Pod の取得ポリシーにも左右されます。 - 変更後: 新しい Pod に
Alwaysポリシーを適用します。イメージの承認やセキュリティ検証を代替するものではありません。