March 5, 2020·6 min read·engineeringistioistiodtelemetrywasm

Istio 1.5 consolidates control and moves telemetry into proxies

Istiod combines control plane functions while Telemetry v2 becomes the default. Proxy-Wasm introduces an alpha extension path whose maturity differs from the native telemetry extensions shipped in this release.

Istio has paid for extensibility in two different ways. Mixer offered extensions outside the proxy, with resource and latency costs. Envoy extensions ran inside the proxy, but required C++ code and a coordinated binary rollout. Istio 1.5 changes the default telemetry architecture while introducing an alpha extension model intended to reduce those constraints. It also combines control plane functions into a single binary named istiod.

The March 5 release announcement presents these changes together as a simplification of installation and operation. They concern different mechanisms. Consolidating control plane functions changes deployment. Moving telemetry into proxy extensions changes request processing. WebAssembly changes how an extension can be packaged and executed, but remains alpha at this date.

I consider the operational cost of a second distributed system one of the main constraints on using Istio. Fewer control plane deployments and less out-of-process telemetry work are therefore substantive improvements. They need to be understood through their actual execution paths, because an attractive deployment diagram alone does not establish the behavior of a running mesh.

Istiod changes how control functions are packaged

The announcement says istiod consolidates control plane components while preserving user APIs and runtime characteristics. Its intended benefit is fewer moving parts to install, upgrade, and debug. The release is changing the operational arrangement behind existing interfaces, rather than requiring mesh users to adopt a different application-facing API for that consolidation.

The 1.5 change notes identify certificate provisioning as one function included in istiod. They also describe combining the node agent and Pilot agent into the Istio agent. That removes cross-pod Unix domain socket communication from the SDS arrangement and avoids the PodSecurityPolicy requirement associated with those connections.

These are distinct reductions in deployment and communication complexity. Combining control plane functions reduces separately managed services. Moving certificate handling into the agent arrangement changes how the sidecar obtains identity material. The release does not claim that the data plane ceases to be distributed simply because control functions share a binary.

The announcement states that certificates are delivered from istiod to pods and that each pod receives a unique certificate. It also says certificate changes no longer require restarting Envoy. That is a concrete lifecycle improvement for identity provisioning, with Secret Discovery Service graduating to stable and enabled by default.

Default telemetry no longer needs Mixer

Telemetry v2 becomes the default. The release describes telemetry implemented through proxy extensions, with TCP metrics and gRPC response status codes in metrics and logs. This removes the need for a separate Mixer component for the default telemetry path. It changes where the work occurs and the communication required to report it.

The release announcement reports lower latency and CPU use for the new system. Those are project-reported results for its comparison, not a measurement of every deployment. The architectural explanation is more generally useful than treating a published percentage as a performance guarantee. Moving work out of a separate telemetry service changes both resource placement and the request-processing path.

The accompanying Proxy-Wasm announcement explains the limitations that led to the design. Mixer enabled generic out-of-process policy and telemetry extensions, but that model incurred resource inefficiency and tail latency costs. It also could not provide every kind of data-plane customization, such as custom protocol handling.

Envoy's compiled extension model solved a different part of the problem. Extensions could work inside the proxy, but custom extensions required building and distributing new binaries. Rolling a new extension out then required proxy restarts. Developers also faced the requirement to write native extensions in C++.

Proxy-Wasm separates extensions from the proxy build

The new approach supplies a WebAssembly runtime in Istio's Envoy build and an application binary interface for proxy extensions. The announcement calls the interface Proxy-Wasm and describes it as deliberately proxy independent. Its aim is to let compiled extensions work across compatible host implementations instead of binding them to one particular Envoy build.

The initial implementation uses V8's WebAssembly runtime. The release also provides SDKs for C++, Rust, and AssemblyScript, along with samples. An abstraction permits other runtimes, including a null runtime that compiles an extension natively into Envoy for testing and debugging. The deployment model and execution mechanism therefore have several pieces beyond simply accepting a Wasm file.

Runtime delivery is one of the stated benefits. The control plane can deliver and reload an extension without a new Envoy rollout. That offers a different release cycle for extension code and proxy code. It can reduce the coordination required to distribute a customization, provided the extension and host agree on the relevant interface.

The authors describe sandboxing and resource constraints as another benefit. The host mediates extension access to connection and request properties. That mediation can limit what an extension sees or changes, including sensitive headers. The intended security boundary is therefore a defined interface exposed by the proxy, not unrestricted access to the proxy process's internal state.

Those are design properties of the announced extension system. The release explicitly calls its Wasm support alpha. Its authors also say the ABI needs finalization and upstream Envoy integration remains in progress. An operator evaluating custom Wasm extensions has a different maturity decision from someone adopting the default telemetry configuration.

Telemetry v2 is not synonymous with Wasm execution

The Proxy-Wasm article makes an important distinction about the code shipped in 1.5. Istio moved several extensions into its Envoy build to improve performance. The team tested that those extensions could also compile and run as Proxy-Wasm modules without behavioral differences. It did not make the Wasm execution setup the default because that support remains alpha.

It would therefore be inaccurate to say that enabling the default Telemetry v2 necessarily means every telemetry extension runs as a Wasm module. The default telemetry architecture and the proposed portable execution path are related work with different readiness. The article describes native in-proxy extensions as the shipped arrangement and Wasm as an extension path being developed alongside it.

I prefer that explicit distinction because it gives operators a usable basis for adoption. A mesh can benefit from removing Mixer from default telemetry without taking the same decision about custom alpha extensions. An adapter author has further work to establish whether the new model fits the adapter's responsibilities.

Security APIs become more specific

The release adds beta PeerAuthentication and RequestAuthentication APIs. The change notes describe them as separating mutual TLS peer authentication from JWT origin authentication. They also move to workload-oriented policy, compared with the older service-oriented alpha authentication policy.

Authorization gains deny semantics and exclusion matching. Auto mutual TLS reaches beta and becomes enabled by default. Those changes distinguish how a connection authenticates from the policy deciding whether a request is allowed. Automatic transport configuration and authorization rules remain separate mechanisms even when both are part of the mesh's security configuration.

The distinction is consistent with the broader 1.5 architecture. Istiod can distribute configuration and identity material, while proxies perform request-level work. New APIs give more specific names to the decisions being expressed. A shorter list of control plane deployments does not eliminate the need to understand which policy produces which enforcement behavior.

Installation and diagnosis have separate maturity levels

Command-line installation through istioctl reaches beta, while operator-managed installation remains alpha. The new IstioOperator API replaces the earlier alpha IstioControlPlane API. Those maturity levels matter independently of the runtime architecture, because the installation path determines how the mesh's components are configured and maintained.

istioctl analyze leaves experimental status and gains analyzers for subjects including mutual TLS, JWT, service association, and Secrets. It can analyze all namespaces or input supplied through standard input, and it gains structured output. These changes let configuration diagnosis participate more directly in automated workflows. The change notes also add a command to list available analyzers and an option to suppress messages. That lets automation identify the checks available in this release and control how their findings are presented.

The practical choice in 1.5 is therefore more detailed than accepting or rejecting one large rewrite. Default telemetry uses the in-proxy model, istiod combines control functions, and SDS has a stable provisioning path. Custom Proxy-Wasm execution and operator installation retain alpha status. Existing mesh integrations need to be considered against the particular component and extension path they use, with the native telemetry default distinguished from the announced Wasm development model.