当前位置:网站首页>Open Source Summer | [Cloud Native] DevOps (5): Integrating Harbor
Open Source Summer | [Cloud Native] DevOps (5): Integrating Harbor
2022-08-02 20:32:00 【InfoQ】

@
TOC
前言: 当下
云原生火爆全网
,云原生充分利用了云计算弹性、敏捷、资源池和服务化特性,改变云端应用的设计、开发、部署和运行模式,为我们大大提供了便利,本篇文章将
带大家走进云原生的世界,揭开它的神秘面纱
. 入门须知:这片乐园从不缺乏天才,努力才是你的最终入场券!最后,愿我们都能在看不到的地方闪闪发光,一起加油进步
一、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
./install.sh
- 登录Harbor
- 首页信息
三、 Harbor使用方式
Harbor作为镜像仓库,主要的交互方式就是将镜像上传到Harbor上,以及从Harbor上下载指定镜像
在传输镜像前,可以先使用Harbor提供的权限管理,将项目设置为私有项目,并对不同用户设置不同角色,从而更方便管理镜像.
1. 添加用户构建项目
- 创建用户
- 构建项目(设置为私有)
- 给项目追加用户
- 切换测试用户
2. 发布镜像到Harbor
- 修改镜像名称
- 名称要求:harbor地址/项目名/镜像名:版本
- 修改daemon.json,支持Docker仓库,并重启Docker
- 设置登录仓库信息
docker login -u 用户名 -p 密码 Harbor地址
- 推送镜像到Harbor
- |

3. 从Harbor拉取镜像ls
跟传统方式一样,不过需要先配置
/etc/docker/daemon.json
文件
{
"registry-mirrors": ["https://pee6w651.mirror.aliyuncs.com"],
"insecure-registries": ["192.168.11.11:80"]
}

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
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 [email protected] $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
7. 配置构建后操作
边栏推荐
猜你喜欢
随机推荐
Wechat Gymnasium Appointment Mini Program Graduation Design Finished Works Mini Program Graduation Design Finished Work (6) Question Opening Reply PPT
golang源码分析(4):select
脉脉上的相亲生意
mui中使用多级选择器实现省市区联动
redis summary_distributed cache
ffmpeg编译后找不到libx264
潮玩的“第二春”,在哪?
NeRF:火爆科研圈的三维重建技术大揭秘
本地MSE播放fragment mp4服务
What is the difference between erp system and wms system
方法的使用
CUDA+Pycharm-gpu版本+Anaconda安装
9月起中国给予多哥等16国98%税目产品零关税待遇
LiveGBS国标GB/T28181流媒体平台支持主子码流切换主码流stream/streamprofile
redis总结_基础
研发运营一体化(DevOps)能力成熟度模型
二舅“反转”了?
解决多版本jar包冲突问题
如何生成随机数+原理详细分析
多聚体/壳聚糖修饰白蛋白纳米球/mPEG-HSA聚乙二醇人血清白蛋白纳米球的制备与研究








