美文网首页DevOps
DevOps之集成Harbor

DevOps之集成Harbor

作者: 羋学僧 | 来源:发表于2022-07-07 16:43 被阅读0次

1、 Harbor介绍

前面在部署项目时,我们主要采用Jenkins推送jar包到指定服务器,再通过脚本命令让目标服务器对当前jar进行部署,这种方式在项目较多时,每个目标服务器都需要将jar包制作成自定义镜像再通过docker进行启动,重复操作比较多,会降低项目部署时间。

我们可以通过Harbor作为私有的Docker镜像仓库。让Jenkins统一将项目打包并制作成Docker镜像发布到Harbor仓库中,只需要通知目标服务,让目标服务统一去Harbor仓库上拉取镜像并在本地部署即可。

Docker官方提供了Registry镜像仓库,但是Registry的功能相对简陋。Harbor是VMware公司提供的一款镜像仓库,提供了权限控制、分布式发布、强大的安全扫描与审查机制等功能

2、 Harbor安装

这里采用原生的方式安装Harbor。

3、 Harbor使用方式

Harbor作为镜像仓库,主要的交互方式就是将镜像上传到Harbor上,以及从Harbor上下载指定镜像

在传输镜像前,可以先使用Harbor提供的权限管理,将项目设置为私有项目,并对不同用户设置不同角色,从而更方便管理镜像。

3.1、 添加用户构建项目
  • 创建用户

    创建用户
  • 构建项目(设置为私有)

    构建项目
  • 给项目追加用户

    追加用户管理
  • 切换测试用户

    切换测试用户
3.2、 发布镜像到Harbor
  • 修改镜像名称

    名称要求:harbor地址/项目名/镜像名:版本

    修改镜像名称
  • 修改daemon.json,支持Docker仓库,并重启Docker

    修改daemon.json,支持Docker仓库
  • 设置登录仓库信息

    docker login -u 用户名 -p 密码 Harbor地址
    
  • 推送镜像到Harbor

    推送镜像到Harbor
3.3、 从Harbor拉取镜像ls

跟传统方式一样,不过需要先配置/etc/docker/daemon.json文件

{
        "registry-mirrors": ["https://pee6w651.mirror.aliyuncs.com"],
        "insecure-registries": ["192.168.117.112:80"]
}
拉取镜像
3.4、 Jenkins容器使用宿主机Docker

构建镜像和发布镜像到harbor都需要使用到docker命令。而在Jenkins容器内部安装Docker官方推荐直接采用宿主机带的Docker即可。

设置Jenkins容器使用宿主机Docker

  • 设置宿主机docker.sock权限:
chown root:root /var/run/docker.sock
chmod o+rw /var/run/docker.sock
  • 添加数据卷

    version: "3.1"
    services:
      jenkins:
        image: jenkins/jenkins
        container_name: jenkins
        ports:
          - 8080:8080
          - 50000:50000
        volumes:
          - ./data/:/var/jenkins_home/
          - /usr/bin/docker:/usr/bin/docker
          - /var/run/docker.sock:/var/run/docker.sock
          - /etc/docker/daemon.json:/etc/docker/daemon.json
    
3.5、 添加构建操作
制作自定义镜像
mv target/*.jar docker/
docker build -t devopsdemo:$tag docker/
docker login -u admin -p Harbor12345 192.168.117.112:80
docker tag devopsdemo:$tag 192.168.117.112:80/repo/devopsdemo:$tag
docker push 192.168.117.112:80/repo/devopsdemo:$tag
3.6、 编写部署脚本

部署项目需要通过Publish Over SSH插件,让目标服务器执行命令。为了方便一次性实现拉取镜像和启动的命令,推荐采用脚本文件的方式。

添加脚本文件到目标服务器,再通过Publish Over SSH插件让目标服务器执行脚本即可。

  • 编写脚本文件,添加到目标服务器
horbar_addr=$1
horbar_repo=$2
project=$3
version=$4
container_port=$5
host_port=$6

imageName=$horbar_addr/$horbar_repo/$project:$version

echo $imageName

containerId=`docker ps -a | grep ${project} | awk '{print $1}'`
echo $containerId

if [ "$containerId" != "" ] ; then
    docker stop $containerId
    docker rm $containerId
fi

tag=`docker images | grep ${project} | awk '{print $2}'`

echo $tag

if [[ "$tag" =~ "$version" ]] ; then
    docker rmi $imageName
fi

docker login -u admin -p Harbor12345 $horbar_addr

docker pull $imageName

docker run -d -p $host_port:$container_port --name $project $imageName

echo "SUCCESS"

并设置权限为可执行

chmod a+x deploy.sh
如图
3.7、 配置构建后操作
执行脚本文件

相关文章

网友评论

    本文标题:DevOps之集成Harbor

    本文链接:https://www.haomeiwen.com/subject/lkspbrtx.html