The cluster was wide open.
Anyone on the network could see more than they should.
Kubernetes makes it easy to scale, but its default networking model is flat. Pods can talk to each other without restriction. That’s fine until you need real segmentation, compliance, or zero-trust security. Network Policies solve some of this, yet they are often misunderstood, ignored, or replaced with heavy, brittle VPN setups.
You don’t need a cluster-wide VPN to protect workloads. You can use Kubernetes Network Policies as a precise VPN alternative, tightening communication at the pod level and keeping attack surfaces small. This keeps east-west traffic under control, makes compliance audits easier, and eliminates the overhead of maintaining a long-lived VPN tunnel across services that should never talk.
Kubernetes Network Policies vs VPNs
A VPN forces all traffic through a secure tunnel. That’s great for connecting people or entire networks, but in Kubernetes it’s overkill. You want service-to-service restrictions, not a mesh of everyone-connected-to-everyone. Network Policies work directly with the cluster’s networking layer, defining what each pod can send or receive. You get fine-grained rules based on namespaces, labels, or IP blocks.
VPNs wrap and route everything, but they usually can’t scope to Kubernetes workloads with the same precision. They bring static configurations where you want fast, dynamic changes. They add latency and complexity that’s invisible in the early days but crippling when you scale to hundreds of microservices.