September 12, 2019·6 min read·engineeringistiotelemetryprotocolsoperations

Istio 1.3 reduces the configuration needed to observe HTTP traffic

Experimental outbound protocol detection and in-proxy HTTP metrics address two costs of adopting a mesh. Istio 1.3 also changes inbound port capture and adds diagnostics for the configuration that remains.

An application can enter a mesh without having named its service ports according to the mesh's conventions. Earlier Istio behavior made that omission consequential to which routing capabilities the application could use. The Istio 1.3 announcement on September 12 introduces experimental protocol detection for outbound traffic, distinguishing HTTP from TCP when port names do not declare the protocol. It removes one configuration prerequisite for handling ordinary HTTP services.

The same release introduces experimental HTTP metrics generated inside the proxy and exposed directly to Prometheus. That path avoids requiring istio-telemetry to enrich the information. Together these changes target two different adoption costs. One reduces the application metadata required for protocol classification. The other reduces the services needed to obtain a particular class of telemetry.

I value shared traffic configuration when it applies consistently across different applications. The additional system is easier to justify when ordinary workloads require fewer mesh-specific declarations. These features are useful steps in that direction, provided their experimental scope remains clear.

Detection initially covers outbound HTTP and TCP

The release describes a specific detection problem. Service-port names previously declared the protocol through Istio's naming format. When a port lacked the required name, the mesh could not simply assume the intended HTTP behavior. Version 1.3 can detect HTTP or TCP on the outbound path when those names do not provide the answer.

The outbound qualification matters. The announcement lists inbound protocol sniffing and recognition of protocols beyond HTTP as future work. It does not claim that every listener in the release automatically identifies every application protocol. The new capability addresses one path with a defined set of outcomes.

This changes what the service owner must supply for that case. A previously missing mesh-specific port name need not prevent outbound protocol classification. Explicit configuration still has a role where it describes behavior beyond what the experiment detects. The absence of one naming requirement does not turn every traffic-management rule into an inferred property of application bytes.

The 1.3 change notes also fix behavior for server-first protocols such as MySQL and MongoDB under permissive mutual TLS. That is a separate item from identifying outbound HTTP. These protocols have different connection behavior, and the release treats their support as its own correction. Combining the items into a claim of universal protocol detection would lose the distinction the notes preserve.

Inbound capture stops depending on containerPort declarations

Another simplification concerns inbound port capture. Previous releases required pods to declare containerPort values, described in the announcement as a security measure against trampolining traffic. Istio 1.3 handles inbound traffic without those declarations, and the change notes say all ports are captured by default. This addresses the pod specification independently of the service-port naming change.

These two port declarations describe different configuration relationships. A service-port name supplies protocol information for the service. A pod's containerPort declaration describes a port in its workload specification. Removing one requirement does not automatically remove the other, which is why the release identifies both changes separately.

The announcement also reports eliminating infinite loops in iptables rules when workloads send traffic to themselves. That is relevant to the traffic-capture implementation, because self-directed traffic still passes through the interception arrangement. The simplification therefore includes changes to how the mesh handles the captured path, beyond merely accepting a shorter pod declaration.

For an operator, the result is less workload metadata to maintain for inbound interception. It is still necessary to understand which traffic is captured and what policies apply after capture. The changed default concerns how traffic enters mesh processing. It does not by itself define the destination or authorization decision for every captured request.

HTTP telemetry can be generated without the enrichment service

The experimental Mixer-less path enhances the proxy to emit HTTP metrics directly to Prometheus. The announcement explicitly says this avoids requiring the istio-telemetry service to enrich those metrics. Its value is narrower than a replacement for every function associated with Mixer. It supplies the common HTTP service metrics described by the new path.

The change notes identify in-proxy service-metric generation as alpha. They also identify alpha environmental metadata in Envoy node metadata and alpha Proxy Metadata Exchange. These are supporting pieces in the telemetry work, with their own maturity status. An installation selecting the experiment is choosing a new way to produce information rather than merely changing where an unchanged collector runs.

The announcement names TCP telemetry with mutual TLS as work still to come. This prevents treating the HTTP experiment as complete telemetry parity across application protocols. A mesh with both HTTP and other services needs to distinguish which information the experimental path actually generates at this date.

I prefer that distinction to a general statement that Mixer is gone. Istio previously disabled istio-policy by default and implemented common security policies such as RBAC directly in Envoy. Version 1.3 now starts moving common telemetry work as well. Those are separate responsibilities and separate transitions, so the installed architecture depends on which capabilities an operator selects.

Diagnostics describe the remaining explicit configuration

Reducing required configuration does not eliminate the need to inspect the configuration the control plane generates. The release expands istioctl with an experimental describe-pod command and experimental metrics command. It also promotes dashboard access out of the experimental command group. These changes give users additional ways to ask what the mesh has actually configured and observed.

Control-plane monitoring gains configuration-state metrics and sidecar injector metrics. Citadel receives a Grafana dashboard, and Pilot's dashboard gains key metrics intended to expose errors more clearly. These measurements concern the machinery responsible for distributing and maintaining proxy behavior. They are useful alongside application traffic metrics because a control-plane problem need not look like an application implementation problem.

The change notes also improve proxy readiness checks so they inspect Envoy's readiness state. That is a concrete lifecycle improvement. A container process existing is different from its proxy being ready to handle the expected traffic. Using Envoy's own readiness gives the surrounding system information about the component that will actually process connections.

These tools do not all leave experimental status together. The notes explicitly keep several newly added commands experimental while promoting particular others. An operator adopting a diagnostic should retain that command's stated maturity instead of assigning the release's overall status to every subcommand it contains.

Locality and identity defaults affect existing traffic

Locality-aware load balancing becomes a default behavior. The announcement says it uses existing locality information to favor closer backends, while the change notes name the same region and zone. This can change destination preference without requiring an application to introduce a new routing rule. The relevant input is locality metadata available to the mesh.

Security defaults also change. Trust-domain validation for mutual TLS services means the server authenticates requests from the same trust domain by default. SDS security begins requiring Kubernetes Trustworthy JWTs, and support for Istio SDS on Kubernetes versions earlier than 1.13 is removed. These are compatibility conditions around the identity-distribution mechanism, not consequences of protocol detection.

The release temporarily removes Vault CA integration because of SDS requirements. That is a concrete example of an installation path whose availability changes while other features advance. An organization using that integration needs to account for the removal instead of interpreting a usability-focused release as uniformly additive.

ServiceEntry also gains support for the same hostname in different namespaces. This extends the namespace-specific configuration model without requiring every service declaration to use a globally unique hostname.

Advanced proxy customization remains an explicit responsibility

The enhanced EnvoyFilter API can customize listeners and filter chains, HTTP routes and clusters returned through the corresponding discovery services. The announcement presents it for expert users needing Envoy capabilities outside Istio's networking APIs. This retains an escape path for requirements that automatic behavior and higher-level resources do not express.

Such customization operates on generated proxy configuration. That makes its responsibility different from the simplifications above. Protocol detection reduces one need for application annotation, while EnvoyFilter gives an expert direct influence over what the control plane returns. Both can coexist because they serve different classes of requirement.

Istio 1.3's practical result is therefore a smaller set of prerequisites for common HTTP workloads, together with new observation and customization tools. Experimental outbound detection handles unnamed service ports, and experimental in-proxy metrics provide the named HTTP telemetry path. The remaining installation choices still determine identity compatibility, locality preference and which components supply telemetry for traffic outside that experiment.