The Apigee hybrid installer uses defaults for many settings; however, there are a few settings
that do not have defaults. You must provide values for these settings, as explained next.
Be sure you are in thehybrid-base-directory/hybrid-files/overrides/directory.
cdhybrid-base-directory/hybrid-files/overrides
Create a new file namedoverrides.yamlin your favorite text editor. For
example:
vioverrides.yaml
Theoverrides.yamlprovides the configuration for your unique Apigee hybrid
installation. The overrides file in this step provides a basic configuration for a small-footprint
hybrid runtime installation, suitable for your first installation.
Inoverrides.yaml, add the required property values, shown below. A detailed
description of each property is also provided below:
For installations in production environments, look at the storage requirements for the
Cassandra database inConfigure Cassandra for
production.
Syntax
Make sure theoverrides.yamlfile has the following structure and syntax.
Values inred, bold italicsare
property values that you must provide. They are described in thetable below.
There are differences between the different platforms for the Google Cloud project region and
Kubernetes cluster region. Choose the platform where you are installing Apigee hybrid.
gcp:
region:analytics-regionprojectID:gcp-project-idk8sCluster:
name:cluster-nameregion:cluster-location# Must be the closest Google Cloud region to your cluster.
org:org-nameinstanceID: "unique-instance-identifier" # See the property description table below information about this parameter.
cassandra:
hostNetwork:false# Set tofalsefor single region installations and multi-region installations
# with connectivity between pods in different clusters, for example GKE installations.
# Set totruefor multi-region installations with no communication between
# pods in different clusters, for example GKE On-prem, GKE on AWS, Anthos on bare metal,
# AKS, EKS, and OpenShift installations.
# SeeMulti-region deployment: Prerequisitesstorage:
capacity: 500Gi
resources:
requests:
cpu: 7
memory: 15Gi
maxHeapSize: 8192M
heapNewSize: 1200M
# Minimum storage requirements for a production environment.
# SeeConfigure Cassandra for production.
virtualhosts:
- name:environment-group-namesslCertPath: ./certs/cert-name.pem
sslKeyPath: ./certs/key-name.key
envs:
- name:environment-nameserviceAccountPaths:
synchronizer: ./service-accounts/synchronizer-service-account-name.json# for non-production environments,gcp-project-id-apigee-non-prod.json# for production environments,gcp-project-id-apigee-synchronizer.jsonudca: ./service-accounts/udca-service-account-name.json
# for non-production environments,gcp-project-id-apigee-non-prod.json# for production environments,gcp-project-id-apigee-udca.jsonruntime: ./service-accounts/runtime-service-account-name.json
# for non-production environments,gcp-project-id-apigee-non-prod.json# for production environments,gcp-project-id-apigee-runtime.jsonmart:
serviceAccountPath: ./service-accounts/mart-service-account-name.json# for non-production environments,gcp-project-id-apigee-non-prod.json# for production environments,gcp-project-id-apigee-mart.jsonconnectAgent:
serviceAccountPath: ./service-accounts/mart-service-account-name.json# for non-production environments,gcp-project-id-apigee-non-prod.json# for production environments,gcp-project-id-apigee-mart.json#Use the same service account for mart and connectAgentmetrics:
serviceAccountPath: ./service-accounts/metrics-service-account-name.json# for non-production environments,gcp-project-id-apigee-non-prod.json# for production environments,gcp-project-id-apigee-metrics.jsonudca:
serviceAccountPath: ./service-accounts/udca-service-account-name.json# for non-production environments,gcp-project-id-apigee-non-prod.json# for production environments,gcp-project-id-apigee-udca.jsonwatcher:
serviceAccountPath: ./service-accounts/watcher-service-account-name.json# for non-production environments,gcp-project-id-apigee-non-prod.json# for production environments,gcp-project-id-apigee-watcher.jsonlogger:
enabled:false# Set tofalseto disable logger for GKE installations.
# Set totruefor all platforms other than GKE.
# Seeapigee-loggerinService accounts and roles used by hybrid components.
serviceAccountPath: ./service-accounts/logger-service-account-name.json# for non-production environments,gcp-project-id-apigee-non-prod.json# for production environments,gcp-project-id-apigee-logger.json
Example
The following example shows a completed overrides file with example property values
added:
gcp:
region: us-central1
projectID: hybrid-example
k8sCluster:
name: apigee-hybrid
region: us-central1
org: hybrid-example
instanceID: "my_hybrid_example"
cassandra:
hostNetwork: false
virtualhosts:
- name: example-env-group
sslCertPath: ./certs/keystore.pem
sslKeyPath: ./certs/keystore.key
envs:
- name: test
serviceAccountPaths:
synchronizer: ./service-accounts/hybrid-project-apigee-non-prod.json
# for production environments, hybrid-project-apigee-synchronizer.json
udca: ./service-accounts/hybrid-project-apigee-non-prod.json
# for production environments, hybrid-project-apigee-udca.json
runtime: ./service-accounts/hybrid-project-apigee-non-prod.json
# for production environments, hybrid-project-apigee-runtime.json
mart:
serviceAccountPath: ./service-accounts/hybrid-project-apigee-non-prod.json
# for production environments, hybrid-project-apigee-mart.json
connectAgent:
serviceAccountPath: ./service-accounts/hybrid-project-apigee-non-prod.json
# for production environments, example-hybrid-apigee-mart.json
metrics:
serviceAccountPath: ./service-accounts/hybrid-project-apigee-non-prod.json
# for production environments, hybrid-project-apigee-metrics.json
udca:
serviceAccountPath: ./service-accounts/hybrid-project-apigee-non-prod.json
# for production environments, hybrid-project-apigee-udca.json
watcher:
serviceAccountPath: ./service-accounts/hybrid-project-apigee-non-prod.json
# for production environments, hybrid-project-apigee-watcher.json
logger:
enabled: false # Set to "false" for GKE. Set to "true" for all other kubernetes platforms.
serviceAccountPath: ./service-accounts/hybrid-project-apigee-non-prod.json
# for production environments, logger-service-account-name.json
When you are finished, save the file.
The following table describes each of the property values that you must provide in the
overrides file. For more information, seeConfiguration property reference.
Variable
Description
analytics-region
In GKE, You must set this value to the same region where the cluster is running. In all
other platforms, select the closest analytics region to your cluster that has Analytics
support (see the table inPart 1, Step 4: Create an organization.
This is the value you assigned to the environment variableANALYTICS_REGIONpreviously.
gcp-project-id
Identifies the Google Cloud project where theapigee-loggerand theapigee-metricspush
their data. This is the value assigned to the environment variablePROJECT_ID.
cluster-name
Your Kubernetes cluster name. This is the value assigned to the environment variableCLUSTER_NAME.
cluster-location
The region where the cluster is running. This is the region where you created the
cluster inStep 1: Create an cluster.
This is the value you assigned to the environment variableCLUSTER_LOCATIONpreviously.
org-name
The ID of your Apigee hybrid organization. This is the value assigned to the environment
variableORG_NAME.
unique-instance-identifier
A unique string to identify this Apigee hybrid instance per cluster. The string can be a
combination of letters and numbers up to 63 characters in length.
You can create multiple organizations in a single cluster. Just make sure to
use the sameinstanceIDvalue for each time you add a new org to the
same cluster.
If you have multiple clusters (in the same
region or across multiple regions), each cluster requires a uniqueinstanceID.
If you need help generating a unique ID, you can use a random string
generation tool of your choice, such asrandom.org/strings.
Enter the name of the self-signed TLS key and certificate files that you generated previously inStep 6: Create TLS certificates.
These files must be located in
thebase_directory/hybrid-files/certsdirectory. For example:
For non-production environments, the name of the single service account,non-prodby default. For production environments, the name of theapigee-synchronizerservice account key file that you generated
with thecreate-service-accounttool inHybrid runtime setup -
Step 6: Create service accounts and credentials. You can see the list of service
account files in yourservice-accounts/directory. Fore example:
ls ../service-accounts/
udca-service-account-name
For non-production environments, the name of the single service account,non-prodby default. For production environments, the name of theapigee-udcaservice account key file that you generated
with thecreate-service-accounttool.
runtime-service-account-name
For non-production environments, the name of the single service account,non-prodby default. For production environments, the
name of theapigee-runtimeservice account key file that
you generated with thecreate-service-accounttool.
mart-service-account-name
For non-production environments, the name of the single service account,non-prodby default. For production environments, the name of theapigee-martservice account key file that you generated
with thecreate-service-accounttool.
metrics-service-account-name
For non-production environments, the name of the single service account,non-prodby default. For production environments, the name of theapigee-metricsservice account key file that you generated
with thecreate-service-accounttool.
udca-service-account-name
For non-production environments, the name of the single service account,non-prodby default. For production environments, the name of theapigee-udcaservice account key file that you generated
with thecreate-service-accounttool.
watcher-service-account-name
For non-production environments, the name of the single service account,non-prodby default. For production environments, the name of theapigee-watcherservice account key file that you generated
with thecreate-service-accounttool.
logger-service-account-name
For non-production environments, the name of the single service account,non-prodby default. For production environments, the name of theapigee-loggerservice account key file that you generated
with thecreate-service-accounttool.
Summary
The configuration file tells Kubernetes how to deploy the hybrid components to
a cluster. Next, you will enable synchronizer access so the Apigee runtime and management planes
will be able to communicate.
[[["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-09-04 UTC."],[[["\u003cp\u003eThis documentation version 1.7 is end of life and an upgrade to a newer version is needed.\u003c/p\u003e\n"],["\u003cp\u003eThe \u003ccode\u003eoverrides.yaml\u003c/code\u003e file is essential for configuring a unique Apigee hybrid installation and it requires specific property values.\u003c/p\u003e\n"],["\u003cp\u003eThe \u003ccode\u003eoverrides.yaml\u003c/code\u003e file structure includes settings for GCP project details, Kubernetes cluster information, organization details, instance ID, Cassandra database settings, virtual hosts, environments, and various service account paths.\u003c/p\u003e\n"],["\u003cp\u003eThe configuration for production environments differ from non-production environments, particularly in the assignment of specific service accounts for various components.\u003c/p\u003e\n"],["\u003cp\u003eSpecific service account key files are required and must be placed in the correct directories, for the components such as \u003ccode\u003esynchronizer\u003c/code\u003e, \u003ccode\u003eudca\u003c/code\u003e, \u003ccode\u003eruntime\u003c/code\u003e, \u003ccode\u003emart\u003c/code\u003e, \u003ccode\u003emetrics\u003c/code\u003e, \u003ccode\u003ewatcher\u003c/code\u003e and \u003ccode\u003elogger\u003c/code\u003e, among others.\u003c/p\u003e\n"]]],[],null,["# Step 7: Configure the hybrid runtime\n\n| You are currently viewing version 1.7 of the Apigee hybrid documentation. **This version is end of life.** You should upgrade to a newer version. For more information, see [Supported versions](/apigee/docs/hybrid/supported-platforms#supported-versions).\n\nSpecify configuration overrides\n-------------------------------\n\n\nThe Apigee hybrid installer uses defaults for many settings; however, there are a few settings\nthat do not have defaults. You must provide values for these settings, as explained next.\n\n1. Be sure you are in the \u003cvar translate=\"no\"\u003ehybrid-base-directory\u003c/var\u003e`/hybrid-files/overrides/` directory. \n\n ```\n cd hybrid-base-directory/hybrid-files/overrides\n ```\n2. Create a new file named **\u003cvar translate=\"no\"\u003eoverrides\u003c/var\u003e`.yaml`** in your favorite text editor. For example: \n\n ```\n vi overrides.yaml\n ```\n\n\n The \u003cvar translate=\"no\"\u003eoverrides\u003c/var\u003e`.yaml` provides the configuration for your unique Apigee hybrid\n installation. The overrides file in this step provides a basic configuration for a small-footprint\n hybrid runtime installation, suitable for your first installation.\n3. In \u003cvar translate=\"no\"\u003eoverrides\u003c/var\u003e`.yaml`, add the required property values, shown below. A detailed description of each property is also provided below:\n\n For installations in production environments, look at the storage requirements for the\n Cassandra database in [Configure Cassandra for\n production](/apigee/docs/hybrid/v1.7/cassandra-production). \n\n ### Syntax\n\n Make sure the \u003cvar translate=\"no\"\u003eoverrides\u003c/var\u003e`.yaml` file has the following structure and syntax.\n Values in \u003cvar translate=\"no\"\u003ered, bold italics\u003c/var\u003e are\n property values that you must provide. They are described in the [table below](#tablebelow).\n\n\n There are differences between the different platforms for the Google Cloud project region and\n Kubernetes cluster region. Choose the platform where you are installing Apigee hybrid. \n\n ```\n gcp:\n region: analytics-region\n projectID: gcp-project-id\n\n k8sCluster:\n name: cluster-name\n region: cluster-location # Must be the closest Google Cloud region to your cluster.\n org: org-name\n\n instanceID: \"unique-instance-identifier\" # See the property description table below information about this parameter.\n \n cassandra:\n hostNetwork: false\n # Set to false for single region installations and multi-region installations\n # with connectivity between pods in different clusters, for example GKE installations.\n # Set to true for multi-region installations with no communication between\n # pods in different clusters, for example GKE On-prem, GKE on AWS, Anthos on bare metal,\n # AKS, EKS, and OpenShift installations.\n # See Multi-region deployment: Prerequisites\n storage:\n capacity: 500Gi\n resources:\n requests:\n cpu: 7\n memory: 15Gi\n maxHeapSize: 8192M\n heapNewSize: 1200M\n # Minimum storage requirements for a production environment.\n # See Configure Cassandra for production.\n\n virtualhosts:\n - name: environment-group-name\n sslCertPath: ./certs/cert-name.pem\n sslKeyPath: ./certs/key-name.key\n\n envs:\n - name: environment-name\n serviceAccountPaths:\n synchronizer: ./service-accounts/synchronizer-service-account-name.json\n # for non-production environments, gcp-project-id-apigee-non-prod.json\n # for production environments, gcp-project-id-apigee-synchronizer.json\n udca: ./service-accounts/udca-service-account-name.json\n # for non-production environments, gcp-project-id-apigee-non-prod.json\n # for production environments, gcp-project-id-apigee-udca.json\n runtime: ./service-accounts/runtime-service-account-name.json\n # for non-production environments, gcp-project-id-apigee-non-prod.json\n # for production environments, gcp-project-id-apigee-runtime.json\n\n mart:\n serviceAccountPath: ./service-accounts/mart-service-account-name.json\n # for non-production environments, gcp-project-id-apigee-non-prod.json\n # for production environments, gcp-project-id-apigee-mart.json\n\n connectAgent:\n serviceAccountPath: ./service-accounts/mart-service-account-name.json\n # for non-production environments, gcp-project-id-apigee-non-prod.json\n # for production environments, gcp-project-id-apigee-mart.json\n # Use the same service account for mart and connectAgent\n\n metrics:\n serviceAccountPath: ./service-accounts/metrics-service-account-name.json\n # for non-production environments, gcp-project-id-apigee-non-prod.json\n # for production environments, gcp-project-id-apigee-metrics.json\n\n udca:\n serviceAccountPath: ./service-accounts/udca-service-account-name.json\n # for non-production environments, gcp-project-id-apigee-non-prod.json\n # for production environments, gcp-project-id-apigee-udca.json\n\n watcher:\n serviceAccountPath: ./service-accounts/watcher-service-account-name.json\n # for non-production environments, gcp-project-id-apigee-non-prod.json\n # for production environments, gcp-project-id-apigee-watcher.json\n\n logger:\n enabled: false\n # Set to false to disable logger for GKE installations.\n # Set to true for all platforms other than GKE.\n # See apigee-logger in Service accounts and roles used by hybrid components.\n serviceAccountPath: ./service-accounts/logger-service-account-name.json\n # for non-production environments, gcp-project-id-apigee-non-prod.json\n # for production environments, gcp-project-id-apigee-logger.json\n\n ```\n\n ### Example\n\n The following example shows a completed overrides file with example property values\n added: \n\n ```\n gcp:\n region: us-central1\n projectID: hybrid-example\n\n k8sCluster:\n name: apigee-hybrid\n region: us-central1\n\n org: hybrid-example\n\n instanceID: \"my_hybrid_example\"\n \n cassandra:\n hostNetwork: false\n\n virtualhosts:\n - name: example-env-group\n sslCertPath: ./certs/keystore.pem\n sslKeyPath: ./certs/keystore.key\n\n envs:\n - name: test\n serviceAccountPaths:\n synchronizer: ./service-accounts/hybrid-project-apigee-non-prod.json\n # for production environments, hybrid-project-apigee-synchronizer.json\n udca: ./service-accounts/hybrid-project-apigee-non-prod.json\n # for production environments, hybrid-project-apigee-udca.json\n runtime: ./service-accounts/hybrid-project-apigee-non-prod.json\n # for production environments, hybrid-project-apigee-runtime.json\n\n mart:\n serviceAccountPath: ./service-accounts/hybrid-project-apigee-non-prod.json\n # for production environments, hybrid-project-apigee-mart.json\n\n connectAgent:\n serviceAccountPath: ./service-accounts/hybrid-project-apigee-non-prod.json\n # for production environments, example-hybrid-apigee-mart.json\n\n metrics:\n serviceAccountPath: ./service-accounts/hybrid-project-apigee-non-prod.json\n # for production environments, hybrid-project-apigee-metrics.json\n\n udca:\n serviceAccountPath: ./service-accounts/hybrid-project-apigee-non-prod.json\n # for production environments, hybrid-project-apigee-udca.json\n\n watcher:\n serviceAccountPath: ./service-accounts/hybrid-project-apigee-non-prod.json\n # for production environments, hybrid-project-apigee-watcher.json\n\n logger:\n enabled: false # Set to \"false\" for GKE. Set to \"true\" for all other kubernetes platforms.\n serviceAccountPath: ./service-accounts/hybrid-project-apigee-non-prod.json\n # for production environments, logger-service-account-name.json\n\n ```\n4. When you are finished, save the file.\n\n\nThe following table describes each of the property values that you must provide in the\noverrides file. For more information, see\n[Configuration property reference](/apigee/docs/hybrid/v1.7/config-prop-ref).\n\n| **Note:** If you want to create a security perimeter around your cluster and related Cloud services, you can configure one using Google Cloud [Virtual Private Cloud (VPC) Service\n| Controls](https://cloud.google.com/vpc-service-controls) with Apigee hybrid. See [Using\n| VPC Service Controls with Apigee and Apigee hybrid](/apigee/docs/api-platform/security/vpc-sc) for instructions.\n\nSummary\n-------\n\n\nThe configuration file tells Kubernetes how to deploy the hybrid components to\na cluster. Next, you will enable synchronizer access so the Apigee runtime and management planes\nwill be able to communicate.\n[1](/apigee/docs/hybrid/v1.7/install-create-cluster) [2](/apigee/docs/hybrid/v1.7/install-cert-manager) [3](/apigee/docs/hybrid/v1.7/install-asm) [4](/apigee/docs/hybrid/v1.7/install-apigeectl) [5](/apigee/docs/hybrid/v1.7/install-service-accounts) [6](/apigee/docs/hybrid/v1.7/install-create-tls-certificates) [7](/apigee/docs/hybrid/v1.7/install-configure-cluster) [(NEXT) Step 8: Enable Synchronizer access](/apigee/docs/hybrid/v1.7/install-enable-synchronizer-access) [9](/apigee/docs/hybrid/v1.7/install-hybrid-runtime)\n\n\u003cbr /\u003e"]]