8月31日,Istio 1.31正式发布。这个版本做了两件大事:一是让团队可以把agentgateway当作七层waypoint代理跑在ambient mesh里,二是停止把容器镜像和Helm chart发布到Google Cloud。
对还在用gcr.io/istio-release、registry.istio.io或谷歌托管Helm仓库的团队来说,这不是一个可以慢慢看的更新。下一次计划中的"尖叫测试"将在10月13日进行,届时旧端点会被禁用,而它们的正式退役时间定在12月。Istio 1.31.0支持Kubernetes 1.32至1.36。
agentgateway成为waypoint选项
waypoint支持建立在1.30版本引入的实验性gateway-only集成之上。agentgateway是一个用Rust写的数据平面,专为agent流量打造,由Solo.io捐赠给Linux Foundation,除了普通HTTP,它还能处理Model Context Protocol这类协议。
要启用它,团队需要使用新的istio-agentgateway-waypoint GatewayClass。1.31同时修复了agentgateway后端的ListenerSet处理和mTLS连接问题。
waypoint之间的流量切换目前处于alpha阶段。维护者明确警告:标签、注解和行为都可能发生变化。
切换机制本身也是新的。一个服务或命名空间可以通过use-waypoint-canary标签指定一个金丝雀waypoint,再用use-waypoint-canary-weight注解把可配置比例的新建mesh内连接发往金丝雀,客户端不需要做任何改动。
已建立的连接不会被迁移,所以长连接可能延迟实际观测到的流量切分效果。
9月21日发布的Istio 1.31.1修复了一个问题:仅作为金丝雀被引用的agentgateway waypoint没有被编程上引用它们的服务的路由和策略,导致被切换的连接遭到拒绝。这个补丁还包含安全修复,并修正了纯IPv6集群中ALLOW_ANY_DYNAMIC_DNS的转发问题。
大规模mesh的两个新工具
DestinationRule和MeshConfig上新增的zoneAwareLbSetting字段,让Envoy可以优先路由到下游代理自身可用区内的端点,只有在本地容量耗尽时才溢出。这个判断由Envoy自动完成,而不是像localityLbSetting那样依赖静态百分比。
另一个是ALLOW_ANY_DYNAMIC_DNS出站模式,它在请求时从HTTP Host头解析主机名,省去了为每个外部目标写ServiceEntry的麻烦。
安全方面,COMPLIANCE_POLICY环境变量新增了fips-140-3取值,将TLS限制在1.2或更高版本、FIPS合规的密码套件以及P-256和P-384曲线。
变更说明特别指出,Go组件必须用Go 1.24或更高版本、配合GOFIPS140=v1.0.0或更新的已验证版本构建;只设置运行时策略是不够的。
AuthorizationPolicy上新增的trustDomains和notTrustDomains字段,可以按对端证书中的信任域来匹配或排除请求。
为什么搬离谷歌云
托管变更要求使用现有仓库的团队采取行动。微软的Steven Jin和Solo.io的Keith Mattix在8月21日的Istio博客中写道:"今年,由于资金模式的变化,Istio正在把所有基础设施从Google Cloud Platform迁移到Amazon Web Services。"
下一次计划中的尖叫测试将在10月13日15:00至18:00 UTC禁用旧端点;最后一次测试从12月8日15:00 UTC持续到12月9日15:00 UTC。
验证镜像签名的团队还需要考虑密钥轮换:迁移指南列出1.31.0使用istio-key.pub,1.31.1及以后使用istio-key-v2.pub。在被问及为何选择Docker Hub而非GHCR时,Jin在跟踪用的GitHub issue中回复说"GHCR有一些未记录的限制",并补充道,"以我们目前的使用量,我认为我们很容易就会超出这些限制"。
热门跟贴