天天看点

GitLab+Rancher实践DevOps

本文描述使用自建GitLab和Rancher实践持续集成/持续交付流水线的过程,并用Rancher实现容器编排和蓝绿发布。

GitLab持续集成/持续交付流程图:

这是一个Go语言编写的项目Dockerfile文件,Go语言编译器将项目编译成可执行程序,所以这个Dockerfile比较简单,如果是Python这种解释型脚本语言要安装各种依赖会稍微麻烦一些。

Rancher系统架构图:

从这个图上可以清晰地看出Rancher五层架构:

最底层(第一层)是各种云计算虚拟化环境,这些环境是以插件的形式提供。

第二层是在云平台上建立的虚拟主机。

第三层是各种基础服务,如存储、网络、负载均衡、DNS等。

第四层是容器编排、用户管理、运维管理,容器编排包含了各种主流的容器编排工具Cattle、Docker Swarm、Kubernetes、Mesos。

第五层是各种容器应用。

Rancher官方文档内容很多,但是常用的功能其实并不多,所以这里只介绍最常用的几个功能。

在每个环境中,你可以给每个私有仓库地址配置一个认证信息,从而使Rancher可以拉取私有镜像。如果你给同一个镜像仓库配置了多个认证信息,那么Rancher只会使用最近添加的一个认证信息。Rancher支持在Cattle和Kubernetes环境中使用多种镜像仓库。

应用栈:应用栈可以部署多个容器服务,是一组容器服务的集合。一个应用栈对应一个业务群或者一个系统,用来确定系统边界。

服务:服务分为两种:基础设施服务和用户服务。基础设施服务位于应用商店中,每个环境创建时需要配置环境模板,环境模板中选择需要启动的基础设置服务。用户服务是用户自定义的服务,由用户构建推送到镜像仓库再部署到应用栈。

用环境模板创建环境(Environments),已创建的环境显示在环境管理界面的环境列表中,环境列表中有一个是登录Rancher后的默认环境,列表右边有一列“Switch to this Environment”按钮,点击这个按钮即可切换到该环境。

一个环境下包含多个应用栈(Stacks),基础设置服务应用栈可以从应用商店中添加,用户服务应用栈可以自定义也可以从应用商店中添加,添加一个应用栈就相当于建立一个容器服务集合。

一个应用栈包含多个服务(Services),用户自定义服务就建立在自定义应用栈上,也就是我们通过“添加服务”(Add Service)将镜像部署在应用栈,一个服务由多个容器组成。

选择镜像(Select Image):这个应该比较好理解,不用多解释。

端口映射(Port Map):外部访问端口和容器内部端口对应关系。

服务链接(Service Links):这个选项参数比较多,这里只介绍几个常用的。

命令(Command) :这里面大部分配置都可以写到Dockerfile里面,用的多的是环境变量,环境变量用于服务初始化参数。

网络(Networking):Network有四种参数:None——容器除了回环不配置任何网络信息;Host——容器使用宿主机的网络信息;Bridge——容器通过虚拟网桥接入网络,使用虚拟子网的网络信息;Container-已存在的一个共享网络信息。

容器服务的管理比较简单,主要就是启停、升级,升级也就是蓝绿发布。

使用GitLab可以实现DevOps的开发、测试、构建的过程管理,Rancher则负责DevOps部署和运维的过程管理,这两个工具结合就可以完整的实现DevOps全过程,当然还需要依赖一个云计算平台建立云主机,公司内部如果需要自建虚拟化服务器可以使用XenServer。

上一篇: 软件集
下一篇: BT限制方法