当前位置:网站首页>[Cloud Native] DevOps (5): Integrating Harbor
[Cloud Native] DevOps (5): Integrating Harbor
2022-07-31 04:45:00 【Is a 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全套资料️ ️ ️ 欢迎联系~
边栏推荐
- 【AUTOSAR-RTE】-4-Port and Interface and Data Type
- MySQL数据库必会的增删查改操作(CRUD)
- (5) final, abstract class, interface, inner class
- 高斯分布及其极大似然估计
- ERROR 1819 (HY000) Your password does not satisfy the current policy requirements
- 聚变云原生,赋能新里程 | 2022开放原子全球开源峰会云原生分论坛圆满召开
- .NET-9.乱七八糟的理论笔记(概念,思想)
- Knowledge Distillation 7: Detailed Explanation of Knowledge Distillation Code
- [C language] General method of base conversion
- 问题7:列表的拼接
猜你喜欢
VScode+ESP32 quickly install ESP-IDF plugin
益智类游戏关卡设计:逆推法--巧解益智类游戏关卡设计
Unity手机游戏性能优化系列:针对CPU端的性能调优
BUG消灭者!!实用调试技巧超全整理
The idea project obviously has dependencies, but the file is not displayed, Cannot resolve symbol 'XXX'
The third is the code to achieve
[C language] General method of base conversion
STM32HAL库修改Hal_Delay为us级延时
数字经济时代的开源数据库创新 | 2022开放原子全球开源峰会数据库分论坛圆满召开
mysql基础知识(二)
随机推荐
Lua,ILRuntime, HybridCLR(wolong)/huatuo热更新对比分析
MySQL基础操作
npm、nrm两种方式查看源和切换镜像
Notes on the establishment of the company's official website (6): The public security record of the domain name is carried out and the record number is displayed at the bottom of the web page
qlib架构
three.js make 3D photo album
Smartcom Programming Level 4 - Magic Academy Lesson 6
MySQL 8.0.30 GA
pom文件成橘红色未加载的解决方案
MySQL based operations
MySQL数据库必会的增删查改操作(CRUD)
高斯分布及其极大似然估计
[debug highlights] Expected input batch_size (1) to match target batch_size (0)
Unity shader forge和自带的shader graph,有哪些优缺点?
BUG destroyer!!Practical debugging skills are super comprehensive
Hand in hand to realize the picture preview plug-in (3)
开放原子开源基金会秘书长孙文龙 | 凝心聚力,共拓开源
[C language] General method of base conversion
三道leetcode上的oj题
开源汇智创未来 | 2022开放原子全球开源峰会OpenAtom openEuler分论坛圆满召开