Helm-Install
Ohne kube-proxy müssen
k8sServiceHost / k8sServicePort gesetzt
sein, sonst findet der Agent den API-Server nicht (den
Service löst sonst niemand auf). Chart per OCI,
cosign-signiert, Version ohne v pinnen (oder per
Digest).
helm install cilium \ oci://quay.io/cilium/charts/cilium \ --version 1.20.4 -n kube-system \ --set kubeProxyReplacement=true \ --set k8sServiceHost=<api-server-ip> \ --set k8sServicePort=6443
kube-proxy-Replacement
eBPF übernimmt ClusterIP, NodePort, LoadBalancer, externalIPs und HostPort.
Socket-LB: übersetzt Service auf Backend
schon beim connect()/sendmsg(), kein
Paket-Rewriting auf dem Pfad.
Mit Istio (Sidecar oder Ambient) immer
cni.exclusive=false, damit Istios CNI-Plugin erhalten
bleibt. Kube-proxy-frei zusätzlich
socketLB.hostNamespaceOnly=true, sonst greift
Socket-LB schon im Pod und stört die Umleitung zum
Istio-Proxy. Die Cilium-Doku empfiehlt mit Istio weiterhin
kubeProxyReplacement=false. Unter Istio-mTLS sieht
Cilium kein L7, L7-Policies nicht in beiden Systemen pflegen.
kubectl -n kube-system exec ds/cilium -- \ cilium-dbg status --verbose | \ grep KubeProxyReplacement
LoadBalancer ohne Cloud
IP-Pools per CiliumLoadBalancerIPPool
(cilium.io/v2), auch für den Gateway-Service.
Bekanntgabe per L2 (l2announcements.enabled=true,
Beta, braucht kube-proxy-Replacement und ein höheres
k8sClientRateLimit, plus
CiliumL2AnnouncementPolicy) oder BGP
(bgpControlPlane.enabled=true, v2-CRDs).
cilium-dbg bgp ist seit 1.20 deprecated, Ersatz im
Agent-Pod cilium-dbg shell -- bgp/*.