istio 1.9.0 解读报告 - day2 操作

Posted by 陈谭军 on Thursday, July 1, 2021 | 阅读 |,阅读约 6 分钟

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.1Istio 1.9.0
安装1. 提升外部控制面安装提升到 alpha 功能
2. 升级 kiali 到1.26
3. 修改 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 configure
2. 为了指定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/notRemoteIpBlocks
2. 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 Logs
4. 新增对OpenCensusAgent格式的 Trace Export的支持,并带有可配置的跟踪上下文Header
5. 新增代理配置用于控制Envoy统计信息的生成
6. 对于 Grafana新增 Istio Wasm Extension
7. 对于 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模块远程加载方式。