← Back to Blog

Building a Zero-Trust Kubernetes Cluster from Scratch

How I built a reliable WhatsApp AI shopping assistant for Clickmothercare that survives hallucinated products, silent save failures, and multi-agent handoff bugs.

Anas Rhimi
Anas Rhimi August 2026 • 8 min read

The Illusion of Internal Security

Many organizations treat their Kubernetes cluster like a medieval castle: heavy defenses at the perimeter (ingress/WAF), but completely unprotected on the inside. If an attacker compromises a single container, they often have unfettered lateral access to the entire cluster network.

In this post, I break down how to architect a Zero-Trust Kubernetes Cluster from the ground up, ensuring that every microservice explicitly authenticates and authorizes its peers.

1. Network Policies: The Foundation

By default, Kubernetes pods can communicate with any other pod in the cluster. This is a massive security risk. The first step in Zero-Trust is implementing default-deny Network Policies.

We utilize Cilium as our CNI (Container Network Interface). Cilium uses eBPF for highly efficient networking and security. We implement a global `CiliumClusterwideNetworkPolicy` that denies all cross-namespace traffic by default, requiring developers to explicitly whitelist necessary communication paths.

2. mTLS with Istio Service Mesh

Network policies restrict *who* can talk, but they don't encrypt the traffic or cryptographically verify identity. For this, we deploy the Istio Service Mesh.

We enforce `STRICT` mTLS (Mutual TLS) across the entire cluster. Istio automatically provisions and rotates cryptographic certificates for every pod. When Service A talks to Service B, the connection is encrypted, and Service B cryptographically verifies that the request actually came from Service A.

3. Identity-Aware Proxy (IAP) & OIDC

For internal dashboards (like Grafana, Kibana, or ArgoCD), we do not expose them directly or rely on basic auth. We integrate an Identity-Aware Proxy (like Pomerium or oauth2-proxy) with the company's SSO (Okta/Google Workspace).

4. Ephemeral Secrets with HashiCorp Vault

Hardcoded database credentials in Kubernetes Secrets are a ticking time bomb. We integrate the cluster with HashiCorp Vault. Applications do not receive static passwords; instead, they authenticate with Vault using their Kubernetes Service Account JWT and receive dynamic, short-lived credentials that expire after 1 hour.

Conclusion

A Zero-Trust Kubernetes architecture assumes breach. By combining Cilium eBPF, Istio mTLS, and dynamic secrets, we isolate compromises and prevent lateral movement.

Need a security audit or a DevSecOps pipeline built? Let's talk.

Is your AI agent's infrastructure secure and reliable?

Book a Free 15-Min Technical Audit
Hire Me