00:00
那前面我们把这个数据库呢,就迁移过来了,那接下来我们要部署到整个项目里边,来看一下,我们现在流程应该是这样。我们呢,看一下我们现在在cooper notice里边要把我们整个项目跑起来的流程,部署流程,首先我们的预准备环境我们已经创建好了,我们自己使用各种方式,我们部署了my circle red rabbit等等一大堆们把这个周边治理的,包括我们的数据库,基础环境我们准备好了,然后我们所有的微服务们现在编写了一个流水线,我们让他呢,一会儿自动化构建们指定构建哪个微服务就来构建哪个微服务,包括呢,我们这个网关也是我们微服务里边的,那它自动化构建没问题,然后只要我们把这一块呢运行通了,结合接下来我们按照域名把这一块呢,我们来打通就行,那先来看我们这一块的功能,那这块的功能呢,我现在在测试之前,呃,我在之前发现了一个问题,我们来看一下我们的这个流水线呢,现在是这样子的,我们这个流水线呢,拉取代码,然后质量分析,然后呢,我们来推送镜像,这次镜像呢,推送的是最新镜像。
01:09
然后呢,我们部署到K8S里边的时候,每个K8S文件呢,写的又是用它的这个项目版本,那此时这个项目版本呢,这个镜像已经在我们这个doer里边是不存在的,因为我们只有在部署完了以后才问发布发布这个版本,所以呢,我们就应该让每一个人在这部署的时候就用这个最新镜像就行了,这有一个latest,好,我就把这个复制过来,我们在这块呢,我就写死了,用每一个项目的最新镜像在这儿来进行使用,因为我们在前边会给我们构建镜像的时候,把这个最新镜发布出去,那然后呢,接下来又是每一个呢,这一块都得这么来修改,那这儿要修改,然后呢,下边这一块呢,也都要修改。这都要修改每一个的这个版本号全部呢,换成我们的这个最新镜像,然后包括优惠服务,你就来修改一下。
02:06
好,最新镜像,那接下来我就将所有的都修改过来,好,那这一块呢,我们将所有的这个镜像,那使用最新镜像修改完了以后,别忘了把我们这一块的整个配置我们推送过去。这一块呢,就是K8S的这个deployment文件,使用我们这个每一个微服务的最新镜像,使用微服务最新镜像构建好,我们把这个呢推送过去。好,那么这一块修改完以后呢,接下来我们就来测一下我们的这个流水线,能不能把我们每一个微服务自动的部署过来。那这个测试呢,我们现在来到我们的这个流水线,来到我们这儿,我来刷新一下,来给大家看一下,在这个流水线这儿,我们以前呢,是用古丽ma cicd,这是我们自己在图形化界面一点一点我们探索流水线的语法,最终呢生成了一个流水线的这个真S文件,那有了这个真S文件以后呢,那接下来我们其实就可就是如果没有这个可视化界面,我们也可以在任何的时候都能用用这个,那怎么用,我们来给大家看一下,我在下边,在下边呢,我们把这个project name默认构建哪个东西我们也来写一下,默认呢,假设我们就来让它构建一个网关,好,那现在呢,把这一块写好了以后,我把我的这个真FAIR1提交,然后呢,我们接下来使用非图形化的方式,好,我们这个真fair,然后默认默认咱们这个项目,嗯。
03:44
构建咱们这个网关,构建我们这个get外就行了,末如我们这个构建项目呢,是一个get外,要不然我们第一次运行如果什么都不输,我们这个参数化,构建它的这个参数呢,就得有一个默认值,好,然后我们把这一块修理好了以后,然后来到我们的这儿,这个流水线呢,我就不用这个古力mail CI icd了,我再来创建一个流水线,因为以前我们没有流水线文件,我自己在这儿,我们在这摸索了一个,现在我们来创建一个,好,那们现在这个流水线呢,我们就叫古力me,我们使用Jenkins fair来做的这个cicd。
04:19
Cicd好,然后这个CCD呢,我们来描述一下,咱们这个鼓励商城,咱们这个自动微服务。部署,而且呢,这是一个参数化构建,我们这个参数化构建好,我们接下来选择一个代码仓库,这个代码仓库呢,我们用的不是giar HUB,我们用的是马云,马云呢也是满足giate要求的,我们来选中giate,然后呢证书选中我们以前建的这个马云的证书,然后仓库地址我们来复制过来,然正现在这个项目,大家看我现在这个项目呢,下边直接有一个金ins,直接在我们项目下有这个真,所以呢,我现在把这个呢构建过来就是它,然后我们来点击保存来选择下一步,然后下一步呢,它会探索到我们这个真的非有这个东西,然后呢,接下来我们这个保留分支,比如我们来保留分支的天数,我们来写一个五天七天然保留分支的最大个数,我们写个七个十个的都行,然后呢,我们脚本的路径叫真fair,在这呢,一定确认来到我们马云这一块,我们的这个名字叫真fair。
05:29
好,没问题,然后呢,接下来要不要定时触发,我们就不要每次呢我们都手动构建,然后呢是否开启潜客隆,那么在这呢,就默认开启潜克隆,因为我们现在呢,把这个getate仓库拉取过来,我们只是为了构建,我们又不提交又不干啥,我们又不看它很久很久以前的这些构建历史,咱们就直接用浅克隆就行了,好,我们把这块呢准备好以后,我来点击创建。啊,我们这个流水线呢,就拉过来了,接下来他呢,就会来扫描我们这个远程的这个分支,他说没有发现任何分支,我们来看一下这个活动啊,但是活动中呢,我们确实是有我们这个流水线的,所以我们这个呢,其实就是触发成功的,然后来到我们的这个分支里边,我们相当于是对master分支,我们现在相当于拿到这个master分支的这个数据了,然后我们在这儿运行,然后呢,我们整个初始化的日志就开始了,我们现在来看,因为我们默认呢,把这个项目拉取过来,我们现在是相当于给他先来打包发布我们的网关。
06:30
所以我们这一块呢,全部状态都是有的,那么接下来就来稍等我们的整个发布过程,好我们稍等一会儿呢,我们看到这呢,一有一个标志失败,那说明呢,我们这一块的这个流水线,那就失败的,失败的原因是在这儿,我们来看我们的构建镜像这一块,点开我们在构建镜像这一块呢,它在这提示我们这个docker build的杠F,我们相当于按照这个docker fair指定的位置我们要构建,但我们发现没有项目名,这个项目名呢,其实是我们参数化拿过来的,但没有项目名的原因,那就是我们运行的这个没有加我们的这个参数,我们可以来编辑一个配置,这个配置里边呢,我们这儿有一个能不能有我们的这个参数化,我们发现呢,这儿没有出现我们的这个参数化行,我们这个呢就不要了,然后呢,来到我们的这个里边,我来重新运行好,那现在呢,来到这我来运行,现在的这个运行我们就可以自己来输了,我们的分支是master没问题。
07:31
诶,然后呢,这个参数我们一定要输上来,默认不输呢,我们项目名是get y好,没问题,我来点一个确定,那我们就重新运行了,重新运行我们来进行分析,我们来看一下现在的效果,我们来稍等,因为我们写的这个参数呢,也都在金克斯的这个file里边,所我们这个参数化运行,只要下次你一运行,那默认我们就会输入这些参数,有了这些参数的值,那么接下来所有的构建才能基于这些来进行构建,那么现在来看一下我们整个的构建效果好。
08:02
那么现在呢?等到了这个镜像已经推送好了,接下来他在这让我们确认是否将我们这个项目名他没取出来,那我们不管了,部署到我们这个集群中,如果我点一个proceed,那他就开始把我们这个项部署到cooper notice里边。那这块呢,部署它提示我们报报错,报错的原因我们来看一下。这日志里边我们部署到K8S,它在这呢,提示说我们这个start我们来开始部署,但是呢,我们这有一个非法的状态隐藏no mention没有匹配到我们的这个配置文件found for Dollar,我们的这个project name现在没有找到我们这个项目名下的deploy这个东西,就是他把这个项目名呢没有动态取出来,那么把这一块呢修改一下就行了,让他呢一定要能动态取出项目名,那么我们来修改一下那jeins这个文件,这个文件里边呢,我们来找一下我们的这个项目名,项目名的引用,刚才其实有两处没显出项目名,那就在这儿,Deploy,我们这个项目包括要怎么着,但我们发现这个呢,我们肯定能取到,别人都取到了,我们来看别人,别人在动态取的时候都是双引号在这取掉了,而我们自己呢,在这单引号它又取不到了,所以我们使用双引号的方式,双引号字符串呢,它在里边动态取值这一块的部署,我们也使用双引号的这个语法。
09:24
这一块呢,我们让它动态的取出这一块的值,包括我们这个是否将我们的这个部数啊,我们都是双引号取值,我们这个金克S非改了以后,其实不能只改我们这儿,那为了我们现在明显能看到效果期间,那我最好呢,直接在我的这个里边,我们来修改一下这个金file,来看这个里边,这个里边我们能不能修改到我们的这个金file,我们点一个更多操作这个这个没办法修改,这是因为我们从代码里边拉取的金克s fair,所以我们下一次呢,让他再重新来拉一下,我们把我们修改的这个金克fair们来重新提交,我们在这儿来提交commit,好,我们现在呢,就是金s fair,然后要获取项目名,获取我们这个项目名。
10:12
我们把这个提交上去,然后呢,我们重新来再建立一个流水线来做我们的这个事情。点一个push提交好,那我们这个之前的这个金克Fi,那就算是失败,那来到我们的这一块,我呢就直接直接把我们的这个金s fair cicd这一块的内容,我们可以来删掉,你在这儿点击编辑这一块呢,应该还要重新拉取,所以我就直接来删掉,我来删掉我们自己再来一个这个删的时候呢,要确保好要把这个名字一输多一个空格来点击删除。好,我们来重新拉取,我点一个创建,还是呢,我们的这个叫鼓励ma,然后呢,我们是按照jeins,我们按照我们的jeins文件来做的这个cicd流程,然后我们来选择一个代码仓库,这个仓库我们来复制过来。
11:03
我们的代码地址呢,那就在这儿,我们整个的古力妙的这个仓库地址来克隆下载,我们复制一下它的这个getate地址,然来到我们这儿,这是我们的giate地址,然后呢,我们使用giate ID这个登录好我们来保存,这是我们的仓库,我们来点击下一步,然后呢,还是这一块全部都是默认值,比如七七,然后呢,我们这个JS fair啊,我们不定时触发,不每个小时都触发,我们手动触发也是开启潜克隆这个就行了,好,我们来点一个创建,那么这一块呢,就创建出来,然后呢,它肯定会来扫描分支,好现在master扫描到了没问题,然后呢,接下来它就进行运行,那个第一次运行我们就直接给它停掉,因为这个运行的话呢,没有我们输入的这个项目名,他不知道要给我们构建哪个项目,这一块我们停掉以后呢,在接下来我们重新运行,点击运行,那么现在呢,是master分支,我们这个版本,我们先来构建网关,好这块呢都有提示,项目版本是什么构建模块。
12:03
是什么?这些全部源于我们在这自己来生成file的时候,诶,我给这description里边我们来加了一个描述,所以他在我们的这个可视化界面就展示出来了,好,我们就先来构建我们这个网关项目,网关项目呢,我们就叫V0.1,我们来点一个确定好,我们来开始运行,来等待它的整个其他运行流程,来看现在可不可以。好,那现在呢,又来到了我们这个确认,这次呢,这个确认就好了,我们使用双引号取值,那就取得到了,是否将我们这个网关部署到集群里边来点一个处理,那他呢,就开始给我们来在K8S里边部署,把我们来查看日志,看一下我们的K8S部署,然后呢,他肯定会找我们这个网关的deploy,好没问题,但是网关的deploy呢,这一块又出现了问题。那这个问题的原因我们来看,他说啊,没处理的这个实体,我们一直往下翻,它在这一块呢,有一些报错,我们拉姆达API,好,我们一直往下翻,还是我们在这儿定义的,我们再一直往下翻,再一直往下翻,这他把我们的这个文档拿出来了,那拿出来以后呢,说我们这个库巴ne部署呢,出现问题了,问题的原因在这a messageage说我们这个非法的值,值呢是2007,我们的端口号,它我们提供的这个端口号是一个非法的范围,这个范围呢,你必须提供一个3万到32767之间,所以大家看这就是人家的要求,我们把这个要求呢复制过来,那来到我们这一块,我们现在又要做的另外一件事情就是好,我来注释到这儿。
13:42
我们的这个部署文件里边,呃,我们注释到我们的部署文件里边来,说上这句话,就是呢,在我们的这个部署文件里边,我们写的这个对外暴露的noteport这个端口,这不能乱写,然后呢,人家有约定,约定的是什么,就是呢,必须是这个30000~32767之间,所以大家接下来呢,就把我们的这一块的端口全部修改,我们呢,修改成31000,一直到3100,我们一直往下排就行了。
14:15
我这一块呢是31000,那接下来剩下的就是31001,我们一直来往下排,保证呢它是一个合法的端口范围,这块呢就没问题了,31001,好,我把这一块全部都一改。31002,那剩下的呢,大家就全部一改,我们一提交,那前面呢,我们把每一个部署文件的noteport我都给它改了,而改的时候呢,大家最好去我们的cooper ne这个里边来确认一下我们别的服务有没有占用这个端口,那改完以后呢,我们再来提交,其实或者可以大家不写这个noteport,然后呢,让它给我们随机开一个端口也行,好,那我们现在呢就来把它提交,我们现在再来给我们来自动化流水看一下,那现在把这个noteport提交,那提交来了以后呢,我们接下来让它重新运行,重新把我们的代码拉下来,给我们来制作镜像来流水线,好来到我们的这一块,还是我们的Cscd流程,之前这个流程错误是由于我们端口的问题,然后接下来来让他重新执行。
15:23
好,来到我们这一块,我先来刷新一下这个页面,我们来点击运行,那这个运行呢,那还是我们的这个网关,我们先来构建网关,1.0,好,1.0版本的这个网关,我们来点一个确定,它来开始运行,我们来监控一下整个运行的东西,包括之前的代码质量,他在这呢也都能拿到,好,那现在来看一下它的整个运行流程。那中间的步骤我呢就直接跳过了,我们就来等最后一,那这一块的这个三呢,太慢了,我们都已经等了非常多的时间了,我们还可以大家看一下,这都十六七分钟了,他这个没推上去,我们就来把它关掉,然后呢重开一个活动,我们来把这个分之三,包括分之三我之前呢都给它开了个分之四也推的慢,我们把这两个呢全部都停掉,这两个停掉以后呢,来重新运行一下,点击运行好,我们现在呢,还是我们这个网关。
16:16
我们V0点,比如我们还是1.1版本,好现在这个网关呢,我们让它构建点一个确定还是一样,我们来等最终的这个结果就行了,好,我们在等待到网络好了以后,我们现在呢,流程已经运行到这一步,是否部署到Co notice里边,那么之前呢,修改了相当于它的这个配置,我们让每一个note po,诶我们都来指定是人家的这个范围内的,然我们来点击proceed,好,我们让它部署,那这个部署呢,就会把我们当前的这个微服务部署到我们库ne里边,我们可以来看一下这个日志,会不会部署产生什么失败,好,发布当前版本镜像,我们来到这儿,那没问题,那么这样呢,其实都已经部署成功了,然后呢,接下来他问我们是否发布当前版本镜像,那相当于我们已经到Co nets里边已经有这个微服务了,如果我们想要发布,我点一个proceed,然后把我们当前版本的镜像呢再发布出去。而我们现在如果。
17:16
我们来查看cooper notice,好,我来把这一块呢直接拿过来,我们来到他的这个工作台,剩下的这一块我们不看了,我们来到这个工作台往我们的这个服务里边,就应该有我们的这个网关在运行,我们来看一下这个部署里边,服务里边,好们现在呢,部署了一个网关,没问题,那这个网关的容器呢,正在创建运行,等一下我们这个容器呢,退出,正在运行。那我们相当于呢,这个服务呢,就部署上来了,那如果有任何问题,当然这一块呢,还没准备好,因为他还要下载镜像给我们来做,如果有任何问题呢,那我们还可以在容器日志里边,我们来点开,那这个容器日志呢,其实我们发现这就是我们spring boot,我们这个网关的启动日志,那这个启动日志呢,也没啥问题,说我们这个注册我们这个网关filter,只不过呢,这块大家注意,我们在这个日志里边呢,它报了一些这些信息,说我们这个endpoint ID,我们这个包含什么NAS conf NAS discovery,还有servergry,说我们这个里边呢有非法字符。
18:20
我们呢,暂时可以先不管它,但我们现在呢,看到我们这个容器呢,好多次重启以后呢,它失败,刚才还爆了一个oom,相当于我们这个内存溢出,导致呢,我们把这个容器给停掉了,好我们看到这个现象呢,重现了OMQ的,如果我们这个网关能出现这个问题,其实我们其他的微服务呢,都会有这个问题,就是oom,其实呢,这个原因很简单,这是由于呢,我们在这儿我们来看给每一个微服务在这儿部署的时候,我们的内存给它限制,相当于这个内存呢,最大占用我们500MI,然后呢,CPU1核,但是我们这个微服务启动的时候,我们这个GVM给它可能一次性就分配了几个G,那直接超出我们限制容器呢,就把它杀掉了,所以我们要做的就非常简单的一件事,在我们在构建刀ER镜像的时候,我们再来约束每一个微服务呢?除了我们在这儿是这样外,我们还可以来加一些这个约束,比如你最大的占用内存。
19:21
诶,我们之前的这些XMS是多少,XMX是多少,我们把这两个呢都一加,这样每一个微服务呢,自己启动的时候,初始占用128,然后呢,我最大让它呢占用上300M,这样我们每一个微服务呢,最大都占300M,那微服务呢,即使扩容的时候,它呢最大也占用300M,如果呢,一个不够,我们把这个300M的微服务就不断的往上扩容就行了,这是第一种办法,那第二种办法就是你可以来修改我们这一块它的这个内存限制,你给他限制到五个G,哎,那GVM肯定不跟不会给他分配五个G,但我们一般不要这样做,我们就来限制每一个微服务,它自己启动占用的这个,好,我把这一块呢,CTRLC,接下来呢,在每一个微服务的docker fairre里边让它构建doer镜像的时候,如果我们来启动它,就得约束好我们这个占用的这个内存,每一个呢,我们都来加上这个就没有任何问题了。
20:21
好,那接下来剩下的加我呢就不录了,大家就直接一加,那这小问题解决以后,我们下一课呢,继续来进行我们剩下的部署。
我来说两句