[[["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-08-26 UTC."],[[["\u003cp\u003eThis document provides instructions for configuring the MART service account for Apigee hybrid installations, which is necessary for MART and Apigee Connect authentication.\u003c/p\u003e\n"],["\u003cp\u003eThe MART service account key file, either \u003ccode\u003eapigee-mart.json\u003c/code\u003e for PROD or \u003ccode\u003eapigee-non-prod.json\u003c/code\u003e for NON-PROD, must be located or created using the \u003ccode\u003ecreate-service-account\u003c/code\u003e utility.\u003c/p\u003e\n"],["\u003cp\u003eAfter creating or locating the appropriate service account key file, its path must be added to the \u003ccode\u003econnectAgent\u003c/code\u003e and \u003ccode\u003emart.serviceAccountPath\u003c/code\u003e properties within the \u003ccode\u003eoverrides.yaml\u003c/code\u003e configuration file.\u003c/p\u003e\n"],["\u003cp\u003eOnce the \u003ccode\u003eoverrides.yaml\u003c/code\u003e file is updated, apply these changes using either the \u003ccode\u003ehelm upgrade\u003c/code\u003e (or \u003ccode\u003einstall\u003c/code\u003e) command for Helm installations or \u003ccode\u003e$APIGEECTL_HOME/apigeectl apply\u003c/code\u003e for \u003ccode\u003eapigeectl\u003c/code\u003e installations.\u003c/p\u003e\n"]]],[],null,["# Configure the MART service account\n\n| You are currently viewing version 1.11 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\n\nThis topic explains how to configure the MART service account.\n\nAdding the MART service account\n-------------------------------\n\n\nMART and Apigee Connect require a Google Cloud service account for authentication.\n| **Note:** Installations on GKE using workload identity do not require a Google Cloud service account key file (`.json`). See [Enabling Workload Identity with Apigee hybrid](/apigee/docs/hybrid/v1.11/enable-workload-identity).\n\n1. Locate the key file for the `apigee-mart` service account. The file should have a `.json` extension. \n\n ```\n ls $HYBRID_FILES/service-accounts\n ```\n - **PROD** installations: `apigee-mart.json`\n - **NON-PROD** installations: `apigee-non-prod.json`\n2. If you do not see the MART service account file, create and download it with the `create-service-account` utility:\n 1. Make sure your `PROJECT_ID` environment variable is set: \n\n ```\n echo $PROJECT_ID\n ```\n\n Define it if needed: \n\n ```\n export PROJECT_ID=my-project-id\n ```\n 2. Create the MART service account. You can find the `create-service-account` tool in:\n - For Helm Charts installations: \n\n ```\n APIGEE_HELM_CHARTS_HOME/\n └── apigee-operator/\n └── etc/\n └── tools/\n └── create-service-account\n ```\n - For `apigeectl` installations: \n\n ```\n APIGEECTL_HOME/\n └── tools/\n └── create-service-account\n ```\n\n ### PROD\n\n ```\n create-service-account \\\n --env prod \\\n --profile apigee-mart \\\n --dir PATH_TO_SERVICE_ACCOUNTS_DIR\n ```\n\n ### NON-PROD\n\n ```\n $HYBRID_FILES/tools/create-service-account \\\n --env non-prod \\\n --profile apigee-mart \\\n --dir PATH_TO_SERVICE_ACCOUNTS_DIR\n ```\n3. Edit your `overrides.yaml` file and add the key file path to the `connectAgent` and `mart.serviceAccountPath` properties:\n\n ### PROD\n\n ```actionscript-3\n connectAgent:\n serviceAccountPath: \u003cvar translate=\"no\"\u003e\u003cspan class=\"devsite-syntax-n\"\u003epath_to_apigee\u003c/span\u003e\u003cspan class=\"devsite-syntax-o\"\u003e-\u003c/span\u003e\u003cspan class=\"devsite-syntax-n\"\u003emart\u003c/span\u003e\u003cspan class=\"devsite-syntax-o\"\u003e.\u003c/span\u003e\u003cspan class=\"devsite-syntax-na\"\u003ejson\u003c/span\u003e\u003c/var\u003e\n\n mart:\n serviceAccountPath: \u003cvar translate=\"no\"\u003e\u003cspan class=\"devsite-syntax-n\"\u003epath_to_apigee\u003c/span\u003e\u003cspan class=\"devsite-syntax-o\"\u003e-\u003c/span\u003e\u003cspan class=\"devsite-syntax-n\"\u003emart\u003c/span\u003e\u003cspan class=\"devsite-syntax-o\"\u003e.\u003c/span\u003e\u003cspan class=\"devsite-syntax-na\"\u003ejson\u003c/span\u003e\u003c/var\u003e\n ```\n\n ### NON-PROD\n\n ```actionscript-3\n connectAgent:\n serviceAccountPath: \u003cvar translate=\"no\"\u003e\u003cspan class=\"devsite-syntax-n\"\u003epath_to_apigee\u003c/span\u003e\u003cspan class=\"devsite-syntax-o\"\u003e-\u003c/span\u003e\u003cspan class=\"devsite-syntax-n\"\u003enon\u003c/span\u003e\u003cspan class=\"devsite-syntax-o\"\u003e-\u003c/span\u003e\u003cspan class=\"devsite-syntax-n\"\u003eprod\u003c/span\u003e\u003cspan class=\"devsite-syntax-o\"\u003e.\u003c/span\u003e\u003cspan class=\"devsite-syntax-na\"\u003ejson\u003c/span\u003e\u003c/var\u003e\n\n mart:\n serviceAccountPath: \u003cvar translate=\"no\"\u003e\u003cspan class=\"devsite-syntax-n\"\u003epath_to_apigee\u003c/span\u003e\u003cspan class=\"devsite-syntax-o\"\u003e-\u003c/span\u003e\u003cspan class=\"devsite-syntax-n\"\u003enon\u003c/span\u003e\u003cspan class=\"devsite-syntax-o\"\u003e-\u003c/span\u003e\u003cspan class=\"devsite-syntax-n\"\u003eprod\u003c/span\u003e\u003cspan class=\"devsite-syntax-o\"\u003e.\u003c/span\u003e\u003cspan class=\"devsite-syntax-na\"\u003ejson\u003c/span\u003e\u003c/var\u003e\n ```\n\n\n For example:\n\n ### Helm\n\n ```\n ...\n connectAgent:\n serviceAccountPath: /apigee/hybrid/helm-charts/apigee-org/apigee-mart.json\n\n mart:\n serviceAccountPath: /apigee/hybrid/helm-charts/apigee-org/apigee-mart.json\n ...\n ```\n\n ### `apigeectl`\n\n ```\n ...\n connectAgent:\n serviceAccountPath: /apigee/hybrid/hybrid-files/service-accounts/apigee-mart.json\n\n mart:\n serviceAccountPath: /apigee/hybrid/hybrid-files/service-accounts/apigee-mart.json\n ...\n ```\n4. Apply your changes:\n\n ### Helm\n\n ```\n helm upgrade ORG_NAME apigee-org/ \\\n --namespace apigee \\\n --atomic \\\n -f OVERRIDES_FILE.yaml\n ```\n | **Note:** If you see an error saying `Error: UPGRADE FAILED: \"`*ORG_NAME*`\" has no deployed releases`, replace `upgrade` with `install` and try the command again.\n\n ### `apigeectl`\n\n ```\n $APIGEECTL_HOME/apigeectl apply -f OVERRIDES_FILE.yaml --org\n ```"]]