Certified Kubernetes Application Developer - CKAD

2025 Updates Kustomize Basics

Image Transformers

In this article, we explore how to modify container images in Kubernetes manifests using Kustomize image transformers. This powerful technique enables you to update image references—and even image tags—in your deployment files without editing them manually.

Below is an example deployment manifest (deployment.yaml) for an Nginx server:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: web-deployment
spec:
  replicas: 1
  selector:
    matchLabels:
      component: web
  template:
    metadata:
      labels:
        component: web
    spec:
      containers:
      - name: web
        image: nginx

To modify the image used by this deployment, create a Kustomize image transformer in a file named kustomization.yaml. In the transformer, the name property specifies the image to search for (in this case, "nginx"), and the newName property defines the replacement image. For example, to replace Nginx with HAProxy, use the following configuration:

images:
- name: nginx
  newName: haproxy

The image transformer scans all Kubernetes configuration files for containers using an image named "nginx" and replaces it with "haproxy."

Note

The name field in the kustomization.yaml file strictly refers to the image name and is not related to the container name specified in the deployment manifest.

After applying this transformation, the deployment manifest is updated so that the container image changes from "nginx" to "haproxy." The modified deployment appears as follows:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: web-deployment
spec:
  replicas: 1
  selector:
    matchLabels:
      component: web
  template:
    metadata:
      labels:
        component: web
    spec:
      containers:
      - name: web
        image: haproxy

Changing the Image Tag

If you want to update only the image tag without switching the image itself, the image transformer can modify the tag value. Begin with the original deployment manifest:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: web-deployment
spec:
  replicas: 1
  selector:
    matchLabels:
      component: web
  template:
    metadata:
      labels:
        component: web
    spec:
      containers:
      - name: web
        image: nginx

Next, update your kustomization.yaml to specify the new tag:

images:
- name: nginx
  newTag: 2.4

Once applied, the container image in the deployment is updated to include the new tag, yielding the following transformed manifest:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: web-deployment
spec:
  replicas: 1
  selector:
    matchLabels:
      component: web
  template:
    metadata:
      labels:
        component: web
    spec:
      containers:
      - name: web
        image: nginx:2.4

Combining Image and Tag Transformations

You can perform both image name and tag transformations simultaneously in a single kustomization.yaml file. For instance, if you want to change the Nginx image to HAProxy and update its tag to "2.4," use the following configuration:

images:
- name: nginx
  newName: haproxy
  newTag: 2.4

After applying this configuration, the final deployment manifest will feature the container image updated to "haproxy:2.4."


This guide demonstrates how to leverage Kustomize's image transformer for efficient container image and tag modifications, ensuring a consistent deployment process while minimizing manual edits.

Watch Video

Watch video content

Previous
Common Transformers