MutatingPolicy
patchType: ApplyConfiguration
(Server-Side-Apply-Merge) oder JSONPatch.
Bestandsressourcen:
spec.evaluation.mutateExisting.enabled: true, der
Background-Controller mutiert dann bereits existierende Objekte.
Trigger und Ziel trennen per targetMatchConstraints
(seit 1.17 auch als CEL-expression); ein Trigger
mutiert alle passenden Ziele.
apiVersion: policies.kyverno.io/v1
kind: MutatingPolicy
metadata: {name: add-label}
spec:
matchConstraints:
resourceRules:
- apiGroups: [""]
apiVersions: [v1]
operations: [CREATE]
resources: [pods]
mutations:
- patchType: ApplyConfiguration
applyConfiguration:
expression: >
Object{metadata: Object.metadata{
labels: Object.metadata.labels{
team: "platform"}}}
GeneratingPolicy
Erzeugt oder klont Ressourcen auf Trigger, Klassiker:
Default-NetworkPolicy oder ResourceQuota bei jedem neuen
Namespace. Seit 1.19 auch als YAML:
generate[].template.value, mit
interpolate: cel für
(( ... ))-Platzhalter, und
useServerSideApply: true für SSA. Läuft
über UpdateRequests des Background-Controllers.