Kubernetes Kyverno

このページの元の著者は Guillaume です。

定義

Kyvernoは、Kubernetesのためのオープンソースのポリシー管理フレームワークであり、組織がKubernetesインフラ全体にわたってポリシーを定義、施行、監査することを可能にします。これは、Kubernetesクラスターのセキュリティ、コンプライアンス、およびガバナンスを管理するためのスケーラブルで拡張可能、かつ非常にカスタマイズ可能なソリューションを提供します。

ユースケース

Kyvernoは、さまざまなユースケースで使用できます。例えば:

  1. ネットワークポリシーの施行: Kyvernoは、ポッドやサービス間のトラフィックを許可またはブロックするなどのネットワークポリシーを施行するために使用できます。

  2. シークレット管理: Kyvernoは、シークレットを特定の形式または場所に保存することを要求するなどのシークレット管理ポリシーを施行するために使用できます。

  3. アクセス制御: Kyvernoは、特定のリソースにアクセスするためにユーザーが特定の役割や権限を持つことを要求するなどのアクセス制御ポリシーを施行するために使用できます。

例: ClusterPolicyとPolicy

Kubernetesクラスターに複数のネームスペースがあり、defaultネームスペース内のすべてのポッドに特定のラベルを持たせるポリシーを施行したいとしましょう。

ClusterPolicy

ClusterPolicyは、全体的なポリシーの意図を定義する高レベルのポリシーです。この場合、私たちのClusterPolicyは次のようになります:

apiVersion: kyverno.io/v1
kind: ClusterPolicy
metadata:
name: require-label
spec:
rules:
- validate:
message: "Pods in the default namespace must have the label 'app: myapp'"
match:
any:
- resources:
kinds:
- Pod
namespaceSelector:
matchLabels:
namespace: default
- any:
- resources:
kinds:
- Pod
namespaceSelector:
matchLabels:
namespace: default
validationFailureAction: enforce

default 名前空間に app: myapp ラベルなしでポッドが作成されると、Kyverno はリクエストをブロックし、ポリシー要件を満たしていないことを示すエラーメッセージを返します。

References

Last updated