This document explains how to configure Apigee hybrid to use images from a private container image repository.
Overview
All Apigee hybrid runtime images are hosted in the Artifact Registry (AR). If for any reason you wish to employ a private image container repository,
you can download the images from AR, push them to your private repository. Instead of overriding each component, you
can add hub details on the overrides:
For example, if the following hub is provided, it will automatically resolve
the image path:
hub:private-docker-host.example.com
as:
## an example of internal component vs 3rd party
containers:
- name: apigee-udca
image: private-docker-host.example.com/apigee-udca:1.14.2
imagePullPolicy: IfNotPresent
containers:
- name: apigee-ingressgateway
image: private-docker-host.example.com/apigee-asm-ingress:1.22.6-asm.2-distroless
imagePullPolicy: IfNotPresent
[[["Easy to understand","easyToUnderstand","thumb-up"],["Solved my problem","solvedMyProblem","thumb-up"],["Other","otherUp","thumb-up"]],[["Hard to understand","hardToUnderstand","thumb-down"],["Incorrect information or sample code","incorrectInformationOrSampleCode","thumb-down"],["Missing the information/samples I need","missingTheInformationSamplesINeed","thumb-down"],["Other","otherDown","thumb-down"]],["Last updated 2025-08-26 UTC."],[[["\u003cp\u003eApigee hybrid uses images hosted in the Artifact Registry, but you can configure it to use images from a private container repository.\u003c/p\u003e\n"],["\u003cp\u003eTo use a private repository, download the desired images from the Artifact Registry and push them to your private repository.\u003c/p\u003e\n"],["\u003cp\u003eYou can configure the \u003ccode\u003ehub\u003c/code\u003e property in your overrides file to specify the path to your private repository, which allows you to resolve image paths automatically.\u003c/p\u003e\n"],["\u003cp\u003eThe document provides an example of how setting the \u003ccode\u003ehub\u003c/code\u003e property to \u003ccode\u003eprivate-docker-host.example.com\u003c/code\u003e automatically resolves to the correct image path for the apigee components.\u003c/p\u003e\n"],["\u003cp\u003eThe document also provides a script to list all Apigee images hosted on the google cloud repository, which are pulled using the \u003ccode\u003eapigee-pull-push.sh --list\u003c/code\u003e script.\u003c/p\u003e\n"]]],[],null,["# Use a private image repository with Apigee hybrid\n\n| You are currently viewing version 1.14 of the Apigee hybrid documentation. For more information, see [Supported versions](/apigee/docs/hybrid/supported-platforms#supported-versions).\n\n\nThis document explains how to configure Apigee hybrid to use images from a private container image repository.\n\nOverview\n--------\n\n\nAll Apigee hybrid runtime images are hosted in the [Artifact Registry](/artifact-registry/docs) (AR). If for any reason you wish to employ a private image container repository,\nyou can download the images from AR, push them to your private repository. Instead of overriding each component, you\ncan add hub details on the overrides:\n\nConfiguration steps\n-------------------\n\n\nSet the value of the [`hub` configuration property](/apigee/docs/hybrid/v1.14/config-prop-ref#hub) with path to your private repository. \n\n```actionscript-3\nhub: PRIVATE_REPO\n```\n\n\nFor example, if the following hub is provided, it will automatically resolve\nthe image path: \n\n```actionscript-3\nhub: private-docker-host.example.com\n```\n\nas: \n\n```text\n## an example of internal component vs 3rd party\ncontainers:\n- name: apigee-udca\n image: private-docker-host.example.com/apigee-udca:1.14.2\n imagePullPolicy: IfNotPresent\n\ncontainers:\n- name: apigee-ingressgateway\n image: private-docker-host.example.com/apigee-asm-ingress:1.22.6-asm.2-distroless\n imagePullPolicy: IfNotPresent\n```\n\n#### *Click to expand a list of Apigee images*\n\n### v1.14.2 and newer\n\n```actionscript-3\napigee:\n gcr.io/apigee-release/hybrid/apigee-mart-server:YOUR_HYBRID_VERSION_TAG\n gcr.io/apigee-release/hybrid/apigee-synchronizer:YOUR_HYBRID_VERSION_TAG\n gcr.io/apigee-release/hybrid/apigee-runtime:YOUR_HYBRID_VERSION_TAG\n gcr.io/apigee-release/hybrid/apigee-hybrid-cassandra-client:YOUR_HYBRID_VERSION_TAG\n gcr.io/apigee-release/hybrid/apigee-hybrid-cassandra:YOUR_HYBRID_VERSION_TAG\n gcr.io/apigee-release/hybrid/apigee-udca:YOUR_HYBRID_VERSION_TAG\n gcr.io/apigee-release/hybrid/apigee-connect-agent:YOUR_HYBRID_VERSION_TAG\n gcr.io/apigee-release/hybrid/apigee-watcher:YOUR_HYBRID_VERSION_TAG\n gcr.io/apigee-release/hybrid/apigee-operators:YOUR_HYBRID_VERSION_TAG\n gcr.io/apigee-release/hybrid/apigee-redis:YOUR_HYBRID_VERSION_TAG\n gcr.io/apigee-release/hybrid/apigee-mint-task-scheduler:YOUR_HYBRID_VERSION_TAG\nthird party:\n gcr.io/apigee-release/hybrid/apigee-stackdriver-logging-agent:YOUR_HYBRID_VERSION_TAG\n gcr.io/apigee-release/hybrid/apigee-prom-prometheus:YOUR_HYBRID_VERSION_TAG\n gcr.io/apigee-release/hybrid/apigee-stackdriver-prometheus-sidecar:YOUR_HYBRID_VERSION_TAG\n gcr.io/apigee-release/hybrid/apigee-kube-rbac-proxy:YOUR_HYBRID_VERSION_TAG\n gcr.io/apigee-release/hybrid/apigee-envoy:YOUR_HYBRID_VERSION_TAG\n gcr.io/apigee-release/hybrid/apigee-prometheus-adapter:YOUR_HYBRID_VERSION_TAG\n gcr.io/apigee-release/hybrid/apigee-asm-ingress:YOUR_HYBRID_VERSION_TAG\n gcr.io/apigee-release/hybrid/apigee-asm-istiod:YOUR_HYBRID_VERSION_TAG\n gcr.io/apigee-release/hybrid/apigee-fluent-bit:YOUR_HYBRID_VERSION_TAG\n gcr.io/apigee-release/hybrid/apigee-open-telemetry-collector:YOUR_HYBRID_VERSION_TAG\n```\n\n\nYou can see the original version tag of third-party images as a label returned by the `docker history` or `docker inspect` commands.\n\n### v1.14.1 and older\n\n```actionscript-3\napigee:\n gcr.io/apigee-release/hybrid/apigee-mart-server:YOUR_HYBRID_VERSION_TAG\n gcr.io/apigee-release/hybrid/apigee-synchronizer:YOUR_HYBRID_VERSION_TAG\n gcr.io/apigee-release/hybrid/apigee-runtime:YOUR_HYBRID_VERSION_TAG\n gcr.io/apigee-release/hybrid/apigee-hybrid-cassandra-client:YOUR_HYBRID_VERSION_TAG\n gcr.io/apigee-release/hybrid/apigee-hybrid-cassandra:YOUR_HYBRID_VERSION_TAG\n gcr.io/apigee-release/hybrid/apigee-udca:YOUR_HYBRID_VERSION_TAG\n gcr.io/apigee-release/hybrid/apigee-connect-agent:YOUR_HYBRID_VERSION_TAG\n gcr.io/apigee-release/hybrid/apigee-watcher:YOUR_HYBRID_VERSION_TAG\n gcr.io/apigee-release/hybrid/apigee-operators:YOUR_HYBRID_VERSION_TAG\n gcr.io/apigee-release/hybrid/apigee-redis:YOUR_HYBRID_VERSION_TAG\n gcr.io/apigee-release/hybrid/apigee-mint-task-scheduler:YOUR_HYBRID_VERSION_TAG\nthird party:\n gcr.io/apigee-release/hybrid/apigee-stackdriver-logging-agent:stackdriver-logging-agent_VERSION_TAG\n gcr.io/apigee-release/hybrid/apigee-prom-prometheus:prom-prometheus_VERSION_TAG\n gcr.io/apigee-release/hybrid/apigee-stackdriver-prometheus-sidecar:stackdriver-prometheus-sidecar_VERSION_TAG\n gcr.io/apigee-release/hybrid/apigee-kube-rbac-proxy:kube-rbac-proxy_VERSION_TAG\n gcr.io/apigee-release/hybrid/apigee-envoy:envoy_VERSION_TAG\n gcr.io/apigee-release/hybrid/apigee-prometheus-adapter:prometheus-adapter_VERSION_TAG\n gcr.io/apigee-release/hybrid/apigee-asm-ingress:SERVICE_MESH_VERSION_TAG\n gcr.io/apigee-release/hybrid/apigee-asm-istiod:SERVICE_MESH_VERSION_TAG\n gcr.io/apigee-release/hybrid/apigee-fluent-bit:fluent-bit_VERSION_TAG\n gcr.io/apigee-release/hybrid/apigee-open-telemetry-collector:open-telemetry-collector_VERSION_TAG\n```\n\nTo display a list of the Apigee images hosted in the Google Cloud repository use the [`apigee-pull-push`](/apigee/docs/hybrid/v1.14/apigee-pull-push) command: \n\n```\n./apigee-operator/etc/tools/apigee-pull-push.sh --list\n```"]]