From 838a766d120179e4066624ea60bd5d4b725f7e1f Mon Sep 17 00:00:00 2001 From: Jingfang Liu Date: Mon, 23 Jul 2018 14:28:27 -0700 Subject: [PATCH] Add docs and demo for imageTags --- docs/kustomization.yaml | 16 +++++++++ examples/README.md | 2 ++ examples/imageTags.md | 75 +++++++++++++++++++++++++++++++++++++++++ 3 files changed, 93 insertions(+) create mode 100644 examples/imageTags.md diff --git a/docs/kustomization.yaml b/docs/kustomization.yaml index 727c258eb..f81f437ee 100644 --- a/docs/kustomization.yaml +++ b/docs/kustomization.yaml @@ -184,3 +184,19 @@ vars: apiVersion: apps/v1 fieldref: fieldpath: spec.template.spec.restartPolicy + +# ImageTags modify the tags for images without creating patches. +# E.g. Given this fragment of a Deployment: +# ``` +# containers: +# - name: myapp +# image: mycontainerregistry/myimage:v0 +# - name: nginxapp +# image: nginx:1.7.9 +#``` +# one can change the tag of myimage to v1 and the tag of nginx to 1.8.0 with the following: +imageTags: + - name: mycontainerregistry/myimage + newTag: v1 + - name: nginx + newTag: 1.8.0 diff --git a/examples/README.md b/examples/README.md index 6ac0dc8ed..9986a854b 100644 --- a/examples/README.md +++ b/examples/README.md @@ -31,3 +31,5 @@ go get github.com/kubernetes-sigs/kustomize Alice and Bob. * [container args](wordpress/README.md) - Injecting k8s runtime data into container arguments (e.g. to point wordpress to a SQL service). + + * [image tags](imageTags.md) - Updating image tags without applying a patch. diff --git a/examples/imageTags.md b/examples/imageTags.md new file mode 100644 index 000000000..d6a5fe11a --- /dev/null +++ b/examples/imageTags.md @@ -0,0 +1,75 @@ +# Demo: change image tags + + +Define a place to work: + + +``` +DEMO_HOME=$(mktemp -d) +``` + +Make a `kustomization` containing a pod resource + + +``` +cat <$DEMO_HOME/kustomization.yaml +resources: +- pod.yaml +EOF +``` + +Declare the pod resource + + +``` +cat <$DEMO_HOME/pod.yaml +apiVersion: v1 +kind: Pod +metadata: + name: myapp-pod + labels: + app: myapp +spec: + containers: + - name: myapp-container + image: busybox:1.29.0 + command: ['sh', '-c', 'echo The app is running! && sleep 3600'] + initContainers: + - name: init-mydb + image: busybox:1.29.0 + command: ['sh', '-c', 'until nslookup mydb; do echo waiting for mydb; sleep 2; done;'] +EOF +``` + +The `myapp-pod` resource declares an initContainer and a container, both use the image `busybox:1.29.0`. +The tag `1.29.0` can be changed by adding `imageTags` in `kustomization.yaml`. + + +Add `imageTags`: + +``` +cd $DEMO_HOME +kustomize edit set imagetag busybox:1.29.1 +``` + +The `kustomization.yaml` will be added following `imageTags`. +> ``` +> imageTags: +> - name: busybox +> newTag: 1.29.1 +> ``` + +Now build this `kustomization` + +``` +kustomize build $DEMO_HOME +``` + +Confirm that this replaces _both_ busybox tags: + + +``` +test 2 == \ + $(kustomize build $DEMO_HOME | grep busybox:1.29.1 | wc -l); \ + echo $? +```