gitlab+jenkins+harbor持续集成(barbor篇)

Posted by ZMY on February 20, 2021

gitlab+jenkins+harbor持续集成(harbor篇)

环境描述

主机名/功能 ip地址/访问方式 操作系统 版本 备注
master 192.168.140.210 CentOS Linux release 7.4.1708 v1.20.2 物理机
node1 192.168.140.211 CentOS Linux release 7.4.1708 v1.20.2 物理机
node2 192.168.140.212 CentOS Linux release 7.4.1708 v1.20.2 物理机
node3 192.168.140.213 CentOS Linux release 7.4.1708 v1.20.2 物理机
gitlab http://192.168.140.212:10000   v13.8.2 容器
jenkins http://192.168.140.212:29584/   v2.263.3 容器
harbor http://192.168.140.210   v2.0.6 容器

前面2篇blog讲了gitlab进行代码上传后,触发jenkins自动化构建并执行自动化脚本过程

gitlab+jenkins+harbor持续集成(gitlab篇)

gitlab+jenkins+harbor持续集成(jenkins篇)

harbor安装过程

项目地址https://github.com/goharbor/harbor/

下载harbor最新tar包,有两种格式online和offline,我这里下载的是online

https://github.com/goharbor/harbor/releases

# tar xvf harbor-online-installer-v2.0.6.tgz 
# cd harbor
# cp harbor.yml.tmpl harbor.yml

修改barbor.tml文件参数,hostname和关闭https访问

# vim harbor.yml
hostname: 192.168.140.210
#https:
  # https port for harbor, default is 443
#  port: 443
  # The path of cert and key files for nginx
#  certificate: /your/certificate/path
#  private_key: /your/private/key/path

执行install.sh脚本

sh install.sh

由于harbor没有开启加密传输,故需要对docker客户端修改/etc/docker/daemon.json

对于我的环境来说就是master,node1,node2,node3上修改

{
"insecure-registries" : ["192.168.140.210"]
}

重启docker服务

# systemctl restart docker

完全删除harbor相关容器

# docker-compose down -v

创建(若没有)启动harbor容器

docker-compose up -d

web访问http://192.168.140.210

默认用户名:admin密码:Harbor12345

首页如下

创建用来存储image的项目

部署难点

由于jenkins容器中需要完成docker build、docker push等操作,默认jenkins容器中不含有docker命令
有俩种解决办法,第一种在jenkins容器中直接安装docker环境,操作了一遍后发现修改daemon.json后docker服务无法重启,无法使”insecure-registries” : [“192.168.140.210:5000”]生效,因此采用了第二种方法即将docker的socket和docker命令在jenkins启动时挂载到jenkins里,并且在yml文件中添加privilege和runasroot权限,过程请参考gitlab+jenkins+harbor持续集成(jenkins篇)中jenkins-deployment.yaml文件内容,这里不再复述

登陆jenkins平台,找到之前创建的test项目,修改jenkins的build过程中shell脚本内容

cd $WORKSPACE
time=`date +%s`
version=`cat Versions`
docker build -t $time .
docker tag $time 192.168.140.210/newapp/myapp:$version
docker login -u admin -p Harbor12345
docker push 192.168.140.210/newapp/myapp:$version
docker rmi $time
docker rmi 192.168.140.210/newapp/myapp:$version

点击立即执行

观察返回结果,成功显示:success

查看harbor上是否有镜像文件生成

对镜像内容进行验证,我这里再node1上进行镜像的验证

[root@node1 ~]# docker pull 192.168.140.210/newapp/myapp:v1.0
[root@node1 ~]# docker run -d -p 20000:20000 192.168.140.210/newapp/myapp:v1.0
758d0baa43211783b5f3f5ce0ec233ee11a64a5d8f08d9d1cef765b701a34576

网页访问http://192.168.140.211:20000, 命令行中输入df -h

修改git项目内容将index.html中ifconfig—>date

修改Versions文件内容v1.0—>v1.1

git客户端提交

#git add .
#git commit -m "."
#git push -u origin master

查看jenkins能否自动构建docker镜像,并上传到harbor上

上面可以看到v1.1版本镜像已经成功上传到harbor,接下来通过这个进行进行验证

[root@node1 ~]# docker pull 192.168.140.210/newapp/myapp:v1.1
[root@node1 ~]# docker run -d -p 20001:20000 192.168.140.210/newapp/myapp:v1.1

网页访问http://192.168.140.211:20001,查看结果

通过如上操作步骤完成了gitlab+jenkins+harbor的持续集成项目的全部过程,对于gitlab和jenkins的安装和部署

gitlab安装过程,请参考上一篇博客gitlab+jenkins+harbor持续集成(gitlab篇)

jenkins安装及配置过程,请参考上一篇博客gitlab+jenkins+harbor持续集成(jenkins篇)

声明:本博客的原创文章,都是本人平时学习所做的笔记,转载请标注出处,谢谢合作。