在这篇文章中,我将通过深入研究Maesh我的项目背地的技术细节,探索服务网格接口(Service Mesh Interface,SMI)标准的高级概念,是什么使该我的项目在其余我的项目中唯一性,以及它们对SMI标准的奉献。此外,我还会介绍这个生态系统中的其余合作伙伴。对于不相熟SMI的读者,在深刻探讨技术局部之前,我将简要介绍一下该项目标历史和指标。
SMI我的项目简介
微软于2019年5月在KubeCon欧洲大会向全世界发表了SMI我的项目。该项目标指标是为宽泛采纳的日常用例定义一组API形象。在撰写本文时,该接口涵盖了拜访控制策略、指标(遥测)、流量和路由(流量转移)。在2020年4月,微软慷慨地将这个我的项目捐献给了CNCF沙箱,为社区提供了一个中立的家。
微软Brendan Burns在2019年3月对SMI标准做出了最后的提交,明确了我的项目的用意:人们应该可能应用和定义服务网格配置,而不须要紧紧绑定到任何特定的实现。我的项目的指标是建设一套标准规范,涵盖服务网格最宽泛应用的各个方面。
该标准没有规定采纳SMI API的组织必须受到束缚。供应商可能构建超出SMI API范畴的扩大或性能。激励采纳者用一种与供应商无关的办法来实现他们的用例,并通过对我的项目的奉献来倒退SMI标准。只管这个我的项目还很年老,但许多组织目前正在这样做,包含Containous以及Maesh我的项目。
谁参加了SMI标准?
好消息是,在实现SMI标准时,有多个提供者在不同水平上参加进来。为了更好地了解这些供应商以及他们与生态系统的关系,我将简要介绍他们是谁以及他们解决了什么问题。
服务网格实现
有一类软件通过应用SMI组定义的API间接实现SMI。每个实现都有其独特的属性。例子包含:
- Istio:应用边车(sidecar)运行Envoy
- Linkerd:应用自定义的边车代理实现
- Consul Connect:利用边车代理,如Envoy和用于测试的内置代理,也反对用户定义的代理(HAproxy)
- Maesh:应用自定义代理实现(Traefik)应用每个节点(DaemonSet)代理的办法
治理立体
尽管这些工具可能不能间接实现SMI所涵盖的性能,但它们通过采纳和治理反对SMI标准的技术,在生态系统中扮演着重要的角色:
- Weaveworks Flagger:作为Kubernetes部署的管制立体,同时反对多个服务网格实现
- Service Mesh Hub:作为多个服务网格实现的治理立体
- RIO:作为Linkerd的治理立体
介绍Maesh:一个更简略的服务网格
SMI标准的一个新实现是Maesh,它装置在Kubernetes集群上,并实现多个SMI API,以反对在集群上运行的服务之间进行货色通信。咱们对服务网络有一个独特的认识,它提供了采纳的灵活性、更低的性能开销和更少的破坏性降级。
陈腐的办法
作为团队构建Maesh的终点,实现SMI API十分有意义。API对已被宽泛采纳的个性提供了明确的共识,从而确保工程师不会浪费时间解决无限的用例。而后,咱们可能专一于激发我的项目灵感的愿景,摈弃了服务网格景观中一些先前的假如。
在下面的图中,留神到显著不足边车代理。这是设计好的,让咱们看一下。
深刻理解技术畛域
在深刻理解Maesh中的技术细节以及如何实现无际车的服务网格之前,读者能够先理解一下本节中探讨的一些组件和配置,这可能会对你有所帮忙。
- DNS存根(DNS stubbing):这个性能是由CoreDNS裸露进去的,CoreDNS是部署在大多数Kubernetes发行版中的默认DNS提供商,它容许定义公有DNS区域,通常称为“存根域”(stub domain)
- kube-dns:Kubernetes中的CoreDNS组件,负责解决公有(外部)DNS申请
- kube-proxy:在每个Kubernetes节点上操作,负责负载平衡和代理外部UDP、TCP和SCTP数据包,用于服务对服务的通信
该团队决定采纳一种办法,即应用DNS存根为CoreDNS打补丁,因而kube-dns将在外部解决特定于maesh的域查问。在Kubernetes中匹配规范DNS模式的申请将持续通过kube-proxy进行路由。相同,匹配存根条目标申请,service-name.local.maesh的,将通过它部署的Traefik代理进行路由。
Maesh部署的控制器解决SMI对象的接管,并配置每个Traefik代理节点(部署为DaemonSet),容许独立的pod无需任何批改即可操作。这种办法满足了最后的三个指标,不须要边车代理:
- 确保用户能够降级服务网格而不中断
- 缩小操作的开销
- 提供方便地抉择进入或退出服务网格的灵活性
下一步
Maesh我的项目目前正在采纳mTLS来进行东西方的平安通信,但也在为SMI我的项目奉献UDP通信类型标准的过程中。Containous很快乐能成为这一致力的一部分,咱们也很期待看到其余SMI合作伙伴正在打算的翻新。
Maesh我的项目是开源的,总是对贡献者凋谢。咱们正在开发v1.4,其中包含实现一些最新的激动人心的更新,比方在流量标准中减少了HTTP头路由和流量宰割。如果你想理解更多对于奉献的信息,请在任何未解决的问题向咱们介绍你本人。
申明:这篇文章的作者受雇于Containous,Maesh我的项目的创建者和维护者。
Kevin Crawley
@notsureifkevin
点击浏览网站原文。
CNCF (Cloud Native Computing Foundation)成立于2015年12月,隶属于Linux Foundation,是非营利性组织。
CNCF(云原生计算基金会)致力于培养和保护一个厂商中立的开源生态系统,来推广云原生技术。咱们通过将最前沿的模式民主化,让这些翻新为公众所用。扫描二维码关注CNCF微信公众号。