Step 4: Create service accounts

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

Overview

This step explains how to create the Google Cloud service accounts that are required for Apigee hybrid to operate, and assign the appropriate IAM roles to them.

This procedure uses the following two environment variables defined inStep 2: Download the Apigee Helm charts. These variables are optional. If you did not define them, substitute the appropriate directory path for each variable in the code samples.

Production vs. non-production environments

This guide refers toProduction ("Prod") andNon-production ("Non-prod") installations. A production installation is tuned for greater usage capacity, storage, and scalability. A non-production installation uses fewer resources and is mainly for learning and demonstration purposes.

When you create and configure service accounts for Apigee hybrid, it is important to be aware of the type of installation you are targeting.

Forproduction installations, we recommend creating a separate service account for each Apigee hybrid component. For example, runtime, mart, metrics, udca, and so on each get their own service account.

Fornon-prod installations, you can create a single service account that applies to all the components.

To learn more about the service accounts used by Apigee and the roles they are assigned, seeService accounts and roles used by hybrid components.

Authenticating service accounts

Apigee hybrid supports three methods of authenticating Google service accounts:

Workload Identity on AKS, EKS, or GKE

For Apigee hybrid installations on GKE, Google Cloud offers an option called Workload Identity to authenticate hybrid runtime components. This option does not use downloaded certificate files to authenticate the service accounts, Instead, it associates the Google Cloud service accounts that you create in this step with Kubernetes service accounts in the Kubernetes cluster. SeeEnabling Workload Identity on GKE orEnabling Workload Identity Federation on AKS and EKS

Create the service accounts

Apigee hybrid uses the following service accounts:

Prod

Service accountIAM rolesApigee Helm chart
apigee-cassandraStorage Object Adminapigee-datastore
apigee-loggerLogs Writerapigee-telemetry
apigee-martApigee Connect Agentapigee-org
apigee-metricsMonitoring Metric Writerapigee-telemetry
apigee-runtimeNo role requiredapigee-env
apigee-synchronizerApigee Synchronizer Manager
Storage Object Admin
apigee-env
apigee-udcaApigee Analytics Agentapigee-org
apigee-env
apigee-watcherApigee Runtime Agentapigee-org

Non-prod

Service accountIAM rolesApigee Helm chart
apigee-non-prodStorage Object Admin
Logs Writer
Apigee Connect Agent
Monitoring Metric Writer
Apigee Synchronizer Manager
Apigee Analytics Agent
Apigee Runtime Agent
apigee-datastore
apigee-telemetry
apigee-org
apigee-env

Thecreate-service-account tool

Apigee provides a tool,create-service-account, in theapigee-operator/etc/tools directory:

$APIGEE_HELM_CHARTS_HOME/└──apigee-operator/└──etc/└──tools/└──create-service-account

This tool creates the service accounts, assigns the IAM roles to each account, and downloads the certificate files in JSON format for each account.

Verify you can executecreate-service-account. If you have just downloaded the charts thecreate-service-account file might not be in an executable mode. In yourAPIGEE_HELM_CHARTS_HOME directory run the following command:

$APIGEE_HELM_CHARTS_HOME/apigee-operator/etc/tools/create-service-account --help

If your output sayspermission denied you need to make the file executable, for example withchmod in Linux, MacOS, or UNIX or in the Windows Explorer or with theicacls command in Windows. For example:

chmod +x$APIGEE_HELM_CHARTS_HOME/apigee-operator/etc/tools/create-service-account

Create the service accounts

Because Helm does not support referencing files outside of the chart directory, you will create each service account certificate file in the chart directory for the corresponding hybrid component.

For the next steps choose whether you are configuring a Production or Non-production installation.

