Skip to content

Latest commit

 

History

History
128 lines (109 loc) · 2.64 KB

File metadata and controls

128 lines (109 loc) · 2.64 KB

Images transformations

This tutorial shows how to modify images in resources, and create a custom images transformer configuration.

Create a workspace by

DEMO_HOME=$(mktemp -d)

Adding a custom resource

Consider a Custom Resource Definition(CRD) of kind MyKind with field

  • .spec.runLatest.container.image referencing an image

Add the following file to configure the images transformer for the CRD:

mkdir $DEMO_HOME/kustomizeconfig
cat > $DEMO_HOME/kustomizeconfig/mykind.yaml << EOF

images:
- path: spec/runLatest/container/image
  kind: MyKind
EOF

Apply config

Create a file with some resources that includes an instance of MyKind:

cat > $DEMO_HOME/resources.yaml << EOF

apiVersion: config/v1
kind: MyKind
metadata:
  name: testSvc
spec:
  runLatest:
    container:
      image: crd-image
  containers:
    - image: docker
      name: ecosystem
    - image: my-mysql
      name: testing-1
---
group: apps
apiVersion: v1
kind: Deployment
metadata:
  name: deploy1
spec:
  template:
    spec:
      initContainers:
      - name: nginx2
        image: my-app
      - name: init-alpine
        image: alpine:1.8.0
EOF

Create a kustomization.yaml referring to it:

cat > $DEMO_HOME/kustomization.yaml << EOF
resources:
- resources.yaml

images:
- name: crd-image
  newName: new-crd-image
  newTag: new-v1-tag
- name: my-app
  newName: new-app-1
  newTag: MYNEWTAG-1
- name: my-mysql
  newName: prod-mysql
  newTag: v3
- name: docker
  newName: my-docker2
  digest: sha256:25a0d4
EOF

Use the customized transformer configurations by specifying them in the kustomization file:

cat >> $DEMO_HOME/kustomization.yaml << EOF
configurations:
- kustomizeconfig/mykind.yaml
EOF

Run kustomize build and verify that the images have been updated.

test 1 == \
$(kustomize build $DEMO_HOME | grep -A 2 ".*image" | grep "new-crd-image:new-v1-tag" | wc -l); \
echo $?
test 1 == \
$(kustomize build $DEMO_HOME | grep -A 2 ".*image" | grep "new-app-1:MYNEWTAG-1" | wc -l); \
echo $?
test 1 == \
$(kustomize build $DEMO_HOME | grep -A 2 ".*image" | grep "my-docker2@sha" | wc -l); \
echo $?
test 1 == \
$(kustomize build $DEMO_HOME | grep -A 2 ".*image" | grep "prod-mysql:v3" | wc -l); \
echo $?