持续集成(CI)、持续部署(CD)、持续交付(CD)需要经历那些过程

在这里插入图片描述
上面这张图集中解释和说明了从开发到最终部署的过程,就这张图做如下几点解释:
1、第一种:从Developers研发人员开始,push代码到git(版本控制)上去,然后利用Jenkins/CI集成工具进行build(构建)和test(测试),生成应用程序application,并打包成docker镜像push到docker registry镜像仓库,再由kubernetes集群从镜像仓库pull下来进行集成部署了,如果把这一整套开发到部署的过程全部自动化的话,那么就实现了持续部署(CD)
2、第二种:开发人员Developers还要开发第二套组件,就是开发人员为application应用程序写一份Dockerfile自定义镜像,Dockerfile开发完后一样的由开发人员push到git仓库上去,它是另外一套git仓库,当然这套仓库也可以和第一种的git仓库同步提供。当我们提供完了之后把构建好的应用程序application结合Dockerfile利用docker build(Jenkins是可以直接调docker的,你只要有docker环境),Jenkins调docker环境把对应的dockerfile拖下来,application应用程序也构建好了,可以直接打包成docker镜像,打包完后直接推送到hub registry镜像仓库上去。
3、我们要想把应用程序部署到kubernetes集群之上,kubernetes怎么样才能完成部署呢?首先要有配置清单,如果我们研发了配置清单,这是开发人员在另外一条线上,开发人员写好配置清单,配置清单用相应的模板来写就可以了,把应用程序打包成镜像以后,换成对应的镜像版本。还有另外一种简单的方式:我们的程序员也可以事先写好manifest,部署时候的manifest的模板,利用ansible或者其他工具,这里的ansible的作用是:第一做模板引擎渲染,意思就是把模板中的那些代码替换成对应的值。把ansible连接到本机的kuberctl客户端,直接在本地执行kuberctl客户端,然后把kuberctl客户端连接到APIservice上,把我们本地的manifest文件推送过去,指定k8s拖镜像来更新了。这个过程一系列的文件都要准备好,而后才能触发这个组件正常工作的。
在这里插入图片描述
一、如何部署k8s
1、部署k8s可以在裸机上,可以在虚拟机上,可以在公有云上,可以在私有云上都支持k8s的部署。如果有云平台可以部署k8s的话,就尽量不要用裸机部署。所以要定位k8s部署的核心架构(core infrastructure)。
2、基于核心架构我们就可以在其上部署网络环境network以及存储环境storage,网络环境一般是由SDN(软件定义网络,是一种网络虚拟化的实现),存储一般都是开源的应用程序来构建分布式存储,最流行的就是ceth。
3、基于网络环境以及存储环境之上我们就可以部署k8s集群了,构建一个容器编排系统了,在此基础之上我们还需要一个容器化的工作流(这都是业务层考虑的事情,可以忽略)。真正在此之上的需要一个容器化的负载(container worload),各种应用程序都可以运行在k8s集群中,简单的说就是要有一个容器化运行环境,然后可以很好的运行各种容器化的应用程序,把工作负载跑起来,无论是有状态的还是没有状态的
4、除此之外,还要registry镜像仓库服务,是在整个k8s集群中必不可少的组成(它是为k8s集群和容器化负载服务的);还需要provisioning和configuration(它们是为最底层的核心架构和网络环境以及存储环境服务的)。
5、从最低层到最上层的我们都要进行不间断的监控,都要记录到日志中去。因此还需要loggingsystem日志系统,Monitoring系统。我们都知道,当k8s集群自己的服务发布出去之后,除了本身的服务和容器负载,还有外置的负载均衡器。因此我们还需要load balancer外置的负载均衡器,把我们的应用程序构建完成之后由专门的存储位置叫做公建仓库artifact factory,我们要确保应用程序自动化的工具build automation也就是能够把CI、CD集成下来,最好也还能实现自动发布release automation。因此k8s就是整个环境中的核心环节
6、除了load balancer之外,其他组件(工具)都可以托管运行,因此就是以k8s为中心构建出的一套环境

以上就是k8s中的关键组件

二、上图的k8s环境以及组件哪些是需要我们自己管理的
1、如果是购买的公有云服务,core infrastructure核心架构、网络环境、存储环境都不需要我们自己提供,公有云平台都有。因此这种我们称为是托管。我们自己只需要管理kubernetes cluster集群、日志logging、Monitoring系统。
2、镜像仓库image registry云平台也可以提供,比如阿里云、网易云等等,都有相关镜像服务提供,因此也不需要我们自己提供

猜你喜欢

转载自blog.csdn.net/cdbdqn001/article/details/85787281