Istio 1.24.0 Change Notes
Istio 1.24.0 release notes.
Ambient mode
Added support for attaching policies to
ServiceEntryfor waypoints.Added a new annotation,
ambient.istio.io/bypass-inbound-capture, that can be applied to make ztunnel only capture outbound traffic. This can be useful to skip an unnecessary hop for workloads that only accept traffic from out-of-mesh clients (such as internet-facing pods).Added a new annotation,
networking.istio.io/traffic-distribution, that can be applied to make ztunnel prefer sending traffic to local pods. This behaves the same as thespec.trafficDistributionfield onService, but allows usage on older Kubernetes versions (as the field was added as beta in Kubernetes 1.31). Note that waypoints automatically set this.Fixed an issue preventing server first protocols from working with waypoints.
Improved logs from Envoy when connection failures occur in ambient mode to show more error details.
Added support for
Telemetrycustomization in the waypoint proxy.Added writing a status condition for binding AuthorizationPolicy to a waypoint proxy. The formatting of conditions is experimental and will change. Policy with multiple
targetRefspresently receive a single condition. Once a pattern for conditions with multiple references is adopted by upstream Kubernetes Gateway API, Istio will adopt the convention to provide greater detail when multipletargetRefsare used. (Issue #52699)Fixed an issue causing
hostNetworkpods to function incorrectly in ambient mode.Improved how ztunnel determines which Pod it is acting on behalf of. Previously, this relied on IP addresses, which was unreliable in some scenarios.
Fixed an issue causing any
portLevelSettingsto be ignored inDestinationRulein waypoints. (Issue #52532)Fixed an issue when using mirror policies with waypoints. (Issue #52713)
Added support for
connection.snirule inAuthorizationPolicyapplied to a waypoint. (Issue #52752)Updated the redirection method used in Ambient from
TPROXYtoREDIRECT. For most users, this should have no impact, but fixes a few compatibility issues withTPROXY. (Issue #52260), (Issue #52576)
Traffic Management
Promoted Istio dual-stack support to Alpha (Issue #47998)
Added
warmup.aggression,warmup.duration,warmup.minimumPercentparameters toDestinationRuleto provide more control on warmup behavior. (Issue #3215)Added retry policy for inbound requests that automatically resets the requests that the service has not seen/processed. It can be reverted by setting
ENABLE_INBOUND_RETRY_POLICYto false. (Issue #51704)Fixed default retry policy to exclude retries on 503 which is potentially unsafe for idempotent requests. This behavior can be temporarily reverted with
EXCLUDE_UNSAFE_503_FROM_DEFAULT_RETRY=false. (Issue #50506)Updated the behavior of XDS generation to be aligned when a user has a
Sidecarconfigured and when they do not. See upgrade notes for more information.Improved Istiod’s validation webhook to accept versions it does not know about. This ensures that an older Istio can validate resources created by newer CRDs.
Improved support for dual-stack services by associating multiple IPs with one single endpoint, rather than treating them as two distinct endpoints. (Issue #40394)
Added support for matching multiple IPs (for dual-stack services) in HTTP route.
Added
VirtualServicesourceNamespaceswill now be taken into account when filtering unneeded configuration.Added support for by passing overload manager for static listeners. This can be reverted by setting
BYPASS_OVERLOAD_MANAGER_FOR_STATIC_LISTENERSto false in agent Deployment. (Issue #41859), (Issue #52663)Added new istiod environment variable
ENVOY_DNS_JITTER_DURATION, with a default value of100msthat sets jitter for periodic DNS resolution. Seedns_jitterinhttps://www.envoyproxy.io/docs/envoy/latest/api-v3/config/cluster/v3/cluster.proto. This can help decrease the load on the cluster DNS server. (Issue #52877)Added support for configuring certificate details while populating XFCC header via a new
ProxyConfigfield,proxyHeaders.setCurrentClientCertDetails.Added Allow users to put extra white spaces between namespaces in
networking.istio.io/exportToannotation. (Issue #53429)Added an experimental feature to enable lazily create subset of Envoy statistics. This will save memory and CPU cycles when creating the objects that own these stats, if those stats are never referenced throughout the lifetime of the process. This can be disabled by setting
ENABLE_DEFERRED_STATS_CREATIONto false in agent Deployment.Fixed matching multiple service VIPs in ServiceEntry. See upgrade notes for more information. (Issue #51747), (Issue #30282)
Fixed
MeshConfig’sserviceSettings.settings.clusterLocalto favor more precise hostnames, allowing host exclusions.Fixed
DestinationRuleson same host to not merge if they have differentexportTovalues. The hold behavior can be temporarily restored withENABLE_ENHANCED_DESTINATIONRULE_MERGE=false. (Issue #52519)Fixed an issue where controller-assigned IPs did not respect per-proxy DNS capture the same way that ephemeral auto-allocated IPs did. (Issue #52609)
Fixed an issue causing Waypoints to ignore auto-allocated IPs for
ServiceEntryin some cases. (Issue #52746)Fixed an issue where the
ISTIO_OUTPUTiptableschain was not removed withpilot-agent istio-clean-iptablescommand. (Issue #52835)Fixed an issue where using HTTPS in slow request scenarios such as high packet loss networks could potentially lead to Envoy memory leak. (Issue #52850)
Fixed a bug where DNS proxying contained unready endpoints for headless services.
Removed the deprecated
istio.io/gateway-namelabel, please usegateway.networking.k8s.io/gateway-namelabel instead.Removed writing
kubeconfigto CNI net directory. (Issue #52315)Removed
CNI_NET_DIRfrom theistio-cniconfigmap, as it now does nothing. (Issue #52315)
Telemetry
Updated CEL vocabulary used in the telemetry APIs and extensions. See upgrade notes for more information.
Added add new pattern variable (
%SERVICE_NAME%) for stat prefix (Issue #52177)Added
logAsJsonvalue to ztunnel helm chart (Issue #52631)Added stats tags configuration for watchdog metrics. (Issue #52731)
Added support headers and timeout configurations of gRPC requests when exporting traces to OpenTelemetry Collector. (Issue #52873)
Added support customized Zipkin collector endpoint under
meshConfig.extensionProviders.zipkin.path. (Issue #53086)Fixed Added the metrics port to the pods created by
Gatewayautomated deployments.Fixed The
citadel_server_root_cert_expiry_timestamp,citadel_server_root_cert_expiry_seconds,citadel_server_cert_chain_expiry_timestamp, andcitadel_server_cert_chain_expiry_secondsupdate when new certificates are loaded.Added
SECRET_GRACE_PERIOD_RATIO_JITTERwith a default value of0.01to introduce a randomized offset inSECRET_GRACE_PERIOD_RATIO. Without this configuration, proxies deployed at the same time will all request renewed certificates simultaneously which can cause excessive CA server load. The new default behavior of renewing certificates every 12 hours is augmented by this value to be +/- approximately 15 minutes. (Issue #52102)
Installation
Updated
securityContext.privilegedto false for istio-cni in favor of feature-specific permissions. istio-cni remains a “privileged” container as per the Kubernetes Pod Security Standards, since even without this flag it has privileged capabilities, namelyCAP_SYS_ADMIN. (Issue #52558)Improved Waypoint
resourcesare now configurable usingglobal.waypoint.resources. (Issue #51496)Improved Waypoint pod
affinityis now configurable usingwaypoint.affinity. (Issue #52883)Improved Waypoint pod
topologySpreadConstraintsare now configurable usingglobal.waypoint.topologySpreadConstraints. (Issue #52901)Improved Waypoint pod
tolerationsare now configurable usingglobal.waypoint.tolerations. (Issue #52901)Improved Waypoint pod
nodeSelectorare now configurable usingglobal.waypoint.nodeSelector. (Issue #52901)Improved the memory footprint of the
istio-cni-nodeDaemonSet. In many cases this can result in up to 80% memory reduction. (Issue #53493)Updated Kiali addon sample to version v2.0.
Updated all Istio components to read
v1CRDs where applicable. This should have no impact, unless the cluster is using Istio CRDs from 1.21 or older (which is not a supported version skew).Added the
app.kubernetes.io/name,app.kubernetes.io/instance,app.kubernetes.io/part-of,app.kubernetes.io/version,app.kubernetes.io/managed-by, andhelm.sh/chartlabels to almost all resources. (Issue #52034)Added Platform-specific configurations for Helm installs. Example:
helm install istio-cni --set profile=ambient --set global.platform=k3shelm install istiod --set profile=ambient --set global.platform=k3sFor list of currently-supported platform overrides, see
manifests/charts/platform-xxx.yamlfiles.
Removed the openshift profile variants, replaced with global.platform overrides. Example:
helm install istio-cni --set profile=ambient-openshift is now
helm install istio-cni --set profile=ambient --set global.platform=openshift
Added Add the ability to configure
initContainersfor Istiod. (Issue #53120)Added Add settings (
strategy,minReadySeconds, andterminationGracePeriodSeconds) to stabilize gateways for high traffic. (Issue #53121)Added value
seLinuxOptionstoistio-cnichart. On some platforms (e.g. OpenShift) it is necessary to setseLinuxOptions.typetospc_tin order to work around some SELinux constraints related tohostPathvolumes. Without this setting, theistio-cni-nodepods may fail to start. (Issue #53558)Added support for providing arbitrary environment variables to
istio-cnichartAdded a new annotation
sidecar.istio.io/nativeSidecarto allow users to control native sidecar injection on a per-pod basis. This annotation can be set totrueorfalseto enable or disable native sidecar injection for a pod. This annotation takes precedence over the globalENABLE_NATIVE_SIDECARSenvironment variable. (Issue #53452)Added Allow user to add customized annotation to
MutatingWebhookConfigurationfor revision-tags through helm chart.Fixed
kube-virt-interfacesrules not being removed byistio-clean-iptablestool. (Issue #48368)Fixed Allow for re-executions of istio-iptables by skipping apply step if existing rules are compatible.
Fixed an issue where some installation status lines were not finalized correctly which can cause odd rendering when terminal windows are resized. (Issue #52525)
Fixed Set
allowPrivilegeEscalationtotruein ztunnel - it has always been forced totruein reality but K8S does not properly validate this: https://github.com/kubernetes/kubernetes/issues/119568.Fixed Remove non-critical components from
basechart, and removepilot.enabledfromistiod-remoteandistio-discoverycharts.Fixed templated CRD installation in the
basechart by default. Previously this only worked under certain conditions, and when certain install flags were used, could result in CRDs that could only be upgraded via manualkubectlintervention. See upgrade notes for more information.Deprecated
Values.base.enableCRDTemplates. This option now defaults totrueand will be removed in a future release. Until then, the legacy behavior can be enabled by setting this tofalse(Issue #43204)Removed some fields from the helm values API that had been without effect and in some cases long-deprecated. Removed fields are:
pilot.configNamespace,pilot.configSource,pilot.enableProtocolSniffingForOutbound,pilot.enableProtocolSniffingForInbound,pilot.useMCP,global.autoscalingV2API,global.configRootNamespace,global.defaultConfigVisibilitySettings,global.useMCP,sidecarInjectorWebhook.objectSelector, andsidecarInjectorWebhook.useLegacySelectors. (Issue #51987)Removed unused
istio_cnivalues from theistiodchart that were marked as deprecated (#49290) 2 releases ago. (Issue #52645)Removed
istiod-remotechart in favor ofhelm install istio-discovery --set profile=remote.Removed support for the
1.20compatibilityProfile. This configured the following settings:ENABLE_EXTERNAL_NAME_ALIAS,PERSIST_OLDEST_FIRST_HEURISTIC_FOR_VIRTUAL_SERVICE_HOST_MATCHING,VERIFY_CERTIFICATE_AT_CLIENT, andENABLE_AUTO_SNI. All of these flags, except forENABLE_AUTO_SNI, have also been removed from Istio entirely.Removed the
sidecar.istio.io/enableCoreDumpannotation. See the sample provided insamples/proxy-coredumpfor more preferred approaches to enable core dumps.Removed the legacy
--log_rotate_*flag options. Users wishing to use log rotation should use external log rotation tools.
istioctl
Added automatic detection of a variety of platform-specific incompatibilities during installation.
Added a new command,
istioctl manifest translate, to help migrate fromistioctl installtohelm.Added a new flag
remote-contextsto theistioctl analyzecommand to specify remote cluster contexts during multi-cluster analysis. (Issue #51934)Added support for filtering Pods by label selector to
istioctl x envoy-stats.Added support for filtering resources by namespace to
istioctl experimental injector list.Added support for the
--impersonateflags in the istioctl. (Issue #52285)Fixed istioctl analyze report IST0145 error with wildcard host and specific subdomain. (Issue #52413)
Fixed
istioctl experimental injector listprints webhooks not related to istio.Removed
istioctl manifest diffandistioctl manifest profile diffcommands. Users looking to compare manifest can use generic YAML comparison tools.Removed
istioctl profilecommand. The same information can be found in Istio documentation.
Documentation changes
- Improved legibility of Istio’s documentation by renaming the
sleepsample tocurl. (Issue #15725)