Istio 1.27.0 Change Notes
Istio 1.27.0 release notes.
Traffic Management
Updated traffic distribution to disregard subzone when the Kubernetes Service
trafficDistribution
field is set toPreferClose
. (Issue #55848)Added support for multiple server certificates in gateway (istio & Gateway API). (Issue #36181)
Added alpha support for specifying
ServiceScope
in the MeshConfig in ambient multicluster configurations.ServiceScope
enables 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 theserviceScopeConfigs
determines 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
EnableGatewayAPICopyLabelsAnnotations
to 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
PreferSameNode
andPreferSameZone
on the Kubernetes ServicetrafficDistribution
field. (Issue #55848)Added Pilot environment variables
PILOT_IP_AUTOALLOCATE_IPV4_PREFIX
andPILOT_IP_AUTOALLOCATE_IPV6_PREFIX
to 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_EXTENSION
environment variable. (Issue #55768)Added support for merge operations when applying to
LISTENER_FILTER
in EnvoyFilter.Added feature
ENABLE_LAZY_SIDECAR_EVALUATION
that allows to enable lazy initialization of sidecar resources, Only computing internal indexes whenSidecarScopes
are actually used by a Proxy. This feature supersedes the previousPILOT_CONVERT_SIDECAR_SCOPE_CONCURRENCY
which would allow concurrent conversion with specific given concurrency, insteadENABLE_LAZY_SIDECAR_EVALUATION
will use the same concurrency asPILOT_PUSH_THROTTLE
.Added support for native
nftables
when using Istio sidecar mode. This update makes it possible to usenftables
instead of iptables to manage network rules, offering more efficient approach to traffic redirection for pods and services. To enable thenftables
mode, use--set values.global.nativeNftables=true
at the time of installation. (Issue #56487)Added support for specifying traffic distribution mode for services. (Issue #53354)
Added feature
ENABLE_PROXY_FIND_POD_BY_IP
that allows enabling association of Pods to Proxies by IP address, if the association by name and namespace fails.Added support of retry budget in
DestinationRule
resources.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_LABEL
orPILOT_ENDPOINT_TELEMETRY_LABEL
was 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
EnvoyFilter
withtargetRefs
matched incorrect resources. (Issue #56417)Fixed ambient index to filter configurations by their revision. (Issue #56477)
Fixed an issue where the
topology.istio.io/network
label was not properly skipped on the system namespace whendiscoverySelectors
were 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
VirtualHost
entries. 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
JWKSUri
is 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
DaemonSet
is 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.istioOwnedCNIConfig
to 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
. TheistioOwnedCNIConfigFilename
value 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
--clusterAliases
command argument. It should not have more than one alias per cluster. (Issue #56022)Added support for
ClusterTrustBundle
by migrating fromcertificates.k8s.io/v1alpha1
to the stablev1beta1
API 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.pem
files 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_SHA256
andTLS_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_ID
setting were not able to connect to istiod with the newCLUSTER_ID
settings when--clusterAliases
command argument was being used. (Issue #56022)Fixed an issue in the
pluginca
feature whereistiod
would silently fallback to the self-signed CA if the providedcacerts
bundle 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
Lightstep
tracing 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_SIDECARS
to 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.trustBundleName
that 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
additionalContainers
andinitContainers
on 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
GOMEMLIMIT
andGOMAXPROCS
divisors to fix an Argo perpetual out-of-sync issue.Added bootstrap override config for the
gateway-injection-template
. (Issue #28302)Added
ENABLE_NATIVE_SIDECARS
Helm 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.enabledLocalInjectorIstiod
to support sidecar injection in remote clusters. Whenprofile=remote
,.Values.istiodRemote.enabledLocalInjectorIstiod=true
, and.Values.global.remotePilotAddress="${DISCOVERY_ADDRESS}"
, the remote worker cluster installsistiod
for local sidecar injection, while XDS is still served by the remote primary cluster. (Issue #56328)Added the
istio.io/rev
label to the istio remote service whenistiodRemote
is enabled (Issue #56142)Added support for
deploymentAnnotations
in the istiod Helm chart. Users can now specify custom annotations to be applied to the istiod Deployment object, in addition to the existingpodAnnotations
support. 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_PROBERS
environment 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/gateway
Helm chart were incorrectly rendered as a string. (Issue #55141)Fixed an injection failure that occurred when the
gateway
template was combined with another template, likespire
, which overridesworkload-socket
, resulted in Kubernetes not creating other volumes, like those withemptyDir
andcsi
settings.Fixed a panic in
istioctl manifest translate
when theIstioOperator
config contained multiple gateways. (Issue #56223)Fixed assignment of incorrect UIDs and GIDs for
istio-proxy
andistio-validation
containers on OpenShift clusters when TPROXY mode was enabled.Fixed an issue where
ClusterTrustBundle
was not properly configured whenENABLE_CLUSTER_TRUST_BUNDLE_API
was enabled.Removed unused multicluster-related Helm values.
istioctl
Added the
--kubeclient-timeout
flag toistioctl
root flags. May be unset, or set to a validtime.Duration
string. When specified, this will override the default15s
timeout for allistioctl
commands 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
--revision
flags foristioctl dashboard controlz
andistioctl dashboard istiod-debug
.Added support in the
istioctl proxy-status
command to dynamically display all xDS/CRD types as columns in the output table. (Issue #56005)Added support for customizing the timeout of
istioctl waypoint status
andistioctl waypoint apply
. (Issue #56453)Added support for displaying
stack-trace-level
in the commandistioctl admin log
. (Issue #56465)Added support for displaying
traffic type
in the commandistioctl waypoint list
.Added support for the
--weight
parameter in the commandistioctl experimental workload group create
.Added support for configuring the log level of
ip-autoallocate
inistioctl admin log
. (Issue #55741)Fixed an issue where, during installation,
istio-revision-tag-default
andMutatingWebhookConfiguration
were not created when the revision was not the default. (Issue #55980)Fixed an issue where false positive of IST0134 were raised in
istioctl analyze
whenPILOT_ENABLE_IP_AUTOALLOCATE
was 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-secret
created redundant RBAC resources. (Issue #56558)