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


    在这里插入图片描述

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

    一、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/
      
      • 1
    • 修改Harbor配置文件:

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

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

        配置Harbor文件
        在这里插入图片描述
    • 启动Harbor

      ./install.sh
      
      • 1
      查看日志
      在这里插入图片描述
    • 登录Harbor

      登录Harbor
      在这里插入图片描述
    • 首页信息

      首页信息
      在这里插入图片描述

    三、 Harbor使用方式

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

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

    1. 添加用户构建项目

    • 创建用户

      创建用户
      在这里插入图片描述
    • 构建项目(设置为私有)

      构建项目
      在这里插入图片描述
    • 给项目追加用户

      追加用户管理
      在这里插入图片描述
    • 切换测试用户

      切换测试用户
      在这里插入图片描述

    2. 发布镜像到Harbor

    • 修改镜像名称

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

      修改镜像名称
      在这里插入图片描述
    • 修改daemon.json,支持Docker仓库,并重启Docker

      修改daemon.json,支持Docker仓库
      在这里插入图片描述
    • 设置登录仓库信息

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

      推送镜像到Harbor
      在这里插入图片描述

      | 在这里插入图片描述

    3. 从Harbor拉取镜像ls

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

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

    在这里插入图片描述

    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
      
      • 1
      • 2
    • 添加数据卷

      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
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7
      • 8
      • 9
      • 10
      • 11
      • 12
      • 13

    5. 添加构建操作

    制作自定义镜像
    在这里插入图片描述

    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
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7
      • 8
      • 9
      • 10
      • 11
      • 12
      • 13
      • 14
      • 15
      • 16
      • 17
      • 18
      • 19
      • 20
      • 21
      • 22
      • 23
      • 24
      • 25
      • 26
      • 27
      • 28
      • 29
      • 30

      并设置权限为可执行

      chmod a+x deploy.sh
      
      • 1
      如图
      在这里插入图片描述

    7. 配置构建后操作

    执行脚本文件
    在这里插入图片描述

    【系列好文推荐】

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

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

  • 相关阅读:
    文举论金:黄金原油全面走势分析策略指导。
    64位整数高低位的数据获取与赋值操作探讨
    MySQL 数据库操作
    Nacos配置中心交互模型
    <C++>解密 构造函数和析构函数
    React Hooks总览
    Chromebook文件夹应用新功能
    时序预测 | MATLAB实现基于QPSO-BiGRU、PSO-BiGRU、BiGRU时间序列预测
    slice切片底层原理
    迪克森电荷泵
  • 原文地址:https://blog.csdn.net/weixin_51390582/article/details/125621198