Kubernetes の NamespaceLifecycle admission 設定の確認

名前空間の状態に合わないリソース作成を防ぐ既定の制御を維持してください。

説明

NamespaceLifecycle admission プラグインは、存在しない名前空間や削除中の名前空間へのリソース作成などを制御します。無効にすると、名前空間のライフサイクルに合わない操作が許可される場合があります。既定で有効な機能であり、RBAC によるアクセス制御の代わりにはなりません。

想定される影響

  • 削除中の名前空間にリソースが追加され、整理作業が複雑になる場合があります。
  • 名前空間とリソースの状態が不整合になり、復旧が難しくなるおそれがあります。

対処方法

  • 自己管理の API サーバーでは --disable-admission-plugins から NamespaceLifecycle を削除し、既定の有効状態を維持してください。マネージドサービスでは、提供者のコントロールプレーンポリシーを確認してください。
  • 適用後は名前空間の作成・削除と、関連リクエストの許可・拒否が想定どおりか確認してください。利用者とサービスアカウントの RBAC 権限も別途管理してください。

例

Kubernetes v1.30.0 の API サーバー引数を比較する過去の抜粋です。実際の利用にはサポート対象のバージョンと完全なコントロールプレーン構成が必要です。

変更前

yaml
apiVersion: v1
kind: Pod
metadata:
  name: kube-apiserver
spec:
  containers:
    - name: kube-apiserver
      image: registry.k8s.io/kube-apiserver:v1.30.0
      command:
        - kube-apiserver
      args:
        - --disable-admission-plugins=NamespaceLifecycle

NamespaceLifecycle を明示的に無効にしています。

変更後

yaml
apiVersion: v1
kind: Pod
metadata:
  name: kube-apiserver
spec:
  containers:
    - name: kube-apiserver
      image: registry.k8s.io/kube-apiserver:v1.30.0
      command:
        - kube-apiserver
      args:
        - --enable-admission-plugins=NamespaceLifecycle

無効化の引数を削除し、NamespaceLifecycle を明示的に有効にしています。既定で有効なため、別の設定で無効にしていなければ、常に有効化リストへ明記する必要はありません。

参考資料