一、Harbor安装

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

image-20230428070309311

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行

修改默认配置文件模板-1

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

修改Harbor 的数据目录为/data/harbor

修改默认配置文件模板-2

6.进行预检查

$ ./prepare

7.执行安装

$ ./install.sh

执行安装

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

登录Harbor-1

登录Harbor-2

二、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"]

image-20230430091419313

5.配置完成后,k8s集群中的所有节点重启 Containerd

$ systemctl restart containerd

6.在master03节点上重启docker-compose

$ cd /root/harbor
$ docker-compose restart

三、Harbor使用

1.在Harbor上创建一个Project

依次点击【项目】-【新建项目】

新建项目-1

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

新建项目-2

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

上传镜像到harbor-1

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

上传镜像到harbor-2