Istio 1.27.0 Change Notes
Istio 1.27.0 release notes.
Traffic Management
Updated traffic distribution to disregard subzone when the Kubernetes Service
trafficDistributionfield is set toPreferClose. (Issue #55848)Added support for multiple server certificates in gateway (istio & Gateway API). (Issue #36181)
Added alpha support for specifying
ServiceScopein the MeshConfig in ambient multicluster configurations.ServiceScopeenables the selection of individual services or services in a namespace to be global or local. A locally scoped service is only discoverable by the data plane in the same cluster as the service. A local service is not discoverable by the data planes in other clusters. A globally-scoped service is discoverable by the data planes in all clusters. Defining selectors for theserviceScopeConfigsdetermines which services and workloads are shared with the data plane and which clusters and listeners are configured for the waypoints (including e/w gateways) in the mesh.Added feature flag
EnableGatewayAPICopyLabelsAnnotationsto allow users to choose whether the deployment resources will inherit attributes from the parent Gateway API resource. This feature is enabled by default.Added support for
PreferSameNodeandPreferSameZoneon the Kubernetes ServicetrafficDistributionfield. (Issue #55848)Added Pilot environment variables
PILOT_IP_AUTOALLOCATE_IPV4_PREFIXandPILOT_IP_AUTOALLOCATE_IPV6_PREFIXto configure the IP CIDR prefix(es) for auto-allocated IPs. This allows users to set a specific range of IPs for auto-allocation, providing more control over the IP address space used for VIPs by the ipallocate controller.Added logging of a secret’s namespace and name when a certificate is invalid. (Issue #56651)
Added support for Gateway API Inference Extension. This feature is off by default and can be turned on with the
SUPPORT_GATEWAY_API_INFERENCE_EXTENSIONenvironment variable. (Issue #55768)Added support for merge operations when applying to
LISTENER_FILTERin EnvoyFilter.Added feature
ENABLE_LAZY_SIDECAR_EVALUATIONthat allows to enable lazy initialization of sidecar resources, Only computing internal indexes whenSidecarScopesare actually used by a Proxy. This feature supersedes the previousPILOT_CONVERT_SIDECAR_SCOPE_CONCURRENCYwhich would allow concurrent conversion with specific given concurrency, insteadENABLE_LAZY_SIDECAR_EVALUATIONwill use the same concurrency asPILOT_PUSH_THROTTLE.Added support for native
nftableswhen using Istio sidecar mode. This update makes it possible to usenftablesinstead of iptables to manage network rules, offering more efficient approach to traffic redirection for pods and services. To enable thenftablesmode, use--set values.global.nativeNftables=trueat the time of installation. (Issue #56487)Added support for specifying traffic distribution mode for services. (Issue #53354)
Added feature
ENABLE_PROXY_FIND_POD_BY_IPthat allows enabling association of Pods to Proxies by IP address, if the association by name and namespace fails.Added support of retry budget in
DestinationRuleresources.Fixed an issue where the gateway status controller leader election was not running per revision, which could lead to issues in multi-revision setups. The leader election is now correctly scoped to each revision, ensuring that the gateway status controller operates independently for each revision. (Issue #55717)
Fixed an issue where virtual service routes were ignored when the virtual service was configured with hosts containing mixed-case letters. (Issue #55767)
Fixed a regression in Istio 1.26.0 that caused a panic in istiod when processing Gateway API hostnames. (Issue #56300)
Fixed an issue where mTLS was disabled unexpectedly when
PILOT_ENABLE_TELEMETRY_LABELorPILOT_ENDPOINT_TELEMETRY_LABELwas set tofalse(Issue #56352)Fixed an issue where ambient host network iptables rules were being skipped due to higher-priority CNI rules in some deployments. (Issue #56414)
Fixed an issue where
EnvoyFilterwithtargetRefsmatched incorrect resources. (Issue #56417)Fixed ambient index to filter configurations by their revision. (Issue #56477)
Fixed an issue where the
topology.istio.io/networklabel was not properly skipped on the system namespace whendiscoverySelectorswere in use. (Issue #56687)Fixed an issue where the CNI plugin incorrectly handled pod deletion when the pod was not yet marked as enrolled in the mesh. In some cases, this could cause a pod, which had been deleted, to be included in the ZDS snapshot and never cleaned up. If this occurred, ztunnel would not be able to become ready. (Issue #56738)
Fixed an issue where Istio’s outbound route configuration did not include the absolute domain name (fully-qualified domain name with trailing dot) in the domains list for
VirtualHostentries. This change ensures that requests using absolute domain names (ending with a dot, e.g.,my-service.my-ns.svc.cluster.local.) are properly routed to the intended service instead of falling back toPassthroughCluster. (Issue #56007)
Security
Added support for omitting the issuer claim in JWT tokens. Either the issuer claim or a
JWKSUriis required, but not both. This allows for more flexible configurations when using JWT tokens for authentication, particularly in scenarios where the issuer claim may be dynamic. (Issue #14400)Added an opt-in feature when using istio-cni in ambient mode, to create an Istio-owned CNI config file which contains the contents of the primary CNI config file and the Istio CNI plugin. This opt-in feature is a solution to the issue of traffic bypassing the mesh on node restart when the Istio CNI
DaemonSetis not ready, the Istio CNI plugin is not installed, or the plugin is not invoked to configure traffic redirection from pods their node ztunnels. This feature is enabled by settingcni.istioOwnedCNIConfigto true in the istio-cni Helm chart values. If no value is set forcni.istioOwnedCNIConfigFilename, the Istio-owned CNI config file will be named02-istio-cni.conflist. TheistioOwnedCNIConfigFilenamevalue must have a higher lexicographical priority than the primary CNI. Ambient and chained CNI plugins must be enabled for this feature to work.Added validation for the istioctl
--clusterAliasescommand argument. It should not have more than one alias per cluster. (Issue #56022)Added support for
ClusterTrustBundleby migrating fromcertificates.k8s.io/v1alpha1to the stablev1beta1API in Kubernetes 1.33+. This improves compatibility and future-proofs Istio’s certificate distribution mechanism. (Issue #56306)Added support for external Secret Discovery Service (SDS) providers in the Gateway TLS configuration. Istio now provides improved integration with external SDS providers for TLS certificate management at the Gateway. (Issue #56522)
Added certificate revocation list (CRL) support for plugged-in CAs, enabling Istio to watch for
ca-crl.pemfiles and automatically distribute CRLs across all namespaces in the cluster. This enhancement allows proxies to validate and reject revoked certificates, strengthening the security posture of service mesh deployments using plugged-in CAs. (Issue #56529)Added the Post-Quantum Cryptography (PQC) option to
COMPLIANCE_POLICY. This policy enforces TLSv1.3, cipher suitesTLS_AES_128_GCM_SHA256andTLS_AES_256_GCM_SHA384, and post-quantum-safe key exchangeX25519MLKEM768. To enable this compliance policy in ambient mode, it must be set in the pilot and ztunnel containers. This policy applies to the following data paths:- mTLS communication between Envoy proxies and ztunnels;
- regular TLS on the downstream and the upstream of Envoy proxies (e.g. gateway);
- Istio xDS server. (Issue #56330)
Fixed an issue where sidecars with the old
CLUSTER_IDsetting were not able to connect to istiod with the newCLUSTER_IDsettings when--clusterAliasescommand argument was being used. (Issue #56022)Fixed an issue in the
plugincafeature whereistiodwould silently fallback to the self-signed CA if the providedcacertsbundle was incomplete. The system now properly validates the presence of all required CA files and fails with an error if the bundle is incomplete.
Telemetry
Fixed an issue where Grafana dashboard was linking to the Istio Mesh Dashboard using path-based links that no longer work. Workload and Service links now use dashboard UIDs. (Issue #50124)
Fixed an issue where access logs were not being updated when the referenced service was created later than the Telemetry resource. (Issue #56825)
Removed support of the
Lightsteptracing provider. (Issue #54002)
Extensibility
- Added an option to reload the Wasm VM on new requests if the VM has failed.
Installation
Promoted the environment variable
ENABLE_NATIVE_SIDECARSto default totrue. This means native sidecars will be injected into all eligible pods unless explicitly disabled. This can be disabled explicitly or for specific workloads by adding the annotationsidecar.istio.io/native-side: "false"to individual pods or pod templates. (Issue #48794)Added a setting
values.global.trustBundleNamethat allows configuring the name of the ConfigMap that istiod uses to propagate its root CA certificate in the cluster. This allows running multiple control planes with overlapping namespaces in the same cluster.Added support for customizing ambient enablement Labels. (Issue #53578)
Added support for configuring
additionalContainersandinitContainerson the Gateway Helm Chart.Added support for configuring ztunnel tolerations via Helm chart values. (Issue #56086)
Added support for configuring istio-cni tolerations via Helm chart values. (Issue #56087)
Added defined defaults for
GOMEMLIMITandGOMAXPROCSdivisors to fix an Argo perpetual out-of-sync issue.Added bootstrap override config for the
gateway-injection-template. (Issue #28302)Added
ENABLE_NATIVE_SIDECARSHelm value in the compatibility profiles of Istio 1.24, 1.25, and 1.26, allowing users to disable the default enabling of native sidecars.Added support for proxy protocol on status port. (reference) (Issue #39868)
Added Helm value
.Values.istiodRemote.enabledLocalInjectorIstiodto support sidecar injection in remote clusters. Whenprofile=remote,.Values.istiodRemote.enabledLocalInjectorIstiod=true, and.Values.global.remotePilotAddress="${DISCOVERY_ADDRESS}", the remote worker cluster installsistiodfor local sidecar injection, while XDS is still served by the remote primary cluster. (Issue #56328)Added the
istio.io/revlabel to the istio remote service whenistiodRemoteis enabled (Issue #56142)Added support for
deploymentAnnotationsin the istiod Helm chart. Users can now specify custom annotations to be applied to the istiod Deployment object, in addition to the existingpodAnnotationssupport. This is useful for integration with monitoring tools, GitOps workflows, and policy enforcement systems that operate at the deployment level.Fixed an issue where the
ISTIO_KUBE_APP_PROBERSenvironment variable was not set for probe rewrites when the Istio webhook was re-invoked. (Issue #56102)Fixed an issue where secrets references in the env of
istio/gatewayHelm chart were incorrectly rendered as a string. (Issue #55141)Fixed an injection failure that occurred when the
gatewaytemplate was combined with another template, likespire, which overridesworkload-socket, resulted in Kubernetes not creating other volumes, like those withemptyDirandcsisettings.Fixed a panic in
istioctl manifest translatewhen theIstioOperatorconfig contained multiple gateways. (Issue #56223)Fixed assignment of incorrect UIDs and GIDs for
istio-proxyandistio-validationcontainers on OpenShift clusters when TPROXY mode was enabled.Fixed an issue where
ClusterTrustBundlewas not properly configured whenENABLE_CLUSTER_TRUST_BUNDLE_APIwas enabled.Removed unused multicluster-related Helm values.
istioctl
Added the
--kubeclient-timeoutflag toistioctlroot flags. May be unset, or set to a validtime.Durationstring. When specified, this will override the default15stimeout for allistioctlcommands that use the Kubernetes client. This is useful for environments with slow Kubernetes API servers, such as those with high latency or low bandwidth. Note that this flag is just used for the Kubernetes client, and does not affect other timeouts inistioctl, such as installation timeouts. (Issue #54962)Added
--revisionflags foristioctl dashboard controlzandistioctl dashboard istiod-debug.Added support in the
istioctl proxy-statuscommand to dynamically display all xDS/CRD types as columns in the output table. (Issue #56005)Added support for customizing the timeout of
istioctl waypoint statusandistioctl waypoint apply. (Issue #56453)Added support for displaying
stack-trace-levelin the commandistioctl admin log. (Issue #56465)Added support for displaying
traffic typein the commandistioctl waypoint list.Added support for the
--weightparameter in the commandistioctl experimental workload group create.Added support for configuring the log level of
ip-autoallocateinistioctl admin log. (Issue #55741)Fixed an issue where, during installation,
istio-revision-tag-defaultandMutatingWebhookConfigurationwere not created when the revision was not the default. (Issue #55980)Fixed an issue where false positive of IST0134 were raised in
istioctl analyzewhenPILOT_ENABLE_IP_AUTOALLOCATEwas set totrue. (Issue #56083)Fixed an issue where analysis included Kubernetes system namespaces (e.g.,
kube-system,kube-node-lease). (Issue #55022)Fixed an issue where
create-remote-secretcreated redundant RBAC resources. (Issue #56558)