Harbor高可用配置及仓库使用介绍

 更新时间:2022年05月26日 09:21:05   作者:愿许浪尽天涯  
这篇文章主要为大家介绍了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仓库配置使用的资料请关注脚本之家其它相关文章!

相关文章

  • K8s如何拉取habor镜像

    K8s如何拉取habor镜像

    这篇文章主要介绍了K8s如何拉取habor镜像,在daemon.json中添加仓库地址,需要在创建资源对象所在的节点进行添加,本文给大家介绍的非常详细,感兴趣的朋友跟随小编一起看看吧
    2024-04-04
  • 云原生技术持久化存储PV与PVC

    云原生技术持久化存储PV与PVC

    这篇文章主要介绍了云原生技术持久化存储PV与PVC
    2022-03-03
  • 一文详解基于k8s部署Session模式Flink集群

    一文详解基于k8s部署Session模式Flink集群

    这篇文章主要为大家介绍了基于k8s部署Session模式Flink集群详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-03-03
  • kubenetes集群版本升级方式

    kubenetes集群版本升级方式

    本文详细介绍了使用kubeadm和二进制方式搭建及升级Kubernetes集群的方法,介绍了版本控制、升级步骤、备份ETCD数据、升级各节点组件等关键操作,并提供了操作示例和注意事项,帮助理解和实施Kubernetes集群的搭建和升级过程
    2024-09-09
  • Kubernetes中创建命名空间实现方法

    Kubernetes中创建命名空间实现方法

    这篇文章主要为大家介绍了Kubernetes中创建命名空间实现方法详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-11-11
  • K8s解决主机重启后kubelet无法自动启动问题(推荐)

    K8s解决主机重启后kubelet无法自动启动问题(推荐)

    在安装配置好Kubernetes后,正常情况下服务器关机重启,kubelet也会自动启动的,如何解决这个问题呢,下面小编给大家带来了K8s解决主机重启后kubelet无法自动启动问题,感兴趣的朋友一起看看吧
    2022-08-08
  • 一文详解如何高效查看k8s日志

    一文详解如何高效查看k8s日志

    K8S是kubernetes的缩写,是为解决容器服务编排而生的,在运维K8S服务的过程中,经常会遇到各种报错和诊断问题,那么我们一般怎么查看K8S组件的日志,这篇文章主要给大家介绍了关于如何高效查看k8s日志的相关资料,需要的朋友可以参考下
    2023-10-10
  • K8S如何利用Prometheus监控pod的实时数据指标

    K8S如何利用Prometheus监控pod的实时数据指标

    这篇文章主要给大家介绍了关于K8S如何利用Prometheus监控pod的实时数据指标的相关资料,Prometheus是一个开源的服务监控系统和时序数据库,其提供了通用的数据模型和快捷数据采集、存储和查询接口,需要的朋友可以参考下
    2024-01-01
  • Kubernetes教程之Windows HostProcess 运行容器化负载

    Kubernetes教程之Windows HostProcess 运行容器化负载

    这篇文章主要介绍了Kubernetes Windows HostProcess 运行容器化负载,本篇内容还是比较多的,总共包含了 Windows HostProcess的创建、为 Windows Pod 和容器配置 GMSA 和 Windows 的 Pod 和容器配置 RunAsUserName三大功能模块,需要的朋友可以参考下
    2022-07-07
  • k8s Job 执行一次性以及批处理任务使用场景案例

    k8s Job 执行一次性以及批处理任务使用场景案例

    这篇文章主要为大家介绍了k8s Job 执行一次性以及批处理任务使用场景案例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-04-04

最新评论