Prod

  1. Make sure thePROJECT_ID environment variable is defined.
    echo $PROJECT_ID

    Thecreate-service-account tool uses the value of thePROJECT_ID environment variable. If it is not defined, either define it with your ID of your Google Cloud Project ID or add the--project-idmy_project_id flag to thecreate-service-account commands.

  2. Create the service accounts with the following commands, where$APIGEE_HELM_CHARTS_HOME is the path where you downloaded the Apigee Helm charts. You may be prompted to create each service account. Respond withy.
    $APIGEE_HELM_CHARTS_HOME/apigee-operator/etc/tools/create-service-account \  --profile apigee-cassandra \  --env prod \  --dir$APIGEE_HELM_CHARTS_HOME/apigee-datastore$APIGEE_HELM_CHARTS_HOME/apigee-operator/etc/tools/create-service-account \  --profile apigee-logger \  --env prod \  --dir$APIGEE_HELM_CHARTS_HOME/apigee-telemetry$APIGEE_HELM_CHARTS_HOME/apigee-operator/etc/tools/create-service-account \  --profile apigee-mart \  --env prod \  --dir$APIGEE_HELM_CHARTS_HOME/apigee-org$APIGEE_HELM_CHARTS_HOME/apigee-operator/etc/tools/create-service-account \  --profile apigee-metrics \  --env prod \  --dir$APIGEE_HELM_CHARTS_HOME/apigee-telemetry$APIGEE_HELM_CHARTS_HOME/apigee-operator/etc/tools/create-service-account \  --profile apigee-runtime \  --env prod \  --dir$APIGEE_HELM_CHARTS_HOME/apigee-env$APIGEE_HELM_CHARTS_HOME/apigee-operator/etc/tools/create-service-account \  --profile apigee-synchronizer \  --env prod \  --dir$APIGEE_HELM_CHARTS_HOME/apigee-env$APIGEE_HELM_CHARTS_HOME/apigee-operator/etc/tools/create-service-account \  --profile apigee-udca \  --env prod \  --dir$APIGEE_HELM_CHARTS_HOME/apigee-env$APIGEE_HELM_CHARTS_HOME/apigee-operator/etc/tools/create-service-account \  --profile apigee-udca \  --env prod \  --dir$APIGEE_HELM_CHARTS_HOME/apigee-org$APIGEE_HELM_CHARTS_HOME/apigee-operator/etc/tools/create-service-account \  --profile apigee-watcher \  --env prod \  --dir$APIGEE_HELM_CHARTS_HOME/apigee-org
  3. Verify that the service account files were created in the correct directories by checking the contents of each chart's directory. Your output should look like:
    ls ./apigee-datastoreChart.yamlmy_project_id-apigee-cassandra.json  templates  values.yamlls ./apigee-telemetryChart.yamlmy_project_id-apigee-logger.jsonmy_project_id-apigee-metrics.json  templates  values.yamlls ./apigee-orgChart.yamlmy_project_id-apigee-udca.json     templatesmy_project_id-apigee-mart.jsonmy_project_id-apigee-watcher.json  values.yamlls ./apigee-envChart.yamlmy_project_id-apigee-runtime.jsonmy_project_id-apigee-synchronizer.jsonmy_project_id-apigee-udca.json templates  values.yaml
    Tip: You can also verify the location of the service account files with the followingtree command:
    tree -P *.json

Non-prod

  1. Make sure thePROJECT_ID environment variable is defined.
    echo $PROJECT_ID

    Thecreate-service-account tool uses the value of thePROJECT_ID environment variable. If it is not defined, either define it with your ID of your Google Cloud Project ID or add the--project-idmy_project_id flag to thecreate-service-account commands.

  2. Create the service account with the following command, where$APIGEE_HELM_CHARTS_HOME is the path where you downloaded the Apigee Helm charts. You may be prompted to create each service account. Respond withy.
    $APIGEE_HELM_CHARTS_HOME/apigee-operator/etc/tools/create-service-account \  --env non-prod \  --dir$APIGEE_HELM_CHARTS_HOME/apigee-datastore
  3. Verify the name of the service account file created in theapigee-datastore directory:
    ls$APIGEE_HELM_CHARTS_HOME/apigee-datastore
    Chart.yamlmy_project_id-apigee-non-prod.json  templates  values.yaml
  4. Copy the service account file to the other chart directories that will need to refer to it:
    cp$APIGEE_HELM_CHARTS_HOME/apigee-datastore/SA_FILE_NAME$APIGEE_HELM_CHARTS_HOME/apigee-telemetry/
    cp$APIGEE_HELM_CHARTS_HOME/apigee-datastore/SA_FILE_NAME$APIGEE_HELM_CHARTS_HOME/apigee-org/
    cp$APIGEE_HELM_CHARTS_HOME/apigee-datastore/SA_FILE_NAME$APIGEE_HELM_CHARTS_HOME/apigee-env/

For more information about service accounts and thecreate-service-account tool see:

Tip: You can store the service account files in Kubernetes secrets. SeeStoring data in a Kubernetes secret

You now have created service accounts and assigned the roles needed by the Apigee hybrid components. Next, create the TLS certificates required by the hybrid ingress gateway.

Next step

1234(NEXT) Step 5: Create TLS certificates6789101112

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-19 UTC.