00:00
前面我们使用cooper把我们后来项目里边要用到的所有基础环境,比如nasas search red my circle等等,我们全部部署到了notice里边,那接下来我们就应该将我们每一个微服务最终也整个部署到cooper notice里边,那如何把我们自己的微服务部署上去,那就应该是这个样子的,首先我们想要给我们CUNE里边来部署一个我们自个儿的微服务应用,我们可以来遵循这个步骤,第一步我们先要将我们这个项目打包成一个镜像,制作成一个镜像,我们看我们现在呢,有非常多的微服务,每一个微服务呢都应该制作成一个镜像,这样做的好处就是我们都知道K8S的最基础容器运行时环境是我们的docker,所以呢,Docker是可以把镜像下载来,然后呢,根据这个镜像启动一个容器,而K8S呢,是把这个容器再来。
01:00
封装成一个pod,所以我们得有镜像才能整个在K8S里边来做一个运行,所以们第一步就是要将项目打包制作成我们的这个镜像,把这个镜像呢,还要上传到仓库,这个仓库呢,你可以直接上传到do APP,上传到我们这个公共仓库,你也可以在Co ne这个集群里边搭建一个私有仓库,也都行,那们现在呢,就直接上传给我们doer appb就行了,那等你把这个镜像创建完了以后,那我们现在呢,相当于doc heb里边有我们每一个微服务的这个镜像了,就像有zipkin等等这类的镜像一样,那现在像启动自己在这儿创建服务,下载来镜像启动都行,这是第一种。第二种我们为了自动化部署,因为现在微服务众多,我们每一个每一个在这创建太麻烦了,所以我们应该用一个自动化的,我们称为。自动化部署流程,就是我们说的CICD持续集成,持续部署,那么就应该用一个持续集成我们说的这个流水线的方式,然后呢,让它自动的去来拉取到我们项目的代码,包括我们这个构建镜像,也不应该我们自己手工一个一个构建来看,我们微服务众多,一个一个构建很麻烦,特别遇上版本升级,我们现在微服务我们代码呢都修改了,先权限版本升级,我们又一个一个打包镜像,太麻烦,所以呢,我们很这一块也应该是自动化,就这一套流程,我们都应该做成一个自动化的才是。
02:31
那我们的第一步。我们只要把每一个项目的这个镜像制作好了,那接下来我们可以使用我们的这个流水线工程,把项目代码拉取过来,假设我们所有的代码在这儿都准备好了,然后呢,我们拉取过来,那拉取过来以后呢,我们可以创建出一个流水线,但这个流水线呢,要求我们这个项目里边必须有一个金ins fair,这个金ins fair该怎么写才是我们要真正研究的内容,然后我们如果有这个金in fair,我们这个项目拉取来,然后呢,我们应该自动的将每一个微服务打包成一个我们docker镜像上传到doer,然后呢,接下来Co ne。
03:13
比如说我们这个K8S自己从doer have里边拉取来镜像,然后呢,拉取来镜像以后,它要启动一个我们K8S里边的这个服务,就是我们说的service,那service呢,其实是对我们之前说的一个pod的封装,拉取来镜像以后呢,我们启动一个容器,容器拿pod封装,假设我们都是购物车服务,哎,我们假设呢,现在都是检索或者商品或者订单服务,那订单服务呢。我们按照它镜像启动一个容器,这个容器呢,我们再来封装成一个pod,那订单服务还可以部署到多台机器里边,我们让它拥有三个副本,那这样三台机器每人一个,那所有的这个po的呢,我们还能封装成一个service,就是我们所有的这个订单,相当于它启动的这个容器,在每一个机器,这一号机器,二号机器,三号机器都有它这个订单的pod,那为了我们这个对外访问方便,把这个三个东西我们又封装成一个service,但这些pod service也得我们部署过来,那么部署呢,如果使用可视化界面,就是我们之前在这里边来创建服务,创建服务呢,那就是在这我点一个创建,无论是有状态无状态服务,我们的整个创建呢,其实就是在这儿创建一个部署,然后呢,这个部署创建完,因为我们还要暴露服务,我们再来创建一个service,所以这是我们以前可视化界面操作,现在我们也应该来编写成一个我们这个每一个项目,它到底该怎么。
04:40
部署把之前可视化界面的配置文件我们来弄到这儿,弄到这儿的好处就是把代码拉取过来以后,我们也可以自动的按照我们配置文件的指定,把我们这个代码呢,部署成我们的一个deployment,我们的一次部署,并且呢,把这个部署封装成service,对外还能暴露提供服务,所以们接下来呢,这两步就是我们为每一个项目也得编写一个,它如何部署到K8S里边的这个压麦文件,这个文件呢,其实分为两部分,一部分呢是来编写一个资源类型叫deployment的这个文件。
05:18
这个呢,会为我们生成我们的这些pod,然后呢,Pod我们还能指定有几个副本,它的这个pod我们来给每一个服务器都来放上一个副本,这是我们的第一种方式,但我们现在生成的这些pod,为了让外边整个集群的其他服务都能调用,怎么还应该编写一个service文件,把我们的这些pod统一的暴露出来,比如所有的购物车它的这个服务,这个呢我们暴露出来,暴露成比如31787这个端口,然后呢,别的这个微服务去来调用我们任何一个节点的31787这个端口,我们就能调用到我们这些po这个服务。
06:00
所以呢,这一块的配置文件我们呢,也应该自己来编写,因为一编写以后呢,就可以用自动化的代码来把这一块直接部署过来。然后最终部署完了以后,我们可以集群来访问测试,所以我们想把项目上线到cooper ne里边,那就这么几步,给项目要制作这个刀ER镜像,然后呢,项目每一个的部署文件我们就得写好,而这个呢,在我们之前的这个势例项目里边已经都有了我们金克S的这个流程文件,我们先不准备它,因为每一个呢要打包成刀客镜像,我们现在呢,这个项目是一个单体应用项目,就只有这一个项目,只有这一个项目呢,我们看这个事例里边也有一个叫docker fair,我们想要把一个项目做成一个doer镜像,我们需要熟悉doer fair的写法,诶,那就是我们接下来要说的这个docker fair,这样的话呢,我们docker就可以根据docker fair的指定,把它呢打包成我们这个指定的镜像,如果我们每一个项目都拥有它的docker fair,那么最终就会使用这个命令,比如docker build-F,也就说我使用docker这个命令build构建。构建呢,杠F就。
07:10
是来指定一个文件,我指定使用这个文件,文件的内容假设就是它,然后呢,我来构建一个刀客镜像,我把这个镜像名呢来写上,这样我们就准备了一个镜像,然后呢,我们把镜像想要上传到doer help来登录自己的doer help用我们doc的账号密码一登录,然后呢把我们镜像刚才创建好的这个镜像们来再上传上去就行了,用默认build的这个镜像。默认呢,是在我们本地的这个docker仓库里边,本地的docker仓库其实就是这来打开给大家看一下。本地的docker仓库呢,连上我们这个电商项目,因为知道去docker下载镜像,我们都是docker po下载来,下载来呢,我们使用docker images可以查到我们所有的镜像,而本地仓库那就是存在我们这个虚拟机里边的所有镜像,那么的第一个命令docker build可以把我们这个打包成一个先存到我们虚拟机的临时镜像,然后呢,我们再用doer push把它推送到远程,以后呢,K8S集群里边的任何机节点都可以从远程拉取到镜像来进行下载和使用了。所以接下来我们要部署的这两步,我们接下来要做的两步,第一步为每一个项目准备一个doer fair,为每一个项目项目准备一个咱们这个doer fair准备,它的意义就是我们可以最终我们使用自动化的方式,让docker按照这个docker fair来对项目进行打包。然后呢,Docker会按照。
08:43
Docker,然后呢,按照这个docker fair将项目制作成镜像。将咱们这个项目制作成镜像,所以我们接下来要做的第一件事情是它,然后呢,第二件事,我们这个镜像如果准备好了以后,那接下来怎么办呢?那接下来为每一个项目再来生成一个部署的描述文件,为每一个咱们这个项目生成生成咱们这个K8S的这个描述文件,如果你自己不写这个描述文件其实也行,只要你能把这个镜像打好,你自己手动的在这。
09:22
来创建一个一个的这个服务就行了,就像我们以前一样,在这呢来选中服务,我来创建一个服务,比如它是无状态服务,我们来写一个假设呢,这是购物车,然后我们用的镜像是什么,你只要能打包成镜像,你自己在这儿到个仓库里面找你的镜像,然后就跟我们以前的设置一模一样,所以呢,我们不想手动的在这一个一个创建的话,我们就应该写一个金费整个持续的流程,然后呢,流程里边我们按照每一个项目生成的K8S的这个部署描述文件,部署描述文件,然后呢,我们。把这个项目自动的部署到K8S集群里边,就相当于替换了我们手工的创建这一块,通过可视化界面创建,这是我们要做的第二件事情。
10:06
其实能把这些事情串起来的这个人,那就是我们的ins,好这个金ins呢,他可以把我们这些事情串起来。我们通过一个流水线的方式,然后呢先给我们打包镜像,然后再按照我们文件部署,整个完了以后,我们就全部OK了,所以呢,我们这个金程丝呢,就要编写好我们的咱这个这个je Jenkins fair就行了,编写好那Jenkins fair,这个Jenkins fair,我们只要把这个我们来编写好,然后呢,我们这个gene把这个代码拉取下来以后,我们就可以按照我们的这个genes fair,把我们整个的项目按照我们指定的流水线流程给我们构建好,来构建的每一步怎么样构建docker镜像,你就写一个docker fair,怎么样构建一个部署,你就写一个K8S的这个部署描述,文件完了以后呢,就全程自动化了,这是我们的整个基础流程,那下一节课我们就遵照这个流程,把整个应用呢上线上去。
我来说两句