今天我们高兴地宣布,Linkerd 2.8已经正式发布!新的版本为Linkerd引入了多集群扩展机制,使其能够跨Kubernetes集群建立连接,保证各集群的安全性与透明性,并可以与任意网络拓扑一同使用。我们认为,这项多集群扩展机制正是目前实现Kubernetes多集群安全连接的最佳选项。另外,2.8版本还为Linkerd引入add-on系统,帮助其进一步提升模块化水平;同时引入多项其他功能与稳定性改进。
1用Kubernetes的方式实现多集群Kubernetes
Linkerd 2.8的全新多集群功能,意味着Linkerd现在能够以安全的、对应用程序完全透明且独立于网络拓扑之外的方式跨集群边界接入各项Kubernetes服务。这项多集群功能,旨在满足以下几项核心目标:
1.提供统一的信任域。源工作负载与目标工作负载的身份必须在集群边界内与跨集群边界处的每个步骤进行验证。
2.分离故障域。某一集群发生宕机,其他集群应该仍可正常运行。
3.支持异构网络。由于集群可以跨越不同云环境、VPC、本地数据中心及其组合,因此除网关连接之外、Linkerd不应引入任何L3/L4要求。
4.提供具备集群内通信能力的统一模型。Linkerd为集群内通信带来的可观察性、可靠性与安全性功能,也将扩展到新的跨集群通信体系当中。
与集群内连接一样,Linkerd的跨集群连接同样对应用程序代码完全透明。例如,集群west上的服务A可以将集群east上的服务C直接寻址为C.east的形式以实现直接通信;或者自动将其寻址为C.east,并由Linkerd自动将服务流量路由(甚至部分转移)至集群C。无论这些通信是发生在同一集群之内、跨越同一数据中心或VPC内的多个集群,抑或是跨越公共互联网,Linkerd都能在集群之间建立连接,并通过mTLS在两端完成加密与身份验证。
这项新的多集群功能可为Linkerd解锁大量用例,包括故障转移(在出现故障时跨越数据中心或云转移流量);“反向多租户”(每个租户都拥有自己的集群);混合云(工作负载可在本地环境与云环境之间往来移动,且不影响应用程序的其余部分)等等。
最后,与Linkerd的其他功能一样,多集群“服务镜像”方案能够充分利用现有Kubernetes功能,尽可能减少额外组件的介入。远程服务将被直接表示为Kubernetes服务,不引入任何新的CRD,且配置复杂度也将继续保持在最低水平。
2Ambassador支持多集群方案
这里我们还要向大家宣布,Ambassador项目的开发团队已经创建出多集群集成,允许用户们使用Ambassador部署作为Linkerd的多集群网关!感兴趣的朋友可以访问Ambassador项目博客以了解更多详细信息[1]。
3插件
2.8版本引入一套简单的add-on插件系统,用于从Linkerd处添加(或移除)各类功能。Linkerd 2.8自带两款插件:
◾Jaeger插件,用于添加Jaeger与oc-collector组件,旨在收集并显示对集群的分布式跟踪结果。
◾Grafana插件(默认启用),用于向Linkerd仪表板添加Grafana图。 未来,我们将不断把更多功能以插件的形式推出。例如,您可以删除默认的Prometheus安装,转而使用您自己指定的其他工具。
4还有更多
Linkerd 2.8还带来诸多其他改进、性能增强与bug修复,具体包括:
◾通过新的Prometheus配置选项,Helm图表的灵活性与模块化水平都将得到提升。
◾代理现在使用pod元数据对发出的分布式跟踪范围进行标记。
◾对代理做出多项性能改进,旨在减少争用、改善延迟并减少伪超时。
◾自动预防常见的流量循环场景。
关于更多详细信息,请参阅完整的发行版说明[2]。
5Linkerd项目后续发展路线图
我们坚信,Linkerd的核心价值正是其连通性——在云原生世界中,这种连通性不仅意味着“A与B可以交换数据包”,而更多体现为“A与B可以相互验证对方身份并交换数据包”。换句话说,其中包含着清晰的授权语义、可对第三方保密,且整个流程完全可测量、可检查。
展望未来,我们相信Linkerd能够成就这种连通性,并将其转化为适用于Kubernetes使用场景的安全平面。2.8版本的推出,标志着Linkerd又朝着这个方向迈进了一大步。在接下来的几个版本中,我们将继续充实Linkerd功能集,包括将mTLS扩展至所有连接、引入新的策略等等。我们仍在努力,大家敬请期待!
6立即使用!
准备好尝试Linkerd了吗?我们在每周实验版本[3]发布中已经向一部分用户朋友放出了最新版本。当然,大家也可以运行以下命令获取稳定的2.8版本:
1
curl https://run.linkerd.io/install | sh