06. Multi-Cluster and Ambient Mesh¶
Why Multi-Cluster¶
Multi-cluster meshes solve real problems:
- High availability across regions
- Geographic latency reduction
- Tenant or environment isolation
- Migration between clusters
- Compliance boundaries
Istio supports several multi-cluster topologies. The ICA exam expects conceptual fluency, not heavy hands-on.
Multi-Cluster Topologies¶
Single network vs multi-network¶
- Single network: pods in different clusters can reach each other directly (flat network)
- Multi-network: clusters are isolated; communication via gateways
Single control plane vs multi-control-plane¶
- Primary-Remote: one cluster runs istiod; others (remote) connect to it
- Multi-Primary: each cluster runs istiod; they share root CA and trust each other
- External Control Plane: istiod runs outside any data cluster (often on a management cluster)
Common patterns¶
| Pattern | Networks | Control planes | Use case |
|---|---|---|---|
| Primary-Remote, single net | 1 | 1 | Simple HA in one network |
| Multi-Primary, multi-net | many | many | Cross-region production |
| External control plane | varies | 1 (external) | Multi-tenant managed |
Cross-Cluster Service Discovery¶
For services to be reachable across clusters:
- Both control planes (or the single one) must know about Service objects in all clusters
- Each cluster needs a way to reach the other (east-west gateway in multi-network)
- Workloads use the standard service DNS (
reviews.bookinfo.svc.cluster.local); the mesh resolves to local or remote endpoints
East-west gateway¶
In multi-network, a special "east-west" gateway exposes mesh services to other clusters via SNI-based routing on port 15443.
Trust Configuration¶
For multi-primary, all clusters must share a root CA. Pattern:
- Generate a shared root CA offline
- Create per-cluster intermediate CAs
- Bootstrap each cluster's istiod with its intermediate as
cacertsSecret - Workloads in different clusters get certs from different intermediates that chain to the same root, enabling mTLS across clusters
Locality Load Balancing¶
DestinationRule supports locality-aware routing:
spec:
host: reviews
trafficPolicy:
loadBalancer:
localityLbSetting:
enabled: true
distribute:
- from: us-east-1/*
to:
"us-east-1/*": 80
"us-west-1/*": 20
outlierDetection:
consecutive5xxErrors: 5
interval: 30s
This enables priority-based routing (prefer local zone, fall over to other zones) and explicit weighted distribution.
Failover¶
Locality failover is automatic when outlier detection ejects local endpoints. Endpoints in next-priority localities take over until local hosts return.
Ambient Mesh Architecture¶
Ambient mesh removes per-pod sidecars. Two layers:
ztunnel (L4)¶
- DaemonSet: one per node
- Handles mTLS termination and origination using HBONE (HTTP-CONNECT-based overlay)
- Provides workload identity (SPIFFE)
- Enforces L4 AuthorizationPolicies
- Cannot do L7 features (HTTP routing, JWT auth, complex AuthZ)
Waypoint (L7)¶
- Deployed per service account or namespace
- Standard Envoy proxy as a Kubernetes Deployment
- Handles VirtualService routing, AuthorizationPolicy with HTTP attributes, JWT validation
- Optional; only needed when L7 features are required
How traffic flows in ambient¶
- Pod sends request to a service
- Local ztunnel intercepts; if destination is in mesh, opens HBONE tunnel to destination's node ztunnel
- If a waypoint is configured for the destination, ztunnel forwards via waypoint (which applies L7 policies)
- Destination's ztunnel receives; delivers to pod
Joining a namespace to ambient¶
kubectl label namespace bookinfo istio.io/dataplane-mode=ambient
No pod restart needed (no sidecar to inject).
Adding a waypoint¶
istioctl x waypoint apply -n bookinfo --enroll-namespace
Or per service account:
istioctl x waypoint apply -n bookinfo --service-account reviews
Sidecar vs Ambient Trade-offs¶
| Aspect | Sidecar | Ambient |
|---|---|---|
| Per-pod overhead | High (sidecar memory/CPU) | None for pod |
| Upgrade impact | Pod restart required | DaemonSet rolling upgrade only |
| L7 features | Always available | Require waypoint deployment |
| Maturity | GA for years | GA more recently |
| Tooling support | Excellent (Kiali, others) | Improving |
| Multi-cluster | Well-trodden | Emerging |
Recommendation: new clusters can consider ambient. Existing sidecar deployments do not need to migrate immediately; both are supported.
Migration: Sidecar to Ambient¶
Per namespace:
- Remove the
istio-injection=enabledlabel - Restart deployments (sidecars removed)
- Add
istio.io/dataplane-mode=ambientlabel - Optionally deploy waypoint for L7 features
Existing VirtualService, DestinationRule, AuthorizationPolicy resources continue to work.
Multi-Cluster + Ambient¶
Combining ambient and multi-cluster is supported but newer territory. The ICA exam focuses on conceptual understanding rather than deep hands-on configuration here.
Common Exam Traps¶
- Confusing single-network and single-control-plane (orthogonal axes)
- Forgetting east-west gateway in multi-network
- Believing ambient does not need a CA (it does; identity is still SPIFFE)
- Thinking waypoint is always required (only for L7)
- Mixing namespace-level labels: cannot have both
istio-injection=enabledandistio.io/dataplane-mode=ambient - Forgetting trust bundle setup for multi-primary mesh