【アドミッションコントローラー】

Admission Controller とは?

💡 クラスタの入口で『それ、本当に通していい?』と確認する門番
📌 このページのポイント
Admission Controller / Webhook のフロー kubectl API Server 認証・認可 バリデーション Mutating Webhook リクエスト変更 Validating Webhook ポリシー検証 etcd Mutating の例 ・サイドカーコンテナを自動注入 ・デフォルトのラベルを追加 ・リソース制限を自動設定 Validating の例 ・latestタグの使用を禁止 ・必須ラベルの存在を確認 ・特権コンテナをブロック ポリシー違反 → リクエスト拒否(403) Mutating → Validating の順に実行される
Admission Controllerによるリクエスト制御フローのイメージ
ひよこ ひよこ

Admission Controllerって何をしてるの?

ペンギン先生 ペンギン先生

Kubernetesリソースを作ろうとした時に『そのリソース、ルールに合ってる?』と確認する門番だよ。たとえば『リソースリミットが設定されていないPodは作らせない』みたいなポリシーを強制できるんだ。

ひよこ ひよこ

ValidatingとMutatingって何が違うの?

ペンギン先生 ペンギン先生

Validatingは『ルールに合わなければ拒否する』だけ。Mutatingは『足りない部分を自動で追加・修正する』ことができるよ。たとえばMutatingで全Podにサイドカーコンテナを自動注入する、なんてこともできるんだ。

ひよこ ひよこ

Istioのサイドカー注入もこの仕組みなの?

ペンギン先生 ペンギン先生

その通り!IstioはMutating Admission Webhookを使って、PodEnvoyプロキシのサイドカーを自動注入しているんだよ。開発者が意識しなくてもサービスメッシュの機能が使えるのはこの仕組みのおかげだね。

ひよこ ひよこ

自分でカスタムのポリシーを作ることもできるの?

ペンギン先生 ペンギン先生

OPA/GatekeeperやKyvernoを使えば、YAMLやRegoというポリシー言語でルールを書けるよ。『latestタグのイメージは禁止』『特定のラベルが必須』みたいなルールを宣言的に管理できるんだ。企業のセキュリティ・ガバナンスには欠かせない仕組みだね。

ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「Admission Controller」って出てきたら「Kubernetesリソース作成時にルールを強制する門番」と思えればだいたいOK!
📖 おまけ:英語の意味
「Admission Controller」 = 入場制御装置
💬 Admission(入場許可)をController(制御する)もので、クラブの入口にいるバウンサーみたいなものだよ
← 用語集にもどる