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.12.0
    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 the 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.

Next step

1 2 (NEXT) Step 3: Create the apigee namespace 4 5 6 7 8 9 10 11 12