Troubleshoot ambient networking

This page shows you how to troubleshoot and verify Google Kubernetes Engine (GKE) ambient networking. It provides instructions for checking the health of in-cluster ambient components, diagnosing traffic authentication and authorization issues, verifying certificate issuance, and inspecting metrics and logs.

Verify components are installed and healthy

In-cluster components for Cloud Service Mesh ambient mode are installed in the gke-managed-ambient namespace. You can see the status of all relevant Pods with the following command:

kubectl get pods -n gke-managed-ambient

Verify traffic is authenticated and authorized

Using Logs Explorer in Google Cloud console, check the access logs that correspond to the connections of interest:

resource.type="k8s_container"
resource.labels.location="CLUSTER_LOCATION"
resource.labels.cluster_name="CLUSTER_NAME"
logName="projects/PROJECT_ID/logs/gke-ambient-node-proxy-accesslog"

The access logs display connection details, including authentication and authorization status.

Log format

Field Type Description
connection struct Connection information.
connection.src_ip string Source IP of the connection.
connection.src_port int Source port of the connection.
connection.dest_ip string Destination IP of the connection.
connection.dest_port int Destination port of the connection.
connection.direction string Direction of the connection: {ingress, egress}
src struct Endpoint information of the source.
src.spiffe_id string The SPIFFE identity of the Pod. Empty if the Pod does not have a SPIFFE identity.
dst struct Endpoint information of the destination.
dst.spiffe_id string The SPIFFE identity of the Pod. Empty if the Pod does not have a SPIFFE identity.
error_details string Details about the error that occurred (or - if no error occurred).
timestamp string Time when the connection was observed (UTC).
tls_failure_reason string TLS handshake failure reason. null if the connection is not TLS.

Verify certificates are successfully issued

Use the following command to inspect the status of CertificateSigningRequests for workload Pods in your cluster:

kubectl get csr

You should see "Approved,Issued" conditions similar to the following:

NAME                           AGE   SIGNERNAME                 CONDITION
gke-ambient-spiffe-csr-q8kqh   2s    spiffe.gke.io/fleet-svid   Approved,Issued
gke-ambient-spiffe-csr-t5px2   7s    spiffe.gke.io/fleet-svid   Approved,Issued

Network Services Monitoring metrics

In addition to standard Cloud Observability metrics, Cloud Service Mesh ambient networking integrates with Network Services Monitoring to provide detailed Layer 4 network telemetry.

For more information, see the Network Services Monitoring overview and the Network Services Monitoring metrics reference.