Step 10: Install Apigee hybrid Using Helm

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

Install the Apigee hybrid runtime components

In this step, you will use Helm to install the following Apigee hybrid components:

  • Apigee operator
  • Apigee datastore
  • Apigee telemetry
  • Apigee Redis
  • Apigee ingress manager
  • Apigee organization
  • Your Apigee environment(s)

You will install the charts for each environment one at a time. The sequence in which you install the components matters.

Pre-installation Notes

  1. If you have not already installed Helm v3.14.2+, follow the instructions inInstalling Helm.
  2. Apigee hybrid uses Helm guardrails to verify the configuration before installing or upgrading a chart. You may see guardrail-specific information in the output of each of the commands in this section, for example:

    # Source: apigee-operator/templates/apigee-operators-guardrails.yamlapiVersion: v1kind: Podmetadata:  name: apigee-hybrid-helm-guardrail-operator  namespace:APIGEE_NAMESPACE  annotations:    helm.sh/hook: pre-install,pre-upgrade    helm.sh/hook-delete-policy: before-hook-creation,hook-succeeded  labels:    app: apigee-hybrid-helm-guardrail

    If any of thehelm upgrade commands fail, you can use the guardrails output to help diagnose the cause. SeeDiagnosing issues with guardrails.

  3. Before executing any of the Helm upgrade/install commands, use the Helm dry-run feature by adding--dry-run=server at the end of the command. Seehelm install --h to list supported commands, options, and usage.

