Update the Ascender Execution Environment on Kubernetes
Introduction
Ascender runs project syncs and job templates inside an execution environment (EE) container. When a new EE image is published, for example to pick up a security fix, a Kubernetes-based Ascender deployment does not load it automatically. The running pods keep using the image they already pulled. This article shows how to force Ascender to pull the updated EE. It applies to Ascender Pro deployed on Kubernetes.
Problem
You force Ascender onto a new EE for one of two reasons.
The most common is to pull a patched EE, usually to pick up CVE remediation in a newer image. The other is recovery: if the current EE can no longer complete project updates or job templates, for example after an upstream change affects one of the dependencies it relies on, pulling the updated image restores the environment.
Resolution
Confirm the image pull policy, then restart the task deployment so Kubernetes re-pulls the EE.
First, check the pull policy so a restart actually fetches the new image. Replace ascender with your namespace and ascender-app with your Ascender resource name if they differ:
kubectl -n ascender get awx ascender-app -o=jsonpath='{.spec.image_pull_policy}'
This should return Always. With any other policy, Kubernetes reuses the cached image and a restart alone will not pick up the update (see Notes).
Then restart the task deployment to re-pull the EE and load the patched container:
kubectl -n ascender rollout restart deployment/ascender-app-task
⚠️ WARNING This restarts the Ascender task pods, which interrupts any jobs currently running. Perform it during a maintenance window or when the environment is idle.
Once the new pods are running, re-run a project sync to confirm it now uses the new EE. If a broken EE was blocking syncs or templates, they should run normally afterward.
Notes
- If the pull policy is not
Always, Kubernetes will not re-pull an image it already has cached, so the restart will not pick up the patched EE. Setimage_pull_policytoAlwayson the Ascender resource (this is configured at install time through the Ascender install script) and allow the operator to reconcile before restarting the deployment. - This procedure refreshes the EE that ships with Ascender. If you maintain your own EE image, see Building a Custom Execution Environment for Ascender.
Root Cause
Kubernetes pulls a container image when a pod first starts and then caches it. A running Ascender task pod keeps using the EE image it started with, even after a new image is published under the same tag. With image_pull_policy set to Always, restarting the deployment forces Kubernetes to re-pull the current image, so the replacement pods come up on the patched EE.
References & related articles
Building a Custom Execution Environment for Ascender
Update SSL Certificates for Ascender