Routing-APIs im Vergleich
Istio: VirtualService +
DestinationRule (eigene CRDs), mächtig,
aber zwei Konzepte: Match/Route vs. Subset/LB/CB. In Ambient ist
VirtualService nur Alpha, dort HTTPRoute.
Linkerd: HTTPRoute/GRPCRoute;
Retries und Timeouts per Annotation (retry.linkerd.io/http,
timeout.linkerd.io/request) seit 2.16, Timeouts auch per
Feld timeouts.request.
ServiceProfile nur noch Legacy.
Cilium: HTTPRoute/GRPCRoute
inkl. GAMMA, nur Producer-Routes (Route im Namespace des Service),
Feintuning per CiliumEnvoyConfig. Policy getrennt in
CiliumNetworkPolicy (L3–L7).
Konvergenz-Punkt: Gateway API v1.x, Ost-West als
GAMMA (Route mit Service als
parentRef). Consumer-Routes (Route im Namespace des
Clients): Istio und Linkerd ja, Cilium nein. CRDs sind clusterweit,
aktuell ist v1.7.0 (29.10.2026): Istio 1.31 dokumentiert v1.6.0,
Cilium 1.20 (mit Gateway-API-Support) verlangt ≥ v1.6.1, Linkerd
2.20 ist bis v1.5.1 freigegeben. v1.7 hebt retry an der
HTTPRoute in den Standard-Channel: Istio setzt das Feld
um, Linkerd liest Retries nur aus der Annotation.
# GAMMA-HTTPRoute (Ost-West; Istio Ambient: nur mit Waypoint)
apiVersion: gateway.networking.k8s.io/v1
kind: HTTPRoute
metadata: {name: api, namespace: prod}
spec:
parentRefs:
- {group: "", kind: Service, name: api, port: 8080}
rules:
- matches: [{path: {type: PathPrefix, value: /v2}}]
backendRefs: [{name: api-v2, port: 8080}]
- backendRefs: [{name: api, port: 8080}]
Traffic-Split / Canary
Istio:
VirtualService.http[].route[].weight.
Linkerd: HTTPRoute
backendRefs[].weight.
Cilium: HTTPRoute mit weighted
backends, alternativ mit Flagger/Argo-Rollouts auf Istio, Linkerd
und Cilium.
Egress & Circuit-Breaking
Istio: ServiceEntry für
externe Ziele, outlierDetection und
connectionPool in
DestinationRule.trafficPolicy, ab 1.31 meshweite
Baseline per meshConfig.defaultTrafficPolicy.
Linkerd: EgressNetwork-CRD (2.17+)
für Egress-Sicht und -Policy. Circuit-Breaking (2.13+) per
Service-Annotation balancer.linkerd.io/failure-accrual.
Cilium: FQDN-Policy (toFQDNs) für
Egress. Circuit-Breaking nur über rohe Envoy-Konfiguration
(CiliumClusterwideEnvoyConfig).
Projekte und Quellen
- Istio (CNCF Graduated): istio.io/latest/docs · github.com/istio/istio · cncf.io/projects/istio
- Linkerd (CNCF Graduated): linkerd.io/2-edge · github.com/linkerd/linkerd2 · cncf.io/projects/linkerd
- Cilium (CNCF Graduated): docs.cilium.io, Service Mesh · github.com/cilium/cilium · cncf.io/projects/cilium
- Kuma (CNCF Sandbox): kuma.io/docs · github.com/kumahq/kuma · cncf.io/projects/kuma
- Consul (HashiCorp, kein CNCF-Projekt): developer.hashicorp.com/consul · github.com/hashicorp/consul
- Gateway API (Kubernetes SIG Network): gateway-api.sigs.k8s.io, GAMMA · github.com/kubernetes-sigs/gateway-api
- Envoy (CNCF Graduated, Proxy in Istio, Cilium, Kuma und Consul): envoyproxy.io/docs · github.com/envoyproxy/envoy · cncf.io/projects/envoy