Kyverno 是一个专为 Kubernetes 设计的 策略引擎(Policy Engine),用于通过声明式策略(YAML)自动化管理集群的安全、合规和运维规则。它的名字源自希腊语 "κυβερνήτης"(意为“舵手”),寓意引导 Kubernetes 集群安全航行。
原生 Kubernetes 集成
策略即代码(Policy-as-Code)
上下文感知
免 Sidecar
场景 | 示例策略 |
---|---|
安全加固 | 禁止容器以 root 用户运行 |
合规检查 | 要求所有 Pod 添加 env=prod 标签 |
自动修复 | 自动为没有 resource-limits 的 Pod 添加 CPU/内存限制 |
多租户管理 | 限制不同团队只能访问特定命名空间 |
成本优化 | 强制删除超过 30 天未使用的 PVC |
工具 | 特点 |
---|---|
Kyverno | 专为 K8s 设计,策略语法简单,支持变更和生成,无需学习 Rego 语言 |
OPA | 通用策略引擎(不限于 K8s),需搭配 Gatekeeper,使用 Rego 语言编写策略 |
apiVersion: kyverno.io/v1
kind: ClusterPolicy
metadata:
name: disable-privileged-containers
spec:
validationFailureAction: Enforce # 强制拒绝违规请求
rules:
- name: check-privileged
match:
resources:
kinds:
- Pod
validate:
message: "特权容器禁止运行!"
pattern:
spec:
containers:
- securityContext:
privileged: false
apiVersion: kyverno.io/v1
kind: ClusterPolicy
metadata:
name: add-default-label
spec:
rules:
- name: inject-label
match:
resources:
kinds:
- Pod
mutate:
patchStrategicMerge:
metadata:
labels:
env: "default"
helm install kyverno kyverno/kyverno -n kyverno --create-namespace
kubectl apply -f policy.yaml
Kyverno 通过 简单易用的策略管理,帮助用户降低 Kubernetes 的运维复杂度和安全风险。