Harbor仓库详解及搭建高可用

一、Harbor介绍

Harbor is an open source registry that secures artifacts with policies and role-based access control, ensures images are scanned and free from vulnerabilities, and signs images as trusted. Harbor, a CNCF Graduated project, delivers compliance, performance, and interoperability to help you consistently and securely manage artifacts across cloud native compute platforms like Kubernetes and Docker.

Harbor是一个开源注册中心,它通过策略和基于角色的访问控制来保护工件,确保图像经过扫描且没有漏洞,并将图像签名为受信任。Harbor是CNCF Graduated项目,可提供合规性、性能和互操作性,帮助您跨Kubernetes和Docker等云原生计算平台一致、安全地管理构件。

一)Harbor功能介绍

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

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

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

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

二)Harbor高可用方式

1.安装两台harbor仓库,公用一个nfs存储

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

因为第一种方式的话,需要额外配置 Redis 和 PostgreSQL 以及 NFS 服务,所以我们下面使用第二种方式进行 Harbor 高可用配置。搭建起来第二个简单易懂,更适合新手操作。

二、搭建harbor仓库

一)准备三台机子

harbor01     192.168.200.11

harbor02     192.168.200.12

nginx         192.168.200.13

(二——四)在两台harbor机器上操作

二)安装Docker

1.安装基础包

yum -y install yum-utils device-mapper-persistent-data lvm2

2.配置docker的yum源

wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo

3.安装docker

yum -y install docker-ce-3:20.10.6-3.el7.x86_64 doker-ce-cli-3:20.10.6-3.el7.x86_64 containerd.io
systemctl enable docker
sudo mkdir -p /etc/docker

4.配置阿里源的docker加速

sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["https://2nrp72n5.mirror.aliyuncs.com"]
}
EOF

5.保存环境并启动docker

sudo systemctl daemon-reload
sudo systemctl start docker

三)安装Docker-Compose

wget "https://github.com/docker/compose/releases/download/v2.3.2/docker-compose-$(uname -s)-$(uname -m)" -O /usr/local/bin/docker-compose 
chmod +x /usr/local/bin/docker-compose
docker-compose --version

四)配置Harbor

1.下载harbor

wget https://github.com/goharbor/harbor/releases/download/v2.3.1/harbor-offline-installer-v2.3.1.tgz  
tar zxf harbor-offline-installer-v2.3.1.tgz

2.配置harbor

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

3.注释https模块

vim harbor.yml

4.启动harbor

./install.sh

✔ ----Harbor has been installed and started successfully.----显示此表示启动成功

5.验证harbor仓库

登录192.168.200.11   默认账号密码 admin/Harbor12345

三、配置harbor仓库高可用

一)安装nginx服务

yum -y install pcre-devel zlib-devel popt-devel openssl-devel openssl
wget http://www.nginx.org/download/nginx-1.21.0.tar.gz
tar zxf nginx-1.21.0.tar.gz -C /usr/src/
cd /usr/src/nginx-1.21.0/
useradd -M -s /sbin/nologin nginx
./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
ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/

二)修改nginx配置文件

[root@nginx conf]# pwd

/usr/local/nginx/conf

[root@nginx conf]# vim nginx.conf

worker_processes  1;
events {
    worker_connections  1024;
}
pid     logs/nginx.pid;
stream {
    upstream harbor {
        server 192.168.200.11:80;
        server 192.168.200.12:80 backup;
        }
 server {
        listen 5000;
        proxy_pass harbor;
        proxy_timeout 300s;
        proxy_connect_timeout 5s;
    }
}

echo "192.168.200.13 harbor.tianya.com" >> /etc/hosts

  #三台机器都输

上面配置 backup(备用)的原因,主要就是因为 Harbor 需要使用账号密码来进行证。

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

三)harbor界面配置

1.创建一个新项目

四、验证

一)在 Docker 上配置 Harbor 仓库

vim  /etc/docker/daemon.json

{
  "registry-mirrors": ["https://2nrp72n5.mirror.aliyuncs.com"],
  "insecure-registries": ["http://harbor.tianya.com:5000"]
}
systemctl daemon-reload && systemctl restart docker
docker login http://harbor.tianya.com:5000

Username: admin

Password: Harbor2345 #隐藏密码,输入不显示,但已经输入

二)验证推送

docker pull nginx:1.18.0

docker tag nginx:1.18.0 harbor.tianya.com:5000/kubernetes/nginx:1.18.0

docker push harbor.tianya.com:5000/kubernetes/nginx:1.18.0

三)验证高可用

[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

#也可以在harbor01上把刚刚下载的镜像删除再尝试下载

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值