![見出し画像](https://assets.st-note.com/production/uploads/images/169146833/rectangle_large_type_2_40146240a196b1ec1218a20f78a64be1.png?width=1200)
Kubernetesの門番!Admission Controllerとは?
Kubernetesを使っていると、「このリソース、本当に許可しても大丈夫?」という疑問が出てくることがあります。例えば、新しくPodを作成するときにセキュリティ設定が抜けていたり、不正なイメージが使われていたりすると、システム全体に影響が及ぶかもしれません。
そんな時に頼りになるのがAdmission Controllerです。これは、Kubernetesクラスタへの「門番」のような存在で、リソースがクラスタに入る前に検査を行います。では、このAdmission Controllerが具体的にどんな役割を果たしているのか、見ていきましょう!
Admission Controllerは入場チェック係!
Admission Controllerは、まるでイベント会場の入口で入場者を確認する係員のような役割を持っています。
(1) 入場前チェック
チケットを持っているか、年齢制限を満たしているかなどを確認し、条件を満たさない場合は入場を断ります。
(2) 条件追加
必要に応じてチケットにスタンプを押したり、指定席のシールを貼ったりしてルールを付け加えます。
Kubernetesの場合もこれと似ています。新しいリソースが作成・更新されるときに、Admission Controllerが次のようなチェックを行います。
ルール違反がないかを検証する
必要な設定や情報を自動で追加する
これにより、クラスタ内のルールを守りながら、安全で一貫性のある環境を保てるのです。
Admission Controllerはいつ働くの?
Admission Controllerは、リクエストがKubernetesに送られた後、次のような流れで動きます。
(1) 認証・認可の確認
まず、リクエストを送ったユーザーが誰なのかを認証し、そのユーザーに操作を行う権限があるかをチェックします。
(2) Admission Controllerによるチェック
認証を通過したリクエストに対して、Admission Controllerがポリシー違反がないか検査したり、必要な情報を補完したりします。
(3) リソースの保存
問題がなければリクエストは受け入れられ、永続ストレージ(etcd)に保存されます。
この流れのおかげで、リソースはクラスタのルールに従った状態でしか保存されません。
Admission Controllerの具体例
Admission Controllerには、リソースの変更や検証を担当する2つのタイプがあります。
(1) MutatingAdmissionWebhook (変更系)
リソースの内容を自動で修正・補完します。
例: Podにデフォルトのラベルやアノテーションを追加する。
例: メモリやCPUのリソース制限を自動的に設定する。
(2) ValidatingAdmissionWebhook (検証系)
リソースがルールに違反していないかを検証します。
例: Podのイメージが信頼されたレジストリから提供されているかチェックする。
例: セキュリティポリシーに違反する設定(rootユーザーなど)がないか確認する。
Admission Controllerは何に使うの?
では、実際にAdmission Controllerはどのように活用されるのでしょうか?
(1) セキュリティの強化
信頼されたイメージのみを使えるようにしたり、特定の環境変数やボリュームマウントを禁止したりします。
(2) リソース管理の自動化
リソース制限(CPUやメモリ)を自動で追加することで、クラスタ全体の負荷を管理しやすくします。
(3) ポリシー適用
企業やチームで決めたルールを徹底するために、条件を満たさないリソースをブロックします。
これらの機能によって、クラスタの運用ルールを確実に守りながら、運用負荷を減らせるのです。
OPAとAdmission Controllerはどう違う?
Admission Controllerとよく一緒に使われるのが、**OPA(Open Policy Agent)**です。これらは役割が似ていますが、少し違いがあります。
Admission Controller: 実際にリソースのチェックや修正を行う仕組み。
OPA: Admission Controllerが参照するポリシーを柔軟に定義するためのツール。
たとえるなら、Admission Controllerは「入口でルールを守らせる係員」で、OPAは「その係員が参照するチェックリストやマニュアル」です。OPAを活用することで、複雑なルールでも簡単に記述し、Admission Controllerに適用できます。
まとめ
Admission Controllerは、Kubernetesクラスタの安全性や一貫性を保つための頼もしい「門番」です。
(1) リソースの検査や修正を自動化して、運用負荷を減らす
(2) セキュリティやポリシー管理を強化して、安心してシステムを運用できる環境を作る
(3) OPAと組み合わせることで、柔軟なルール管理が可能になる
Admission Controllerを活用することで、Kubernetesクラスタはより安全で管理しやすい環境になります。ポリシー管理やセキュリティをしっかり守りたい場合には、ぜひ導入を検討してみてください。