This is where ingress resources meet Zscaler. When your cluster runs behind Zscaler, the rules change. Packets route differently. DNS can trip you. TLS handshakes start failing without a clear error. And the Ingress resource you wrote with confidence stops behaving like the YAML says it should.
Ingress in Kubernetes is the front door to your services. It defines how requests from outside reach the workloads inside your cluster. But when Zscaler sits in the middle, that path runs through inspection layers, SSL interception, and IP filtering. Liveness probes fail. Health checks look broken. Public DNS records resolve fine for you but not for the cluster’s nodes. Every engineer who’s been here knows the silent chaos it can cause.
To make ingress resources work with Zscaler, you have to map every layer. Match your hostnames with Zscaler’s allowlists. Pin your TLS config to match certificate inspection rules. Check the ALB or NGINX Ingress logs for dropped requests at handshake. Probe from inside the VPC to see if Zscaler is filtering on source IP or SNI. And never assume that a 200 outside means a 200 inside.