Istio 1.3 发布,大型微服务系统管理工具

Istio 是一个由谷歌、IBM 与 Lyft 共同开发的开源项目,旨在提供一种统一化的微服务连接、安全保障、管理与监控方式。Istio 项目能够为微服务架构提供流量管理机制,同时亦为其它增值功能(包括安全性、监控、路由、连接管理与策略等)创造了基础。这款软件利用久经考验的 Lyft Envoy 代理进行构建,可在无需对应用程序代码作出任何发动的前提下实现可视性与控制能力。Istio 项目是一款强大的工具,可帮助 CTO/CIO 们立足企业内部实施整体性安全、政策与合规性要求。

发布说明

我们很自豪地发布了 Istio 1.3

我们花了3个月的时间对整个产品进行了一些重大改进,并修复了Istio社区的提出的问题。

本发行说明介绍 Istio 1.2.5Istio 1.3 之间的不同之处。

流量管理

  • 未根据 Istio 约定命名端口时,自动为出站流量添加 HTTP 或 TCP。
  • 为Gateway API添加了一种模式,用于相互TLS操作。
  • 修复了当一个服务首先在网络上在允许的相互TLS进行通信时出现的问题,如MySQL和MongoDB。
  • 改进了Envoy代理就绪检查。现在可以检查Envoy的状态。
  • pod spec 中不再需要修改容器端口。默认情况下捕获所有端口。
  • 改进了 EnvoyFilter API,现在可以添加或更新所有配置
  • 改进了redis负载均衡器,在使用 redis proxy 时默认为MAGLEV。
  • 改进了负载平衡,默认情况下将流量定向到同一区域和区域。
  • 通过降低CPU利用率来改进Pilot。根据具体部署,减少量接近90%。
  • 改进了 ServiceEntry API ,以允许在不同的命名空间中使用相同的hostname。
  • 改进了 Sidecar API ,来自定义OutboundTrafficPolicy策略。

安全性

  • 为使用TLS的服务添加了信任域验证。默认情况下,server仅对来自同一信任域的请求进行身份验证。
  • 添加lables以控制根据namespace生成的service帐户密钥。
  • 添加了SDS支持,以便为每个Istio控制plane服务提供私钥和证书。
  • 添加了对Citadel内省的支持。
  • 向端口15014上的Citadel Agent的 /metrics 添加度量,用于监听SDS服务。
  • 为Citadel Agent添加诊断,通过在8080端口上的 /debug/sds/workload/debug/sds/gateway
  • 改进了 ingress网关 ,以便在使用sds时从单独的secret加载受信任的ca证书。
  • 通过强制使用 Kubernetes Trustworthy JWTs 来提高sds的安全性。
  • 改进了Citadel Agent日志,通过统一日志的pattern。
  • 当使用早于1.13的Kubernetes版本时,移除对Istio SDS的支持。
  • 临时移除了与 Vault CA 的集成。SDS要求导致临时删除,但我们将在以后的版本中重新引入Vault CA集成。
  • 默认情况下启用Envoy JWT过滤器以提高安全性和可靠性。

Telemetry

  • 为Envoy gRPC添加了访问日志服务ALS支持。
  • 为Citadel监控添加了Grafana仪表盘。
  • 添加了用于监控sidecar注入webhook的指标。
  • 添加了控制平面指标以监控Istio的配置状态。
  • 添加了针对Passthrough和BlackHole集群的流量的telemetry报告。
  • 使用Prometheus为poxy内生成服务指标添加了alpha支持。
  • 在Envoy节点元数据中添加了对环境元数据的alpha支持。
  • 为 Metadata Exchange添加了alpha支持。
  • 为OpenCensus跟踪驱动程序添加了alpha支持。
  • 通过移除添加服务条目的要求,改进了对外部服务的报告。
  • 改进了网格仪表板,以监控Istio的配置状态。
  • 改进了Pilot仪表板以公开其他关键指标,以更清楚地识别错误。
  • 移除了已弃用的Adapter和Template自定义资源定义(CRD)。
  • 弃用的Mixer适配器。请开始转换到新扩展模型的所有扩展。Legacy Mixer集成支持仅适用于Istio 1.3和1.4。
  • 不推荐使用用于生成API属性的HTTP API规范。我们将在Istio 1.4中移除生成API属性的支持。

Policy

  • 改进了速率限制,以便在配额后端不可用时允许通信。

配置管理

  • 修复了Galley关闭连接时阻塞过多GRPC ping的问题。
  • 改进Galley以避免控制平面升级失败。

istioctl

  • 添加了istioctl实验清单来管理新的实验安装清单。

  • 添加了istioctl实验配置文件来管理新的实验安装配置文件。

  • 添加了istioctl实验指标

  • 添加了istioctl实验描述pod来描述Istio pod的配置。

  • 添加了istioctl实验性的 add-to-mesh ,以将Kubernetes服务或虚拟机添加到现有的Istio服务网格中。

  • 添加了istioctl实验性的 remove-from-mesh ,以从现有的Istio服务网格中删除Kubernetes服务或虚拟机。

  • 将istioctl实验转换入口命令提升为 istioctl convert-ingress

  • 将istioctl实验仪表板命令提升为istioctl dashboard。

其他

  • 添加了基于distroless基本镜像的新镜像。
  • 改进了Istio CNI Helm,使其与Istio具有一致的版本。
  • 改进了Kubernetes Jobs的行为。当job手动调用 /quitquitquit 端点时,Kubernetes Jobs现在可以正确退出。