harbor仓库使用介绍(高可用配置)(代码片段)

愿许浪尽天涯 愿许浪尽天涯     2022-12-14     394

关键词:

Harbor 仓库使用介绍(高可用配置)

一、Harbor 简介

Harbor 是由 VMware 公司使用 Go 语言开发,主要就是用于存放镜像使用,同时我们还可以通过 Web 界面来对存放的镜像进行管理。并且 Harbor 提供的功能有:基于角色的访问控制,镜像远程复制同步,以及审计日志等功能。官方文档

1.Harbor 功能介绍

1)基于角色的访问控制: 我们可以通过项目来对用户进行权限划分,项目中可以包含多个镜像。

2)审计管理: 我们可以在用户审计管理中,找到我们所有对镜像仓库做的操作。

3)镜像复制: 我们可以通过配置,使在两台 Harbor 服务器间实现镜像同步。

4)漏洞扫描: Harbor 会定期对仓库中的镜像进行扫描,并进行策略检查,以防止部署出易受到攻击的镜像。

2.Harbor 高可用方式

目前 Harbor 最常见的高可用方式有两种,分别是:

1)安装两台 Harbor 仓库,他们共同使用一个存储(一般常见的便是 NFS 共享存储)

2)安装两台 Harbor 仓库,并互相配置同步关系。

因为第一种方式的话,需要额外配置 Redis 和 PostgreSQL 以及 NFS 服务,所以我们下面使用第二种方式进行 Harbor 高可用配置。

二、Harbor 仓库使用介绍

准备工作:

主机名操作系统IP 地址
NginxCentOS 7.x192.168.1.1
Harbor-01CentOS 7.x192.168.1.2
Harbor-02CentOS 7.x192.168.1.3

1.安装 Docker

1)安装基础包

[root@Harbor-01 ~]# yum -y install yum-utils device-mapper-persistent-data lvm2

2)配置 Docker 的 yum

[root@Harbor-01 ~]# wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
[root@Harbor-01 ~]# yum-config-manager \\
--add-repo \\
https://download.docker.com/linux/centos/docker-ce.repo

3)安装并启动 Docker

  • 我们可以使用 yum list docker-ce --showduplicates | sort -r 命令来查看 Docker 的所有版本。
[root@Harbor-01 ~]# yum -y install docker-ce-19.03.12 docker-ce-cli-19.03.12
[root@Harbor-01 ~]# systemctl enable docker --now									# 启动并配置开机自启动

2.安装 Docker-Compose

[root@Harbor-01 ~]# wget "https://github.com/docker/compose/releases/download/v2.3.2/docker-compose-$(uname -s)-$(uname -m)" -O /usr/local/bin/docker-compose	
[root@Harbor-01 ~]# chmod +x /usr/local/bin/docker-compose
[root@Harbor-01 ~]# docker-compose --version

3.配置 Harbor

1)安装 Harbor

[root@Harbor-01 ~]# wget https://github.com/goharbor/harbor/releases/download/v2.3.1/harbor-offline-installer-v2.3.1.tgz  
[root@Harbor-01 ~]# tar zxf harbor-offline-installer-v2.3.1.tgz

2)修改 Harbor 配置文件

[root@Harbor-01 ~]# cd harbor/
[root@Harbor-01 ~]# cp harbor.yml.tmpl harbor.yml
[root@Harbor-01 ~]# sed -i 's/reg.mydomain.com/192.168.1.2/' harbor.yml					# 修改 Harbor 主机名
[root@Harbor-01 ~]# mkdir -p /app/harbor/data
[root@Harbor-01 ~]# sed -i '/data_volume/s/\\/data/\\/app\\/harbor\\/data/' harbor.yml		# 修改存储目录

3)启动 Harbor

[root@Harbor-01 ~]# ./install.sh


启动时出现:ERROR:root:Error: The protocol is https but attribute ssl_cert is not set 报错,这个报错是因为 Harbor 配置文件里的 HTTPS 相关配置 并没有进行修改或是关闭处理。

重新安装即可。

验证:http://192.168.1.2(默认的账号密码为:admin/Harbor12345

4.Harbor 高可用配置

1)安装 Nginx 服务

[root@Nginx ~]# yum -y install pcre-devel zlib-devel popt-devel openssl-devel openssl
[root@Nginx ~]# wget http://www.nginx.org/download/nginx-1.21.0.tar.gz
[root@Nginx ~]# ls
anaconda-ks.cfg  nginx-1.21.0.tar.gz
[root@Nginx ~]# tar zxf nginx-1.21.0.tar.gz -C /usr/src/
[root@Nginx ~]# cd /usr/src/nginx-1.21.0/
[root@Nginx nginx-1.21.0]# useradd -M -s /sbin/nologin nginx
[root@Nginx nginx-1.21.0]# ./configure \\
--prefix=/usr/local/nginx \\
--user=nginx \\
--group=nginx \\
--with-file-aio \\
--with-http_stub_status_module \\
--with-http_gzip_static_module \\
--with-http_flv_module \\
--with-http_ssl_module \\
--with-stream \\
--with-pcre && make && make install
[root@Nginx nginx-1.21.0]# ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/

