Step 2: Download the Apigee Helm charts

You are currently viewing version 1.11 of the Apigee hybrid documentation.This version is end of life. You should upgrade to a newer version. For more information, seeSupported versions.

This step explains how to download the Helm charts used to install and manage Apigee hybrid. Apigee hybrid charts are hosted inGoogle Artifact Registry:

oci://us-docker.pkg.dev/apigee-release/apigee-hybrid-helm-charts

If you have not already installed Helm v3.10+, follow the instructions inInstalling Helm.

Prepare the directory structure

These steps are optional but recommended. The procedures will refer to the$APIGEE_HELM_CHARTS_HOME environment variable for the directory where you download the Apigee Helm Charts.

  1. Create a base directory for your hybrid installation and within that a directory for the charts:
    mkdir -pAPIGEE_HYBRID_BASE/APIGEE_HELM_CHARTS_HOME

    for example:

    mkdir -p apigee-hybrid/helm-charts
  2. Save the location of the Helm charts directory to an environmental variable for convenience:
    cdAPIGEE_HYBRID_BASE/APIGEE_HELM_CHARTS_HOME
    export APIGEE_HELM_CHARTS_HOME=$PWD

Pull Apigee Helm charts

  1. In the$APIGEE_HELM_CHARTS_HOME directory, use thepull command to copy all of the Apigee hybrid Helm charts to your local storage:
    exportCHART_REPO=oci://us-docker.pkg.dev/apigee-release/apigee-hybrid-helm-chartsexportCHART_VERSION=1.11.2helm pull$CHART_REPO/apigee-operator --version$CHART_VERSION --untarhelm pull$CHART_REPO/apigee-datastore --version$CHART_VERSION --untarhelm pull$CHART_REPO/apigee-env --version$CHART_VERSION --untarhelm pull$CHART_REPO/apigee-ingress-manager --version$CHART_VERSION --untarhelm pull$CHART_REPO/apigee-org --version$CHART_VERSION --untarhelm pull$CHART_REPO/apigee-redis --version$CHART_VERSION --untarhelm pull$CHART_REPO/apigee-telemetry --version$CHART_VERSION --untarhelm pull$CHART_REPO/apigee-virtualhost --version$CHART_VERSION --untar
  2. Optional: Verify that the charts expanded into the intended directory structure with thetree command. Your output should resemble the following.Tip: If your operating system does not have atree command, you can try a recursive directory command (UNIX/Linux:ls -R,Windows:dir /s /b).
    tree.├── apigee-datastore│   ├── Chart.yaml│   ├── templates│   │   ├── backup-cert.yaml│   │   ├── backup-cronjob.yaml│   │   ├── backup-gsa-secret.yaml│   │   ├── backup-key.yaml│   │   ├── backup-sa.yaml│   │   ├── datastore-secret.yaml│   │   ├── datastore.yaml│   │   ├── _helpers.tpl│   │   ├── NOTES.txt│   │   ├── restore-cert.yaml│   │   ├── restore-gsa-secret.yaml│   │   ├── restore-job.yaml│   │   ├── restore-key.yaml│   │   └── restore-sa.yaml│   └── values.yaml├── apigee-env│   ├── Chart.yaml│   ├── templates│   │   ├── encryption-keys-secret.yaml│   │   ├── environment.yaml│   │   ├── _helpers.tpl│   │   ├── NOTES.txt│   │   ├── runtime-gsa-secret.yaml│   │   ├── runtime-sa.yaml│   │   ├── synchronizer-gsa-secret.yaml│   │   ├── synchronizer-sa.yaml│   │   ├── udca-gsa-secret.yaml│   │   └── udca-sa.yaml│   └── values.yaml├── apigee-ingress-manager│   ├── Chart.yaml│   ├── templates│   │   ├── apigee-ca-issuer.yaml│   │   ├── apigee-istiod-certificate.yaml│   │   ├── _helpers.tpl│   │   ├── ingress-service-account.yaml│   │   ├── istio-config.yaml│   │   ├── istiod-deployment-with-apigee-controller.yaml│   │   ├── istiod-envoyfilters.yaml│   │   ├── istiod-hpa.yaml│   │   ├── istiod-service-account.yaml│   │   └── istiod-svc.yaml│   └── values.yaml├── apigee-operator│   ├── Chart.yaml│   ├── etc│   │   ├── crds│   │   │   ├── crd│   │   │   │   ├── bases│   │   │   │   │   ├── apigee.cloud.google.com_apigeedatastores.yaml│   │   │   │   │   ├── apigee.cloud.google.com_apigeedeployments.yaml│   │   │   │   │   ├── apigee.cloud.google.com_apigeeenvironments.yaml│   │   │   │   │   ├── apigee.cloud.google.com_apigeeissues.yaml│   │   │   │   │   ├── apigee.cloud.google.com_apigeeorganizations.yaml│   │   │   │   │   ├── apigee.cloud.google.com_apigeeredis.yaml│   │   │   │   │   ├── apigee.cloud.google.com_apigeerouteconfigs.yaml│   │   │   │   │   ├── apigee.cloud.google.com_apigeeroutes.yaml│   │   │   │   │   ├── apigee.cloud.google.com_apigeetelemetries.yaml│   │   │   │   │   └── apigee.cloud.google.com_cassandradatareplications.yaml│   │   │   │   ├── kustomization.yaml│   │   │   │   ├── kustomizeconfig.yaml│   │   │   │   └── patches│   │   │   │       ├── cainjection_in_apigeedatastores.yaml│   │   │   │       ├── cainjection_in_apigeedeployments.yaml│   │   │   │       ├── cainjection_in_apigeeenvironments.yaml│   │   │   │       ├── cainjection_in_apigeeissues.yaml│   │   │   │       ├── cainjection_in_apigeeorganizations.yaml│   │   │   │       ├── cainjection_in_apigeeroutes.yaml│   │   │   │       ├── cainjection_in_apigeetelemetries.yaml│   │   │   │       ├── k8s_list_map_keys.yaml│   │   │   │       ├── nested_metadata_validation_properties.yaml│   │   │   │       ├── webhook_in_apigeedatastores.yaml│   │   │   │       ├── webhook_in_apigeedeployments.yaml│   │   │   │       ├── webhook_in_apigeeenvironments.yaml│   │   │   │       ├── webhook_in_apigeeissues.yaml│   │   │   │       ├── webhook_in_apigeeorganizations.yaml│   │   │   │       ├── webhook_in_apigeeroutes.yaml│   │   │   │       └── webhook_in_apigeetelemetries.yaml│   │   │   └── default│   │   │       └── kustomization.yaml│   │   ├── examples│   │   │   └── helmfiles│   │   │       ├── helmfile.yaml│   │   │       └── README.md│   │   └── tools│   │       ├── apigee-pull-push.sh│   │       ├── common.sh│   │       ├── create-service-account│   │       └── dump_kubernetes.sh│   ├── templates│   │   ├── apigee-operators-roles.yaml│   │   ├── apigee-operators.yaml│   │   ├── apigee-resources.yaml│   │   ├── cassandra-backup-clusterrolebinding.yaml│   │   ├── cassandra-backup-clusterrole.yaml│   │   ├── cassandra-restore-clusterrolebinding.yaml│   │   ├── cassandra-restore-clusterrole.yaml│   │   ├── _helpers.tpl│   │   ├── ingress-role-binding.yaml│   │   ├── ingress-role.yaml│   │   ├── istiod-cluster-role-binding.yaml│   │   ├── istiod-cluster-role.yaml│   │   ├── istiod-role-binding.yaml│   │   └── istiod-role.yaml│   └── values.yaml├── apigee-org│   ├── Chart.yaml│   ├── templates│   │   ├── ax-hash-salt-secret.yaml│   │   ├── connect-agent-gsa-secret.yaml│   │   ├── connect-agent-sa.yaml│   │   ├── data-encryption-secret.yaml│   │   ├── encryption-keys-secret.yaml│   │   ├── _helpers.tpl│   │   ├── mart-gsa-secret.yaml│   │   ├── mart-sa.yaml│   │   ├── NOTES.txt│   │   ├── organization.yaml│   │   ├── udca-gsa-secret.yaml│   │   ├── udca-sa.yaml│   │   ├── watcher-gsa-secret.yaml│   │   └── watcher-sa.yaml│   └── values.yaml├── apigee-redis│   ├── Chart.yaml│   ├── templates│   │   ├── _helpers.tpl│   │   ├── redis-creds-secret.yaml│   │   └── redis.yaml│   └── values.yaml├── apigee-telemetry│   ├── Chart.yaml│   ├── templates│   │   ├── apigee-logger-gsa-secret.yaml│   │   ├── apigee-logger-sa.yaml│   │   ├── apigee-metrics-gsa-secret.yaml│   │   ├── apigee-metrics-sa.yaml│   │   ├── apigee-telemetry.yaml│   │   ├── _helpers.tpl│   │   └── NOTES.txt│   └── values.yaml└── apigee-virtualhost    ├── Chart.yaml    ├── templates    │   ├── apigee-route-config.yaml    │   ├── ca-cert.yaml    │   ├── cert.yaml    │   └── _helpers.tpl    └── values.yaml

You now have a tools to configure, deploy, and manage Apigee hybrid in your Kubernetes cluster. Next, you will create the Kubernetes namespace in which most hybrid components operate.12(NEXT) Step 3: Create the apigee namespace456789101112

Except as otherwise noted, the content of this page is licensed under theCreative Commons Attribution 4.0 License, and code samples are licensed under theApache 2.0 License. For details, see theGoogle Developers Site Policies. Java is a registered trademark of Oracle and/or its affiliates.

Last updated 2026-02-05 UTC.