翻译|布加迪评论|孙淑娟虽然Istio1.15没有太多新特性,但Istio1.16做了很多改进。值得注意的是,由于支持从N-2到N的版本跳过升级,Istio项目一直致力于发布更多偶数版本号的改进,奇数版本号作为稳定版本号,以便人们可以轻松实现从N-2版本升级到N版本跳过升级。这篇博文重点介绍了Istio1.16中我们特别兴奋的几个新功能和改进。sidecar和ingress支持基于HTTP的覆盖网络环境(HBONE)。在KubeConUS2022上,我们发现Istio环境网格(ambientmesh)非常受欢迎。用户喜欢2层架构以促进增量采用。在环境网格中向其添加工作负载非常容易。环境网格还不是Istio1.16的一部分,社区已经成立了一个专门的工作组,将环境网格作为重中之重推送给Istiomaster。对于Istio1.16或更新版本,社区通过在sidecar和入口网关中添加HBONE支持,为sidecar与环境网格中的pod进行互操作铺平了道路。HBONE是一种用于服务间网状通信的新隧道机制。这不是应用程序所有者直接看到或使用的东西,因为它被设计为在代理之间的幕后透明操作(sidecar<->ztunnel<->waypointproxy<->gateway)。考虑到ztunnel和waypoint代理只能通过HBONE发送和接收流量,为了与它们互操作的sidecar,sidecar需要知道目的地是否可以处理HBONE流量,并且只有目的地可以理解HBONE流量才能通过HBONE发送流量(参见图1,AppC到AppA)。如果目的地不支持HBONE,sidecar会像往常一样继续发送经典双向TLS流量(参见图1,AppC到AppB)。图1同样,sidecar知道如何在从ztunnel或路点代理接收到流量时终止HBONE流量(参见图2)。图2要探索此功能,您可以使用您喜欢的Istio安装程序并安装环境配置文件,例如:图3请注意,此配置文件仅为sidecar启用HBONE,真正的环境模式将很快实现。在部署了一个注入了sidecar的简单睡眠应用程序之后,您会注意到network.istio.io/tunnel:HTTP标签被添加到睡眠中,类似于security.istio.io/tlsMode:istio标签。这个新的隧道标签使Istio能够知道代理是否支持HBONE。图4由于此功能是实验性的,默认情况下禁用,因此不建议在生产环境中使用它。发现选择器改进在听取Solol.io的大型客户的意见后,去年我们在Istio上游贡献了发现选择器,以便用户可以动态限制属于网格一部分的命名空间集。我们对社区广泛采用发现选择器感到非常兴奋,这在Istio1.16中得到了改进!不仅可以使用发现选择器来配置Kubernetes资源,在1.16中,您还可以使用发现选择器来配置Istio自定义资源,例如Gateway、VirtualService和DestinationRule。此外,您可以利用发现选择器来配置Istio控制平面。如果您想要为特定控制平面指定允许的网格命名空间,或基于一个或多个命名空间的边界为网格启用软多租户,这些改进将非常有用。这一改进的一大好处是,对于开发者来说,API端没有变化,可以像1.16之前一样继续使用发现选择器。要启用此功能,您可以使用ENABLE_ENHANCED_RESOURCE_SCOPING环境变量启用发现选择器。以下YAML包含使用环境配置文件启用此功能的示例:#环境配置文件启用了环境网格#注意:目前这只为sidecars启用HBONE,因为尚未实现完整的环境模式。apiVersion:install.istio.io/v1alpha1kind:IstioOperatorspec:meshConfig:discoverySelectors:-matchLabels:istio-discovery:enableddefaultConfig:proxyMetadata:ISTIO_META_ENABLE_HBONE:"true"值:pilot:env:PILOT_ENABLE_INBOUND_PASSTHROUGH:"false"PILOT_ENABLE_HBONE:"true"ENABLE_ENHANCED_RESOURCE_SCOPING:"true"范围-discovery=enabled标记default和foo命名空间,并显示sleep部署的路由配置:将review虚拟服务应用到foo和bar命名空间,然后显示sleep部署的路由。您会注意到reviews.foo虚拟服务在路由列表中,但reviews.bar不在。默认情况下,Istio为Kubernetes集群中的每个命名空间创建istio-ca-root-cert配置映射,无论该命名空间是否在网格中有任何服务。发现选择器在1.16改进后,可以选择为配置映射创建命名空间。如果显示每个命名空间的配置映射,您会注意到istio-ca-root-cert配置映射是为default和foo命名空间创建的,而不是为bar命名空间创建的:您不仅可以选择哪些名称用于您的Kubernetes服务如果空间是网格的一部分,您还可以选择哪些名称空间是Istio资源网格的一部分,那不是很好吗?IstioAPI和KubernetesGatewayAPIIstio1.16中的一个关键变化是在Istio的现有API旁边添加了GatewayAPI选项卡用于一些流量管理任务,这是Istio采用KubernetesGatewayAPI的结果。当您浏览流量管理任务时,您会看到某些任务只能通过IstioAPI完成,例如请求超时或故障注入。为什么?因为它们还不能转换为GatewayAPI。由于服务网格社区正在致力于GAMMA项目,该项目旨在为Istio、Linkerd、Consulconnect、Kuma和OSM中的网格运营商和开发人员标准化网格API,我们预计网格API需要一段时间才能实现标准化,同时继续使每个项目能够创新并保持领先于通用API。作为GAMMA项目的贡献者之一,我们对GAMMA的未来发展方向以及作为GAMMA项目一部分的基于角色的项目中立网格API感到兴奋。Wasm方面的改进Istio社区采用了由Solo.io发起的WasmOCI图像规范是一件好事。最近对规范进行了改进以支持多层。例如,您可以根据业务需求轻松添加另一层来标记图像。另一个令人兴奋的变化是在WasmPlugin资源中引入了流量选择器,这使用户能够准确选择WasmPlugin资源应该用于哪些流量。您可能想知道:“这与服务生产者通常的工作负载选择器有何不同?”在不指定任何流量选择器配置的情况下,WasmPlugin用于通过工作负载选择器选择的目标工作负载,而不管服务具有什么检测器。助听器。流量选择器配置使您能够根据特定端口微调选择器并指定工作负载模式。apiVersion:extensions.istio.io/v1alpha1kind:WasmPluginmetadata:name:httpbin-rust-testnamespace:httpbinspec:selector:matchLabels:app:httpbin#定义流量选择器匹配条件#所有条件必须评估为真才能应用匹配的插件:#定义工作负载模式,有效选项为:SERVER、CLIENT、CLIENT_AND_SERVER-mode:SERVER#定义要匹配的端口号。如果不指定,则匹配所有端口-ports:-number:80url:oci://docker。io/dhawton/wasm-rust-test:v1使用上面的WasmPlugin资源为httpbin工作负载提供端口80,我们可以将一个简单的Wasm过滤器部署到httpbin的Envoy代理中,它执行非常基本的日志记录任务,等待HTTP请求进来.当找到路径匹配时,插件将返回一个418状态代码,后跟ASCII字符,然后暂停Envoy的其余过滤器。以下是Wasm过滤器的逻辑:self.context_id);self.send_http_response(418,vec![("x-powered-by","rust"),("content-type","text/plain")],Some(TEAPOT_ASCII),);Action::Pause}_=>Action::Continue,}部署WasmPlugin配置后,我们可以看到httpbin的/get端点在80端口的curl被Wasm过滤器拦截,而没有重新启动httpbin部署。我们如何证明选择性匹配?我们将使用以下配置(将端口号80更改为81)来演示Wasm过滤器未应用于httpbin流量:apiVersion:extensions.istio.io/v1alpha1kind:WasmPluginmetadata:name:httpbin-rust-testnamespace:httpbinspec:selector:matchLabels:app:httpbinmatch:-ports:-number:81url:oci://docker.io/dhawton/wasm-rust-test:v1如果我们运行相同的curl,我们应该看到上面的WasmPlugin资源和端口80上的httpbin工作负载不受影响,因此我们从httpbin获得了预期的响应。结论Istio1.16是社区发布的另一个激动人心的版本。还有许多其他的改进没有在本文中介绍,请参考版本变更说明以查看所有其他改进,包括:支持MAGLEV负载平衡算法、支持使用OpenTelemetrytraceprovider和TelemetryAPI、新的远程配置文件等。.原标题:Istio1.16出来了,它对环境网格和你意味着什么?,作者:LinSun和DanielHawton