2)修改 Nginx 配置文件

[root@Nginx ~]# cat <<END >> /usr/local/nginx/conf/nginx.conf
stream 
    upstream harbor 
        server 192.168.1.2:80;
        server 192.168.1.3:80 backup;									# 备用服务器
    
    server 
        listen 5000;
        proxy_pass harbor;
        proxy_timeout 300s;
        proxy_connect_timeout 5s;
    

END
[root@Nginx ~]# nginx -s reload
[root@Nginx ~]# echo "192.168.1.1 harbor.tianya.com" >> /etc/hosts
  • 上面配置 backup(备用)的原因,主要就是因为 Harbor 需要使用账号密码来进行验证。

也就是说,当我们登录到其中一台 Harbor 主机上,可能还会轮询到另一台 Harbor 主机上,但是这另一台 Harbor 主机并没有使用账号密码来进行验证。可能就会阶段性的出现 401 Unauthorized(认证失败)错误码。

3)Harbor 界面配置

1)创建一个新的项目:http://192.168.1.2

2)在仓库管理新建一个目标

3)在复制管理新建一个规则

  • 因为我们做的是基于双主的 Harbor 高可用,所以需要在备用的 Harbor 上也执行下上面的步骤。

5.验证

1)在 Docker 上配置 Harbor 仓库

[root@Harbor-01 ~]# cat <<END > /etc/docker/daemon.json

    "registry-mirrors": [
        "https://ipbtg5l0.mirror.aliyuncs.com"
    ],
    "insecure-registries": [
        "http://harbor.tianya.com:5000"
    ]

END
[root@Harbor-01 ~]# systemctl daemon-reload && systemctl restart docker
[root@Harbor-01 ~]# docker login http://harbor.tianya.com:5000
Username: admin
Password: Harbor12345

2)验证推送

[root@Harbor-01 ~]# docker pull nginx:1.18.0
[root@Harbor-01 ~]# docker tag nginx:1.18.0 harbor.tianya.com:5000/kubernetes/nginx:1.18.0
[root@Harbor-01 ~]# docker push harbor.tianya.com:5000/kubernetes/nginx:1.18.0


3)验证高可用

[root@Harbor-01 ~]# cd harbor/
[root@Harbor-01 ~]# docker-compose down												# 关闭 Harbor
[root@Harbor-02 ~]# docker pull harbor.tianya.com:5000/kubernetes/nginx:1.18.0

镜像仓库harbor私服高可用策略分析及部署(代码片段)

一.分析指定Harbor高可用策略主流的策略有那么几种:1.harbor做双主复制2.harbor集群挂载分布式cephfs存储3.在k8s集群上部署harbor第二种和第三种都是多个节点,然后挂载的分布式存储,然后为了保证数据的统一性使用单独的mysql数据... 查看详情

harbor镜像仓库原理和安装(代码片段)

原地址:harbor镜像仓库目录一:Harbor简介1.dockerregistry的缺点:2.Harbor优点3.Harbor介绍Harbor官方网站:http://vmware.github.io/harbor/二:Harbor主要组件三:Harbor架构1.Harbor登录过程2.Dockerpush的过程四:harbor镜像仓库部署1.安装harbor环境2.安... 查看详情

docker企业级私有仓库——harbor介绍和部署(代码片段)

Docker企业级私有仓库——Harbor介绍和部署前言?docker容器应用及开发和运行离不开可靠的镜像管理,在前面的文章我们提到了我们在拉取镜像的时候使用的是docker官方提供的公共镜像仓库,但是无论从安全还是效率等其他方面考... 查看详情

50-docker-分布式仓库harbor高可用

Harbor介绍基于角色的访问控制:用户与Docker镜像仓库通过“项目”进行组织管理,一个用户可以对多个镜像仓库在同一命名空间(project)里有不同的权限镜像复制:镜像可在多个Registry实例中复制(同步)。尤其适合于负载均衡,... 查看详情

企业级私有仓库,镜像仓库harbor(代码片段)

Harbor简介Harbor是一个用于存储和分发Docker镜像的企业级Registry服务器,通过添加一些企业必需的功能特性,例如安全、标识和管理等,扩展了开源DockerDistribution。作为一个企业级私有Registry服务器,Harbor提供了更好的性能和安全... 查看详情

