> 文档中心 > 【云原生】DevOps(五):集成Harbor

【云原生】DevOps(五):集成Harbor

在这里插入图片描述

本文目录:

  • 一、Harbor介绍
  • 二、 Harbor安装
  • 三、 Harbor使用方式
    • 1. 添加用户构建项目
    • 2. 发布镜像到Harbor
    • 3. 从Harbor拉取镜像ls
    • 4. Jenkins容器使用宿主机Docker
    • 5. 添加构建操作
    • 6. 编写部署脚本
    • 7. 配置构建后操作
  • `【系列好文推荐】`

前言: 📢📢📢
当下云原生火爆全网,云原生充分利用了云计算弹性、敏捷、资源池和服务化特性,改变云端应用的设计、开发、部署和运行模式,为我们大大提供了便利,本篇文章将带大家走进云原生的世界,揭开它的神秘面纱
💕 入门须知:这片乐园从不缺乏天才,努力才是你的最终入场券!🚀🚀🚀
💓最后,愿我们都能在看不到的地方闪闪发光,一起加油进步🍺🍺🍺

一、Harbor介绍

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

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

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

二、 Harbor安装

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

  • 下载Harbor安装包:https://github.com/goharbor/harbor/releases/download/v2.3.4/harbor-offline-installer-v2.3.4.tgz

  • 拖拽到Linux并解压:

    tar -zxvf harbor-offline-installer-v2.3.4.tgz -C /usr/local/
  • 修改Harbor配置文件:

    • 首先复制一份harbor.yml配置

      cp harbor.yml.tmpl harbor.yml
    • 编辑harbor.yml配置文件

      配置Harbor文件
      【云原生】DevOps(五):集成Harbor
  • 启动Harbor

    ./install.sh
    查看日志
    【云原生】DevOps(五):集成Harbor
  • 登录Harbor

    登录Harbor
    【云原生】DevOps(五):集成Harbor
  • 首页信息

    首页信息
    【云原生】DevOps(五):集成Harbor

三、 Harbor使用方式

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

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

1. 添加用户构建项目

  • 创建用户

    创建用户
    【云原生】DevOps(五):集成Harbor
  • 构建项目(设置为私有)

    构建项目
    【云原生】DevOps(五):集成Harbor
  • 给项目追加用户

    追加用户管理
    【云原生】DevOps(五):集成Harbor
  • 切换测试用户

    切换测试用户
    【云原生】DevOps(五):集成Harbor

2. 发布镜像到Harbor

  • 修改镜像名称

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

    修改镜像名称
    【云原生】DevOps(五):集成Harbor
  • 修改daemon.json,支持Docker仓库,并重启Docker

    修改daemon.json,支持Docker仓库
    【云原生】DevOps(五):集成Harbor
  • 设置登录仓库信息

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

    推送镜像到Harbor
    【云原生】DevOps(五):集成Harbor

    | 【云原生】DevOps(五):集成Harbor

3. 从Harbor拉取镜像ls

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

{ "registry-mirrors": ["https://pee6w651.mirror.aliyuncs.com"], "insecure-registries": ["192.168.11.11:80"]}
拉取镜像

【云原生】DevOps(五):集成Harbor

4. Jenkins容器使用宿主机Docker

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

设置Jenkins容器使用宿主机Docker

  • 设置宿主机docker.sock权限:

    sudo chown root:root /var/run/docker.socksudo 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

5. 添加构建操作

制作自定义镜像
【云原生】DevOps(五):集成Harbor

6. 编写部署脚本

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

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

  • 编写脚本文件,添加到目标服务器

    harbor_url=$1harbor_project_name=$2project_name=$3tag=$4port=$5imageName=$harbor_url/$harbor_project_name/$project_name:$tagcontainerId=`docker ps -a | grep ${project_name} | awk '{print $1}'`if [ "$containerId" != "" ] ; then    docker stop $containerId    docker rm $containerId    echo "Delete Container Success"fiimageId=`docker images | grep ${project_name} | awk '{print $3}'`if [ "$imageId" != "" ] ; then    docker rmi -f $imageId    echo "Delete Image Success"fidocker login -u DevOps -p P@ssw0rd $harbor_urldocker pull $imageNamedocker run -d -p $port:$port --name $project_name $imageNameecho "Start Container Success"echo $project_name

    并设置权限为可执行

    chmod a+x deploy.sh
    如图
    【云原生】DevOps(五):集成Harbor

7. 配置构建后操作

执行脚本文件
【云原生】DevOps(五):集成Harbor

【系列好文推荐】

🎯🎯🎯
Python Web开发一:Web开发简介
Python Web开发二:Django的安装和运行
Python Web开发(三):HTTP请求的url路由

欢迎订阅本专栏:零基础学Python 系列课程是针对Python入门&进阶打造的一全套课程,在这里,我将会一 一更新Python基础语法、Python爬虫、Web开发、 Django框架、Flask框架以及人工智能相关知识,帮助你成为Python大神,如果你喜欢的话就抓紧收藏订阅起来吧~💘💘💘
💕💕💕 好啦,这就是今天要分享给大家的全部内容了,我们下期再见!✨ ✨ ✨
🍻🍻🍻如果你喜欢的话,就不要吝惜你的一键三连了~
在这里插入图片描述
在这里插入图片描述
⬇️⬇️ ⬇️ 商务合作|交流学习|粉丝福利|Python全套资料⬇️ ⬇️ ⬇️ 欢迎联系~

驱动天空下载