{"templateId":"markdown","sharedDataIds":{"sidebar":"sidebar-sidebars.yaml"},"props":{"metadata":{"markdoc":{"tagList":["admonition","tabs","tab"]},"type":"markdown"},"seo":{"title":"Updating the Container Image","siteUrl":"https://docs.hiddenlayer.ai","llmstxt":{"hide":false,"sections":[{"title":"Table of contents","includeFiles":["**/*"],"excludeFiles":[]}],"excludeFiles":[]}},"dynamicMarkdocComponents":[],"compilationErrors":[],"ast":{"$$mdtype":"Tag","name":"article","attributes":{},"children":[{"$$mdtype":"Tag","name":"Heading","attributes":{"level":1,"id":"updating-the-container-image","__idx":0},"children":["Updating the Container Image"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Update the AI Runtime Security container image deployed to Kubernetes when a new version is released."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"overview","__idx":1},"children":["Overview"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["The container image is hosted on ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["images.hiddenlayer.ai"]}," and referenced in the deployment manifest:"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"yaml","header":{"controls":{"copy":{}}},"source":"image: images.hiddenlayer.ai/proxy/aidr-genai/ghcr.io/hiddenlayer-engineering/distro-enterprise-aidr-genai:<tag>\n","lang":"yaml"},"children":[]},{"$$mdtype":"Tag","name":"Admonition","attributes":{"type":"warning","name":"Avoid the latest tag"},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Do not use the ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":[":latest"]}," tag in production. Kubernetes will not detect a change if the tag stays the same, so new images won't be pulled automatically. Use explicit version tags (e.g., ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["26.1.0"]},") to ensure updates are applied reliably."]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"prerequisites","__idx":2},"children":["Prerequisites"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["kubectl"]}," configured with access to your cluster"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Access to ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["images.hiddenlayer.ai"]}," with valid registry credentials and ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["imagePullSecret"]}," configured in your cluster"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Your deployment name and namespace (referenced as ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["$NAMESPACE"]}," and ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["aidr-genai"]}," in the commands below)"]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"release-workflow","__idx":3},"children":["Release Workflow"]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"step-1-identify-the-new-image-tag","__idx":4},"children":["Step 1: Identify the new image tag"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["HiddenLayer publishes ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"https://docs.hiddenlayer.ai/docs/products/runtime/releasenotes"},"children":["release notes"]}," for each new version. When you receive a release notification, use the tag from the release notes in the steps below."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["New releases are published to ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["images.hiddenlayer.ai"]},". Find the version you want to deploy:"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"header":{"controls":{"copy":{}}},"source":"images.hiddenlayer.ai/proxy/aidr-genai/ghcr.io/hiddenlayer-engineering/distro-enterprise-aidr-genai:$TAG\n"},"children":[]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["You do not need to pull the image locally, as Kubernetes pulls it directly from the registry during the rolling update."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"step-2-apply-the-update","__idx":5},"children":["Step 2: Apply the update"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["You can update the image using either the manifest file or a direct ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["kubectl"]}," patch."]},{"$$mdtype":"Tag","name":"Tabs","attributes":{"size":"medium"},"children":[{"$$mdtype":"Tag","name":"div","attributes":{"label":"Update manifest (recommended)","disable":false},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Edit the image tag in your deployment manifest:"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"yaml","header":{"controls":{"copy":{}}},"source":"image: images.hiddenlayer.ai/proxy/aidr-genai/ghcr.io/hiddenlayer-engineering/distro-enterprise-aidr-genai:$TAG\n","lang":"yaml"},"children":[]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Apply the updated manifest:"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"bash","header":{"controls":{"copy":{}}},"source":"kubectl apply -f $MANIFEST_FILE.yaml\n","lang":"bash"},"children":[]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Kubernetes detects the tag change and triggers a rolling update automatically."]}]},{"$$mdtype":"Tag","name":"div","attributes":{"label":"Patch inline","disable":false},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Update the image directly without editing the manifest file:"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"bash","header":{"controls":{"copy":{}}},"source":"kubectl set image deployment/aidr-genai \\\n  service=images.hiddenlayer.ai/proxy/aidr-genai/ghcr.io/hiddenlayer-engineering/distro-enterprise-aidr-genai:$TAG \\\n  -n $NAMESPACE\n","lang":"bash"},"children":[]}]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"step-3-verify-the-rollout","__idx":6},"children":["Step 3: Verify the rollout"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Monitor the rolling update until it completes:"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"bash","header":{"controls":{"copy":{}}},"source":"kubectl rollout status deployment/aidr-genai -n $NAMESPACE\n","lang":"bash"},"children":[]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["When the rollout is complete, you will see:"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"header":{"controls":{"copy":{}}},"source":"deployment \"aidr-genai\" successfully rolled out\n"},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"rolling-back","__idx":7},"children":["Rolling Back"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["If the new image causes issues, roll back to the previous version:"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"bash","header":{"controls":{"copy":{}}},"source":"kubectl rollout undo deployment/aidr-genai -n $NAMESPACE\n","lang":"bash"},"children":[]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["To roll back to a specific revision:"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"bash","header":{"controls":{"copy":{}}},"source":"kubectl rollout history deployment/aidr-genai -n $NAMESPACE\nkubectl rollout undo deployment/aidr-genai --to-revision=$REVISION -n $NAMESPACE\n","lang":"bash"},"children":[]},{"$$mdtype":"Tag","name":"Admonition","attributes":{"type":"warning","name":"Keep your manifest in sync"},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["After rolling back, update the image tag in your deployment manifest to match the version now running in the cluster. If the manifest still references the newer tag, the next ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["kubectl apply"]}," will re-deploy the broken version."]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"versioned-vs-latest-tags","__idx":8},"children":["Versioned vs. Latest Tags"]},{"$$mdtype":"Tag","name":"div","attributes":{"className":"md-table-wrapper"},"children":[{"$$mdtype":"Tag","name":"table","attributes":{"className":"md"},"children":[{"$$mdtype":"Tag","name":"thead","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"th","attributes":{"data-label":""},"children":[]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Versioned tag ( :26.1.0 )"},"children":["Versioned tag (",{"$$mdtype":"Tag","name":"code","attributes":{},"children":[":26.1.0"]},")"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":":latest"},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":[":latest"]}]}]}]},{"$$mdtype":"Tag","name":"tbody","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Kubernetes detects change"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["✅ Yes"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["❌ No"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Reliable rolling updates"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["✅ Yes"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["❌ No"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Easy rollback"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["✅ Yes"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["❌ No"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Recommended for production"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["✅ Yes"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["❌ No"]}]}]}]}]}]},"headings":[{"value":"Updating the Container Image","id":"updating-the-container-image","depth":1},{"value":"Overview","id":"overview","depth":2},{"value":"Prerequisites","id":"prerequisites","depth":2},{"value":"Release Workflow","id":"release-workflow","depth":2},{"value":"Step 1: Identify the new image tag","id":"step-1-identify-the-new-image-tag","depth":3},{"value":"Step 2: Apply the update","id":"step-2-apply-the-update","depth":3},{"value":"Step 3: Verify the rollout","id":"step-3-verify-the-rollout","depth":3},{"value":"Rolling Back","id":"rolling-back","depth":2},{"value":"Versioned vs. Latest Tags","id":"versioned-vs-latest-tags","depth":2}],"frontmatter":{"seo":{"title":"Updating the Container Image"}},"lastModified":"2026-06-08T18:52:56.000Z","pagePropGetterError":{"message":"","name":""}},"slug":"/docs/products/runtime/updating_container_image","userData":{"isAuthenticated":false,"teams":["anonymous"]},"isPublic":true}