Mutation Custom Resources
The reinvocationPolicy: IfNeeded is used in MutatingWebhookConfiguration. More details in the Kubernetes documentation.
Provide a configurable set of policies for modifying Kubernetes resources at the time they are deployed.
AssignMetadata
Allows you to modify the Metadata section of a resource.
At the moment, Gatekeeper only allows adding labels and annotations objects. Modification of existing objects is not provided.
An example of adding the label owner with the value admin in all namespaces:
apiVersion: mutations.gatekeeper.sh/v1
kind: AssignMetadata
metadata:
name: demo-annotation-owner
spec:
match:
scope: Namespaced
location: "metadata.labels.owner"
parameters:
assign:
value: "admin"
Assign
Allows you to modify fields outside the Metadata section.
An example of setting imagePullPolicy for all containers to Always in all namespaces except the system namespace:
apiVersion: mutations.gatekeeper.sh/v1
kind: Assign
metadata:
name: demo-image-pull-policy
spec:
applyTo:
- groups: [""]
kinds: ["Pod"]
versions: ["v1"]
match:
scope: Namespaced
kinds:
- apiGroups: ["*"]
kinds: ["Pod"]
excludedNamespaces: ["system"]
location: "spec.containers[name:*].imagePullPolicy"
parameters:
assign:
value: Always
ModifySet
Allows you to add and remove items from a list, such as arguments for running a container. New values are added to the end of the list.
An example of removing the --alsologtostderr argument from all containers in a pod:
apiVersion: mutations.gatekeeper.sh/v1
kind: ModifySet
metadata:
name: remove-err-logging
spec:
applyTo:
- groups: [""]
kinds: ["Pod"]
versions: ["v1"]
location: "spec.containers[name: *].args"
parameters:
operation: prune
values:
fromList:
- --alsologtostderr
AssignImage
Allows you to make changes to the image parameter of a resource.
An example of changing the image parameter to the value my.registry.io/repo/app@sha256:abcde67890123456789abc345678901a:
apiVersion: mutations.gatekeeper.sh/v1alpha1
kind: AssignImage
metadata:
name: assign-container-image
spec:
applyTo:
- groups: [ "" ]
kinds: [ "Pod" ]
versions: [ "v1" ]
location: "spec.containers[name:*].image"
parameters:
assignDomain: "my.registry.io"
assignPath: "repo/app"
assignTag: "@sha256:abcde67890123456789abc345678901a"
match:
source: "All"
scope: Namespaced
kinds:
- apiGroups: [ "*" ]
kinds: [ "Pod" ]