Co-authored-by: elchead <elchead@users.noreply.github.com>
2.0 KiB
Network encryption
Constellation encrypts all pod communication using the container network interface (CNI). To that end, Constellation deploys, configures, and operates the Cilium CNI plugin. Cilium provides transparent encryption for all cluster traffic using either IPSec or WireGuard. Currently, Constellation only supports WireGuard as the encryption engine. You can read more about the cryptographic soundness of WireGuard in their white paper.
Cilium is actively working on implementing a feature called host-to-host
encryption mode for WireGuard.
With host-to-host
, all traffic between nodes will be tunneled via WireGuard (host-to-host, host-to-pod, pod-to-host, pod-to-pod).
Until the host-to-host
feature is released, Constellation enables pod-to-pod
encryption.
This mode encrypts all traffic between Kubernetes pods using WireGuard tunnels.
When using Cilium in the default setup but with encryption enabled, there is a known issue
that can cause pod-to-pod traffic to be unencrypted.
To mitigate this issue, Constellation adds a strict mode to Cilium's pod-to-pod
encryption.
This mode changes the default behavior of traffic that's destined for an unknown endpoint to not be send out in plaintext, but instead being dropped.
The strict mode distinguishes between traffic that's send to a pod from traffic that's destined for a cluster-external endpoint by considering the pod's CIDR range.
Traffic originating from hosts isn't encrypted yet.
This mainly includes health checks from Kubernetes API server.
Also, traffic proxied over the API server via e.g. kubectl port-forward
isn't encrypted.