Policy Management with Kyverno
Overview
Kyverno is a Kubernetes-native policy engine that validates, mutates, and generates resources based on policies.
Install Kyverno
helm repo add kyverno https://kyverno.github.io/kyverno
helm repo update
helm install kyverno kyverno/kyverno \
--namespace kyverno \
--create-namespace \
--set replicaCount=2Cluster Policy Examples
Require labels on pods
apiVersion: kyverno.io/v1
kind: ClusterPolicy
metadata:
name: require-labels
spec:
validationFailureAction: Enforce
rules:
- name: check-label
match:
resources:
kinds:
- Pod
validate:
message: "Label 'app' is required"
pattern:
metadata:
labels:
app: "?*"Restrict image registries
apiVersion: kyverno.io/v1
kind: ClusterPolicy
metadata:
name: restrict-registries
spec:
validationFailureAction: Enforce
rules:
- name: require-allowed-registry
match:
resources:
kinds:
- Pod
validate:
message: "Only approved registries allowed"
pattern:
spec:
containers:
- image: "!*registry.example.com*"Mutate pods for security
apiVersion: kyverno.io/v1
kind: ClusterPolicy
metadata:
name: add-security-context
spec:
mutation:
rules:
- name: add-runasnonroot
match:
resources:
kinds:
- Pod
mutate:
patchStrategicMerge:
spec:
securityContext:
runAsNonRoot: true
runAsUser: 10000Policy Reports
# View policy reports
kubectl get polr -A
# View violation details
kubectl describe polr -n default