Terraform installed cert-manager in the GKE cluster, which automates TLS certificate issuance and renewal. In this step, you will:
Unlike AWS (which uses ACM), GCP deployments use cert-manager with Let’s Encrypt or your organization’s certificate authority.
If using public GKE mode: If you configured confident_public_gke = true
(HTTP-only testing), you can skip this page. Public mode is only recommended
for testing, not production.
The GCP deployment uses a different TLS approach than AWS:
When a user connects to your domain:
cert-manager was installed by Terraform via Helm. Verify it’s operational:
Expected output:
All three pods should be Running.
cert-manager pods not running?
This sometimes happens when GKE wasn’t fully ready. Try:
Terraform will retry the failed Helm installation.
A ClusterIssuer tells cert-manager how to obtain certificates. The most common option is Let’s Encrypt.
Create a file cluster-issuer.yaml:
Apply it:
Verify the issuer is ready:
Expected output:
Let’s Encrypt requires HTTP-01 challenge validation. This means:
For testing, use the Let’s Encrypt staging server first to avoid rate limits:
https://acme-staging-v02.api.letsencrypt.org/directory. Switch to production
once confirmed working.
If your ingress is internal (not internet-facing), you can’t use Let’s Encrypt. Options:
Self-signed issuer example:
Self-signed certificates cause browser warnings. Users will see “Your connection is not private” errors. This is acceptable for internal testing but not for production use.
Before certificates can be issued, your DNS must point to the NGINX Ingress load balancer. You’ll configure this fully during the Verification step, but you can check the load balancer IP now:
This returns the GCP Network Load Balancer IP that your DNS records should point to.
GCP Network Load Balancers use IP addresses (not hostnames like AWS ALB). You’ll create A records (not CNAME records) pointing your domains to this IP.
After cert-manager is operational and a ClusterIssuer is configured, proceed to Cluster Access to configure kubectl access and verify infrastructure components.