Inline Patch
A kustomization file supports patching in three ways:
- patchesStrategicMerge: A list of patch files where each file is parsed as a Strategic Merge Patch.
- patchesJSON6902: A list of patches and associated targetes, where each file is parsed as a JSON Patch and can only be applied to one target resource.
- patches: A list of patches and their associated targets. The patch can be applied to multiple objects. It auto detects whether the patch is a Strategic Merge Patch or JSON Patch.
Since 3.2.0, all three support inline patch, where the patch content is put inside the kustomization file as a single string. With this feature, no separate patch files need to be created.
Make a base kustomization containing a Deployment resource.
Define a place to work:
DEMO_HOME = $(mktemp -d) /base
Define a common base:
$ cd $DEMO_HOME $ mkdir base $ cd base Create a Sample Pod File and Kustomize file in base
$ vim kustomization.yaml # kustomization.yaml contents resources: - deployments.yaml # deployments.yaml contents apiVersion: apps/v1 kind: Deployment metadata: name: deploy spec: template: metadata: labels: foo: bar spec: containers: - name: nginx image: nginx args: - arg1 - arg2 PatchesStrategicMerge
patch
Create an overlay and add an inline patch in patchesStrategicMerge field to the kustomization file to change the image from nginx to nginx:latest.
$ cd $DEMO_HOME $ mkdir smp_patch $ cd smp_patch Create a Kustomize file in smp_patch
# kustomization.yaml contents resources: - ../base patchesStrategicMerge: - |- apiVersion: apps/v1 kind: Deployment metadata: name: deploy spec: template: spec: containers: - name: nginx image: nginx:latest Running kustomize build, in the output confirm that image is updated successfully.
apiVersion: apps/v1 kind: Deployment metadata: name: deploy spec: template: metadata: labels: foo: bar spec: containers: - args: - arg1 - arg2 image: nginx:latest name: nginx $patch: delete and $patch: replace also work in the inline patch. Change the inline patch to delete the container nginx.
patch: delete
$ cd $DEMO_HOME $ mkdir smp_delete $ cd smp_delete Create a Kustomize file in smp_delete
# kustomization.yaml contents resources: - ../base patchesStrategicMerge: - |- apiVersion: apps/v1 kind: Deployment metadata: name: deploy spec: template: spec: containers: - name: nginx $patch: delete Running kustomize build, in the output confirm that image is updated successfully.
apiVersion: apps/v1 kind: Deployment metadata: name: deploy spec: template: metadata: labels: foo: bar spec: containers: [] patch: replace
$ cd $DEMO_HOME $ mkdir smp_replace $ cd smp_replace Create a Kustomize file in smp_replace
# kustomization.yaml contents resources: - ../base patchesStrategicMerge: - |- apiVersion: apps/v1 kind: Deployment metadata: name: deploy spec: template: spec: containers: - name: nginx image: nginx:1.7.9 $patch: replace Running kustomize build, in the output confirm that image is updated successfully. Since we are replacing notice that the arguments set in the base file are gone.
apiVersion: apps/v1 kind: Deployment metadata: name: deploy spec: template: metadata: labels: foo: bar spec: containers: - image: nginx:1.7.9 name: nginx PatchesJson6902
Create an overlay and add an inline patch in patchesJSON6902 field to the kustomization file to change the image from nginx to nginx:latest.
$ cd $DEMO_HOME $ mkdir json $ cd json Create a Kustomize file in json
# kustomization.yaml contents resources: - ../base patchesJSON6902: - target: group: apps version: v1 kind: Deployment name: deploy patch: |- - op: replace path: /spec/template/spec/containers/0/image value: nginx:latest Running kustomize build, in the output confirm that image is updated successfully.
apiVersion: apps/v1 kind: Deployment metadata: name: deploy spec: template: metadata: labels: foo: bar spec: containers: - args: - arg1 - arg2 image: nginx:latest name: nginx Patches
Create an overlay and add an inline patch in patches field to the kustomization file to change the image from nginx to nginx:latest.
$ cd $DEMO_HOME $ mkdir patch $ cd patch Create a Kustomize file in patch
# kustomization.yaml contents resources: - ../base patches: - target: kind: Deployment name: deploy patch: |- apiVersion: apps/v1 kind: Deployment metadata: name: deploy spec: template: spec: containers: - name: nginx image: nginx:latest Running kustomize build, in the output confirm that image is updated successfully.
apiVersion: apps/v1 kind: Deployment metadata: name: deploy spec: template: metadata: labels: foo: bar spec: containers: - args: - arg1 - arg2 image: nginx:latest name: nginx Feedback
Was this page helpful?
Glad to hear it! Please tell us how we can improve.
Sorry to hear that. Please tell us how we can improve.