云原生 · DevOps | 集成Harbor

在这里插入图片描述
啊我摔倒了..有没有人扶我起来学习....


个人主页: 《 C G o d 的 个 人 主 页 》 \color{Darkorange}{《CGod的个人主页》} CGod交个朋友叭~
个人社区: 《 编 程 成 神 技 术 交 流 社 区 》 \color{Darkorange}{《编程成神技术交流社区》} 加入我们,一起高效学习,收割好Offer叭~
刷题链接: 《 L e e t C o d e 》 \color{Darkorange}{《LeetCode》} LeetCode快速成长的渠道哦~


目录

  • 前言
        • 8.1 Harbor介绍
        • 8.2 Harbor安装
        • 8.3 Harbor使用方式
          • 8.3.1 添加用户构建项目
          • 8.3.2 发布镜像到Harbor
          • 8.3.3 从Harbor拉取镜像ls
          • 8.3.4 Jenkins容器使用宿主机Docker
          • 8.3.5 添加构建操作
          • 8.3.6 编写部署脚本
          • 8.3.7 配置构建后操作


前言

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


8.1 Harbor介绍

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

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

8.2 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_第1张图片
  • 启动Harbor

    ./install.sh
    
    查看日志
    云原生 · DevOps | 集成Harbor_第2张图片
  • 登录Harbor

    登录Harbor
    云原生 · DevOps | 集成Harbor_第3张图片
  • 首页信息

    首页信息
    云原生 · DevOps | 集成Harbor_第4张图片

8.3 Harbor使用方式

Harbor作为镜像仓库,主要的交互方式就是将镜像上传到Harbor上,以及从Harbor上下载指定镜像在传输镜像前,可以先使用Harbor提供的权限管理,将项目设置为私有项目,并对不同用户设置不同角色,从而更方便管理镜像

8.3.1 添加用户构建项目
  • 创建用户

    创建用户
    云原生 · DevOps | 集成Harbor_第5张图片
  • 构建项目(设置为私有)

    构建项目
    云原生 · DevOps | 集成Harbor_第6张图片
  • 给项目追加用户

    追加用户管理
    云原生 · DevOps | 集成Harbor_第7张图片
  • 切换测试用户

    切换测试用户
    云原生 · DevOps | 集成Harbor_第8张图片
8.3.2 发布镜像到Harbor
  • 修改镜像名称

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

    修改镜像名称
    云原生 · DevOps | 集成Harbor_第9张图片
  • 修改daemon.json,支持Docker仓库,并重启Docker

    修改daemon.json,支持Docker仓库
    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Rnm64PCR-1668395031119)(Pictures/image-20211201215931237.png)]
  • 设置登录仓库信息

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

    推送镜像到Harbor
    云原生 · DevOps | 集成Harbor_第10张图片
    云原生 · DevOps | 集成Harbor_第11张图片
8.3.3 从Harbor拉取镜像ls

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

{
        "registry-mirrors": ["https://pee6w651.mirror.aliyuncs.com"],
        "insecure-registries": ["192.168.11.11:80"]
}
拉取镜像
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-mO2ai34n-1668395031121)(Pictures/image-20211201222450091.png)]
8.3.4 Jenkins容器使用宿主机Docker

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

设置Jenkins容器使用宿主机Docker

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

    sudo chown root:root /var/run/docker.sock
    sudo 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
    
8.3.5 添加构建操作
制作自定义镜像
云原生 · DevOps | 集成Harbor_第12张图片
8.3.6 编写部署脚本

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

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

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

    并设置权限为可执行

    chmod a+x deploy.sh
    
    如图
    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-BrusyXOJ-1668395031122)(Pictures/image-20211203192047357.png)]
8.3.7 配置构建后操作
执行脚本文件
云原生 · DevOps | 集成Harbor_第13张图片

在这里插入图片描述

你可能感兴趣的:(云原生,云原生,devops,运维,Harbor)