For the complete documentation index, see llms.txt. This page is also available as Markdown.

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

Sidecar
Ambient

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:

Component
Namespace
Role
Mode

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.

Existing pods do not need to be restarted. ztunnel picks them up immediately.

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:

The auto-provisioned gateway service will be named bookinfo-gateway-istio in the default namespace.

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:

Alternative — dedicated ingress path: Set networking.istio.io/service-type: NodePort on your Gateway resource (Step 4) and ask the platform team to create a dedicated BigIP virtual server for it. This gives your application a fully independent ingress path without going through the shared istio-ingressgateway.

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