Notas de Cambios de Istio 1.25.0
Notas de versión de Istio 1.25.0.
Avisos de Obsolescencia
Estos avisos describen funcionalidades que se eliminarán en una versión futura según la política de obsolescencia de Istio. Considera actualizar tu entorno para eliminar las funcionalidades obsoletas.
Obsoleto el uso de
ISTIO_META_DNS_AUTO_ALLOCATEenproxyMetadataen favor de una versión más reciente de auto-asignación de DNS. Los nuevos usuarios de la auto-asignación de IPs de Istio deben adoptar el nuevo controlador basado en estado. Los usuarios existentes pueden continuar usando la implementación anterior. (Issue #53596)Obsoleta la anotación
traffic.sidecar.istio.io/kubevirtInterfaces, en favor deistio.io/reroute-virtual-interfaces. (Issue #49829)
Gestión de Tráfico
Promovido el valor
cni.ambient.dnsCapturepara que seatruepor defecto. Esto habilita el DNS proxying para los workloads en modo ambient mesh de forma predeterminada, mejorando la seguridad, el rendimiento y habilitando varias características. Se puede deshabilitar explícitamente o concompatibilityVersion=1.24. Nota: solo los pods nuevos tendrán DNS habilitado. Para habilitarlo en pods existentes, deben reiniciarse manualmente o habilitar la reconciliación de iptables con--set cni.ambient.reconcileIptablesOnStartup=true.Promovido el valor
PILOT_ENABLE_IP_AUTOALLOCATEpara que seatruepor defecto. Esto habilita la nueva iteración de la auto-asignación de IPs, resolviendo problemas de larga data relacionados con la inestabilidad de la asignación, el soporte en modo ambient y mayor visibilidad. Los objetosServiceEntrysinspec.addressdefinido verán ahora el nuevo campostatus.addressesconfigurado automáticamente. Nota: estos no se usarán a menos que los proxies estén configurados para hacer DNS proxying, que sigue desactivado por defecto.Actualizado la característica
PILOT_SEND_UNHEALTHY_ENDPOINTS(desactivada por defecto) para excluir endpoints en proceso de terminación. Esto asegura que un servicio no se considere no saludable durante eventos de reducción de escala o despliegues.Actualizado el algoritmo de DNS proxying para seleccionar aleatoriamente a qué upstream reenviar las solicitudes DNS. (Issue #53414)
Añadida la variable de entorno de istiod
PILOT_DNS_JITTER_DURATIONque establece el jitter para la resolución DNS periódica. Verdns_jitterenhttps://www.envoyproxy.io/docs/envoy/latest/api-v3/config/cluster/v3/cluster.proto. (Issue #52877)Añadido
ObservedGenerationa las condiciones de estado en modo ambient. Este campo mostrará la generación del objeto que el controlador observó cuando se generó la condición. (Issue #53331)Añadida la variable de entorno de istiod
PILOT_DNS_CARES_UDP_MAX_QUERIESque controla el campoudp_max_queriesdel resolvedor DNS Cares predeterminado de Envoy. Este valor toma 100 por defecto cuando no está configurado. Para más información, consulta la documentación de Envoy. (Issue #53577)Añadido soporte para reconciliar las reglas de iptables dentro de pods ambient existentes de la versión anterior al actualizar
istio-cni. La característica se puede activar con--set cni.ambient.reconcileIptablesOnStartup=truey se habilitará por defecto en versiones futuras. (Issue #1360)Añadida la anotación
istio.io/reroute-virtual-interfaces, una lista separada por comas de interfaces virtuales cuyo tráfico entrante se tratará incondicionalmente como saliente. Esto permite que los workloads que usan redes virtuales (KubeVirt, VMs, docker-in-docker, etc.) funcionen correctamente con la captura de tráfico en modo sidecar y ambient mesh.Añadido soporte para adjuntar políticas predeterminadas a istio-waypoint apuntando al
GatewayClass. (Issue #54696)Añadida la anotación
ambient.istio.io/dns-capture, que puede estar sin definir o configurarse comotrueofalse. Cuando se especifica en unPodinscrito en ambient mesh, controla si el tráfico DNS (TCP y UDP en el puerto 53) será capturado y enviado por proxy en modo ambient. Esta anotación a nivel de pod, si está presente, sobreescribe el ajuste globalAMBIENT_DNS_CAPTUREdeistio-cni, que a partir de la versión 1.25 toma el valortruepor defecto. Nota: establecerla comofalsedesactivará algunas características de Istio, comoServiceEntriesy waypoints de salida, aunque puede ser deseable para workloads que no se llevan bien con los DNS proxies. (Issue #49829)Añadido soporte para configurar la etiqueta
istio.io/ingress-use-waypointa nivel de namespace.Añadido soporte para preservar las mayúsculas y minúsculas originales de las cabeceras HTTP/1.x. (Issue #53680)
Añadido soporte para el campo
Service.spec.trafficDistributiony la anotaciónnetworking.istio.io/traffic-distribution, que ofrecen un mecanismo más sencillo para que el tráfico prefiera endpoints geográficamente cercanos. Nota: esta característica existía anteriormente solo para ztunnel, pero ahora está soportada en todos los data planes.Corregido un error con Hosts en mayúsculas y minúsculas mixtas en Gateway y redirección TLS que provocaba un RDS obsoleto. (Issue #49638)
Corregido un problema donde un
HTTPRouteen unVirtualServicecon un matcher que especificabasourceLabelsse aplicaba a un waypoint. (Issue #51565)Corregido un problema donde si la obtención de una imagen WASM fallaba, se usaba un filtro RBAC de permiso total. Ahora, si
failStrategyestá configurado comoFAIL_CLOSE, se usará un filtro RBAC de denegación total. (Issue #53279), (Issue #23624)Corregido el waypoint proxy para respetar el dominio de confianza.
Corregido un problema donde la fusión de
Durationen unEnvoyFilterpodía modificar inesperadamente los atributos de todos los listeners asociados porque todos compartían el mismo puntero (listener_filters_timeout).Corregido un problema donde se producían errores durante la limpieza de reglas de iptables que eran condicionales.
Corregida una configuración para que el tráfico DNS (UDP y TCP) sea ahora afectado por anotaciones de tráfico como
traffic.sidecar.istio.io/excludeOutboundIPRangesytraffic.sidecar.istio.io/excludeOutboundPorts. Anteriormente, el tráfico UDP/DNS ignoraba estas anotaciones de forma única, incluso si se especificaba un puerto DNS, debido a la estructura de las reglas. El cambio de comportamiento ocurrió realmente en la serie 1.23, pero se omitió en las notas de la versión 1.23. (Issue #53949)Corregido un problema donde istiod no gestionaba correctamente
RequestAuthenticationpara waypoint proxies en namespaces cruzados. (Issue #54051)Corregido un problema que causaba fallos al aplicar parches a un deployment de gateway/waypoint gestionado durante la actualización a la versión 1.24. (Issue #54145)
Corregido un problema donde las revisiones no predeterminadas que controlan gateways carecían de etiquetas
istio.io/rev. (Issue #54280)Corregido el texto del mensaje de estado cuando hay reglas L7 presentes en una
AuthorizationPolicyvinculada a ztunnel para que sea más claro. (Issue #54334)Corregido un error donde el filtro de espejo de solicitudes calculaba incorrectamente el porcentaje. (Issue #54357)
Corregido un problema donde usar una etiqueta en la label
istio.io/revde un gateway provocaba que el gateway se programara incorrectamente y careciera de estado. (Issue #54458)Corregido un problema donde desconexiones de ztunnel fuera de orden podían dejar
istio-cnien un estado en el que cree que no tiene conexiones. (Issue #54544), (Issue #53843)Corregidas las entradas excesivas de log a nivel info de iptables para comprobaciones y eliminaciones de reglas. Se pueden volver a habilitar los logs detallados cambiando al nivel debug si es necesario. (Issue #54644)
Corregido un problema que causaba que los servicios
ExternalNamefallaran al resolver cuando se usaba el modo ambient y el DNS proxying.Corregido un problema que causaba que la configuración fuera rechazada cuando había una superposición parcial entre las direcciones IP de múltiples servicios. Por ejemplo, un Service con
[IP-A]y otro con[IP-B, IP-A]. (Issue #52847)Corregido un problema donde la validación de nombres de cabeceras de
VirtualServicerechazaba nombres de cabeceras válidos.Corregido un problema al actualizar waypoint proxies de Istio 1.23.x a Istio 1.24.x. (Issue #53883)
Seguridad
Añadida la capacidad
DAC_OVERRIDEal DaemonSetistio-cni-node. Esto resuelve problemas al ejecutarse en entornos donde ciertos archivos son propiedad de usuarios no root. Nota: antes de Istio 1.24,istio-cni-nodese ejecutaba comoprivileged. Istio 1.24 eliminó esto, pero quitó algunos privilegios necesarios que ahora se vuelven a añadir. En relación a Istio 1.23,istio-cni-nodesigue teniendo menos privilegios que con este cambio.Añadida la anotación AppArmor unconfined al DaemonSet
istio-cni-nodepara evitar conflictos con perfiles AppArmor que bloquean ciertas capacidades de pods privilegiados. Anteriormente, AppArmor (cuando estaba habilitado) se ignoraba para el DaemonSetistio-cni-nodeporqueprivilegedestaba configurado comotrueen elSecurityContext. Este cambio garantiza que el perfil AppArmor se establezca como unconfined para el DaemonSetistio-cni-node.Corregido un problema donde las políticas
PeerAuthenticationen modo ambient eran demasiado estrictas. (Issue #53884)Corregidas posibles condiciones de carrera en la caché de resolución JWK para políticas JWT que, al activarse, causaban fallos de caché y errores al actualizar las claves de firma cuando se rotaban. (Issue #52121)
Corregido un error en modo ambient (únicamente) donde múltiples reglas mTLS
STRICTa nivel de puerto en una políticaPeerAuthenticationresultaban efectivamente en una política permisiva debido a una lógica de evaluación incorrecta (ANDen lugar deOR). (Issue #54146)Corregido un problema donde los ingress gateways no usaban el descubrimiento WDS para recuperar metadatos de destinos en modo ambient.
Telemetría
Añadido soporte para el intercambio adicional de etiquetas para telemetría en modo sidecar. (Issue #54000)
Añadida una nueva etiqueta
service.istio.io/workload-nameque se puede añadir a unPodoWorkloadEntrypara sobreescribir el “nombre del workload” reportado en la telemetría.Añadido un fallback para usar el nombre del
WorkloadGroupcomo “nombre del workload” (reportado en telemetría) para losWorkloadEntrys creados por unWorkloadGroup.Corregida la interpolación de
$(HOST_IP)que causaba fallos en istio-proxy cuando el tracing de Datadog estaba habilitado en clústeres IPv6. (Issue #54267)Corregido un problema donde la inestabilidad en el orden de los logs de acceso causaba drenado de conexiones. (Issue #54672)
Corregido un problema donde muchos paneles de los dashboards de Grafana mostraban Sin datos si Prometheus tenía un intervalo de scraping configurado superior a
15s. (Información adicional y uso)Eliminado el soporte de OpenCensus.
Instalación
Mejorado los valores
platformyprofilede Helm ahora admiten equivalentemente formas de sobreescritura global o local, por ejemplo:--set global.platform=foo--set global.profile=bar--set platform=foo--set profile=bar
Mejorado el chart Helm de ztunnel para establecer los nombres de recursos en
.Release.Nameen lugar de estar fijados a ztunnel.Añadidos nuevos mensajes a la condición
WaypointBoundpara representar un servicio vinculado a un waypoint proxy para ingress.Añadido un problema donde
istioctl installno funcionaba en Windows.Añadida una
dnsPolicyde pod con valorClusterFirstWithHostNetaistio-cnicuando se ejecuta conhostNetwork=true(es decir, en modo ambient).Añadido el perfil de plataforma GKE para modo ambient. Al instalar en GKE, usa
--set global.platform=gke(Helm) o--set values.global.platform=gke(istioctl) para aplicar sobreescrituras de valores específicas de GKE. Esto reemplaza la detección automática de GKE anterior basada en la versión de Kubernetes usada en el chartistio-cni.Añadido soporte para el parámetro de configuración de Envoy que omite los logs obsoletos, con el valor predeterminado configurado como
true. Establecer la variable de entornoENVOY_SKIP_DEPRECATED_LOGSafalsehabilitará los logs obsoletos.Añadidas etiquetas de exclusión del data plane ambient a los gateways incluidos con Istio por defecto, para evitar comportamientos confusos al instalar gateways fuera de
istio-system. (Issue #54824)Corregido un problema donde la creación de entradas
ipsetfallaba en ciertos tipos de nodos de Kubernetes basados en Docker. (Issue #53512)Corregido el render de Helm para aplicar correctamente las anotaciones en el
serviceAccountdel pilot. (Issue #51289)Corregido un problema donde
includeInboundPorts: ""no funcionaba cuandoistio-cniestaba habilitado. (Issue #54288)Corregido un problema donde la instalación de CNI dejaba archivos temporales cuando un contenedor era eliminado repetidamente durante la copia del binario, lo que podía llenar el espacio de almacenamiento. (Issue #54311)
Corregido un problema en el chart del gateway donde
--set platformfuncionaba pero--set global.platformno.Corregido un problema donde la plantilla de inyección de
gatewayno respetaba las anotacioneskubectl.kubernetes.io/default-logs-containerykubectl.kubernetes.io/default-container.Corregido un problema que causaba que el comando
istio-iptablesfallara cuando una tabla no integrada estaba presente en el sistema.Corregido un problema que impedía personalizar el campo
maxUnavailabledelPodDisruptionBudget. (Issue #54087)Corregido un problema donde los errores de configuración de inyección se silenciaban (es decir, se registraban pero no se devolvían) cuando el inyector de sidecar no podía procesar la configuración del sidecar. Este cambio propagará ahora el error al usuario en lugar de continuar procesando una configuración defectuosa. (Issue #53357)
istioctl
Mejorada la salida de
istioctl proxy-config secretpara mostrar los trust bundles proporcionados por Spire.Añadido el alias
-rpara las flags--revisionenistioctl analyze.Añadido soporte para
AuthorizationPoliciescon acciónCUSTOMen el comandoistioctl x authz check.Añadido soporte para el parámetro
--networken el comandoistioctl experimental workload group create. (Issue #54022)Añadida la posibilidad de reiniciar o actualizar de forma segura el DaemonSet
istio-cnide tiposystem-node-criticalin situ. Esto funciona evitando que nuevos pods se inicien en el nodo mientrasistio-cnise reinicia o actualiza. Esta característica está habilitada por defecto y puede deshabilitarse configurando la variable de entornoAMBIENT_DISABLE_SAFE_UPGRADE=trueenistio-cni. (Issue #49009)Añadidos cambios en el comando
rootca-comparepara manejar el caso en que un pod tiene múltiples CA raíz. (Issue #54545)Añadido soporte para que
istioctl waypoint deleteelimine waypoints de revisiones específicas.Añadido soporte para que el analizador reporte condiciones de estado negativas en recursos seleccionados de Istio y de Gateway API de Kubernetes. (Issue #55055)
Mejorado el rendimiento de
istioctl proxy-config secretyistioctl proxy-config. (Issue #53931)Corregido un problema en el comando
rootca-comparepara manejar el caso en que un pod tiene múltiples CA raíz. (Issue #54545)Corregido un problema donde
istioctl installse bloquea si se especifican múltiples ingress gateways en el archivoIstioOperator. (Issue #53875)Corregido un problema donde
istioctl waypoint delete --alleliminaba todos los recursos de gateway, incluso los que no eran waypoints. (Issue #54056)Corregido el comando
istioctl experimental injector listpara que no imprima namespaces redundantes para los webhooks del inyector.Corregido
istioctl analyzeque reportaba erroresIST0145al usar el mismo host con diferentes puertos y múltiples gateways. (Issue #54643)Corregido un problema donde
istioctl --asestablecía implícitamente--as-group=""cuando se usaba--assin--as-group.Eliminadas las flags
--recursivey configurada la recursión comotruepor defecto enistioctl analyze.Eliminada la flag experimental
--xds-via-agentsdel comandoistioctl proxy-status.