安装配置高可用的Harbor镜像仓库

什么是Harbor?

Harbor 是一个用于存储和分发Docker镜像的企业级Registry服务器,通过添加一些企业必需的功能特性,例如安全、标识和管理等,扩展了开源Docker Distribution。
作为一个企业级私有Registry服务器,Harbor提供了更好的性能和安全。提升用户使用Registry构建和运行环境传输镜像的效率。
Harbor支持安装在多个Registry节点的镜像资源复制,镜像全部保存在私有Registry中,确保数据和知识产权在公司内部网络中管控。
另外,Harbor也提供了高级的安全特性,诸如用户管理,访问控制和活动审计等。

  • 基于角色的访问控制:用户与Docker镜像仓库通过“项目”进行组织管理,一个用户可以对多个镜像仓库在同一命名空间(project)里有不同的权限。
  • 镜像复制:镜像可以在多个Registry实例中复制(同步)。尤其适合于负载均衡,高可用,混合云和多云的场景。
  • 图形化用户界面:用户可以通过浏览器来浏览,检索当前Docker镜像仓库,管理项目和命名空间。
  • AD/LDAP 支持:Harbor可以集成企业内部已有的AD/LDAP,用于鉴权认证管理。
  • 审计管理:所有针对镜像仓库的操作都可以被记录追溯,用于审计管理。
  • 国际化:已拥有英文、中文、德文、日文和俄文的本地化版本。更多的语言将会添加进来。
  • RESTful API:RESTful API 提供给管理员对于Harbor更多的操控, 使得与其它管理软件集成变得更容易。
  • 部署简单:提供在线和离线两种安装工具, 也可以安装到vSphere平台(OVA方式)
    虚拟设备。

概述

本文记录如何在CentOS 7上快速搭建Harbor镜像仓库,并配置简易高可用集群。这里选择2台CentOS 7服务器,分别安装Harbor,并配置互相同步镜像的功能,以便实现简单的高可用。

IP地址如下:

  • 172.24.172.67
  • 172.24.172.68

安装docker

卸载旧版本

1
2
3
4
5
6
7
8
sudo yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine

配置下载仓库

1
2
3
4
5
6
7
sudo yum install -y yum-utils \
device-mapper-persistent-data \
lvm2

sudo yum-config-manager \
--add-repo \
https://download.docker.com/linux/centos/docker-ce.repo

安装docker社区版

1
sudo yum install docker-ce docker-ce-cli containerd.io

配置系统服务

1
2
3
sudo systemctl start docker

sudo systemctl enable docker

安装docker-compose

1
2
3
4
5
curl -L "https://github.com/docker/compose/releases/download/1.23.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

chmod +x /usr/local/bin/docker-compose

docker-compose --version

安装Harbor

下载安装介质

从Github的 harbor官方页面 下载最新的 harbor离线安装介质

解压缩安装文件

1
2
3
4
## 在两台节点机上分别解压缩安装文件
tar xvf harbor-offline-installer-v1.9.1.tgz

cd harbor

修改配置

修改harbor.yml配置文件,这里仅将hostname修改为本机IP地址。

执行安装

安装过程很简单,只需要执行install.sh即可。

1
sh install.sh

验证Harbor安装

查看docker容器是否都正常起来了。

1
docker ps -a | grep harbor

打开浏览器,分别登录两台harbor,检查功能是否正常。

配置镜像同步

分别在两个Harbor上配置镜像同步功能。

创建镜像仓库

分别在两个Harbor上新建同名仓库,如:kubernetes

创建同步目标

在第一台(172.24.172.67)上新建一个同步目标服务器。

其中目标URL输入第2台服务器的IP,用户名和密码,点击测试连接,确保可以测试成功。点击确定按钮保存配置。

同理,在第二台服务器上做相同设置,指向第一台服务器。

配置仓库同步

进入同步管理,点击新建规则按钮;

  • 同步模式:Push-base
  • 目的Registry:选择刚刚创建的目的仓库
  • 触发模式:事件驱动
  • 勾选删除本地资源时同时也删除远程的资源

点击保存按钮。

同理,再第二台上也新增一条同步规则,同步仓库指向第一台的仓库地址。

测试镜像同步功能

配置域名解析

我们可以尝试推送一个容器镜像到Harbor仓库。这里先配置一下/etc/hosts文件,将Harbor仓库的域名添加进去。

修改docker配置

由于向镜像仓库推送时需要走https协议,这里为了简单起见,修改/etc/docker/daemon.json,将我们的仓库加入到非安全仓库列表中,以便使其允许通过http协议推送。

1
2
3
{
"insecure-registries": ["hub.wangfanggang.com"]
}

重启docker服务

1
service docker restart

推送镜像

首先选择一个要推送的镜像,重新打一个tag标签,标签前缀规则为harbor域名/仓库名/镜像名:版本
例如:我的harbor域名为hub.wangfanggang.com,仓库名为kubernetes,容器镜像名为nginx,版本号是1.7.9,需要执行的命令如下:

1
docker tag nginx:1.7.9 hub.wangfanggang.com/kubernetes/nginx:1.7.9

登录并执行镜像推送。

1
2
3
4
5
6
[root@w1] docker login hub.wangfanggang.com
Username: admin
Password:
Login Succeeded

[root@w1] docker push hub.wangfanggang.com/kubernetes/nginx:1.7.9

检验同步结果

查看Harbor仓库,可以发现两台镜像仓库上都已经有刚刚推送的镜像了。

结尾

至此,我们已经完成了Harbor镜像仓库的简单高可用集群搭建,完全可以满足开发需求了。

本文标题:安装配置高可用的Harbor镜像仓库

文章作者:王方钢 / Kenny Wang

发布时间:2019年10月16日 - 13:10

最后更新:2019年12月31日 - 09:12

原始链接:https://wangfanggang.com/Docker/harbor/

许可协议: 署名-非商业性使用-禁止演绎 4.0 国际 转载请保留原文链接及作者。

王方钢 / Kenny Wang wechat
0%