在边缘,作为网关或在网格中构建控制平面以管理Envoy代理的指南

最近, Envoy已成为流行的网络组件。 马特·克莱因( Matt Klein )在几年前写了一个博客,内容涉及Envoy的动态配置API,以及它如何成为Envoy的采用曲线向右移的原因之一。 他称该博客为“通用数据平面API”。 由于有许多其他项目采用Envoy作为其产品的核心组件,因此可以说“ Envoy已成为应用程序/ L7网络解决方案的云原生架构中的通用数据平面”,而不仅仅是建立标准化的API 。

特使代理

此外,由于Envoy的通用数据平面API ,我们已经看到了许多管理层的实现,用于配置和驱动基于Envoy的基础架构。 我们将深入研究为Envoy构建控制平面所需的内容,以便您可以使用此信息来评估哪种类型的基础架构最适合您的组织和用例。 因为这是一个广泛的主题,所以我们将在接下来的几天中分多个部分讨论这个问题。 跟随( @christianposta , @soloio_inc )进入下一个条目。

在EnvoyCon / KubeCon上进行了一些精彩的演讲,其中一些组织分享了采用Envoy的经验,包括如何构建自己的控制飞机。 人们选择构建自己的控制平面的一些原因:

  • 是否具有基于具有预先存在的控制平面的不同数据平面的现有解决方案,并且需要对Envoy进行改造
  • 为不具有任何现有开源或其他Envoy控制平面(即VM,AWS ECS等)的基础架构进行构建
  • 不需要使用Envoy的所有功能; 只是一个子集
  • 对于Envoy配置,最好使用特定于域的API /对象模型,以使其更适合其工作流程/ worldview
  • 其他控制平面在各自组织准备部署时还没有处于成熟状态
特使代理

但是,仅仅因为某些早期采用者构建了自己的定制控制平面,并不意味着您现在应该做同样的事情。 首先,为Envoy构建控制平面的项目在去年已经相当成熟,在决定重新创建另一个控制平面之前,您应该探索使用这些平面的方法。 其次,正如Datawire的人们发现的那样, Daniel Bryant最近也明确指出, 为Envoy建造一架控制飞机并不是出于胆小 。

我参与 了几个为Envoy构建控制平面的开源项目 。 例如, Gloo是一个功能网关 ,可以充当功能非常强大的Kubernetes入口,API网关或功能网关,以简化从整体到微服务的过渡。 Gloo 有一个Envoy的控制面板,我们可以在本系列文章中引用它作为如何构建一个简单抽象的示例,该抽象允许您需要的控制点具有可插拔性和可扩展性。 您可以参考的其他固态控制面板实现是Istio和Heptio Contour ,我们将在整个博客系列中将其用作示例。 如果没有其他问题,您可以了解Envoy控制平面存在哪些选项,并在必须走这条路的情况下使用它来指导您的实现。

特使代理

在本博客系列中,我们将研究以下领域:

  • 采用一种机制来动态更新Envoy的路由,服务发现和其他配置
  • 确定哪些组件构成了控制平面,包括后备存储,服务发现API,安全组件等。 等
  • 建立最适合您的用例和组织的任何特定于域的配置对象和API
  • 考虑如何最好地使控制平面可在需要的地方插入
  • 部署各种控制平面组件的选项
  • 通过测试平面来考虑您的控制飞机

首先,让我们看一下使用Envoy的动态配置API在运行时更新Envoy来处理拓扑和部署中的更改。

使用xDS API动态配置Envoy

在Envoy之上进行构建的主要优势之一是其数据平面API。 借助数据平面API,我们可以动态配置Envoy的大多数重要运行时设置 。 Envoy通过其xDS API进行的配置最终在设计上是一致的 -也就是说,无法影响群集中所有代理的“原子更新”。 当控制平面具有配置更新时,它将通过xDS API使它们可供数据平面代理使用,并且每个代理将彼此独立地应用这些更新。

以下是我们可以通过xDS动态配置的Envoy运行时模型的各个部分:

  • 侦听器发现服务API – LDS发布用于侦听流量的端口
  • 端点发现服务API-用于服务发现的EDS ,
  • 路由发现服务API- RDS用于流量路由决策
  • 群集发现服务-CDS,用于我们可以将流量路由到的后端服务
  • 秘密发现服务–用于分发秘密(证书和密钥)的SDS
特使代理

该API是使用proto3协议缓冲区定义的,甚至还有一些参考实现,您可以用来引导自己的控制平面:

  • 去控制平面
  • Java控制平面

尽管每个区域(LDS / EDS / RDS / CDS / SDS,统称为“ xDS”)都是可动态配置的,但这并不意味着您必须动态配置所有内容。 您可以将静态定义的部分与动态更新的部分组合在一起。 例如,要实现一种服务发现类型,其中endpoints应该是动态的,但是clusters在部署时是众所周知的,则可以静态定义clusters并使用Envoy的Endpoint Discovery Service 。 如果您不确定在部署时将使用哪些上游群集,则可以使用“ 群集发现服务”动态查找这些群集 。 关键是,您可以构建一个工作流和流程,以静态配置所需的零件,同时使用动态xDS服务在运行时发现所需的零件。 之所以看到不同的控制平面实现,原因之一不是每个人都拥有一个完全动态且可替代的环境,其中所有部分都应该是动态的。 在存在现有约束和可用工作流程的情况下,采用最适合您的系统的动态级别。

