Supported versions:
Unsupported versions:
This section describes using Apigee Connect (Beta) for communication between the hybrid management plane and the MART service in the runtime plane.
Apigee Connect allows the Apigee hybrid management plane to connect securely to the MART service in the runtime plane without requiring you to expose the MART endpoint on the internet. If you use Apigee Connect, you do not need to configure the MART ingress gateway with a host alias and an authorized DNS certificate.

Apigee hybrid version1.2.0 or newer must be installed and configured before setting up Apigee Connect.
This section assumes you have installed or upgraded to and configured Apigee hybrid 1.2.0 or newer
When Apigee Connect is configured and enabled, the MART ingress is ignored: the management plane only connects to MART using Apigee Connect. All MART traffic between the hybrid runtime plane passes through the secure Apigee Connect connection.
Follow these steps to enable and use Apigee Connect with Apigee hybrid:
gcloud. For instructions on
enabling APIs in the Google Cloud console, see
Step 3: Enable APIs. To use gcloud to enable the API:$ gcloud config set project YOUR_GCP_PROJECT_ID $ gcloud services enable apigeeconnect.googleapis.com
YOUR_GCP_PROJECT_ID is the same GCP project for which
Apigee was enabled and an Apigee org was provisioned for you.$ gcloud projects add-iam-policy-binding YOUR_GCP_PROJECT_ID --member serviceAccount:YOUR_MART_SERVICE_ACCOUNT_EMAIL --role roles/apigeeconnect.Agent
YOUR_GCP_PROJECT_ID is the same GCP project for which
Apigee was enabled and an Apigee org was provisioned for you, and YOUR_MART_SERVICE_ACCOUNT_EMAIL
is the MART service account name. The name is in the form of an email address.
For example: apigee-mart@my-project.iam.gserviceaccount.com. | Permission | Description |
|---|---|
apigeeconnect.endpoints.connect |
This is the permission to set up the Apigee Connect Agent. |
For details on assigning granting access permissions through either the GCP console or APIs, see:
hybrid_files/service_accounts
directory, as explained in
Create service accounts.# Apigee Connect Agent
connectAgent:
enabled: true
serviceAccountPath: ./service-accounts/connect_agent_sa_key.jsonk8sCluster: name: your_cluster_name region: your_cluster_region # Apigee Connect Agent connectAgent: enabled: true serviceAccountPath: ./service-accounts/connect_agent_sa_key.json
# Apigee Connect Agent
connectAgent:
enabled: true
replicaCountMin: 3
serviceAccountPath: ./service-accounts/connect_agent_sa_key.json$ export GOOGLE_APPLICATION_CREDENTIALS=org-admin-service-account-file $ export TOKEN=$(gcloud auth application-default print-access-token)
curl -v -X PUT \
https://apigee.googleapis.com/v1/organizations/your_org_name \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $TOKEN" \
-d '{
"name" : "your_org_name",
"properties" : {
"property" : [ {
"name" : "features.hybrid.enabled",
"value" : "true"
}, {
"name" : "features.mart.connect.enabled",
"value" : "true"
} ]
}
}'$ $APIGEECTL_HOME/apigeectl apply -f your_overrides_file.yaml -c connect-agent
mart: hostAlias: "mart.apigee-hybrid-docs.net" serviceAccountPath: ./service-accounts/example-project-apigee-mart.json sslCertPath: ./certs/fullchain.pem sslKeyPath: ./certs/privkey.key
$ kubectl logs -n namespace apigee-connect-agent-pod-name
| Audit logs category | Operations |
|---|---|
| DATA_READ | ConnectionService.ListConnections |
| DATA_WRITE | Tether.Egress |
With this upgrade, the hybrid runtime plane communicates with the management plane through Apigee Connect.
See also: Removing Apigee Connect.
apigee-connect-agent-1.0:$ kubectl logs -n apigee apigee-mart-orgname-rc101-q72tl -c apigee-mart | grep connect
"2019-12-11 04:59:52,321 org: env: target: action: context-id: mode: pool-1-thread-1 INFO MART_AUDITLOG - MartAuditListener.eventOccurred() : Type:Audit edge-gaambo-controlplane@system.gserviceaccount.com 1576040392317 /v1/organizations/apigee-connect-hybrid-prod/developers/ count=100&expand=true&startKey=4ee9e8f7-12b2-4cde-bf10-32d991469876 200 GET apigee-connect-hybrid-prod 10.40.11.3 10.40.0.5 apigee-connect-agent-1.0 null"
foo-product was received:$ kubectl logs -n apigee apigee-mart-orgname-rc101-q72tl -c apigee-mart
2019-12-16 22:15:29,572 org: env: target: action: context-id: mode: pool-1-thread-1 INFO MART_AUDITLOG - MartAuditListener.eventOccurred() : Type:Audit edge-gaambo-controlplane@system.gserviceaccount.com 1576534529566 /v1/organizations/myorg/apiproducts/foo-product/ -NA- 201 CREATE myorg 10.16.1.61 10.16.1.64 apigee-connect-agent-1.0 null 2019-12-16 22:15:30,412 org: env: target: action: context-id: mode: pool-1-thread-1 INFO MART_AUDITLOG - MartAuditListener.eventOccurred() : Type:Audit edge-gaambo-controlplane@system.gserviceaccount.com 1576534530407 /v1/organizations/myorg/apps/ apiProduct=foo-product&expand=false 200 GET myorg 10.16.1.61 10.16.1.64 apigee-connect-agent-1.0 null
If you delete the Apigee Connect deployment, the pod status can remain in the "Terminating" state for up to seven minutes. This amount of time is expected. Apigee Connect agents wait for the existing connections to expire instead of stopping them suddenly. The delay ensures that inflight requests are not lost.
Except as otherwise noted, the content of this page is licensed under the Creative Commons Attribution 4.0 License, and code samples are licensed under the Apache 2.0 License. For details, see the Google Developers Site Policies. Java is a registered trademark of Oracle and/or its affiliates.
Last updated 2026-07-23 UTC.