Step 2: Download the Apigee Helm charts

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

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

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 APIGEE_HYBRID_BASE
    mkdir APIGEE_HYBRID_BASE/APIGEE_HELM_CHARTS_HOME

    for example:

    mkdir apigee-hybrid/helm-charts
  2. Save the location of the Helm charts directory to an environmental variable for convenience:
    cd APIGEE_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 the pull command to copy all of the Apigee hybrid Helm charts to your local storage:
    export CHART_REPO=oci://us-docker.pkg.dev/apigee-release/apigee-hybrid-helm-charts
    export CHART_VERSION=1.11.1
    helm pull $CHART_REPO/apigee-operator --version $CHART_VERSION --untar
    helm pull $CHART_REPO/apigee-datastore --version $CHART_VERSION --untar
    helm pull $CHART_REPO/apigee-env --version $CHART_VERSION --untar
    helm pull $CHART_REPO/apigee-ingress-manager --version $CHART_VERSION --untar
    helm pull $CHART_REPO/apigee-org --version $CHART_VERSION --untar
    helm pull $CHART_REPO/apigee-redis --version $CHART_VERSION --untar
    helm pull $CHART_REPO/apigee-telemetry --version $CHART_VERSION --untar
    helm pull $CHART_REPO/apigee-virtualhost --version $CHART_VERSION --untar
    
  2. Optional: Verify that the charts expanded into the intended directory structure with the tree command. Your output should resemble the following.
    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. 1 2 (NEXT) Step 3: Create the apigee namespace 4 5 6 7 8 9 10 11 12