Notas de Cambios de Istio 1.24.0
Notas de versión de Istio 1.24.0.
Modo Ambient
Añadido soporte para adjuntar políticas a
ServiceEntrypara waypoints.Añadida una nueva anotación,
ambient.istio.io/bypass-inbound-capture, que se puede aplicar para que ztunnel solo capture tráfico de salida. Resulta útil para omitir un salto innecesario en workloads que solo aceptan tráfico de clientes fuera del mesh (como pods accesibles desde internet).Añadida una nueva anotación,
networking.istio.io/traffic-distribution, que se puede aplicar para que ztunnel prefiera enviar tráfico a pods locales. Se comporta igual que el campospec.trafficDistributionenService, pero permite su uso en versiones más antiguas de Kubernetes (ya que el campo se añadió como beta en Kubernetes 1.31). Nota: los waypoints establecen esto automáticamente.Corregido un problema que impedía que los protocolos server-first funcionaran con waypoints.
Mejorados los logs de Envoy cuando se producen fallos de conexión en modo ambient para mostrar más detalles del error.
Añadido soporte para la personalización de
Telemetryen el proxy waypoint.Añadida la escritura de una condición de estado al vincular AuthorizationPolicy a un proxy waypoint. El formato de las condiciones es experimental y cambiará. Las políticas con múltiples
targetRefsreciben actualmente una sola condición. Una vez que Kubernetes Gateway API adopte un patrón para condiciones con múltiples referencias, Istio adoptará esa convención para ofrecer mayor detalle cuando se usen múltiplestargetRefs. (Issue #52699)Corregido un problema que causaba que los pods con
hostNetworkfuncionaran incorrectamente en modo ambient.Mejorada la forma en que ztunnel determina qué Pod representa. Anteriormente esto dependía de direcciones IP, lo que era poco fiable en algunos escenarios.
Corregido un problema que causaba que cualquier
portLevelSettingsfuera ignorado enDestinationRuleen waypoints. (Issue #52532)Corregido un problema al usar políticas de mirroring con waypoints. (Issue #52713)
Añadido soporte para la regla
connection.snienAuthorizationPolicyaplicada a un waypoint. (Issue #52752)Actualizado el método de redirección usado en Ambient de
TPROXYaREDIRECT. Para la mayoría de los usuarios esto no tiene impacto, pero corrige algunos problemas de compatibilidad conTPROXY. (Issue #52260), (Issue #52576)
Gestión de Tráfico
Promovido el soporte dual-stack de Istio a Alpha. (Issue #47998)
Añadidos los parámetros
warmup.aggression,warmup.duration,warmup.minimumPercentaDestinationRulepara mayor control sobre el comportamiento de warmup. (Issue #3215)Añadida una política de reintentos para solicitudes entrantes que restablece automáticamente las solicitudes que el servicio no ha visto o procesado. Se puede revertir estableciendo
ENABLE_INBOUND_RETRY_POLICYen false. (Issue #51704)Corregida la política de reintentos predeterminada para excluir reintentos en 503, que es potencialmente inseguro para solicitudes idempotentes. Este comportamiento se puede revertir temporalmente con
EXCLUDE_UNSAFE_503_FROM_DEFAULT_RETRY=false. (Issue #50506)Actualizado el comportamiento de la generación de XDS para que sea coherente tanto cuando el usuario tiene un
Sidecarconfigurado como cuando no. Consulta las notas de actualización para más información.Mejorado el webhook de validación de Istiod para aceptar versiones que no conoce. Esto garantiza que una versión más antigua de Istio pueda validar recursos creados por CRDs más nuevos.
Mejorado el soporte para servicios dual-stack asociando múltiples IPs con un único endpoint, en lugar de tratarlos como dos endpoints distintos. (Issue #40394)
Añadido soporte para hacer coincidir múltiples IPs (para servicios dual-stack) en rutas HTTP.
Añadido el campo
sourceNamespacesdeVirtualServicese tendrá en cuenta al filtrar configuración innecesaria.Añadido soporte para omitir el overload manager en listeners estáticos. Se puede revertir estableciendo
BYPASS_OVERLOAD_MANAGER_FOR_STATIC_LISTENERSen false en el Deployment del agente. (Issue #41859), (Issue #52663)Añadida la variable de entorno de istiod
ENVOY_DNS_JITTER_DURATION, con un valor predeterminado de100ms, que establece el jitter para la resolución DNS periódica. Consultadns_jitterenhttps://www.envoyproxy.io/docs/envoy/latest/api-v3/config/cluster/v3/cluster.proto. Esto puede ayudar a reducir la carga en el servidor DNS del clúster. (Issue #52877)Añadido soporte para configurar detalles del certificado al rellenar el encabezado XFCC mediante el nuevo campo
proxyHeaders.setCurrentClientCertDetailsdeProxyConfig.Añadido permiso para incluir espacios en blanco adicionales entre namespaces en la anotación
networking.istio.io/exportTo. (Issue #53429)Añadida una característica experimental para habilitar la creación diferida de un subconjunto de estadísticas de Envoy. Esto ahorra memoria y ciclos de CPU al crear los objetos que poseen estas estadísticas, si nunca se referencian durante la vida del proceso. Se puede deshabilitar estableciendo
ENABLE_DEFERRED_STATS_CREATIONen false en el Deployment del agente.Corregida la coincidencia de múltiples VIPs de servicio en ServiceEntry. Consulta las notas de actualización para más información. (Issue #51747), (Issue #30282)
Corregido
MeshConfig’sserviceSettings.settings.clusterLocalpara favorecer hostnames más precisos, permitiendo exclusiones de host.Corregido que los
DestinationRulessobre el mismo host no se fusionen si tienen diferentes valores deexportTo. El comportamiento anterior se puede restaurar temporalmente conENABLE_ENHANCED_DESTINATIONRULE_MERGE=false. (Issue #52519)Corregido un problema donde las IPs asignadas por el controlador no respetaban la captura DNS por proxy de la misma forma que las IPs auto-asignadas efímeras. (Issue #52609)
Corregido un problema que causaba que los Waypoints ignoraran las IPs auto-asignadas para
ServiceEntryen algunos casos. (Issue #52746)Corregido un problema donde la cadena
iptablesISTIO_OUTPUTno se eliminaba con el comandopilot-agent istio-clean-iptables. (Issue #52835)Corregido un problema donde el uso de HTTPS en escenarios de solicitudes lentas, como redes con alta pérdida de paquetes, podía provocar una fuga de memoria en Envoy. (Issue #52850)
Corregido un error donde el proxy DNS contenía endpoints no listos para servicios headless.
Eliminada la etiqueta obsoleta
istio.io/gateway-name; usa en su lugar la etiquetagateway.networking.k8s.io/gateway-name.Eliminada la escritura de
kubeconfigen el directorio de red de CNI. (Issue #52315)Eliminado
CNI_NET_DIRdel configmap deistio-cni, ya que no tiene ningún efecto. (Issue #52315)
Telemetría
Actualizado el vocabulario CEL utilizado en las APIs de telemetría y extensiones. Consulta las notas de actualización para más información.
Añadida una nueva variable de patrón (
%SERVICE_NAME%) para el prefijo de estadísticas. (Issue #52177)Añadido el valor
logAsJsonal chart Helm de ztunnel. (Issue #52631)Añadida configuración de etiquetas de estadísticas para métricas del watchdog. (Issue #52731)
Añadido soporte para cabeceras y configuraciones de timeout en solicitudes gRPC al exportar trazas al OpenTelemetry Collector. (Issue #52873)
Añadido soporte para un endpoint personalizado del colector Zipkin mediante
meshConfig.extensionProviders.zipkin.path. (Issue #53086)Corregida la adición del puerto de métricas a los pods creados por los despliegues automatizados de
Gateway.Corregida la actualización de
citadel_server_root_cert_expiry_timestamp,citadel_server_root_cert_expiry_seconds,citadel_server_cert_chain_expiry_timestampycitadel_server_cert_chain_expiry_secondscuando se cargan nuevos certificados.Añadido
SECRET_GRACE_PERIOD_RATIO_JITTERcon un valor predeterminado de0.01para introducir un offset aleatorizado enSECRET_GRACE_PERIOD_RATIO. Sin esta configuración, los proxies desplegados al mismo tiempo solicitan certificados renovados simultáneamente, lo que puede causar una carga excesiva en el servidor CA. El nuevo comportamiento predeterminado de renovar certificados cada 12 horas se complementa con este valor para ser +/- aproximadamente 15 minutos. (Issue #52102)
Instalación
Actualizado
securityContext.privilegeda false para istio-cni, en favor de permisos específicos por característica. istio-cni sigue siendo un contenedor “privilegiado” según los Pod Security Standards de Kubernetes, ya que incluso sin este flag tiene capacidades privilegiadas, concretamenteCAP_SYS_ADMIN. (Issue #52558)Mejorado: los
resourcesdel Waypoint ahora son configurables medianteglobal.waypoint.resources. (Issue #51496)Mejorado: la
affinitydel pod Waypoint ahora es configurable mediantewaypoint.affinity. (Issue #52883)Mejorado: los
topologySpreadConstraintsdel pod Waypoint ahora son configurables medianteglobal.waypoint.topologySpreadConstraints. (Issue #52901)Mejorado: los
tolerationsdel pod Waypoint ahora son configurables medianteglobal.waypoint.tolerations. (Issue #52901)Mejorado: el
nodeSelectordel pod Waypoint ahora es configurable medianteglobal.waypoint.nodeSelector. (Issue #52901)Mejorada la huella de memoria del DaemonSet
istio-cni-node. En muchos casos puede resultar en una reducción de memoria de hasta el 80%. (Issue #53493)Actualizado el addon de muestra Kiali a la versión v2.0.
Actualizados todos los componentes de Istio para leer CRDs
v1donde corresponda. Esto no debería tener impacto, salvo que el clúster use CRDs de Istio de la versión 1.21 o anterior (que no es un salto de versión soportado).Añadidas las etiquetas
app.kubernetes.io/name,app.kubernetes.io/instance,app.kubernetes.io/part-of,app.kubernetes.io/version,app.kubernetes.io/managed-byyhelm.sh/charta casi todos los recursos. (Issue #52034)Añadidas configuraciones específicas de plataforma para instalaciones con Helm. Ejemplo:
helm install istio-cni --set profile=ambient --set global.platform=k3shelm install istiod --set profile=ambient --set global.platform=k3sPara la lista de overrides de plataforma soportados actualmente, consulta los archivos
manifests/charts/platform-xxx.yaml.
Eliminados los variantes de perfil openshift, reemplazados por overrides de global.platform. Ejemplo:
helm install istio-cni --set profile=ambient-openshift ahora es
helm install istio-cni --set profile=ambient --set global.platform=openshift
Añadida la posibilidad de configurar
initContainerspara Istiod. (Issue #53120)Añadida configuración de opciones (
strategy,minReadySecondsyterminationGracePeriodSeconds) para estabilizar gateways con tráfico elevado. (Issue #53121)Añadido el valor
seLinuxOptionsal chartistio-cni. En algunas plataformas (por ejemplo, OpenShift) es necesario establecerseLinuxOptions.typeaspc_tpara evitar ciertas restricciones de SELinux relacionadas con volúmeneshostPath. Sin esta configuración, los podsistio-cni-nodepueden fallar al iniciarse. (Issue #53558)Añadido soporte para proporcionar variables de entorno arbitrarias al chart
istio-cni.Añadida una nueva anotación
sidecar.istio.io/nativeSidecarpara que los usuarios puedan controlar la inyección nativa de sidecar por pod. Esta anotación se puede establecer entrueofalsepara habilitar o deshabilitar la inyección nativa de sidecar en un pod. Esta anotación tiene prioridad sobre la variable de entorno globalENABLE_NATIVE_SIDECARS. (Issue #53452)Añadida la posibilidad de agregar anotaciones personalizadas a
MutatingWebhookConfigurationpara revision-tags mediante el chart Helm.Corregida la eliminación de las reglas
kube-virt-interfacespor la herramientaistio-clean-iptables. (Issue #48368)Corregida la posibilidad de re-ejecutar istio-iptables omitiendo el paso de aplicación si las reglas existentes son compatibles.
Corregido un problema donde algunas líneas de estado de la instalación no se finalizaban correctamente, lo que podía causar un renderizado extraño al redimensionar la ventana del terminal. (Issue #52525)
Corregido: se establece
allowPrivilegeEscalationatrueen ztunnel — siempre fue forzado atrueen la práctica pero Kubernetes no lo valida correctamente: https://github.com/kubernetes/kubernetes/issues/119568.Corregida la eliminación de componentes no críticos del chart
basey depilot.enabledde los chartsistiod-remoteeistio-discovery.Corregida la instalación de CRDs mediante plantillas en el chart
basepor defecto. Anteriormente esto solo funcionaba bajo ciertas condiciones, y al usar ciertos flags de instalación, podía generar CRDs que solo podían actualizarse mediante intervención manual conkubectl. Consulta las notas de actualización para más información.Obsoleto
Values.base.enableCRDTemplates. Esta opción ahora tiene el valor predeterminadotruey se eliminará en una versión futura. Hasta entonces, el comportamiento heredado se puede habilitar estableciéndolo enfalse. (Issue #43204)Eliminados algunos campos de la API de values de Helm que no tenían efecto y en algunos casos llevaban tiempo obsoletos. Los campos eliminados son:
pilot.configNamespace,pilot.configSource,pilot.enableProtocolSniffingForOutbound,pilot.enableProtocolSniffingForInbound,pilot.useMCP,global.autoscalingV2API,global.configRootNamespace,global.defaultConfigVisibilitySettings,global.useMCP,sidecarInjectorWebhook.objectSelectorysidecarInjectorWebhook.useLegacySelectors. (Issue #51987)Eliminados los valores de
istio_cnino utilizados del chartistiodque estaban marcados como obsoletos (#49290) hace 2 versiones. (Issue #52645)Eliminado el chart
istiod-remoteen favor dehelm install istio-discovery --set profile=remote.Eliminado el soporte para el
compatibilityProfile1.20. Esto configuraba los siguientes ajustes:ENABLE_EXTERNAL_NAME_ALIAS,PERSIST_OLDEST_FIRST_HEURISTIC_FOR_VIRTUAL_SERVICE_HOST_MATCHING,VERIFY_CERTIFICATE_AT_CLIENTyENABLE_AUTO_SNI. Todos estos flags, exceptoENABLE_AUTO_SNI, también han sido eliminados de Istio por completo.Eliminada la anotación
sidecar.istio.io/enableCoreDump. Consulta el ejemplo ensamples/proxy-coredumppara métodos preferibles de habilitar volcados de núcleo.Eliminadas las opciones de flag heredadas
--log_rotate_*. Los usuarios que deseen usar rotación de logs deben utilizar herramientas externas de rotación.
istioctl
Añadida la detección automática de una variedad de incompatibilidades específicas de plataforma durante la instalación.
Añadido un nuevo comando,
istioctl manifest translate, para ayudar a migrar deistioctl installahelm.Añadido un nuevo flag
remote-contextsal comandoistioctl analyzepara especificar contextos de clústeres remotos durante el análisis multiclúster. (Issue #51934)Añadido soporte para filtrar Pods por selector de etiquetas en
istioctl x envoy-stats.Añadido soporte para filtrar recursos por namespace en
istioctl experimental injector list.Añadido soporte para los flags
--impersonateen istioctl. (Issue #52285)Corregido que istioctl analyze reportara el error IST0145 con host comodín y subdominio específico. (Issue #52413)
Corregido que
istioctl experimental injector listmostrara webhooks no relacionados con Istio.Eliminados los comandos
istioctl manifest diffeistioctl manifest profile diff. Los usuarios que quieran comparar manifiestos pueden usar herramientas genéricas de comparación de YAML.Eliminado el comando
istioctl profile. La misma información se puede encontrar en la documentación de Istio.
Cambios en la documentación
- Mejorada la legibilidad de la documentación de Istio al renombrar el ejemplo
sleepacurl. (Issue #15725)