Kyverno
ポリシーそのものが Kubernetes リソースである admission エンジン。別言語ではなく YAML としてポリシーを書き、レビューできる。
- カテゴリ: Security & Compliance
- CNCF 成熟度: Graduated
- 言語: Go
- ライセンス: Apache-2.0
- リポジトリ: kyverno/kyverno
- ドキュメント基準コミット:
989e001(v1.18.1 系, 2026-06-20)
何をするものか
Kyverno は Kubernetes 向けのポリシーエンジン。リソースの作成・更新・削除のたびに API server が呼ぶ admission webhook として動く。各ポリシーは Kubernetes のカスタムリソースなので、ワークロードを管理するのと同じ kubectl apply と RBAC で、それらを統治するルールも管理できる。
1 つの rule は次の 4 つのいずれかを行う。リソースを validate して受理/拒否する、フィールドを patch して mutate する、新しい namespace にデフォルトの NetworkPolicy を入れるような付随リソースを generate する、コンテナイメージの署名を verify する。validate と mutate は admission リクエストの中でインラインに走る。generate と既存リソースの mutate は background controller を通じて非同期に走る。
近年のリリースは Common Expression Language (CEL) へ寄せている。CEL は Kubernetes ネイティブの ValidatingAdmissionPolicy が使うのと同じ言語だ。Kyverno は旧来の ClusterPolicy モデルと並んで CEL ベースのポリシー型を提供し、Kubernetes ネイティブの admission policy を置換せず bind できる。プロジェクトは複数バイナリで動く。admission controller、background controller、cleanup controller、reports controller、そして kubectl-kyverno CLI だ。
いつ使うか
- Kubernetes リソースを enforce / mutate / generate したく、別のポリシー言語より Kubernetes YAML で書くポリシーを好む。
- イメージ署名検証や付随リソースの自動生成を、後付けでなく同じエンジンで扱いたい。
- Pod 向けに書いた 1 つの rule で、Deployment / DaemonSet / StatefulSet / Job / CronJob まで、controller ごとにコピーせず網羅したい。
- ポリシーロジックの大半が Kubernetes admission の外にある場合、または非 Kubernetes システム全体で汎用ポリシー言語に既に標準化済みの場合は、向かない。
このディープダイブの構成
- 歴史: Nirmata での起源、CNCF への寄贈、graduation。
- アーキテクチャ: 各 controller と、1 本の admission リクエストがどう流れるか。
- 採用事例・エコシステム: 出典付きの採用組織、GitHub のシグナル、周辺ツール。
- 内部実装: rule と response のデータ構造をソースから読む。
- はじめに: Helm でインストールし、非準拠 Pod をブロックする。
出典
- kyverno/kyverno on GitHub (2026-06-22)
- CNCF Announces Kyverno's Graduation (2026-06-22)
- Kyverno - CNCF project (2026-06-22)
- Announcing Kyverno release 1.18 (2026-06-22)
- Kubernetes Policy Comparison: Kyverno vs OPA/Gatekeeper, Nirmata (2026-06-22)
- OPA/Gatekeeper vs Kyverno, policyascode.dev (2026-06-22)
- Kyverno Introduction / Quick Start (2026-06-22)
- Kyverno ADOPTERS.md (2026-06-22)
- Kyverno GOVERNANCE.md (2026-06-22)
- GitHub REST API repos/kyverno/kyverno (2026-06-22)