Chapter 8. Triggering updates on image stream changes


When an image stream tag is updated to point to a new image, Red Hat OpenShift Service on AWS can automatically take action to roll the new image out to resources that were using the old image. You configure this behavior in different ways depending on the type of resource that references the image stream tag.

8.1. Red Hat OpenShift Service on AWS resources

Red Hat OpenShift Service on AWS deployment configurations and build configurations can be automatically triggered by changes to image stream tags. The triggered action can be run using the new value of the image referenced by the updated image stream tag.

8.2. Triggering Kubernetes resources

Kubernetes resources do not have fields for triggering, unlike deployment and build configurations, which include as part of their API definition a set of fields for controlling triggers. Instead, you can use annotations in Red Hat OpenShift Service on AWS to request triggering.

The annotation is defined as follows:

apiVersion: v1
kind: Pod
metadata:
  annotations:
    image.openshift.io/triggers:
      [
       {
         "from": {
           "kind": "ImageStreamTag", 1
           "name": "example:latest", 2
           "namespace": "myapp" 3
         },
         "fieldPath": "spec.template.spec.containers[?(@.name==\"web\")].image", 4
         "paused": false 5
       },
      # ...
      ]
# ...
1
Required: kind is the resource to trigger from must be ImageStreamTag.
2
Required: name must be the name of an image stream tag.
3
Optional: namespace defaults to the namespace of the object.
4
Required: fieldPath is the JSON path to change. This field is limited and accepts only a JSON path expression that precisely matches a container by ID or index. For pods, the JSON path is spec.containers[?(@.name='web')].image.
5
Optional: paused is whether or not the trigger is paused, and the default value is false. Set paused to true to temporarily disable this trigger.

When one of the core Kubernetes resources contains both a pod template and this annotation, Red Hat OpenShift Service on AWS attempts to update the object by using the image currently associated with the image stream tag that is referenced by trigger. The update is performed against the fieldPath specified.

Examples of core Kubernetes resources that can contain both a pod template and annotation include:

  • CronJobs
  • Deployments
  • StatefulSets
  • DaemonSets
  • Jobs
  • ReplicationControllers
  • Pods

8.3. Setting the image trigger on Kubernetes resources

When adding an image trigger to deployments, you can use the oc set triggers command. For example, the sample command in this procedure adds an image change trigger to the deployment named example so that when the example:latest image stream tag is updated, the web container inside the deployment updates with the new image value. This command sets the correct image.openshift.io/triggers annotation on the deployment resource.

Procedure

  • Trigger Kubernetes resources by entering the oc set triggers command:

    $ oc set triggers deploy/example --from-image=example:latest -c web

    Example deployment with trigger annotation

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      annotations:
        image.openshift.io/triggers: '[{"from":{"kind":"ImageStreamTag","name":"example:latest"},"fieldPath":"spec.template.spec.containers[?(@.name==\"container\")].image"}]'
    # ...

    Unless the deployment is paused, this pod template update automatically causes a deployment to occur with the new image value.

Red Hat logoGithubRedditYoutubeTwitter

Learn

Try, buy, & sell

Communities

About Red Hat Documentation

We help Red Hat users innovate and achieve their goals with our products and services with content they can trust.

Making open source more inclusive

Red Hat is committed to replacing problematic language in our code, documentation, and web properties. For more details, see the Red Hat Blog.

About Red Hat

We deliver hardened solutions that make it easier for enterprises to work across platforms and environments, from the core datacenter to the network edge.

© 2024 Red Hat, Inc.