当前位置:网站首页>【云原生】DevOps(五):集成Harbor
【云原生】DevOps(五):集成Harbor
2022-07-31 04:41:00 【是Dream呀】
本文目录:
前言:
当下云原生火爆全网,云原生充分利用了云计算弹性、敏捷、资源池和服务化特性,改变云端应用的设计、开发、部署和运行模式,为我们大大提供了便利,本篇文章将带大家走进云原生的世界,揭开它的神秘面纱。
入门须知:这片乐园从不缺乏天才,努力才是你的最终入场券!
最后,愿我们都能在看不到的地方闪闪发光,一起加油进步
一、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文件
启动Harbor
./install.sh
查看日志 登录Harbor
登录Harbor 首页信息
首页信息
三、 Harbor使用方式
Harbor作为镜像仓库,主要的交互方式就是将镜像上传到Harbor上,以及从Harbor上下载指定镜像
在传输镜像前,可以先使用Harbor提供的权限管理,将项目设置为私有项目,并对不同用户设置不同角色,从而更方便管理镜像。
1. 添加用户构建项目
创建用户
创建用户 构建项目(设置为私有)
构建项目 给项目追加用户
追加用户管理 切换测试用户
切换测试用户
2. 发布镜像到Harbor
修改镜像名称
名称要求:harbor地址/项目名/镜像名:版本
修改镜像名称 修改daemon.json,支持Docker仓库,并重启Docker
修改daemon.json,支持Docker仓库 设置登录仓库信息
docker login -u 用户名 -p 密码 Harbor地址
推送镜像到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. 配置构建后操作
执行脚本文件 |
---|
![]() |
【系列好文推荐】
Python Web开发一:Web开发简介
Python Web开发二:Django的安装和运行
Python Web开发(三):HTTP请求的url路由
欢迎订阅本专栏:零基础学Python 系列课程是针对Python入门&进阶打造的一全套课程,在这里,我将会一 一更新Python基础语法、Python爬虫、Web开发、 Django框架、Flask框架以及人工智能相关知识,帮助你成为Python大神,如果你喜欢的话就抓紧收藏订阅起来吧~
好啦,这就是今天要分享给大家的全部内容了,我们下期再见!
如果你喜欢的话,就不要吝惜你的一键三连了~
️️ ️ 商务合作|交流学习|粉丝福利|Python全套资料️ ️ ️ 欢迎联系~
边栏推荐
- 【SemiDrive源码分析】【MailBox核间通信】44 - 基于Mailbox IPCC RPC 实现核间通信(RTOS侧 IPCC_RPC Server 消息接收及回复 原理分析篇)
- (五)final、抽象类、接口、内部类
- qlib架构
- MySQL数据库必会的增删查改操作(CRUD)
- Component pass value provide/inject
- open failed: EACCES (Permission denied)
- Win10 CUDA CUDNN installation configuration (torch paddlepaddle)
- 问题1:给你1-10的列表,实现列表输出,单数在左边,双数在右边。
- Redis counts new and retained users
- Summary of Huawei Distributed Storage FusionStorage Knowledge Points [Interview]
猜你喜欢
产学研用 共建开源人才生态 | 2022开放原子全球开源峰会教育分论坛圆满召开
type_traits元编程库学习
qlib架构
VScode+ESP32快速安装ESP-IDF插件
BUG destroyer!!Practical debugging skills are super comprehensive
Explanation of
[Swift] Customize the shortcut that pops up by clicking the APP icon
专访 | 阿里巴巴首席技术官程立:云+开源共同形成数字世界的可信基础
【wpf】wpf中的那些模板之深度解析
HCIP Day 10_BGP Route Summary Experiment
随机推荐
Can't load /home/Iot/.rnd into RNG
Safety 20220709
VScode+ESP32快速安装ESP-IDF插件
Safety 20220712
(6) Enumeration and annotation
重磅 | 开放原子校源行活动正式启动
数字经济时代的开源数据库创新 | 2022开放原子全球开源峰会数据库分论坛圆满召开
【线性神经网络】softmax回归
问题7:列表的拼接
(五)final、抽象类、接口、内部类
Industry landing presents new progress | 2022 OpenAtom Global Open Source Summit OpenAtom OpenHarmony sub-forum was successfully held
【wpf】wpf中的那些模板之深度解析
C Implementation of Simple Network File Copy
开源社区三十年 | 2022开放原子全球开源峰会开源社区三十年专题活动圆满召开
Industry-university-research application to build an open source talent ecosystem | 2022 Open Atom Global Open Source Summit Education Sub-Forum was successfully held
[shell basics] determine whether the directory is empty
Musk talks to the "virtual version" of Musk, how far is the brain-computer interaction technology from us
(8) Math class, Arrays class, System class, Biglnteger and BigDecimal classes, date class
Safety 20220715
专访 | 阿里巴巴首席技术官程立:云+开源共同形成数字世界的可信基础