背景

因为搭建k8s集群需要一个私有docker镜像仓库,可以在k8s集群内部搭建Harbor,也可以单独搭建。考虑到单独搭建稳定性会高一点,所以就在虚拟机上单独搭建。

HarBor 安装与配置

虚拟机配置

资源 大小
CPU 2 Core
内存 1 G
磁盘 40 G

环境

  • CentOS 7.4
  • Docker 19.03.8
  • Docker-Compose
  • openssl
  • python

安装

Docker和Docker-Compose安装就不赘述了

下载Harbor

Harbor 2.0.0-下载地址

1
[root@k8s-docker-register ~]# curl -OL https://github.com/goharbor/harbor/releases/download/v2.0.0/harbor-offline-installer-v2.0.0.tgz

这里选择下载离线安装包,下载完成后解压

1
[root@k8s-docker-register ~]# tar -zxf harbor-offline-installer-v2.0.0.tgz

配置Harbor

解压完成后,修改配置文件harbor.yml

1
2
3
[root@k8s-docker-register ~]# cd harbor
[root@k8s-docker-register harbor]# cp harbor.yml.tmpl harbor.yml
[root@k8s-docker-register harbor]# vi harbor.yml

只需要修改hostname,修改为自己的域名hub.docker-local.com,密码什么的就默认好了

保存好配置后,移动harbor文件夹到/usr/local下,删除下载文件

1
2
[root@k8s-docker-register ~]# mv harbor /usr/local/
[root@k8s-docker-register ~]# rm -rf *

还有密钥文件夹需要创建好\data\cert\server.crt\data\cert\server.key

生成HTTPS证书

首先生成私钥,两次密码要一致

1
2
3
4
5
6
7
8
9
10
[root@k8s-docker-register harbor]# mkdir -p /data/cert
[root@k8s-docker-register harbor]# cd !$
cd /data/cert
[root@k8s-docker-register cert]# openssl genrsa -des3 -out server.key 2048
Generating RSA private key, 2048 bit long modulus
...+++
................................................+++
e is 65537 (0x10001)
Enter pass phrase for server.key:
Verifying - Enter pass phrase for server.key:

生成证书请求CSR文件,填写一些信息

1
[root@k8s-docker-register cert]# openssl req -new -key server.key -out server.csr

备份私钥,移除密码,输入上面填写的密码

1
2
3
4
[root@k8s-docker-register cert]# cp server.key server.key.org
[root@k8s-docker-register cert]# openssl rsa -in server.key.org -out server.key
Enter pass phrase for server.key.org:
writing RSA key

用私钥签名证书

1
2
3
4
[root@k8s-docker-register cert]# openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.csr
Signature ok
subject=/C=CN/ST=ZJ/L=HZ/O=Default Company Ltd
Getting Private key

赋予证书权限

1
[root@k8s-docker-register cert]# chmod a+x *

安装Harbor

回到之前路径/usr/local/harbor,执行安装脚本

1
2
3
[root@k8s-docker-register cert]# cd -
/usr/local/harbor
[root@k8s-docker-register cert]# ./install.sh

访问

启动好就可以通过浏览器访问harbor界面了

访问设置

再每个需要访问Harbor的虚拟机上都加上

1
[root@k8s-master-01 ~]# echo "192.168.1.3 hub.dockerlocal.com" >> /etc/hosts

至此所有节点都可以通过hub.docker-local.com访问到Harbor了