Multi-Cluster-Verbund
Pod-Konnektivität über Cluster-Grenzen, globale
Services mit Cross-Cluster-Load-Balancing. Policies selektieren
seit 1.19 nur den lokalen Cluster, Remote-Endpoints explizit per
Label io.cilium.k8s.policy.cluster.
Voraussetzungen: PodCIDRs aller Cluster
disjunkt, eindeutiger cluster.name +
cluster.id (1–255, mit
clustermesh.maxConnectedClusters=511 bis 511, nur bei
der Installation setzbar, in allen Clustern gleich), gegenseitiges
TLS-Vertrauen (gemeinsame CA, z.B. cilium-ca
kopieren, oder tls.caBundle),
IP-Konnektivität zwischen allen Nodes,
clustermesh-apiserver gegenseitig erreichbar.
# CLI-Weg (Lab, Demo) cilium clustermesh enable --context c1 cilium clustermesh connect --context c1 \ --destination-context c2 cilium clustermesh status --wait
Helm-Setup & Zertifikate
Setup laut Doku Helm-first:
clustermesh.useAPIServer=true,
clustermesh.config.enabled=true, Remote-Cluster unter
clustermesh.config.clusters. Die CLI ist ein
Helm-Wrapper für schnelle Setups (Lab, Demo).
Zertifikate: seit 1.20 gelten auto-generierte
Cluster-Mesh-Zertifikate ein Jahr. Methode helm
(Default) erneuert nur beim Re-Render, also beim Upgrade.
Produktiv cronJob (erneuert alle 4 Monate) oder
certmanager, oder
clustermesh.apiserver.tls.auto.certValidityDuration
setzen.
Globale Services
Annotation service.cilium.io/global: "true" auf
dem gleichnamigen Service in beiden Clustern, Cilium
load-balanct auf die Backends beider Cluster.
service.cilium.io/shared: "false":
Remote-Backends nutzen, eigene nicht teilen.
Alternative zu globalen Services: MCS-API
(clustermesh.mcsapi.enabled=true, seit 1.20 stabil,
CRDs v1beta1, braucht CoreDNS ab 1.12.2 für
clusterset.local).