Supported versions:
Unsupported versions:
This topic is intended as an example only. It explains how to obtain a TLS certificate from the certificate authority (CA) Let's Encrypt. These steps are provided primarily as an example to follow if you do not have another ready way to obtain a certificate/key pair that is authorized by a CA. The example shows how to generate certificates using the Let's Encrypt CA, the Certbot client, and Google Cloud Platform Cloud DNS.
You must provide TLS certificates for two Istio ingress gateways that are exposed outside the cluster:
| Gateway | TLS requirement |
|---|---|
| Runtime ingress gateway | You can use a self-signed certificate/key pair or authorized TLS certificates. |
| MART ingress gateway (optional when not using Apigee Connect) | Requires an authorized TLS certificate/key pair or Kubernetes secret. |
You will need a domain name obtained through a domain name registrar. You can register a domain name through Google Domains or another domain registrar of your choice.
apigee-hybrid-runtime. When you finish, you will use the IP
number in the cluster configuration in the next step. For example: 34.66.75.196example-endpoint. For instructions, see
Create a new record.
api-services or example-endpoint
Enter the domain name servers that you copied from the Network Services Cloud DNS page. For example:

Now, your Google Cloud DNS will manage the DNS records for your domain.
Now that you have Cloud DNS set up to manage your domain servers, you will install the Certbot client with the dns_google plugin on a Cloud VM. The client enables you to get authorized certificates for your domain from a Let's Encrypt endpoint.
The Service accounts view displays a list of the project's service accounts.
The Service account details view displays.

You can optionally add a description in the Service account description field. Descriptions are helpful at reminding you what a particular service account is used for.
Google Cloud creates a new service account and displays the Service account permissions view. Use this view to assign a role to your new service account.
sudo su -yum -y install yum-utilsyum install certbot -yyum install certbot-dns-google -ycertbot certonly --dns-google -d *.your_domain_name,*.your_domain_name --server https://acme-v02.api.letsencrypt.org/directory
For example:
sudo su -yum -y install yum-utilsyum install certbot -yyum install certbot-dns-google -ycertbot certonly --dns-google -d *.apigee-hybrid-docs.net,*.apigee-hybrid-docs.net --server https://acme-v02.api.letsencrypt.org/directory
cd /etc/letsencrypt/live/your_domain_name/
For example:
cd /etc/letsencrypt/live/apigee-hybrid-docs.netlscert.pem chain.pem fullchain.pem privkey.pem README
fullchain.pem and privkey.pem to your
local machine.For example:
...
envs:
- name: test
serviceAccountPaths:
synchronizer: "your_keypath/synchronizer-manager-service-account.json
udca: "your_keypath/analytic-agent-service-account.json
virtualhosts:
- name: my-env-group
sslCertPath: "$HOME/hybrid/apigee-hybrid-setup/tls/fullchain.pem"
sslKeyPath: "$HOME/hybrid/apigee-hybrid-setup/tls/privkey.pem"
mart: # Assuming you are not using Apigee Connect
nodeSelector:
key: cloud.google.com/gke-nodepool
value: apigee-runtime
sslCertPath: "$HOME/hybrid/apigee-hybrid-setup/tls/fullchain.pem"
sslKeyPath: "$HOME/hybrid/apigee-hybrid-setup/tls/privkey.pem"
replicaCountMin: 1
replicaCountMax: 1Or if using Kubernetes secrets:
...
envs:
- name: test
serviceAccountPaths:
synchronizer: "your_keypath/synchronizer-manager-service-account.json
udca: "your_keypath/analytic-agent-service-account.json
virtualhosts:
- name: my-env-group
tlsMode: SIMPLE # Note: SIMPLE is the default, MUTUAL is also an available value.
sslSecret: myorg-test-policy-secret"
mart: # Assuming you are not using Apigee Connect
nodeSelector:
key: cloud.google.com/gke-nodepool
value: apigee-runtime
sslSecret: myorg-test-policy-secret"
replicaCountMin: 1
replicaCountMax: 1
...
If you changed the mart configuration, apply the changes:
apigeectl apply -f your_overrides_file --all-envs
If you changed the envs configuration, apply the changes:
apigeectl apply -f your_overrides_file --all-envs
Deploy and test a proxy, as explained in Create and deploy a new API proxy.
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.