关键词:
@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文件 -
启动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 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
如图
7. 配置构建后操作
执行脚本文件 |
---|
云原生devops:cicd持续集成|交付|部署
@TOC基于Jenkins拉取GitLab的SpringBoot代码进行构建发布到测试环境实现持续集成基于Jenkins拉取GitLab指定发行版本的SpringBoot代码进行构建发布到生产环境实现CD实现持续部署一、持续集成为了让程序代码可以自动推送到测试环境基于Do... 查看详情
云原生•devops一文掌握持续集成工具jenkins(代码片段)
目录一、持续集成工具Jenkins介绍1.什么是持续集成2.Jenkins介绍二、Jenkins的安装与部署1.安装 Jenkins2.本地访问Jenkins3.插件的安装4.卸载Jenkins三、Jenkins全局配置1.Git的安装与配置2.JDK的安装与配置3.maven的安装与配置三、将代码上传... 查看详情
云原生(三十六)|kubernetes篇之harbor入门和安装(代码片段)
文章目录Harbor入门和安装一、入门1、简介2、核心组件3、安装二、docker使用1、基本配置2、镜像代理Harbor入门和安装一、入门1、简介Harbor是一个用于存储和分发Docker镜像的企业级Registry服务器。作为一个企业级私有Registry服务器... 查看详情
云原生·devops`01|光速初识devops(代码片段)
啊我也摔倒了..有没有人扶我起来学习....个人主页:《CloudGod的个人主页》\\colorDarkorange《CloudGod的个人主页》《CloudGod的个人主页》交个朋友叭~个人社区:《编程成神技术交流社区》\\colorDarkorange《编程成神技术交流社区... 查看详情
容器云原生devops——第一期:devops微服务容器服务(学习笔记)(代码片段)
...一直懵懵懂懂,最近观看了阿里专家带你玩转容器云原生DevOps公开课开始系统的学习DevOps,所以根据学习视频整理出以下学习笔记希望分享给更多对此感兴趣的同学 查看详情
容器云原生devops学习笔记——第一期:devops微服务容器服务(代码片段)
...一直懵懵懂懂,最近观看了阿里专家带你玩转容器云原生DevOps公开课开始系统的学习DevOps,所以根据学习视频整理出以下学习笔记希望分享给更多对此感兴趣的同学 查看详情
云原生安全:trivy+harbor实现镜像漏洞的简单高效扫描(代码片段)
...|李大白 “安全”一直是一个不容忽视的问题,在云原生领域同样如此。 云原生中的服务都是以容器的方式运行,而容器则是基于镜像启动,本篇文章则从“镜像”漏洞扫描来从“根本”去发现、解决云原生的“安全”... 查看详情
云原生devops:devops介绍及code工具使用(代码片段)
@TOCDevOps一、DevOps介绍软件开发最开始是由两个团队组成:开发计划由[开发团队]()从头开始设计和整体系统的构建。需要系统不停的迭代更新。[运维团队]()将开发团队的Code进行测试后部署上线。希望系统稳定安全运行。这看似... 查看详情
云原生devops:kubernetes编排工具(代码片段)
@TOCKubernetes是一个开源的,用于管理云平台中多个主机上的容器化的应用,Kubernetes的目标是让部署容器化的应用简单并且高效(powerful),Kubernetes提供了应用部署,规划,更新,维护的一种机制。Kubernetes一个核心的特点就是能... 查看详情
云原生时代的devops平台设计之道(代码片段)
令人“厌恶”的DevOps首先,我非常希望你能先看一看引言中提到的扯淡的DevOps,我们开发者根本不想做运维!这篇文章。这篇文章从亚马逊云科技社区参与负责人EmilyFreeman的一条推特入手,观察了很多留言后,得出了文章标题这... 查看详情
devops之harbor(代码片段)
一、Harbor仓库的基本介绍 Harbor,是一个英文单词,意思是港湾,港湾是干什么的呢,就是停放货物的,而货物呢,是装在集装箱中的,说到集装箱,就不得不提到Docker容器,因为docker容器的技术正是借鉴了集装箱的原理... 查看详情
云原生devops:jenkins流水线(代码片段)
@TOC之前采用Jenkins的自由风格构建的项目,每个步骤流程都要通过不同的方式设置,并且构建过程中整体流程是不可见的,无法确认每个流程花费的时间,并且问题不方便定位问题。Jenkins的Pipeline可以让项目的发布整体流程可视... 查看详情
云原生|devops篇jenkins安装与实战(代码片段)
进阶大数据架构师学习路线https://blog.csdn.net/xiaoweite1/article/details/124736999文章目录一、Jenkins安装1、背景2、特点3、官网安装文档地址4、开始安装5、安装中6、安装完成7、页面访问8、通过以下命令查找密码9、安装默认推荐插件... 查看详情
容器云原生devops——第二期:如何快速高质量的应用容器化迁移(代码片段)
...一直懵懵懂懂,最近观看了阿里专家带你玩转容器云原生DevOps公开课开始系统的学习DevOps,所以根据学习视频整理出以下学习笔记希望分享给更多对此感兴趣的同学 查看详情
容器云原生devops学习笔记——第二期:如何快速高质量的应用容器化迁移(代码片段)
...一直懵懵懂懂,最近观看了阿里专家带你玩转容器云原生DevOps公开课开始系统的学习DevOps,所以根据学习视频整理出以下学习笔记希望分享给更多对此感兴趣的同学 查看详情
容器云原生devops学习笔记——第一期:devops微服务容器服务(代码片段)
...一直懵懵懂懂,最近观看了阿里专家带你玩转容器云原生DevOps公开课开始系统的学习DevOps,所以根据学习视频整理出以下学习笔记希望分享给更多对此感兴趣的同学~课程大纲如下图所示,会陆续进行更新:De... 查看详情
容器云原生devops学习笔记——第三期:从零搭建ci/cd系统标准化交付流程(代码片段)
...一直懵懵懂懂,最近观看了阿里专家带你玩转容器云原生DevOps公开课开始系统的学习DevOps,所以根据学习视频整理出以下学习笔记希望分享给更多对此感兴趣的同学~课程大纲如下图所示,会陆续进行更新:... 查看详情
容器云原生devops学习笔记——第三期:从零搭建ci/cd系统标准化交付流程(代码片段)
...一直懵懵懂懂,最近观看了阿里专家带你玩转容器云原生DevOps公开课开始系统的学习DevOps,所以根据学习视频整理出以下学习笔记希望分享给更多对此感兴趣的同学 查看详情