对于Gloo,我们使用基于go-control-plane的控制平面来实现xDS API,以服务于Envoy的动态配置。 Istio以及Heptio Contour也使用此实现。 该控制平面API利用gRPC流调用并对API进行存根处理,以便您可以在其中填充实现。 Turbine Labs的Rotor项目是另一个不幸地不推荐使用但可以学到很多东西的项目 。 这是将Envoy的数据平面API与控制平面集成的一种高效方法。

gRPC流并不是更新Envoy配置的唯一方法。 在早期版本的Envoy xDS API中 ,轮询是确定新配置是否可用的唯一选项。 尽管这是可以接受的,并且满足“最终一致”配置更新的条件,但是它在网络和计算使用方面均效率较低。 适当调整轮询配置以减少浪费的资源也可能很困难。

最后,某些Envoy管理实现选择生成静态Envoy配置文件,并定期为Envoy替换磁盘上的配置文件,然后对Envoy进程进行热加载 。 在高度动态的环境(例如Kubernetes,但实际上是任何基于临时计算的平台)中,此文件生成,传递,热重启等的管理可能会变得笨拙。 Envoy最初是在执行这样的更新的环境中创建的(Lyft,创建它的地方),但是它们正逐步使用xDS API。

带走

Gloo小组认为,使用gRPC流和xDS API是为Envoy实施动态配置和控制的理想方法。 同样,如果不需要,并非所有Envoy配置都应动态提供,但是,如果您在高度动态的环境(例如Kubernetes)中运行,则动态配置Envoy的选项至关重要。 其他环境可能没有此需求。 无论哪种方式,用于动态部件的g​​RPC流API都是理想的。 这种方法的一些好处:

  • 事件驱动的配置更新; 当配置在控制平面中可用时,将配置推送到Envoy
  • 无需轮询更改
  • 无需热装特使
  • 没有交通中断

下一步是什么

在第一部分中,我们通过覆盖xDS API和为Envoy提供动态配置所需的其他选项,建立了有关如何为Envoy构建控制平面的一些基本上下文。 在接下来的几天(将在几天内发布)中,将介绍如何将控制平面分解为可部署的组件,确定所需的组件,特定于域的配置对象模型的外观以及如何考虑控件的可插入性。飞机。 在Twitter( @christianposta , @soloio_inc )或博客( https://blog.christianposta.com https://medium.com/solo-io )上关注

翻译自: https://www.javacodegeeks.com/2019/02/control-plane-manage-envoy-proxy-edge.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/345525.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

MATLAB 随机数生成器

betarnd 贝塔分布的随机数生成器 binornd 二项分布的随机数生成器 chi2rnd 卡方分布的随机数生成器 exprnd 指数分布的随机数生成器 frnd F分布的随机数生成器 gamrnd 伽玛分布的随机数生成器 geornd 几何分布的随机数生成器 hygernd 超几何分布的随机数生成器 lognrnd 对数正态…

【渝粤题库】陕西师范大学200511 美国文学

《美国文学》作业 I.Multiple Choice American literature is only more than ____ years old. A. 500 B.400 C. 200 D.100The Puritan values did no include______. A. wastefulness B. thrift C. piety D. hard workThe 18th century was the age of the Enlightenment. __…

【渝粤题库】陕西师范大学200851 微机实用技术

《微机实用技术》作业 一、填空题 1.电源目前主要有两种,分别称为 和 。 2.总线的速度与两个参数有关,一个是 ,另一个是 。 3.nVIDIA支持AMD CPU的芯片组 。 4.目前DDR内存已经有四种规格&#…

java编译器分析_Java反编译器的剖析

java编译器分析简单地说,反编译器尝试将源代码转换为目标代码。 但是有很多有趣的复杂性-Java源代码是结构化的; 字节码当然不是。 而且,转换不是一对一的:两个不同的Java程序可能会产生相同的字节码。 我们需要应用试探法以合理地…

各种各样的数

数的类别 数可以被分类为数系的集合内。对于以符号表示数的不同方式,则请看记数系统。 自然数 主条目:自然数 最常用的数为自然数,有些人指正整数,有些人则指非负整数。前者多在数论中被使用,而在集合论和计算机科学…

JDK 11上的JavaFX

在第11版发布之后,人们对JavaFX与JDK的解耦感到百感交集。 我们中的许多人认为现在是时候告别JavaFX并改用另一种GUI技术了,而另一些人对此情况感到高兴。 他们认为,将JavaFX与Oracle分离开来,并致力于将其开发为开源社区驱动的项…

HMM(隐马尔可夫模型)

1.什么是熵(Entropy) 简单来说,熵是表示物质系统状态的一种度量,用它老表征系统的无序程度。熵越大,系统越无序,意味着系统结构和运动的不确定和无规则;反之,,熵越小,系统越有序&am…

【渝粤题库】陕西师范大学201451 中国法制史作业

《中国法制史》作业 一.填空题 1.中国奴隶奴隶制法律产生于_________朝。 2.西周时期,提出了“”的刑事政策,具体标准是“刑新国,用____典;刑平国,用______典…

Lindley equation

In probability theory, the Lindley equation, Lindley recursion or Lindley processes is a discrete-time stochastic process AnA_nAn​ where nnn takes integer values and: An1max(0,AnBn)A_{n 1} max(0, A_n B_n)An1​max(0,An​Bn​). Processes of this form can…

Java NIO教程

1.简介 Java NIO是从Java 1.4引入的库。 自从Java NIO推出以来,它提供了另一种方法来处理I / O和网络事务。 它被认为是Java网络和Java IO库的替代方法。 开发Java NIO的目的是使输入和输出的事务异步和非阻塞。 阻塞和非阻塞IO的概念将在后面的部分中介绍。 目录…

【渝粤题库】陕西师范大学201941 Java程序设计 作业(专升本)

《JAVA程序设计》作业 一、选择题 编译HelloWorld.java的正确命令是: java HelloWorld.class B)java HelloWorld.java C)javac HelloWorld.java 正确运行HelloWorld.java的正确命令是: java HelloWorld B)javac HelloWorld.java C&#xff09…

