Kubernetes Kyverno

Reading time: 2 minutes

このページの元の著者は Guillaume

定義

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

ユースケース

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

  1. ネットワークポリシーの施行: Kyvernoは、ポッドやサービス間のトラフィックを許可またはブロックするなどのネットワークポリシーを施行するために使用できます。
  2. シークレット管理: Kyvernoは、シークレットを特定の形式または場所に保存することを要求するなどのシークレット管理ポリシーを施行するために使用できます。
  3. アクセス制御: Kyvernoは、特定のリソースにアクセスするためにユーザーが特定の役割や権限を持つことを要求するなどのアクセス制御ポリシーを施行するために使用できます。

例: ClusterPolicyとPolicy

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

ClusterPolicy

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

yaml
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