WireGuard
Transparente Verschlüsselung des Pod-Traffics
zwischen Nodes (Device cilium_wg0,
UDP 51871, Firewall freischalten!).
Key-Paar erzeugt jeder Node selbst, Public-Key-Austausch via
CiliumNode-Annotation.
Node-zu-Node zusätzlich:
encryption.nodeEncryption=true. Nodes mit Label
node-role.kubernetes.io/control-plane nimmt Cilium
davon automatisch aus. Same-Node-Traffic bleibt
unverschlüsselt.
Strict Mode:
encryption.strictMode.egress.enabled=true plus
.egress.cidr (Pod-CIDR, nur IPv4) verhindert
unverschlüsselte Erstpakete.
encryption.strictMode.ingress.enabled=true (nur
WireGuard) droppt unverschlüsselten Pod-Traffic. Die alten
Schlüssel
encryption.strictMode.enabled/.cidr
sind seit 1.20 entfernt.
# Konfig-Änderung: --version = installierte Chart-Version helm upgrade cilium \ oci://quay.io/cilium/charts/cilium \ --version 1.20.4 -n kube-system \ --reuse-values \ --set encryption.enabled=true \ --set encryption.type=wireguard kubectl -n kube-system exec ds/cilium -- \ cilium-dbg status | grep Encryption
IPsec
encryption.type=ipsec; Key liegt im Secret
cilium-ipsec-keys (Cilium-Namespace), z.B.
"3+ rfc4106(gcm(aes)) <key> 128". Das
+ erzwingt Per-Tunnel-Keys, globale Keys gelten als
unsicher (GHSA-pwqm-x5x6-5586).
Key-Rotation ist manuell (KEYID 1–15 inkrementieren), nie während eines Upgrades rotieren.
ztunnel (Beta)
encryption.type=ztunnel: L4-mTLS je Node über
Istios ztunnel, Enrollment je Namespace (Label
io.cilium/mtls-enabled=true), CA
internal (Default) oder spire. Nicht mit
ClusterMesh kombinierbar. Nur TCP, beide Seiten müssen
eingeschrieben sein, braucht iptables; L4-Policies greifen nur noch
auf Port 15008 (HBONE). Empfohlene Alternative zur Mutual
Authentication (seit 1.20 deprecated, in v1.21.0-pre.3
entfernt).