一、Harbor安装¶
1.在 GitHub 下载最新的 Harbor 离线包,并上传至 Harbor 服务器,官方下载地址:https://github.com/goharbor/harbor/releases/tag/v2.7.2-rc1

2.由于 Harbor 是采用 docker-compose 一键部署的,所以 Harbor 服务器也需要安装 Docker:这里选择master03作为Harbor服务器。
$ hostnamectl set-hostname Harbor-01
$ curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo
$ yum makecache
$ yum install -y yum-utils device-mapper-persistent-data lvm2
$ yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
$ sed -i -e '/mirrors.cloud.aliyuncs.com/d' -e '/mirrors.aliyuncs.com/d' /etc/yum.repos.d/CentOS-Base.repo
$ yum install docker-ce-19.03.* docker-ce-cli-19.03.* -y
$ systemctl daemon-reload && systemctl enable --now docker
3.安装完成后,将下载的 Harbor 离线包解压并载入 Harbor 镜像
$ tar -xf harbor-offline-installer-v2.7.2-rc1.tgz
$ cd harbor
$ docker load -i harbor.v2.7.2.tar.gz
4.在master03节点上安装Compose
$ curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
$ chmod +x /usr/local/bin/docker-compose
$ docker-compose -v
docker-compose version 1.29.2, build 5becea4c
5.修改默认配置文件模板
(1)备份Harbor配置文件模板
$ cd /root/harbor/
$ cp harbor.yml.tmpl harbor.yml
(2)修改harbor配置文件模板
$ mkdir -p /data/harbor /var/log/harbor
$ vim harbor.yml
修改第5行内容为自己的机器IP,注释掉13,15,17,18行

- hostname:Harbor的访问地址,可以是域名或者IP,生产推荐使用域名,并且带有证书;
- https:域名证书的配置,生产环境需要配置权威证书供 Harbor 使用,否则需要添加 insecure-registry 配置,由于是学习环境,所以本示例未配置证书;
- 账号密码按需修改即可,默认为 admin:YOUR_HARBOR_PASSWORD
修改Harbor 的数据目录为/data/harbor

6.进行预检查
$ ./prepare
7.执行安装
$ ./install.sh

8.成功启动后,即可通过配置的地址或域名访问,这里为192.168.1.33,账号密码默认为 admin:YOUR_HARBOR_PASSWORD


二、Container 和 Docker 配置 insecure¶
如果上面Harbor配置的不是https协议,所有的k8s节点的Docker或Containerd都需要配置insecure
1.检查k8s集群中的所有节点中是否存在docker目录,没有则按下面命令进行创建
$ mkdir -p /etc/docker
2.k8s集群中的所有节点中docker添加insecure-registries 配置
$ vim /etc/docker/daemon.json
{
"exec-opts": ["native.cgroupdriver=systemd"],
"insecure-registries": ["192.168.1.33"]
}
3.k8s集群中的所有节点重启docker
$ systemctl daemon-reload
$ systemctl restart docker
4.如果k8s集群中的所有节点采用的是 Containerd 作为的 Runtime,配置 insecure-registry 只需要在 Containerd 配置文件的 mirrors 下添加自己的镜像仓库地址即可
$ vim /etc/containerd/config.toml
#使用/查找registry.mirrors
#添加以下内容
[plugins."io.containerd.grpc.v1.cri".registry.mirrors."192.168.1.33"]
endpoint = ["http:192.168.1.33"]

5.配置完成后,k8s集群中的所有节点重启 Containerd
$ systemctl restart containerd
6.在master03节点上重启docker-compose
$ cd /root/harbor
$ docker-compose restart
三、Harbor使用¶
1.在Harbor上创建一个Project
依次点击【项目】-【新建项目】

输入项目名称为kubernetes,点击【确定】

2.登录harbor仓库,用户名为admin,密码为YOUR_HARBOR_PASSWORD
$ docker login 192.168.1.33
3.修改 tag 为 Harbor 的地址,并进行 Push 测试
$ docker pull registry.cn-hangzhou.aliyuncs.com/zq-demo/nginx:1.14.2
$ docker tag registry.cn-hangzhou.aliyuncs.com/zq-demo/nginx:1.14.2 192.168.1.33/kubernetes/nginx:1.14.2
$ docker push 192.168.1.33/kubernetes/nginx:1.14.2

4.在 Harbor 查看该镜像,观察到镜像已上传成功
