基于Rancher+阿里云Code构建的DevOps自动化部署

服务器

浏览数:73

2020-6-21


(一)Rancher的应用及优点简介

放个图吧,经过我自己试用,Rancher确实要比原生的k8s要方便许多

整个Rancher的搭建流程大概最多就在2个小时左右,非常方便快捷

(二)Rancher的安装和使用

1、环境选择

安装Rancher环境,一定要在干净的linux主机上进行,避免出现因配置导致的莫名其妙的问题。服务器操作系统建议CentOS7.4(内核3.10以上),低于这个版本的系统 如7.3 7.2会报一个小bug,不过倒不影响使用,再低内核的版本就不要用了,很多都不支持。

生产环境建议采用阿里云 Rancher(1C 2G以上的配置,若要保证运行稳定,建议配置至少2C 4G),宿主机(1C 2G以上的配置)、弹性公网EIP+ 专有网络测试,私有环境建议采用Rancher(1C 2G以上的配置),宿主机(1C 2G以上的配置)、 虚拟机(Hyper-V、VMware)+ 同一内网可通讯Rancher 1.6.12 ,调度引擎选择Cattle。Rancher2.0调度引擎默认使用K8s,当前还是测试版,官方不建议在生产环境使用。

2、环境配置

3、安装Docker

3.1 安装 Docker17.06 CE

curl https://releases.rancher.com/install-docker/17.06.sh | sh

这里不建议安装最新的docker19版本,因为rancher目前官方最高只支持docker 17.06 版本,包括虚拟机也一样,直接使用rancher官方提供17版本一键安装的脚本即可

3.2 配置加速器

这里推荐使用阿里云的docker镜像加速器

打开 链接 即可,有阿里云账号可以直接登陆使用

在容器镜像服务内找到镜像加速器

配置

配置成功后重启docker服务使之生效

sudo systemctl daemon-reload
sudo systemctl restart docker

4、安装Rancher管理端

登陆服务器Mgr01安装Rancher服务

4.1执行Rancher安装脚本

sudo docker run -d --restart=unless-stopped -p 8080:8080 rancher/server

运行完后,就可以通过IP:8888来访问Rancher的管理台了,接下来我们就可以点击 “添加主机” 来添加各个宿主机了

5、为Rancher网络添加主机资源

下面开始为我们Rancher容器平台增加主机资源,有了资源我们才能部署对应的docker镜像虚拟机
以下主机被称为宿主机
登陆宿主机安装Rancher Agent(探针)

依次登陆各个宿主机,执行5里面的脚本即可。

这里需要注意的一点是,如果需要把mgr01加为宿主机,那么需要在4里面填写mgr01和ws之间互通的内网IP地址,建议不要添加mgr为宿主机,方便后续做mgr集群高可用。

添加好的界面

这样子我们就能在上面的三台服务器中自由的部署我们的服务应用节点了

 

(三)私有代码库阿里云Git使用

1、引言

使用DevOps肯定离不开和代码的集成。所以要想跑通整套流程,代码库的选型也是非常重要的。否则无法实现持续集成。目前比较常用的代码管理有SVN和Git,如果还使用SVN的,建议尽早迁移到Git上面,不然很费劲的。尤其是webhook,很多svn软件都不支持。

2、Git选型

我们这里选择阿里云code,其实选择 githup/bitbucket 这些也是OK的,不过我这里主要是考虑后面还得用阿里云的容器镜像服务,所以懒了一点,选择了一整套阿里云相关的解决方案。

3、注册阿里云Code

打开 链接 自行注册即可。使用方法就不说了,和GitHub差不多。性能,稳定性,都比较好。

4、代码管理

通过开发IDE工具,把应用代码放到Git库里面。比如我这里有个config的项目

5、代码库管理

这时候看到Git服务端已经可以做代码管理了

(四)私有镜像库阿里云Docker服务使用

1、注册使用

打开 链接 即可,有阿里云账号可以直接登陆使用

2、配置加速器

登陆自己的Rancher服务器mgr和ws节点,依次执行下列配置,把自己的docker加速器配置上。

