最新的 Istio 版本受到了希望将服务网格扩展到传统工作负载的用户的广泛期待。Istio 1.7 通过使虚拟机看起来更像 Istio 中的一个 pod,为使虚拟机成为网格中的一种抽象形式奠定了一些基础。在最新的 1.8 版本中,Istio 解决了服务网格中 DNS 的一个关键问题,极大的帮助了将网格向虚拟机的扩展,实现了无缝多集群访问,并且继续在 1.7 奠定的基础上使虚拟机更容易注册到网格中。

网格中的虚拟机

智能 DNS 代理透明地拦截来自应用程序的 DNS 查询。 正如 Shriram Rajagopalan 在 发表的博客里所解释的那样

“从 Istio 1.8 开始,sidecar 上的 Istio agent 将附带一个缓存 DNS 代理,由 Istiod 动态编程。Istiod 会根据集群中的 Kubernetes service 和 service entry,为应用可能访问的所有服务推送主机名到 IP 地址的映射。来自应用程序的 DNS 查询会被 pod 或虚拟机中的 Istio 代理透明地拦截和提供服务。如果查询是针对网格内的服务, 无论该服务在哪个集群中,代理都会直接响应应用程序。 如果不是,代理则将查询转发到 /etc/resolv.conf 中定义的上游名称服务器。”

除了智能 DNS 代理之外,Istio 1.8 还增加了一个 WorkloadGroup,它描述了一个用于非 Kubernetes 工作负载的工作负载实例的集合。它提供了一个规范,工作负载实例可以使用该规范来引导其代理,包括元数据和身份标识。通过使用 WorkloadGroups,Istio 已经开始帮助 istioctl 实验性 workload group 自动化虚拟机注册

企业服务网格公司 Tetrate 在客户部署中广泛使用这些虚拟机特性,并为多集群和多云化构建了服务网格平台。Run Istio Everywhere 是 Tetrate 创立时使命的重要组成部分。

其他新功能

  • 应用户需求,Istio 1.8 重新官方引入了对 Helm v3 的安装和升级支持。 在之前的版本中,安装是通过 istioctl 命令行工具或 Istio Operator 来完成的。. 在 1.8 版本中,除了 Operator 和基于 CLI 的安装方式外,Istio 还支持使用 Helm 进行 in-place 升级和 canary 升级。
  • Istio 1.8 附带了 新的安装指南 ,使安装跨多集群的网格更加轻松,并提供了在同一网络上运行多个控制平面或多个集群的选择。本次更新减少了设置跨多集群网格所需的手动工作。
  • Istio 1.8 中的一个实验性功能支持第三方 CA 与 Istio 生态系统的集成,利用了新的 Kubernetes 证书签名请求(CSR)API。Istiod 作为注册机构,对工作负载进行身份验证和授权,并管理 CSR 资源的更新。这使得第三方(如证书管理器)能够为后端 CA 创建签名证书。
  • istioctl 命令行工具支持新的 bug 报告功能(istioctl bug-report),可以用来收集调试信息和获取集群状态。
  • 再见 Mixer:Mixer 组件在 1.8 版本中已经完全废弃。对于可扩展性,你可以使用 Envoy 代理并查看 GetEnvoy 工具包 使开发人员更容易为 Envoy 创建 Wasm 扩展。
  • 在 1.8 中改进的网关证书改善了用户的安全状况,并为未来改进取密功能做好准备。

关于 Tetrate

Tetrate 是 Istio 的主要贡献者,Istio 是全球开源社区支持的事实上的标准服务网格。 我们的产品解决了跨不同系统扩展服务网格的复杂性。 Tetrate Service Bridge 建立在 Istio 和 Envoy 的基础上,连接应用并提供管理平面,使用户能够根据其组织的需求和现实情况来规划其基础设施。 如果你想讨论你的大型复杂部署或咨询我们帮助创建应用感知网络,请与我们联系。

本博客由 Tetrate 的 Tevah Platt 和宋净超撰写, Zack Butcher 审阅。