Waypoint proxies
Once ZTunnel proxies are in place, waypoint proxies can be introduced to enable advanced Layer 7 processing capabilities.
Ambient mode decouples Istio's functionality into two distinct layers:
- A secure L4 overlay managed by ZTunnel proxies
- An L7 layer managed by optional waypoint proxies
A waypoint proxy is an Envoy-based proxy that performs L7 processing for workloads operating in ambient mode. It functions as a gateway for a specific resource — such as a namespace, service, or pod — and can be installed, upgraded, and scaled independently of the applications it serves. Configuration relies on the Kubernetes Gateway API.
In contrast to the sidecar model, where every workload runs its own Envoy proxy, waypoint proxies reduce resource consumption by serving multiple workloads that share the same security boundary (for example, all workloads in a namespace).
A destination waypoint enforces policies by acting as a gateway: all incoming traffic bound for a resource such as a namespace, service, or pod passes through the waypoint before reaching the destination.
The ZTunnel node proxy handles L4 functions including mTLS encryption, L4 traffic processing, and telemetry. ZTunnel and waypoint proxies communicate via HBONE (HTTP-Based Overlay Network), a protocol that tunnels traffic over HTTP/2 CONNECT with mTLS on port 15008.
Consider deploying a waypoint proxy if your workloads require any of the following L7 capabilities:
- Traffic management — Advanced HTTP routing, load balancing, circuit breaking, rate limiting, fault injection, retries, and timeouts
- Security — Authorization policies based on L7 attributes such as request type or HTTP headers
- Observability — HTTP metrics, access logging, and tracing for application traffic
Deploying a waypoint proxy
You can deploy a waypoint proxy in the Bookinfo application namespace to route traffic through the Istio ambient data plane and enforce L7 policies.
Prerequisites
- Alauda Service Mesh Operator 2.1.1 or later is installed.
- An active ACP CLI (
kubectl) session by a cluster administrator with thecluster-adminrole. - You have
istioctlinstalled locally so that you can use to run these instructions. - Istio is deployed in ambient mode.
- The Bookinfo sample application is deployed (for the following example).
- The
istio.io/dataplane-mode=ambientlabel has been applied to the target namespace.
Procedure
-
Create a waypoint proxy in the
bookinfonamespace. Save the following aswaypoint.yaml:- The
istio.io/waypoint-for: servicelabel indicates that this waypoint processes traffic for services. The label value determines the type of traffic handled. For details, see Waypoint traffic types (Istio documentation).
- The
-
Apply the waypoint custom resource (CR):
-
Enroll the
bookinfonamespace to use the waypoint:After enrolling the namespace, requests from any pod in the ambient data plane to services in
bookinfoare routed through the waypoint for L7 processing and policy enforcement.
Verification
Confirm that the waypoint proxy is associated with all services in the bookinfo namespace:
Example output
You can also configure only specific services or pods to use a waypoint by labeling the respective service or pod. When explicitly enrolling a pod, also add the istio.io/waypoint-for: workload label to the corresponding gateway resource.
Enabling cross-namespace waypoint usage
A cross-namespace waypoint allows resources in one namespace to route traffic through a waypoint deployed in a different namespace.
Procedure
-
Add the
istio-discovery=enabledlabel to thecommon-infrastructurenamespace: -
Create a Gateway resource that permits workloads in the
bookinfonamespace to use the waypoint from thecommon-infrastructurenamespace. Save the following aswaypoint-common.yaml: -
Apply the cross-namespace waypoint:
-
Add the labels required to use the cross-namespace waypoint:
-
Specify the namespace where the waypoint resides:
-
Specify the waypoint to use:
-
Additional resources
- Waypoint traffic types (Istio documentation)