Kubewarden 策略引擎
Kubewarden 用 WebAssembly 编写 Kubernetes 准入策略,支持 Rust、Go、Python、TypeScript 等语言。策略以 OCI 镜像分发,由 PolicyServer 执行,适合需要可移植、沙箱化策略的集群。
核心概念:PolicyServer、ClusterAdmissionPolicy、AdmissionPolicy、PolicyReport 和 kwctl CLI。
安装控制器:
helm repo add kubewarden https://charts.kubewarden.io
helm install kubewarden kubewarden/kubewarden \
--namespace kubewarden --create-namespace
kubectl -n kubewarden get pods
创建 PolicyServer:
kubectl apply -f - <<'EOF'
apiVersion: policies.kubewarden.io/v1
kind: PolicyServer
metadata:
name: default
spec:
replicas: 2
image: ghcr.io/kubewarden/policy-server:v1.20.0
EOF
创建 ClusterAdmissionPolicy:
kubectl apply -f - <<'EOF'
apiVersion: policies.kubewarden.io/v1
kind: ClusterAdmissionPolicy
metadata:
name: psp-capabilities
spec:
module: registry://ghcr.io/kubewarden/policies/psp-capabilities:v0.1.9
rules:
- apiGroups: [""]
apiVersions: ["v1"]
resources: ["pods"]
operations: ["CREATE", "UPDATE"]
mutating: false
settings:
allowed_capabilities: ["NET_BIND_SERVICE"]
required_drop_capabilities: ["ALL"]
EOF
查看策略和报告:
kubectl get clusteradmissionpolicies
kubectl get policyreports -A
kubectl describe clusteradmissionpolicy psp-capabilities
使用 kwctl 本地测试:
kwctl pull registry://ghcr.io/kubewarden/policies/psp-capabilities:v0.1.9
kwctl run registry://ghcr.io/kubewarden/policies/psp-capabilities:v0.1.9 \
--request pod.json
rules 范围过大,会影响系统组件和 Job。kwctl/PolicyServer 的 ABI 版本。failurePolicy 明确。kwctl — 拉取、测试和签名策略kubectl get clusteradmissionpolicies — 查看策略kubectl get policyreports -A — 查看违规报告kubectl logs -n kubewarden deploy/kubewarden-controller — 控制器日志cosign — 校验策略镜像签名