感谢超门的分享然后我们下一个也是今天上午最后一个分享是Jimmy Song的《如何在阿狗,East Hill,和Scar-Walking中实现Gatehouse和可观测性的完美结合》然后有请Jimmy开始分享喂 大家好 我是Jimmy Song 宋敬超Tetris的部门是原生社区的创始人前面的这些分享大家主要是介绍East Hill本身我这个分享是关于East Hill的一些周边但也知道East Hill最近也在CNCF里成功毕业了其实支持East Hill的一些周边项目也挺多的然后我这个分享是主要介绍与Gatehouse还有可观测性相关的然后能够适配East Hill的两个项目一个是阿狗阿狗它也是CNCF的一个应该是也毕业了这个项目这个项目包括几个子项目我今天介绍的包括其中两个阿狗CD是做持续发布的还有一个是Rollout 可以做金字确发布还有一个就是Skywalking 它是一个APM也是一个可观测性的工具那其实除了这两个工具你可以做Gatehouse的工具其实还挺多的但是这两个是相对比较成熟也是我比较了解的所以用它们来作为例子来举例如何把East Hill集成到Gatehouse和可观测性的工具里面那我提到Gatehouse大家很多现在都是基于Connected来做的因为它是一个配置读生命式配置所以大家可以利用它写各种NML配置然后能够做到Gatehouse它的Connected的发布有两种大家一般用Deployment它有Required它是把所有的原有的Port消毁之后再创新新的Port还有就是Rolling Update这是我们使用的比较多的可以实现在没有Gatehouse和其他像Flex还有ARGO这样的项目之前可以用它来做一个金色确发布但是它只是更新Required Set然后创新新Required Set来调换每一个Required Set里面的实力的个数来实现一个金色确发布但如果实现Gatehouse大家可以用ARGO CD它来帮你自动地来调换这些Required Set里面的实力个数Port的个数我们常用的有蓝率发布还有金色确发布现在提到比较多的像金色确发布它是可以把你的流量用比例的形式分配到不同的版本里面然后现在常用的有Flugger还有ARGO CD还有Ease YouEase You可以用来做按比例的流量分配大家比较常用的Virtual Service还有Destiny Role分配Subset然后给每一个不同的Virtual Service分配每一个Subset 每一个字极来分配流量的比例然后这是通过ARGO CD还有Rollout以及在Walking实现自动化的流量分配和金色确发布的一个架构还再让图灵可以看到我们使用首先得有一个Reprocessory Service就是代码仓库你会把代码Push或者Mars到代码仓库里面然后代码Mars之后会触发ARGO CD的一个自动的发布然后它会像因为在Quantity里面有不属于ARC的Server然后会触发Quantity里面的Controller然后发布到Quantity上面的这些有些这里面看到我们有一些这里有一些Reprocessed它有Sable和Cannery的这些在没有Ease You之前它会创建这样的一些Rossets像地方面一样来实现一个金色确发布然后所有Metrics我们可以通过Sciwalking或者像Program Use之类的通过这些Program Ability的工具来收集每个Program里面的一些Metrics然后怎么来实现的一个自动化金色确发布呢这里还是持续发布的一个GitOps的一个流程图这个标准的主要就是在Quantity里面一个Controller来不断地经控你已经发布的Application它的配置与你在GitOps在Github或者其他在马仓控里面的配置是有相同如果有区别的话它会不断地Wash 然后Dev来看其中区别然后让它们之间同步还是AgoCity的一个Dashboard在这里面您可以手动地来实现某一个这里面是你的一些不同的一些对象Quantity里面的一些对象像ServiceService 还有Deployment还有其他一些Service Account这类的对象如果它发现有区别的话它这里面会显示您可以让它您可以自己在点击然后来同步每一个不同的Object然后怎么来实现一个自动化的金色确发布能够让流量能够比例然后根据每一个Port的状态达到某个状态时候自动实现的一个流量切分呢我们可以使用AgoRollout这是使用AgoRollout的一个基本的操作首先会创建一个Rollout它用它来替换Quantity里面的Deployment它是创建了一个AgoCity的APP这里面指定了你的代码仓库的地址这是Github地址还有就是代码仓库上这个应用的在代码仓库里的位置这是Quantity的Service还有Name Space以及同步的策略然后在这个应用发布之后你需要给应用不断地发布一些就是发送一些流量发送一些traffic因为这样的话你的APMObservability的工具才能收到一些Matric信息才能根据这些信息来判断这个应用的状态是否达到可以继续推进那个发布流程的一个实际节点这是AgoCityRollout的一个Dashboard这里面可以看到具体的发布的现在处于哪一个状态还有这是版本笔右面是使用的Revision这一个应用的版本下面是Rebats.net里面的Port的个数实际个数这是AgoRollout的一个步骤AgoRollout安装的时候其实跟AgoCity類似它也会创建几个Controller一个是AgoRollout的Controller还有一个是Analysis Template这个Rollout的Controller还好理解就是用来发布应用就是AgoCity的AgoRollout的应用它其实是一个Application还有Application这个Analysis Template它主要是用来收集应用里面的那些Metrics然后它会经过一个计算然后AgoRollout会通过这个Metrics的信息来判断目前是否可以继续推进到下一个步骤这是AgoRollout里面的一个配置文件在这里面我们看到这里有Strategy里面有Analysis这里指定了Template的名字这是Ampidex其实就是Analysis Run里面的这个配置就是这里面这个配置在这里面我们看到这里面的Provider其实可以有很多种这里有指定Skywalking也可以指定Provideos或者其他的一些可以对接你应用的Metrics的一些Observability的工具这里面是一个查询Skywalking的一个语句在使用的Cyclic GraphQL还有查询目前这个应用的状态这里面是DesignRule的配置其实这右面的是EASL的DesignRule它其实还是根据AgoRollout里面的这个Traffic Routing的配置这里面会改变DesignRule里面的Subset Level和下面的Wate就是每个不同的Subset里面的流量百分比就是AgoRollout做了这两件事情一个是获取应用的Metrics另一个是改变EASL里面的DesignRule的一些配置包括它的Subset的还有Traffic的流量版本这是AgoRollout做的一些事情这个图里面可以展示它实际是怎样改变EASL配置的一个流程我们现在一般用的还是Subset-based的Traffic Routing因为House-based的话会更改DNS的配置现在不是很常用其实你可以定义很多不同的查询根据你应用的不同的Metrics的一些节点来比起Deployment的那种只通过各种探针来获取应用状态你接入SciWalking或者Promises之后就可以获取一些更加自定义的一些Metrics然后根据这些Metrics的值来继续发布这个demo在github上有一个仓库你可以直接在这仓库上查看这个demo然后这是关于使用EASL和AgoCD还有SciWalking实现GitOps的一个流程这是一个闪进分享所以时间比较短大家有问题的话也可以在心下或者心上跟我沟通这是上午场最后一个分享下午还有一下午的分享欢迎大家下午再继续过来聆听中午提供了午餐大家手里有午餐圈吗没有的话可以让找韩晓鹏可以找韩晓鹏然后跟他那里拎午餐圈我们下午午餐圈是那样的就是大家是买票进来的或者是speaker然后先找小朋友那边去领午餐圈然后如果说最后有胜的大家没买票的也可以去领谢谢大家我们下午再见下午大家记得1点半1点半我们开始