1.9.0 的重点在于改善用户在生产中运行Istio的day 2操作,改善用户使用istio的稳定性,确保Istio核心API与功能的稳定,使用户放心与安全地使用。
istio 1.9.0 解读报告 - day2 操作
虚拟机服务
虚拟机服务提升到 Beta 版本。虚拟机中的工作负载进一步成为Istio服务网格的一部分,能够应用一致的策略,并跨容器和虚拟机收集遥测数据。VM集成的稳定性、测试和文档得到进一步的完善与支持。虚拟机的架构请参考:https://istio.io/latest/docs/ops/deployment/vm-architecture/。
请求分类(Request Classification)
服务的监控、请求分类上升为 Beta 版本。通过 EnvoyFilter 进一步细化mesh调用的请求与响应的相关指标,此功能使用户可以更精确地了解和监视其服务网格中的流量。
Kubernetes Service API 支持
Kubernetes Service API 的支持提升到 Alpha 版本。 详情可见 https://istio.io/latest/docs/tasks/traffic-management/ingress/service-apis/
与外部授权系统集成
授权策略现在支持 CUSTOM 动作的实验性功能,允许用户更容易地与外部授权系统(如 OPA、OAuth2 等)集成。
远程获取和加载WebAssembly(Wasm) HTTP Filter(实验性)
现在,Istio支持一项实验功能,可以从远程仓库中获取WebAssembly模块并动态(重新)加载它们,而无需重新启动服务网格中的代理。可以将自定义C++ 代码注入到服务网格中处理Istio API之外的使用场景。
镜像 gcr.io 上的 image
为了防止用户受到 Docker Hub 限速政策的影响,我们现在将所有的镜像发布在gcr.io/istio-release上。我们在安装步骤中选择性地将hub设置为 gcr.io/istio-release,以绕过与Docker hub下载镜像失败相关的问题。请注意,Docker hub仍然是Istio安装的默认 hub。
istioctl 命令行工具
新增加的verify-install命令,告知用户是否存在安装配置错误。analyze 子命令可以检查是否使用了不建议使用的注释或Alpha级别的注释。
总结
istio 1.9.0 istiocoredns 已被废弃。
对比
功能 | Istio 1.8.1 | Istio 1.9.0 |
---|---|---|
安装 | 1. 提升外部控制面安装提升到 alpha 功能2. 升级 kiali 到1.263. 修改 sidecar 注入 securityPolicy.fsGroup(Kubernetes 1.19+支持)4. 弃用 values.global.meshExpansion.enabled(VM 使用),转而使用 values.gateways.istio-ingressgateway.meshExpansionPorts。5. 弃用 istioctl 安装第三方遥测功能。Prometheus、 Grafana、Zipkin、Jaeger、Kiali | 1. 在 istioctl 安装或 istioctl 升级中使用 –verify 选项。增加了控制平面运行状况的安装后/就地升级验证。2. 添加 pprof 端点到 pilot-agent。3. base 中添加了 enableIstioConfigCRD 参数,使用户确认是否安装某个 Istio CRD。4. 添加 Istio 1.9 支持 Kubernetes 版本 1.17 至 1.20 版本说明。5. 增加了对通过 Sidecar API 绑定到其 pod IP 地址而不是通配符或本地主机地址的应用程序的支持。6. 当显式指定 hpa 的 helm 值时,修复 HPA 不生效的 bug。7. 增强了 sidecar 注入,以便更好地利用 pod label 来确定是否需要 sidecar 注入。在此版本中,默认情况下未启用此功能,但可以使用 –set values.sidecarInjectorWebhook.useLegacySelectors=false 进行测试。8. 将 Kiali 组件升级为最新版本 v1.29。 |
流量管理 | 1. 在 istio-agent中默认为VM新增DNS 嗅探,istioctl x workload entry configure2. 为了指定Envoy配置的HTTP_ROUTE规范的顺序,新的INSERT_FIRST,INSERT_BEFORE,INSERT_AFTER操作已添加到EnvoyFilter API。为了能够覆盖HTTP和网络过滤器,在EnvoyFilter API中添加了新的REPLACE操作。3. 新增Istio resource 资源状态4. 当Node节点具有多个IP地址(例如,扩展场景中的VM)时,Istio Proxy现在会将inbound listener绑定到列表中的第一个适用地址(新行为),而不是最后一个(以前的行为)5. 网关从Istiod获取证书。如果必要可以设置 ISTIOD_ENABLE_SDS_SERVER=false | 1. 已将添加 pprof端点添加到pilot-agent。2. 添加了允许使用–log_output_level启用gRPC日志记录。3. 添加了新的实验性代理选项DNS_AUTO_ALLOCATE,以控制ServiceEntry地址的自动分配。以前,此选项绑定到DNS_CAPTURE。现在,无需启用自动分配即可启用DNS_CAPTURE。有关更多信息,请参见智能DNS代理。4. 如果网关Pod没有足够的权限,则固定istiod将不再为特权网关端口(<1024)生成侦听器。修复了很多的ServiceEntries导致占用大量内存的问题。删除了通过 MCP读取Istio配置的支持。 |
安全 | 1. 基于请求的原始源IP地址来允许/拒绝请求使用X-Forwarded-For或代理协议请更新AuthorizationPolicy资源以使用新的 remoteIpBlocks/notRemoteIpBlocks2. AuthorizationPolicy 支持嵌套的jwt 功能、AUDIT 审计功能。备注:不用使用 remoteIpBlocks、remote_ip(对于非http协议),等待新的release发布。 | 1. 添加了选项,以允许用户为其XDS流启用令牌交换,该交换将k8s令牌交换为可以由其XDS服务器进行身份验证的令牌.2. 添加了同时支持JWKS-URI和OIDC发现的OIDC JWT身份验证器。 通过JWT_RULE env变量配置时,将使用OIDC JWT身份验证器。3. 通过过滤器链增加了对PeerAuthentication端口级别配置的支持。4. 在AuthorizationPolicy中添加了实验性的CUSTOM操作,以与外部授权系统(如OPA,OAuth2等)集成。 |
遥测 | 1. Control Plane Dashboard 和 Performance Dashboard使用 container_memory_working_set_bytes 指标可视化内存2. 对于Grafana 新增 datasource 参数3. 当Envoy中设置了ResponseFlag,新增Listener Access Logs4. 新增对OpenCensusAgent格式的 Trace Export的支持,并带有可配置的跟踪上下文Header5. 新增代理配置用于控制Envoy统计信息的生成6. 对于 Grafana新增 Istio Wasm Extension7. 对于 prometheus新增proxy grpcistio_request_messages_total、istio_response_messages_total 指标8. 正式已移除Mixer 相关特性与功能 | 1. 在Envoy生成的跟踪范围中添加了规范服务标签2. 更新了Prometheus指标,默认情况下所有方案都包括source_cluster和destination_cluster标签3. 更新了默认访问日志,包括代理版本> = 1.9的RESPONSE_CODE_DETAILS和CONNECTION_TERMINATION_DETAILS |
数据面拓展性 | Wasm | 使用IstioAgent添加了可靠的Wasm模块远程加载方式。 |