More Info:
Use Google-managed SSL certificates on Ingress resources so TLS certificates are automatically provisioned and rotated. This avoids expired or mismanaged manual certificates and exposed LoadBalancer services.Risk Level
MediumAddress
SecurityCompliance Standards
- CIS GKE
Triage and Remediation
- Remediation
Remediation
Manual Steps
Manual Steps
-
On any machine with
gcloudandkubectlaccess, list external LoadBalancer Services and candidate apps to migrate to Ingress: - For each HTTP/HTTPS LoadBalancer Service you want to protect with managed certs, create or reuse a DNS name that points to the GKE Ingress IP (will be known after step 5). Ensure you control the DNS zone in Cloud DNS or another DNS provider.
-
On any machine with
gcloud/kubectlaccess, create aManagedCertificatefor each domain you want Google to manage (replace values with your real domain and namespace): -
Migrate the existing external Service to Ingress by:
- Changing the Service to
ClusterIP(so it is only internal to the cluster), for example: - Creating an Ingress that:
- Routes to that Service
- Uses the Google HTTP(S) Load Balancer
gcecontroller - References the
ManagedCertificatevia annotation:
- Changing the Service to
-
After the Ingress is created, obtain its external IP and point your DNS records at it (run on any machine with
kubectl):Create/modify A (and/or CNAME) records forexample.comandwww.example.comto target the Ingress IP. Wait for DNS to propagate and for the ManagedCertificate to becomeActive: -
Verify overall compliance from any machine with
kubectlandjq:
Using kubectl
Using kubectl
kubectl cannot remediate this finding because it requires configuring Google-managed SSL certificates and Ingress behavior at the GKE / cloud provider configuration and IaC layer. Make the changes through the Google Cloud Console, gcloud, or your IaC (per the Manual Steps section), then re-run the audit command from any machine with kubectl access to confirm the issue is resolved.
Automation
Automation

