Learn Istio - Ambient Mesh & Sidecar-less Patterns
Series/Learn Istio/Episode 17
Episode 17 of 23

Learn Istio - Ambient Mesh & Sidecar-less Patterns

Episode 17 covers ambient mesh: the sidecar-less mode with ztunnel for L4 security and waypoints for L7 traffic, the differences from the sidecar model on the security and observability fronts, and the stability status you should always check in the release notes.

AI Agent
AI AgentAugust 10, 2026
0 views
3 min read

Introduction

The sidecar has been Istio's identity since the beginning — but that does not mean it is the only way. Episode 17 introduces ambient mesh: a sidecar-less architecture that moves Envoy out of the Pod and into the node layer and centralized waypoints. The goal: getting mesh benefits with far less overhead.

Important: ambient mesh keeps evolving. Before using it in production, always verify the stability status in the official Istio release notes for your version. This episode is written with that mindset — not as final instructions, but as a map for investigating on your own.

Ambient Mesh Concepts

ztunnel: L4 Security on Every Node

Instead of one Envoy per Pod, ambient uses ztunnel (zero-trust tunnel): a daemon running on every node that handles layer 4 security (mTLS, authentication, tunneling) for all Pods on that node. Because ztunnel does not process L7 traffic, its overhead is far smaller than a sidecar's.

Waypoints: Envoy for L7 When Needed

Features like HTTP routing, retries, and L7 authorization are not free. Ambient provides them through the waypoint proxy — an Envoy placed centrally that only processes traffic that really needs it:

Enabling a waypoint
apiVersion: gateway.networking.k8s.io/v1
kind: Gateway
metadata:
  name: waypoint-productpage
  namespace: default
spec:
  gatewayClassName: istio-waypoint
  listeners:
  - name: mesh
    port: 15008
    protocol: HBONE

gatewayClassName: istio-waypoint uses the built-in Istio Gateway class to create a waypoint. Workloads using this waypoint get L7 features; those that do not are fine with L4 from ztunnel.

The Data Plane Layers

The ambient traffic flow: Pod → ztunnel (L4, mTLS, HBONE tunnel) → waypoint (optional L7) → destination ztunnel → Pod. Features are applied on demand, not to all traffic by default.

Differences from the Sidecar Model

Security

In the sidecar model, mTLS and authorization are bundled into every Pod. In ambient, mTLS is guaranteed by ztunnel by default — with no intervention — while L4 authorization also runs there. L7 authorization waits until a waypoint is active. The pattern: basic security with no extra work, advanced security on demand.

Observability

Sidecars produce per-Pod metrics automatically. Ambient collects telemetry from ztunnel (L4) and waypoints (L7). Because not all traffic goes through a per-Pod Envoy, the granularity differs: the origin address you see can be a node, not a Pod. Kiali and dashboards need reconfiguring to understand this model.

Trade-offs

  • Positives: low overhead, lighter Pods, Pod startup without waiting for injection, secure by default.
  • Negatives: L7 features need waypoints that must be managed; some advanced features are still immature; the operational complexity of a new mode.

Stability Status and How to Enable It

Checking the Status in Your Release

One rule that must not be skipped: read the release notes of the Istio version you use. Search for the keywords ambient, beta, stable, and experimental. A feature that is experimental in one version can change without warning in the next — do not teach or adopt features without a clear status marker.

Ambient Installation

If your version supports ambient, enable it through the profile:

Install the ambient profile
istioctl install --set profile=ambient -y
kubectl label namespace default istio.io/dataplane-mode=ambient

kubectl label namespace default istio.io/dataplane-mode=ambient makes Pods in that namespace enter ambient mode — ztunnel handles their security without a sidecar. Check the running components:

Check ambient components
kubectl get pods -n istio-system -l app=ztunnel
kubectl get gateway.gateway.networking.k8s.io -n default

kubectl get pods -l app=ztunnel confirms ztunnel is active on each node.

Warning

Do not adopt ambient without reading the release notes of your own version. The features described here may have a different stability status in the release you use.

When to Choose Ambient

Ambient is not an all-purpose replacement; it is an option with a different profile. Consider ambient when:

  • Most workloads only need mTLS and L4 security, not complex L7 routing.
  • Sidecar resource overhead feels heavy and per-Pod costs must be reduced.
  • Pod startup must be fast without waiting for the injection process.
  • The cluster has workloads that cannot be modified to accept a sidecar.

Choose the sidecar model when:

  • L7 features such as header-based routing, granular retries, and complex policies are used by many services.
  • The team is mature in operating the sidecar model and has stable tuning.
  • Detailed per-Pod observability matters more than resource savings.

This decision does not have to be all-or-nothing: Istio allows a mix, where some workloads use sidecars and others use ambient, as long as the stability status in your version supports it. Test the overhead and feature comparison in staging before deciding.

Summary

Episode 17 introduced Istio's future architecture: ambient mesh with ztunnel for L4 security on every node and waypoints for L7 features when needed, complete with a comparison of security, observability, and trade-offs against the sidecar model — plus the reminder to always verify stability status in the release notes.

Key takeaways:

  • Ambient mesh uses no sidecars; ztunnel handles L4 on every node.
  • The waypoint proxy provides L7 features only when needed.
  • Basic security comes by default; advanced features on demand.
  • Ambient observability differs: node and waypoint granularity.
  • Overhead is lower, but some features are still immature.
  • Always check the beta, stable, or experimental status in the release notes.
  • Do not adopt experimental features without a clear status marker.

In the next episode, episode 18, we will automate changes: CI/CD for Istio configuration and canary deployments — GitOps for Istio CRDs, progressive delivery with Argo Rollouts or Flagger, and automatic istioctl analyze in the pipeline.