Istio
Getting started with Istio on cegedim.cloud — sidecar and ambient mesh modes
Istio supports Gateway API as its primary ingress and traffic management model. It can be used as the sole ingress stack (chosen at cluster creation) or installed additionally on clusters using NGF or Traefik.
This guide covers both operating modes: sidecar and ambient. Use the comparison table below to choose the right mode for your workload.
Sidecar mode vs Ambient mode
Proxy location
Injected as a container inside each pod
Runs as a node-level ztunnel, outside pods
Enrollment
istio-injection=enabled label on namespace, pods must restart
istio.io/dataplane-mode=ambient label, no restart needed
L7 traffic management
Built-in — sidecar handles it directly
Requires a waypoint proxy
Resource overhead
Per-pod CPU/memory for each Envoy sidecar
Shared ztunnel per node
VirtualService / DestinationRule
Native
Via waypoint only
Gateway API CRDs required
No
Yes
What the platform provides
You do not need to install or configure anything at the cluster level. The following are deployed and managed by the platform team:
Istiod
istio-system
Control plane
Both
istio-ingressgateway
istio-ingress
North-south ingress entry point
Both
Istio CNI
istio-system
Ambient pod enrollment
Ambient only
ztunnel
istio-system
L4 mTLS / node-level proxy
Ambient only
Each cegedim.cloud cluster is fronted by an F5 BigIP load balancer that handles wildcard DNS (*.{{ cluster-name }}.ccs.cegedim.cloud), TLS termination, and L4 forwarding to the istio-ingressgateway pods. Replace {{ cluster-name }} with your actual cluster name (e.g. prod-paris, staging-lyon) in all examples below.
Sidecar Mode
In sidecar mode, an Envoy proxy container is injected alongside each of your application pods. It handles mTLS, observability, and L7 traffic management directly — no additional waypoint proxy is needed.
Step 1 — Observability addons (optional)
Deploy Prometheus and Kiali for metrics and topology visualization:
Expose Kiali via the platform ingress gateway:
Kiali will be available at https://kiali.{{ cluster-name }}.ccs.cegedim.cloud.
Step 2 — Enable sidecar injection
Label your namespace to enable automatic Envoy sidecar injection:
Verify:
Expected output includes istio-injection=enabled.
Step 3 — Deploy your application
Verify all pods are running with 2 containers each (app + Envoy sidecar):
Expected output shows 2/2 READY for each pod:
Step 4 — Wire ingress from the platform gateway
The full ingress flow:
Step 5 — Verify
Step 6 — Observability with Kiali
Access https://kiali.{{ cluster-name }}.ccs.cegedim.cloud, navigate to Graph and select the default namespace to see live traffic between services.
Generate continuous traffic to populate the graph:
Step 7 — L7 traffic management
In sidecar mode, L7 traffic management is built-in — the Envoy sidecar handles routing directly. No waypoint proxy is needed.
Define subsets with DestinationRule:
Traffic split with VirtualService — 90% to reviews-v1, 10% to reviews-v3:
Verify in Kiali — the Graph view will show weighted traffic flowing to each version.
Clean up — Sidecar mode
Ambient Mode
In ambient mode, there are no sidecar containers. A node-level ztunnel handles L4 mTLS transparently for all enrolled pods — no pod restart is required. L7 traffic management requires deploying an optional waypoint proxy per namespace.
Step 1 — Prerequisites
Gateway API CRDs (experimental channel) are required for ambient mesh:
Observability addons (optional):
Expose Kiali:
Kiali will be available at https://kiali.{{ cluster-name }}.ccs.cegedim.cloud.
Step 2 — Enroll your namespace
Label your namespace to join the ambient mesh. ztunnel will automatically intercept all pod traffic with mTLS:
Verify:
Expected output includes istio.io/dataplane-mode=ambient.
Step 3 — Deploy your application
No sidecar annotations required:
Verify all pods are running:
Step 4 — Expose your application via Gateway API
Create a Gateway resource in your application namespace. Istiod will auto-provision a dedicated gateway pod and service for it:
Then create an HTTPRoute:
Step 5 — Wire ingress from the platform gateway
Submit the following manifest to the platform team (or apply it yourself if you have access to the istio-ingress namespace):
The full ingress flow:
Step 6 — Verify
Step 7 — Observability with Kiali
Access https://kiali.{{ cluster-name }}.ccs.cegedim.cloud, navigate to Graph and select the default namespace.
Generate continuous traffic to populate the graph:
Step 8 — L7 traffic management with waypoint
By default, ztunnel handles only L4 traffic (mTLS, TCP). For L7 features (traffic splitting, header routing, retries), deploy a waypoint proxy in your namespace.
Deploy the waypoint:
Verify:
Deploy per-version services (required for traffic splitting):
Traffic split with HTTPRoute — point parentRefs to the Service (not a Gateway). The waypoint intercepts and applies the routing rules:
Verify in Kiali — the Graph view will show weighted traffic flowing to each version.
Clean up — Ambient mode
Further Reading
Last updated

