Istio 1.28.0 更新说明
Istio 1.28.0 更新说明。
流量治理
升级 将 Istio 双栈支持提升至 Beta 版。 (Issue #54127)
更新 更新了每个套接字事件的最大接受连接数的默认值。现在, 对于显式绑定到 Sidecar 端口的入站和出站监听器,默认值为 1。 在连接频繁切换的情况下,未进行 iptables 拦截的监听器将受益于更佳的性能。 要恢复旧的行为,您可以将
MAX_CONNECTIONS_PER_SOCKET_EVENT_LOOP设置为零。新增 添加了对一致性哈希负载均衡中 Cookie 属性的支持。 现在您可以指定其他属性,例如
SameSite、Secure和HttpOnly。 这使得在负载均衡场景中能够更安全、更合规地处理 Cookie。 (Issue #56468), (Issue #49870)新增 添加了
DISABLE_SHADOW_HOST_SUFFIX环境变量, 用于控制镜像策略中的影子主机后缀行为。设置为true(默认值)时, 会在镜像请求的主机名中添加影子主机后缀。设置为false时, 则不会添加影子主机后缀。这为从旧版本 Istio 升级的用户提供了向后兼容性, 因为旧版本默认通过兼容性配置文件添加影子主机后缀。 (Issue #57530)新增 添加了 Gateway API
BackendTLSPolicy中的sectionName支持, 以启用端口特定的 TLS 配置。这允许按名称指定服务的特定端口, 从而为每个端口启用不同的 TLS 设置。例如, 现在您可以仅为服务的https端口配置 TLS 设置,而其他端口保持不变。新增 添加了对
BackendTLSPolicy中targetRef的ServiceEntry支持。 这允许用户将 TLS 设置应用于由ServiceEntry资源定义的外部服务。 (Issue #57521)新增 添加了对使用 Istio Ambient 模式时原生 nftables 的支持。 此次更新使得可以使用 nftables 代替 iptables 来管理网络规则。 要启用 nftables 模式,请在安装 Istio 时使用
--set values.global.nativeNftables=true参数。 (Issue #57324)新增 添加了对使用
DYNAMIC_DNS解析的ServiceEntry资源中的通配符主机的支持。 目前仅支持 HTTP 流量。需要 Ambient 模式以及配置为出口网关的 waypoint。 (Issue #54540)新增 添加了对
ProxyConfig.ProxyHeaders中X-Forwarded标头的支持。启用 启用了 waypoint,以便在 Ambient 多集群中将流量路由到远程网络。 (Issue #57537)
修复 修复了 ztunnel 在引用
Service端口名称时无法正确使用WorkloadEntry端口映射的错误。 (Issue #56251)修复 修复了标签监视器将默认版本与默认标签不一致的问题。这会导致 Kubernetes 网关无法编程。 (Issue #56767)
修复 修复了一个错误,即
InferencePool的影子Service端口号会以 543210 而不是 54321 开头。 (Issue #57472)修复 修复了 Ambient 数据平面无法正确处理解析设置为
NONE的ServiceEntries的问题。此前,该配置会有一个虚拟 IP 地址 (VIP) 但没有端点, 从而导致 “no healthy upstream” 错误。现在,这种情况已配置为PASSTHROUGH服务, 这意味着客户端调用的地址将用作后端。 (Issue #57656)修复 修复了启用 HTTP/2 升级时 HTTP/2 连接池设置未应用的问题。 (Issue #57583)
修复 修复了 waypoint 部署,使其使用默认的 Kubernetes
terminationGracePeriodSeconds(30 秒),而不是硬编码的 2 秒。新增 添加了对
InferencePoolv1 的支持。 (Issue #57219)移除 移除了对
InferencePoolAlpha 和候选发布版本的支持。
安全性
改进 改进了根证书解析,当某些证书无效时, Istio 现在会过滤掉格式错误的证书,而不是拒绝整个证书包。
新增 在
ServerTLSSettings中添加了caCertCredentialName字段, 用于引用保存 mTLS CA 证书的Secret/ConfigMap。有关更多信息, 请参阅用法或参考。 (Issue #43966)新增 添加了 istiod 的可选
NetworkPolicy部署。 您可以设置global.networkPolicy.enabled=true为 istiod 和网关部署默认的NetworkPolicy。 我们计划稍后将其扩展到 istio-cni 和 ztunnel 的NetworkPolicy部署。 (Issue #56877)新增 添加了对在 Sidecar 注入模板中的
istio-validation和istio-proxy容器中配置seccompProfile的支持。 用户现在可以将seccompProfile.type设置为RuntimeDefault以增强安全合规性。 (Issue #57004)新增 添加了对 Gateway API 中
FrontendTLSValidation(GEP-91) 的支持。 有关更多信息,请参阅用法和参考。 (Issue #43966)修复 修复了 JWT 过滤器配置,使其支持自定义空格分隔声明。 JWT 过滤器配置现在除了默认声明(“scope” 和 “permission”)之外, 还能正确包含用户指定的自定义空格分隔声明。 这确保 Envoy JWT 过滤器将这些声明视为空格分隔字符串, 从而能够正确验证包含这些声明的 JWT 令牌。要设置自定义空格分隔声明, 请在
RequestAuthentication资源中的 JWT 规则配置中使用spaceDelimitedClaims字段。 (Issue #56873)移除 移除了使用 MD5 来优化比较。Istio 现在和过去都没有将 MD5 用于加密目的。 此更改仅仅是为了使代码更易于审计,并能在 FIPS 140-3 模式下运行。
遥测
更新 更新了环境变量
PILOT_SPAWN_UPSTREAM_SPAN_FOR_GATEWAY的默认值为true,默认情况下启用网关请求的上游 Span 生成。新增 添加了对注解
sidecar.istio.io/statsFlushInterval和sidecar.istio.io/statsEvictionInterval的支持。新增 添加了对 Zipkin 的
TraceContextOption配置的支持, 以启用 B3/W3C 双标头传播。在 MeshConfig 的extensionProviders中配置trace_context_option: USE_B3_WITH_W3C_PROPAGATION,即可优先提取 B3 标头, 回退到 W3Ctraceparent标头,并将两种标头类型注入上游, 以提高追踪互操作性。有关更多信息, 请参阅 Envoy 文档和MeshConfig参考和用法。移除 移除了指标过期支持。请改用 Bootstrap 配置中的
StatsEviction。
扩展性
- 修复 修复了根命名空间中使用
targetRef且类型为GatewayClass、 组为gateway.networking.k8s.io的EnvoyFilter没有正确传播的问题。
安装
更新 更新 istiod Helm Chart,为远程 istiod 安装创建
EndpointSlice资源而不是Endpoints资源,因为从 Kubernetes 1.33 开始,Endpoints已被弃用。 (Issue #57037)更新 已将 Kiali 插件更新至 v2.17.0 版本。
新增 添加了可以完全取消Gateway Chart 中的资源限制或请求的功能。
新增 添加了对 Helm Chart 基于“角色”安装的支持,该安装基于生成/应用的资源的范围。
- 如果没有设置
resourceScope,则会安装所有资源。这与用户对 1.27 版本 Chart 的预期行为一致。 - 如果将
resourceScope设置为namespace,则只会安装命名空间范围的资源。 - 如果将
resourceScope设置为cluster,则只会安装集群范围的资源。这样,Kubernetes 管理员可以管理集群中的资源,而网格管理员可以管理网格中的资源。 对于 ztunnel Chart,resourceScope是一个顶级字段。 对于所有其他 Chart,它是global下的一个字段。 (Issue #57530)
- 如果没有设置
新增 添加了对环境变量
FORCE_IPTABLES_BINARY的支持, 以覆盖 iptables 后端检测并使用特定的二进制文件。 (Issue #57827)新增 已将
.Values.podLabels和.Values.daemonSetLabels添加到 istio-cni Helm Chart 中。新增 添加了 Gateway Chart 中的
service.clusterIP配置, 以支持覆盖Service资源的spec.clusterIP设置。 这在用户希望为 Gateway 服务设置特定集群 IP 而不是依赖自动分配的情况下非常有用。新增 添加了一种使用集群 IP 服务表示修订标签的新方法, 旨在停止在 Ambient 模式下使用变更 Webhook。
istioctl tag set <tag> --revision <rev>命令和revisionTagsHelm 值都会使用当前规范创建一个MutatingWebhook, 以及一个类似于 istiodService的Service,但包含istio.io/tag标签以存储映射关系。新增 添加了
internalTrafficPolicy选项, 用于 Gateway 服务(例如,当使用网关作为内部应用程序安装 ArgoCD 时需要此选项)。修复 修复了默认安装创建的 PDB 阻止 Kubernetes 节点排空的问题。 (Issue #12602)
升级 Gateway API 支持至 v1.4。这引入了对
BackendTLSPolicyv1 的支持。
istioctl
新增 添加了
istioctl命令默认版本自动检测功能。 当未显式指定--revision参数时,将自动使用默认版本(由istioctl tag set default配置)。 (Issue #54518)新增 添加了对
istioctl admin log参数同时指定--level和--stack-trace-level的支持。 (Issue #57007)新增 添加了支持使用
--proxy-admin-port标志为istioctl experimental authz、istioctl proxystatus、istioctl bug-report和istioctl experimental describe指定代理管理端口。新增 添加了标志以支持
istioctl experimental internal-debug的列表调试类型。 (Issue #57372)新增 添加了对显示
istioctl ztunnel-config all连接信息的支持。修复 修复了 IST0173 分析器 (
DestinationRuleSubsetNotSelectPods) 错误地将使用拓扑标签的DestinationRule子集标记为未选择任何 Pod。