MATLAB追加向量

MATLAB 允许在原有的向量中附加向量,共同创造新的向量。 如果有两个行向量 r1 和 r2 这两个行向量中各有 n 和 m 个元素,现在创建行向量 r 并将n和m个元素都放在行向量 r 中,通过附加这些载体,编写: r [r1,r2]通过追…

【渝粤题库】国家开放大学2021春2441经济数学基础1题目

试卷代号:2441 2021年春季学期期末统一考试 经济数学基础1 试题 2021年7月 导数基本公式: 积分基本公式: ©′0 ()′ ()′ ()′ ()′ ()′ ()′cosx ()′ ()′ ()′ 一、单项选择题(每小题4分,本题共20分…

【渝粤题库】陕西师范大学163211 会展管理作业

一、单项选择题 1.国际上通常提到的MICE,以下不正确的是( ) A M是指corporate meeting B I是指incentive travel program C C是指construction D E是指exhibition 2.世界会展业的发源地是( ) 。 A亚洲 B美洲 C大洋洲 D欧洲 3.会展业与旅游业的…

关于判断函数凸或凹以及最优化的问题

大部分情况下都转换为凸优化问题&#xff0c;并通过最优化方法来求解&#xff0c;因此了解相关知识就显得尤为重要了。 主要内容&#xff1a; 问题引出凸集凸函数凸优化最优化 1、问题引出 在n维空间中&#xff0c;对于任意两个点&#xff0c;对于0<μ<1&#xff0c;…

【渝粤题库】国家开放大学2021春2038财务管理题目

试卷代号&#xff1a;2038 2021年春季学期期末统一考试 财务管理 试题&#xff08;开卷&#xff09; 2021年7月 一、单项选择&#xff08;在下列各题的备选答案中选择一个正确的&#xff0c;并将其序号字母填入题后的括号里。每小题2分&#xff0c;计20分&#xff09; 1.股东财…

javafx弹出式窗口_JavaFX 8的弹出式编辑器

javafx弹出式窗口在过去的几个月中&#xff0c;我很高兴与JavaFX 8一起使用&#xff0c;以便为计划和调度应用程序实现复杂的用户界面。 所需的功能之一是执行“就地”编辑的方法&#xff0c;即快速编辑用户选择对象的某些基本属性的方法。 遵循“如果您无法创新&#xff0c;就…

随机访问MAC协议 知识梳理(ALOHA,CSMA,CSMA/CD,CSMA/CA)

0、随机访问MAC的协议 数据链路层动态随机分配信道时对随机访问MAC协议&#xff1a;ALOHA&#xff0c;CSMA&#xff0c;CSMA/CD&#xff0c;CSMA/CA ALOHA&#xff0c;CSMA&#xff0c;CSMA/CD的区别仅在于是否对信道进行监听和是否有碰撞检测&#xff1a; 1、ALOHA&#xf…

【渝粤题库】国家开放大学2021春2508学前儿童语言教育题目

试卷代号&#xff1a;2508 2021年春季学期期末统一考试 学前儿童语言教育 试题&#xff08;开卷&#xff09; 2021年7月 注意事项 一、将你的学号、姓名及分校&#xff08;工作站&#xff09;名称填写在答题纸的规定栏内。考试结束后&#xff0c;把试卷和答题纸放在桌上。试卷和…

认识CUBA平台的CLI

毫无疑问&#xff0c;软件开发人员&#xff08;尤其是Java开发人员&#xff09;的世界充满了键盘狂热者&#xff0c;最好是一次单击即可键入10-15个字母。 而且我们的社区也不例外&#xff0c;因此经常有人问我们“如何在没有CUBA Studio的情况下启动项目&#xff1f;”之类的问…