为特使建立控制平面的指南-部署权衡
部署控制平面组件
构建并设计了控制平面后,您将需要确切确定如何部署其组件。 在这里,您可以选择将控制平面与数据平面共置一处以集中控制平面。 这里还有一个中间立场:部署与控制平面位于同一位置的某些组件,并使某些组件保持集中。 让我们来看看。
在Istio服务网格项目中,控制平面组件的部署和运行与数据平面分开进行集中管理。 也就是说,数据平面与应用程序一起运行,并处理所有应用程序流量,并通过gRPC流上的xDS API与控制平面进行通信。 控制平面组件通常在其自己的名称空间中运行,并且理想情况下应防止意外使用。
Gloo项目遵循类似的部署模型。 控制平面组件与数据平面分离,而Envoy数据平面使用xDS gRPC流传输来收集有关侦听器,路由和集群等的配置。您可以使用Gloo部署与数据平面代理位于同一位置的组件,但这就是泄气。 我们将稍后讨论一些权衡。
最后,我们来看一下将控制平面组件与数据平面共同部署的情况。 在Contour项目中,默认情况下,控制平面组件与数据平面一起部署,尽管可以选择拆分部署 。 Contour实际上使用杠杆CRD或Ingress资源进行配置,因此所有配置文件的处理和监视都在Kubernetes中进行。 但是,xDS服务与数据平面共同部署(同样,默认情况下,您可以拆分它们)。
当eBay为部署Envoy构建其控制平面时 ,他们还将其控制平面的部分(发现部件)与数据平面进行了联合部署。 他们基本上编写了一个控制器来监视CRD,Ingress和Service资源,然后生成配置映射。 然后,这些配置映射将由与Pod一起运行的discovery
容器消耗,并提供给Envoy。
![](/assets/blank.gif)
![](/assets/blank.gif)
我应该分开控制飞机吗?
各种方法各有利弊。 Gloo团队认为,对于大多数用例而言,将控制平面分隔开是正确的选择,但您可能出于某些优化或不足的理由而将某些组件共置一处。
如果说Envoy是L7网络的心脏和灵魂,那么控制平面就是大脑。 在以下方面,控制平面必然具有不同的特性:
- 安全性–如果您的数据平面以某种方式受到威胁,您将遭受重创; 您绝对不希望通过让控制平面受到威胁而放弃对其余应用程序和网络的控制来加剧情况。 此外,控制平面可能正在处理密钥,证书或应与数据平面分开存放的其他机密的分发。
- 缩放–您可能最终将以不同的方式缩放数据平面和控制平面。
- 分组–您可能在数据平面中具有不同的角色和职责; 例如,您的边缘可能有数据平面Envoy,与用于微服务的共享代理池和可能部署的任何sidecar代理相比,它们需要的安全性和网络状态有所不同。 控制平面与数据平面位于同一位置,这使得保持数据和配置分离更加困难
- 资源使用情况–您可能希望根据组件来分配或限制某些资源使用情况。 例如,您的数据平面可能比控制平面(控制面板可能需要更多的内存)要占用更多的计算资源,并且您将使用不同的资源限制来履行这些角色。 将它们分开可以为您提供更多的细粒度资源池选项,而不仅仅是将它们组合在一起。 此外,如果控制平面和数据平面并置并争用相同的资源,则可能会获得难以诊断的奇数尾部延迟。
- 部署/生命周期–您可能希望独立于数据平面修补,升级或以其他方式维护控制平面
- 存储–如果您的控制平面需要任何类型的存储,则可以在不分离数据平面的情况下进行单独配置(如果分离出组件)
- 状态–了解控制平面的状态
由于这些原因,将控制平面保持在臂长且与数据平面分离是有意义的。
带走
考虑构成控制平面的运行时组件,并希望将它们部署在分离的体系结构中。 协同定位可能是有道理的,但不要为此过早优化。
翻译自: https://www.javacodegeeks.com/2019/02/control-plane-envoy-deployment-tradeoffs.html
为特使建立控制平面的指南-部署权衡相关推荐
- 为特使建立控制平面的指南第2部分-识别组件
这是探索为Envoy Proxy构建控制平面的系列文章的第2部分. 在本博客系列中,我们将研究以下领域: 采用一种机制来动态更新Envoy的路由,服务发现和其他配置 确定哪些组件构成了控制平面,包括后 ...
- 为特使建立控制平面的指南-识别组件
确定控制平面所需的组件 由于操作环境的范围千差万别,因此为Envoy实施控制平面所需的组件也可能如此. 例如,在一种极端情况下,如果您在构建时静态生成了Envoy文件并将其发送到Envoy,则需要以下 ...
- 为特使构建控制平面的指南-为可插入性构建
Envoy是一个非常强大的软件,每天都会向社区提出新的用例和新的贡献 . 尽管Envoy的核心非常稳定,但它基于可插入的过滤器体系结构,因此人们可以为不同的L7协议编写新的编解码器或添加新的功能. 目 ...
- latex如何使节标题居左_为使节构建控制平面的指南第3部分-特定于域的配置API...
latex如何使节标题居左 这是探索为Envoy Proxy构建控制平面的系列文章的第3部分. 在本博客系列中,我们将研究以下领域: 采用一种机制来动态更新Envoy的路由,服务发现和其他配置 确定哪 ...
- 为使节构建控制平面的指南第3部分-特定于域的配置API
这是探索为Envoy Proxy构建控制平面的系列文章的第3部分. 在本博客系列中,我们将研究以下领域: 采用一种机制来动态更新Envoy的路由,服务发现和其他配置 确定哪些组件构成了控制平面,包括后 ...
- envoy api 网关_为Envoy构建控制平面的指南-特定于域的配置API
envoy api 网关 建立您的控制平面交互点和API表面 一旦考虑了哪些组件可能构成控制平面体系结构(请参见上一章),您将要确切考虑用户将如何与控制平面进行交互,甚至更重要的是, 用户将是谁? 要 ...
- 为Envoy构建控制平面的指南-特定于域的配置API
建立您的控制平面交互点和API表面 一旦仔细考虑了哪些组件可能构成控制平面体系结构(请参见上一章),您将要确切考虑用户将如何与控制平面进行交互,甚至更重要的是, 用户将是谁? 要回答这个问题,您必须决 ...
- Envoy Proxy构建控制平面指南
作者:Christian Posta 译者:殷龙飞 审阅:孙海洲 原文:medium.com/solo-io/gui- [编者案] Envoy 作为最受欢迎的早期网络组件,现在已经可以说是云原生架构中 ...
- 如何使用 Istio 进行多集群部署管理:单控制平面 Gateway 连接拓扑
作者 | 王夕宁 阿里巴巴高级技术专家 **导读:**本文摘自于由阿里云高级技术专家王夕宁撰写的<Istio 服务网格技术解析与实践>一书,讲述了如何使用 Istio 进行多集群部署管理 ...
最新文章
- vue seo关键词设置_网站SEO常用优化技巧
- 【helloworld】-微信小程序开发教程-入门篇【1】
- wxWidgets:wxThreadHelper类用法
- html jquery 不能自动完成,在jQuery UI自动完成中使用HTML
- php mysql防卡_php mysql防止sql注入详解
- chrome ninja 文件_ninja和gn
- PHP正则表达式学习(一) 模式修正符
- 华为、大众组建合资公司?相关回应来了
- 服务器上传至云系统,上传至云服务器命令
- 商业智能BI和报表的区别?
- 提升效率小工具,我用30分钟就干完一天的活
- 大学生数学建模竞赛心得(提高篇) 转
- vod点歌系统服务器,冰河家庭VOD点歌系统
- Linux 系统查看网卡配置信息
- 平衡二叉树(C++实现)
- linux xia复制命令,Linux常用命令整理
- APP支付(微信、支付宝)
- Python中参数前面的星号
- doctrine 事件
- ENSP:配置静态路由表,实现不同VLAN间的通信