构建docker高可用私有仓库基于harbor开源系统

....85.158,简称A仓库IP2=192.168.85.157,简称B仓库  一、Harbor项目介绍1、Harbor来源VMware公司最近开源了企业级Registry项目Harbor,其的目标是帮助用户迅速搭建一个企业级的Dockerregistry服务。它以Docker公司开源的registry为基础, 查看详情

configserver高可用(代码片段)

...用的ConfigServer集群,包括ConfigServer的高可用,以及依赖Git仓库的高可用。二 Git仓库的高可用由于配置的内容都存储在Git仓库中,所以要想实现Config Server的高可用,必须有一个高可用的Git仓库。有两种方式可以实现Git仓库... 查看详情

11.部署harbor私有仓库(代码片段)

11.部署harbor私有仓库本文档介绍使用docker-compose部署harbor私有仓库的步骤,你也可以使用docker官方的registry镜像部署私有仓库(部署DockerRegistry)。使用的变量本文档用到的变量定义如下:$exportNODE_IP=10.64.3.7#当前部署harbor的节点IP$下... 查看详情

harbor镜像仓库的安装与使用(代码片段)

文章目录harbor什么是harbor为什么要使用harbor软件安装软件与环境安装软件解压缩软件压缩包修改配置文件修改本机的域名安装软件访问harbor推送镜像文件到harbor镜像仓库给镜像添加harbor格式tag使用docker登陆harbor创建镜像仓库向har... 查看详情

k8s-高可用架构设计(代码片段)

docker的私有仓库harbor、容器化kubernetes部分组建、使用阿里云日志服务收集日志。部署完成后,你将理解系统各组件的交互原理,进而能快速解决实际问题,所以本文档主要适合于那些有一定kubernetes基础,想通过一步步部署的方... 查看详情

使用harbor构建docker私有仓库(代码片段)

目录一、概述1、什么是Harbor2、Harbor的优势3、Docker私有仓库架构4、Harbor配置文件以及相关参数(1)所需参数(2)可选参数二、使用Harbor构建docker私有仓库1、部署Harbor服务(1)下载Harbor安装程序(2... 查看详情

基于共享存储的harbor高可用-docker部署方案(代码片段)

部署规划架构图Redis也可以和Harbor集中部署。这样避免了在不使用Reids集群模式下单节点的故障。使用此模式,目前测试对于Harbor的登录,镜像信息查看,在计算节点,镜像的推送和下载没有问题。其他情况,... 查看详情

18.kubernetes(代码片段)

HarborHarbor是一个CNCF基金会托管的开源的可信的云原生dockerregistry项目,可以用于存储、签名、扫描镜像内容。Harbor最核心的功能就是给dockerregistry添加上一层权限保护的功能。并支持在registry之间复制镜像,用户管理、访问控制... 查看详情

harbor1.4.0高可用部署(代码片段)

一、对象冒充其原理如下:构造函数使用this关键字给所有属性和方法赋值(即采用类声明的构造函数方式)。因为构造函数只是一个函数,所以可使Parent构造函数成为Children的方法,然后调用它。Children就会收到Parent的构造函数... 查看详情

docker搭建harbor公开仓库(代码片段)

博文目录Registry和Harbor的区别DockerHarbor的优点DockerHarbor依赖的程序一、搭建Harbor仓库1、配置DockerCompose2、配置DockerHarbor公开仓库3、配置Docker客户端4、配置DockerHarbor私有仓库上一篇博文讲到了Registry私有仓库,今天配置一下Harbor仓... 查看详情

k8s集群使用容器镜像仓库harbor(代码片段)

K8s集群使用容器镜像仓库HarborKubernetes集群使用容器镜像仓库Harbor一、容器镜像仓库Harbor部署1.1在docker主机部署harbor1.1.1docker-ce安装1.1.1.1获取YUM源1.1.1.2安装并设置启动及开机自启动1.1.2dockercompose安装1.1.3获取harbor安装文件1.1.4修改... 查看详情

docker以https访问harbor私有仓库(代码片段)

1说明前文Centos7搭建Harbor私有仓库(二)中,我们以https方式搭建了Harbor,本篇我们主要配置Docker以https方式访问Harbor私有仓库2Docker配置2.1Mac系统2.1.1配置DockerMac系统中只需配置Proferences->Proxies使用SystemProxy即可,如下:2.1.2登录私... 查看详情

docker私有仓库harbor的搭设与使用(代码片段)

1、Harbor介绍Manageandservecontainerimagesinasecureenvironmenthttps://goharbor.io/2、环境、软件准备LinuxCentos7上操作,以下是安装的软件及版本:Centos:Linuxversion3.10.0-862.9.1.el7.x86_64([email protected])(gccversion4.8.5 查看详情