3、这时候你就有了自己的私有镜像库

可以使用docker标准的pull、push等进行镜像推拉操作。

(五)微服务CI与Rancher持续集成

1、引言

本篇文章的主要的干货来了,我们讲的就是快速集成部署,这里会使用阿里云Code搭配他们的容器服务做自动化持续集成部署。其中主要的关键点在于通过使用阿里云容器镜像库对阿里云CODE做监听,当我们通过git提交代码触发版本更新后,容器镜像库自动拉取最新的代码进行镜像构建,构建成功后再通过Rancher的WebHooks通知Rancher做服务升级

2、集成说明

这次的案例集成代码采用java微服务项目,可抛弃第三方集成组件如Jenkins,简单高效。

实现提交代码,即生产发布的全自动流程 (Code->Git repository->Docker repository->Rancher->Server)

下面开始正式的集成操作讲解

3、配置自动CI

首先需要配置阿里云镜像库的自动构建

登陆阿里云镜像库

选择镜像区域,如华南1.点击“创建镜像仓库”

大致步骤如下:
创建:命名空间
仓库名称:项目名称
源代码选择:阿里云Code或者其他的Git源
勾选:代码变更时自动构建镜像 
路径:/或者你代码里Dockerfile文件的全路径
标签:latest或者自定义版本号
然后点击:创建镜像仓库

这里有几个点要注意,

一是阿里云Code的用户名和密码分别是在右侧管理菜单里Profile里面查看和修改

二是阿里云镜像仓库的密码需要单独在镜像仓库右侧的修改Registry登录密码设置,下面Rancher会用到

4、配置镜像自动构建

4.1 创建在Rancher创建镜像库

点击刚创建的:server-config库,管理,记录下镜像库的地址,因为需要在接下来的Rancher中进行配置。
只有再Rancher里面配置了镜像库,我们才能再创建应用时使用对应的镜像

进入Rancher管理后台-基础架构-镜像库 -添加

添加成功后,Rancher就可以下载部署你的私有镜像

4.2 配置 Rancher WebHooks

接下来进入Rancher管理后台 -API-WebHooks 添加一条接收器

名称:hook名字(随意)
类型:升级服务
参数格式:阿里云
标签:latest
选择器标签:update=server-config
然后点击:创建 
复制保存:触发地址

这里有两个点很关键,一个上面的参数格式必须要选阿里云,不能选择默认的Docker Hub
另一个是选择器标签设置也很关键
,这个决定了后面阿里云推送更新时我们会升级Rancher里面的那一些应用服务

4.3 配置阿里云镜像仓库的webhook

再次进入阿里云Docker管理服务后台,可以看到构建里面的镜像已经构建完毕。

我们点击webhook,新增一条记录

名称:随意
URL:刚才Rancher里面配置的触发地址
标签:latest

4.4 在Rancher创建并部署我们的应用

登陆Rancher管理后台

新建服务

镜像:刚建立的镜像名称
标签:update=server-config
完成后,Rancher自动拉取镜像库的镜像并部署

这里同样的主机标签设置也关键,这里将会和上面的webhook推送关联起来,如果设置不当,我们将无法自动升级

5、自动集成,升级

提交代码。查看镜像自动构建过程。完成后,查看Rancher的服务server-config自动升级。

至此,基于DevOps的全自动CI/DI发布已经实现。且不用配置Jenkins等复杂的集成组件。最重要的是:不需要自己的服务器,全部FREE。

  1. 这种集成适合于团队内部进行了相关测试,最终交付的代码已经是稳定可靠版、直接上生产的情况。其实这也是大多数中小型公司使用的方式,属于半自动化,方便,灵活可控,可随时中断某个环节。
  2. 另外一种方式,是全部使用全自动化集成测试,同时包括自动化团队沟通、同时多镜像库发布、自定义动作等。这个对公司IT能力水平要求较高,使用Pipeline Jenkins流水线发布。这个我会在随后的博文里面给大家讲。

 

。。。未完,待续,后面还有一些Rancher的东西没讲,有空再补吧

 

作者:JacCoffee