1 前言
本文讲解如何从普元Devops配置构建,从而实现在云主机上拉取Docker镜像,然后运行Docker容器,实现云主机的Docker部署。
2 主要步骤说明
首先,我们有一个Devops服务器,还有一个云主机服务器,还有一个harbor服务器。
Devops服务器: 安装有普元Devops、Jenkins。需要配置SSH rsa公私钥,然后将公钥传到云主机服务器上,从而实现devops服务器可以无密码访问云主机服务器。
Harbor服务器:安装harbor,在harbor上已经上传了项目镜像。
云主机服务器:需要安装Docker,ansible 。
ansible是一个自动化运维工具,Devops发送命令到云主机服务器运行ansible脚本,从而实现容器部署。
3 Devops服务器安装devops和jenkins
安装普元Devops和jenkins的步骤,我就不赘述了。有机会的话,我会再写一个文档来描述。
这里写这一节,只是提示各位同学,Devops服务器上需要先安装普元Devops和jenkins。
4 Devops服务器配置无密码登录云主机
这个就是设置SSH的rsa_id,具体的操作方法可以看我的文章:《CentOS实现服务器A无密码SSH访问服务器B》
5 云主机安装ansible
这个很简单,执行两条命令即可
yum -y install epel-release
yum -y install ansible
6 云主机上配置daemon.json
云主机需要从harbor服务器上拉取代码到云主机。
我自己配置的harbor服务器,暴露的协议肯定是http的,而不会是 https的。
云主机需要再deamon.json中配置如下:
{
"insecure-registries": [
"harborIP:harborPort"
],
"registry-mirrors": [
"https://jtyt9xqw.mirror.aliyuncs.com"
]
}
这样,在拉取镜像的时候才会采用http协议拉取。
7 Devops创建 主机容器部署 的构建
先插一句,要想做这一步,Devops中需要创建项目、组件、主机资源、Harbor镜像服务等等,这些我这里就不赘述了,假设已经配置好这些了。关于这些配置的操作,我以后有机会再写文章描述吧。
在普元devops中,项目中 -- 集成 -- 构建。
在这个页面右侧找到创建构件定义按钮
点击后打开创建构件的页面,填写内容如下:
名称:随便写
构建定义模板:我选择了空模板
组件:这个组件是普元Devops的一个功能,根据我的理解是为了将构建、镜像服务等信息关联起来。这里的组件01是我之前已经创建好的,直接选择即可。
然后点击确定。
之后看到一个空白的任务列表,点击+按钮,添加一个"主机容器部署"任务
然后在部署类型的任务重,选择"主机容器部署"
然后点击确定,之后就看到任务列表中多了一项"主机容器部署"的任务,然后就可以针对这个任务进行操作了。
组件名称,必须选择。
镜像信息,就是从哪个镜像仓库拉取镜像,这里的simple2是我在harbor服务器上配置的镜像,关于harbor服务器怎么安装和配置,我这里就不赘述了,以后有时间我写一个文章来说明吧。
资源的意思就是云主机,我这里选择的是我配置好的云主机:82服务器,在devops中如何维护主机服务器,以及主机服务器如何实现无密码ssh访问,这里不赘述了,以后有时间单独写个文章。
容器配置,这些都是docker容器相关的信息,我就不赘述了。
这些都配置好后,点击保存。
然后就可以执行构建了。
8 执行构建
点击执行构建按钮,执行一段时间后,在82服务器上检查是否启动成功了容器。看到simple2容器启动,就说明成功了。
9 遇到的坑
我刚刚写的一条条的很简单,但基本执行中是一步一个坑。
* 需要先配置好项目、配置镜像仓库、配置资源、创建组件。这些就不废话了,基本的Devops操作。
* 需要安装Harbor服务器。
* Devops服务器要可以ssh无密码访问云主机。否则,Devops服务器怎么可能让云主机执行容器部署的docker命令呢。
* Devops服务器和云主机上需要安装 ansible。这个是一个运维工具
* 云主机需要可以拉取Harbor服务的镜像。这就涉及到 http协议问题、docker登录镜像仓库等问题。。
目前想到的就这些问题吧,我感觉每一条都是一个单独文章。各位同学在执行中慢慢摸索吧。
总之,并不是难,而是坑太多,每个坑都不难,一堆坑就费劲了。
出门就是坑,坑坑不一样。