下载安装包
在 https://github.com/goharbor/harbor/releases 下载需要的在线或离线安装包
- 下载安装包
# 以离线安装包为例 wget https://github.com/goharbor/harbor/releases/download/v2.8.2/harbor-offline-installer-v2.8.2.tgz
- 解压
tar -zxvf harbor-offline-installer-v2.8.2.tgz harbor/harbor.v2.8.2.tar.gz harbor/prepare harbor/LICENSE harbor/install.sh harbor/common.sh harbor/harbor.yml.tmpl
启用HTTPS
要配置HTTPS,必须创建SSL证书。可以使用由受信任的第三方CA签名的证书,也可以使用自签名证书。本节介绍如何使用OpenSSL创建CA以及如何使用CA签署服务器证书和客户端证书。也可以使用其他CA提供商。
生成证书颁发机构证书
在生产环境中,应该从 CA 获得证书。在测试或开发环境中,您可以生成自己的 CA。要生成 CA 证书,请运行以下命令
- 生成 CA 证书私钥
openssl genrsa -out ca.key 4096
- 生成 CA 证书
# 调整 -subj 选项中的值以反映您的组织。如果使用 FQDN 连接 Harbor 主机,则必须将其指定为通用名称 (CN) 属性
openssl req -x509 -new -nodes -sha512 -days 3650 \ -subj "/C=CN/ST=Beijing/L=Beijing/O=example/OU=Personal/CN=testharbor.com" \ -key ca.key \ -out ca.crt
生成服务器证书
证书通常包含一个.crt文件和一个.key文件,例如testharbor.com.crt和testharbor.com.key
- 生成私钥
openssl genrsa -out testharbor.com.key 4096
- 生成证书签名请求 (CSR)
# 调整 -subj 选项中的值以反映组织信息。如果使用 FQDN 连接 Harbor 主机,则必须将其指定为通用名称 (CN) 属性,并在密钥和 CSR 文件名中使用它。 openssl req -sha512 -new \ -subj "/C=CN/ST=Beijing/L=Beijing/O=example/OU=Personal/CN=testharbor.com" \ -key testharbor.com.key \ -out testharbor.com.csr
- Generate an x509 v3 extension file
# 无论是使用完全限定域名(FQDN)还是IP地址连接到Harbor主机,都必须创建此文件,以便可以生成符合主题备用名称(SAN)和x509 v3扩展要求的Harbor主机证书。请替换DNS条目以反映您的域名。 cat > v3.ext <<-EOF authorityKeyIdentifier=keyid,issuer basicConstraints=CA:FALSE keyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment extendedKeyUsage = serverAuth subjectAltName = @alt_names[alt_names]
DNS.1=testharbor.com
DNS.2=testharbor
EOF
- 使用 v3.ext 文件为您的 Harbor 主机生成证书
# 将 CRS 和 CRT 文件名中的 testharbor.com 替换为 Harbor 主机名 openssl x509 -req -sha512 -days 3650 \ -extfile v3.ext \ -CA ca.crt -CAkey ca.key -CAcreateserial \ -in testharbor.com.csr \ -out testharbor.com.crt
向 Harbor 和 Docker 提供证书
生成 ca.crt、testharbor.com.crt 和 testharbor.com.key 文件后,您必须将它们提供给 Harbor 和 Docker,并重新配置 Harbor 以使用它们
- 将服务器证书和密钥复制到 Harbor 主机上的证书文件夹中
cp testharbor.com.crt /data/cert/ cp testharbor.com.key /data/cert/
- 将 testharbor.com.crt 转换为 testharbor.com.cert,供 Docker 使用
# Docker 守护进程将 .crt 文件解释为 CA 证书,将 .cert 文件解释为客户端证书 openssl x509 -inform PEM -in testharbor.com.crt -out testharbor.com.cert
- 将服务器证书、密钥和 CA 文件复制到 Harbor 主机上的 Docker 证书文件夹中。必须先创建适当的文件夹
cp testharbor.com.cert /etc/docker/certs.d/testharbor.com/ cp testharbor.com.key /etc/docker/certs.d/testharbor.com/ cp ca.crt /etc/docker/certs.d/testharbor.com/ # 如果将默认 nginx 端口 443 映射到其他端口,请创建文件夹 /etc/docker/certs.d/testharbor.com:port 或 /etc/docker/certs.d/harbor_IP:port
- 重启Docker
systemctl restart docker
部署Harbor
- 运行脚本 prepare 以启用 HTTPS
./prepare
- 运行脚本 install.sh 以安装Harbor
./instal.sh