部署Harbor并启用Https
下载安装包
在 harbor 版本 下载需要的在线或离线安装包
-
下载安装包
以离线安装包为例
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=harbor.com" \ -key ca.key \ -out ca.crt
生成服务器证书
证书通常包含一个.crt文件和一个.key文件,例如harbor.com.crt和harbor.com.key
-
生成私钥
openssl genrsa -out harbor.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=harbor.com" \ -key harbor.com.key \ -out harbor.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=harbor.com DNS.2=harbor DNS.3=hostname EOF
-
使用 v3.ext 文件为您的 Harbor 主机生成证书
将 CRS 和 CRT 文件名中的 harbor.com 替换为 Harbor 主机名
openssl x509 -req -sha512 -days 3650 \ -extfile v3.ext \ -CA ca.crt -CAkey ca.key -CAcreateserial \ -in harbor.com.csr \ -out harbor.com.crt
向 Harbor 和 Docker 提供证书
生成 ca.crt、harbor.com.crt 和 harbor.com.key 文件后,您必须将它们提供给 Harbor 和 Docker,并重新配置 Harbor 以使用它们
-
将服务器证书和密钥复制到 Harbor 主机上的证书文件夹中
cp harbor.com.crt /data/cert/ cp harbor.com.key /data/cert/
-
将 harbor.com.crt 转换为 harbor.com.cert,供 Docker 使用
Docker 守护进程将 .crt 文件解释为 CA 证书,将 .cert 文件解释为客户端证书
openssl x509 -inform PEM -in harbor.com.crt -out harbor.com.cert
-
将服务器证书、密钥和 CA 文件复制到 Harbor 主机上的 Docker 证书文件夹中。必须先创建适当的文件夹
cp harbor.com.cert /etc/docker/certs.d/harbor.com/ cp harbor.com.key /etc/docker/certs.d/harbor.com/ cp ca.crt /etc/docker/certs.d/harbor.com/
如果将默认 nginx 端口 443 映射到其他端口,请创建文件夹 /etc/docker/certs.d/harbor.com:port 或 /etc/docker/certs.d/harbor_IP:port
-
重启Docker
systemctl restart docker
修改harbor.yml
-
修改文件名
mv harbor.yml.tmpl harbor.yml
-
编辑harbor.yml
# Configuration file of Harbor # The IP address or hostname to access admin UI and registry service. # DO NOT use localhost or 127.0.0.1, because Harbor needs to be accessed by external clients. hostname: harbor.com ...... # https related config https: # https port for harbor, default is 443 port: 443 # The path of cert and key files for nginx certificate: /data/cert/harbor.com.crt private_key: /data/cert/harbor.com.key .......
安装docker-compose
-
下载docker-compose
从docker-compose版本下载对应的文件sudo curl -L "https://github.com/docker/compose/releases/download/1.25.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
-
给docker-compose执行权限
chmod +x /usr/local/bin/docker-compose
部署Harbor
-
运行脚本 prepare 以启用 HTTPS
./prepare
-
运行脚本 install.sh 以安装Harbor
./instal.sh
本地登录
-
配置hosts文件即可实现本地登录
vi /etc/hosts # 添加如下内容 部署harbor的服务器地址 harbor域名 192.168.0.3 harbor.com
-
登录
# 用户名密码已在harbor.yml中设置,默认为admin/harbor12345docker login harbor.com Username: admin Password: WARNING! Your password will be stored unencrypted in /root/.docker/config.json. Configure a credential helper to remove this warning. See https://docs.docker.com/engine/reference/commandline/login/#credentials-store Login Succeeded
-
在同一网段其它节点上登录harbor
-
将部署harbor的服务器上的证书复制到目的节点docker证书目录
scp /etc/docker/certs.d/harbor.com/ca.crt root@node:/etc/docker/certs.d/harbor.com/
-
在目的节点的hosts文件中添加 192.168.0.3 harbor.com
-
登录
docker login harbor.com
-
WEB登录
harbor安装后,默认的端口是443,访问 https://localhost:443 即可登录,若是云服务器则需要做端口转发