Installation steps

  1. If you have not, navigate into yourAPIGEE_HELM_CHARTS_HOME directory. Run the following commands from that directory.
  2. Install Apigee Operator/Controller:Note: This step requires elevated cluster permissions. Runhelm -h orhelm install -h for details

    Dry run:

    helm upgrade operator apigee-operator/ \  --install \  --namespaceAPIGEE_NAMESPACE \  --atomic \  -foverrides.yaml \  --dry-run=server

    Install the chart:

    helm upgrade operator apigee-operator/ \  --install \  --namespaceAPIGEE_NAMESPACE \  --atomic \  -foverrides.yaml

    Verify Apigee Operator installation:

    helm ls -nAPIGEE_NAMESPACE
    NAME       NAMESPACE       REVISION   UPDATED                                STATUS     CHART                                       APP VERSIONoperator   apigee   3          2023-06-26 00:42:44.492009 -0800 PST   deployed   apigee-operator-1.13.4   1.13.4

    Verify it is up and running by checking its availability:

    kubectl -nAPIGEE_NAMESPACE get deploy apigee-controller-manager
    NAME                        READY   UP-TO-DATE   AVAILABLE   AGEapigee-controller-manager   1/1     1            1           7d20h
  3. Install Apigee datastore:

    Dry run:

    helm upgrade datastore apigee-datastore/ \  --install \  --namespaceAPIGEE_NAMESPACE \  --atomic \  -foverrides.yaml \  --dry-run=server

    Install the chart:

    helm upgrade datastore apigee-datastore/ \  --install \  --namespaceAPIGEE_NAMESPACE \  --atomic \  -foverrides.yaml

    Verifyapigeedatastore is up and running by checking its state before proceeding to the next step:

    kubectl -nAPIGEE_NAMESPACE get apigeedatastore default
    NAME      STATE       AGEdefault   running    2d
  4. Install Apigee telemetry:

    Dry run:

    helm upgrade telemetry apigee-telemetry/ \  --install \  --namespaceAPIGEE_NAMESPACE \  --atomic \  -foverrides.yaml \  --dry-run=server

    Install the chart:

    helm upgrade telemetry apigee-telemetry/ \  --install \  --namespaceAPIGEE_NAMESPACE \  --atomic \  -foverrides.yaml

    Verify it is up and running by checking its state:

    kubectl -nAPIGEE_NAMESPACE get apigeetelemetry apigee-telemetry
    NAME               STATE     AGEapigee-telemetry   running   2d
  5. Install Apigee Redis:

    Dry run:

    helm upgrade redis apigee-redis/ \  --install \  --namespaceAPIGEE_NAMESPACE \  --atomic \  -foverrides.yaml \  --dry-run=server

    Install the chart:

    helm upgrade redis apigee-redis/ \  --install \  --namespaceAPIGEE_NAMESPACE \  --atomic \  -foverrides.yaml

    Verify it is up and running by checking its state:

    kubectl -nAPIGEE_NAMESPACE get apigeeredis default
    NAME      STATE     AGEdefault   running   2d
  6. Install Apigee ingress manager:

    Dry run:

    helm upgrade ingress-manager apigee-ingress-manager/ \  --install \  --namespaceAPIGEE_NAMESPACE \  --atomic \  -foverrides.yaml \  --dry-run=server

    Install the chart:

    helm upgrade ingress-manager apigee-ingress-manager/ \  --install \  --namespaceAPIGEE_NAMESPACE \  --atomic \  -foverrides.yaml

    Verify it is up and running by checking its availability:

    kubectl -nAPIGEE_NAMESPACE get deployment apigee-ingressgateway-manager
    NAME                            READY   UP-TO-DATE   AVAILABLE   AGEapigee-ingressgateway-manager   2/2     2            2           2d
  7. Install Apigee organization. If you have set the$ORG_NAME environment variable in your shell, you can use that in the following commands:

    Dry run:

    helm upgrade$ORG_NAME apigee-org/ \  --install \  --namespaceAPIGEE_NAMESPACE \  --atomic \  -foverrides.yaml \  --dry-run=server

    Install the chart:

    helm upgrade$ORG_NAME apigee-org/ \  --install \  --namespaceAPIGEE_NAMESPACE \  --atomic \  -foverrides.yaml

    Verify it is up and running by checking the state of the respective org:

    kubectl -nAPIGEE_NAMESPACE get apigeeorg
    NAME                      STATE     AGEapigee-org1-xxxxx          running   2d
  8. Install the environment.

    You must install one environment at a time. Specify the environment with--set env=ENV_NAME. If you have set the$ENV_NAME environment variable in your shell, you can use that in the following commands:

    Dry run:

    helm upgradeENV_RELEASE_NAME apigee-env/ \  --install \  --namespaceAPIGEE_NAMESPACE \  --atomic \  --set env=$ENV_NAME \  -foverrides.yaml \  --dry-run=server

    Install the chart:

    helm upgradeENV_RELEASE_NAME apigee-env/ \  --install \  --namespaceAPIGEE_NAMESPACE \  --atomic \  --set env=$ENV_NAME \  -foverrides.yaml

    Verify it is up and running by checking the state of the respective env:

    kubectl -nAPIGEE_NAMESPACE get apigeeenv
    NAME                          STATE       AGE   GATEWAYTYPEapigee-org1-dev-xxx            running     2d
  9. Install the environment groups (virtualhosts).
    1. You must install one environment group (virtualhost) at a time. Specify the environment group with--set envgroup=ENV_GROUP. If you have set the$ENV_GROUP environment variable in your shell, you can use that in the following commands. Repeat the following commands for each env group mentioned in youroverrides.yaml file:

      Dry run:

      helm upgradeENV_GROUP_RELEASE_NAME apigee-virtualhost/ \  --install \  --namespaceAPIGEE_NAMESPACE \  --atomic \  --set envgroup=$ENV_GROUP \  -foverrides.yaml \  --dry-run=server

        ENV_GROUP_RELEASE_NAME is a name used to keep track of installation and upgrades of theapigee-virtualhosts chart. This name must be unique from the other Helm release names in your installation. Usually this is the same asENV_GROUP. However, if your environment group has the same name as an environment in your installation, you must use different release names for the environment group and environment, for exampledev-envgroup-release anddev-env-release. For more information on releases in Helm, see Three big concepts in the Helm documentation.

      Install the chart:

      helm upgrade$ENV_GROUP_RELEASE_NAME apigee-virtualhost/ \  --install \  --namespaceAPIGEE_NAMESPACE \  --atomic \  --set envgroup=$ENV_GROUP \  -foverrides.yaml
      Note:ENV_GROUP must be unique within theapigee namespace. For example, if you have aprod env and envgroup, you should set this name toprod-envgroup. The later env group name should still beprod.
    2. Check the state of the ApigeeRoute (AR).

      Installing thevirtualhosts creates ApigeeRouteConfig (ARC) which internally creates ApigeeRoute (AR) once the Apigee watcher pulls env group related details from the control plane. Therefore, check that the corresponding AR's state is running:

      kubectl -nAPIGEE_NAMESPACE get arc
      NAME                                STATE   AGEapigee-org1-dev-egroup                       2d
      kubectl -nAPIGEE_NAMESPACE get ar
      NAME                                        STATE     AGEapigee-org1-dev-egroup-xxxxxx                running   2d
Congratulations!

You've successfully installed and configured the Apigee hybrid runtime plane.

Next step

Installations using Workload Identity

If you are installing Apigee hybrid on GKE and you are configuring Workload Identity to authenticate service accounts, in the next step, you will configure the associations between the Kubernetes service accounts and the Google service accounts for your cluster.

12345678910(NEXT) Step 11: Set up Workload Identity

All other installations

In the next step, you will configure the Apigee ingress gateway and deploy a proxy to test your installation.

(NEXT) Step 1: Expose Apigee ingress2

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.