harbor 离线安装
Posted catoop
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了harbor 离线安装相关的知识,希望对你有一定的参考价值。
本例以 harbor v2.6.1 为例,其他版本请根据实际情况执行。
下载离线包
官方下载地址:harbor-offline-installer-$VERSION.tgz
具体版本一般用最新版即可,实际根据自己需求而定。
配置和安装
放置安装包
# 移动离线安装包
mv harbor-offline-installer-v2.6.1.tgz /usr/local/ && cd /usr/local/
# 解压缩
tar -zxvf harbor-offline-installer-v2.6.1.tgz && cd harbor/
# 拷贝配置文件
cp harbor.yml.tmpl harbor.yml
修改配置文件中 hostname 为实际域名,例如 harbor.yourdomain.com
。
如果你需要设定 harbor 数据目录位置,请修改 harbor.yml
中的 data_volume: /data
为自定义路径,例如修改为 data_volume: /opt/soft/harbor/data
。
配置文件中的 harbor_admin_password
为 harbor 的密码,请按需修改。
准备https证书
在生产环境中,您应该从 CA 获得证书。在测试或开发环境中,您可以生成自己的 CA。要生成 CA 证书,请运行以下命令。
生成证书颁发机构证书
1、生成 CA 证书私钥
cd /usr/local/harbor/
mkdir -p ssl && cd $_
openssl genrsa -out ca.key 4096
2、生成 CA 证书
调整 -subj
选项中的值以反映您的组织。如果您使用 FQDN 连接您的 Harbor 主机,则必须将其指定为公用名 (CN) 属性。
openssl req -x509 -new -nodes -sha512 -days 3650 \\
-subj "/C=CN/ST=Jiangsu/L=Nanjing/O=example/OU=Person/CN=yourdomain.com" \\
-key ca.key \\
-out ca.crt
生成服务器证书
证书通常包含一个 .crt
文件和一个 .key
文件,例如 yourdomain.com.crt
和 yourdomain.com.key
。
1、生成私钥
openssl genrsa -out yourdomain.com.key 4096
2、生成证书签名请求 (CSR)
调整 -subj
选项中的值以反映您的组织。如果您使用 FQDN 连接您的 Harbor 主机,则必须将其指定为公用名称 ( CN) 属性并在密钥和 CSR 文件名中使用它。
openssl req -sha512 -new \\
-subj "/C=CN/ST=Beijing/L=Beijing/O=example/OU=Personal/CN=yourdomain.com" \\
-key yourdomain.com.key \\
-out yourdomain.com.csr
3、生成 x509 v3 扩展文件
无论您是使用 FQDN 还是 IP 地址来连接到您的 Harbor 主机,您都必须创建此文件,以便您可以为您的 Harbor 主机生成符合主题备用名称 (SAN) 和 x509 v3 的证书扩展要求。替换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=yourdomain.com
DNS.2=yourdomain
DNS.3=harbor.yourdomain.com
DNS.4=*.yourdomain.com
DNS.5=hostname
EOF
4、使用该v3.ext文件为您的 Harbor 主机生成证书
将yourdomain.comCRS 和 CRT 文件名中的 替换为 Harbor 主机名。
openssl x509 -req -sha512 -days 3650 \\
-extfile v3.ext \\
-CA ca.crt -CAkey ca.key -CAcreateserial \\
-in yourdomain.com.csr \\
-out yourdomain.com.crt
5、转换yourdomain.com.crt为yourdomain.com.cert, 供 Docker 使用
Docker 守护进程将 .crt
文件解释为 CA 证书,将 .cert
文件解释为客户端证书。
openssl x509 -inform PEM -in yourdomain.com.crt -out yourdomain.com.cert
Harbor 证书配置
1、将服务器证书和密钥复制到 Harbor 主机上,并修改配置文件 harbor.yml
中 https 对应的证书路径,配置片段如下示例:
https:
# https port for harbor, default is 443
port: 843
# The path of cert and key files for nginx
certificate: /usr/local/harbor/ssl/yourdomain.com.crt
private_key: /usr/local/harbor/ssl/yourdomain.com.key
启动 harbor 服务
cd /usr/local/harbor/
mkdir -p /var/log/harbor/
./install.sh
如果对 harbor.yml 文件做了修改,则重新执行 ./prepare
和 docker-compose up -d
。
服务启动成功后,就可以打开浏览器通过 https://yourdomain.com 来访问 Harbor 管理页面了。
docker 客户端证书配置
1、将服务器证书、密钥和 CA 文件复制到需要 login 连接 Harbor 的 Docker 主机上的 /etc/docker/cert.d/yourdomain.com
证书文件夹中。您必须先创建适当的文件夹。
mkdir -p /etc/docker/certs.d/yourdomain.com/
cp yourdomain.com.cert /etc/docker/certs.d/yourdomain.com/
cp yourdomain.com.key /etc/docker/certs.d/yourdomain.com/
cp ca.crt /etc/docker/certs.d/yourdomain.com/
注意客户端证书是放置在需要 login harbor 的主机上,不是 harbor 自身所在的主机。
如果您将默认 nginx 端口 443 映射到不同的端口,请创建文件夹/etc/docker/certs.d/yourdomain.com:port或/etc/docker/certs.d/harbor_IP:port。
以下示例说明了使用自定义证书的配置。
/etc/docker/certs.d/
└── yourdomain.com:port
├── yourdomain.com.cert <-- Server certificate signed by CA
├── yourdomain.com.key <-- Server key signed by CA
└── ca.crt <-- Certificate authority that signed the registry certificate
如果你使用 docker login yourdomain.com:443 指定端口来登录 harbor,那么请复制文件夹 yourdomain.com 一份为 yourdomain.com:443,否则可能出现
x509: certificate signed by unknown authority
错误。
2、重启 Docker 引擎。
systemctl restart docker
服务重启后,可以使用 docker login 和 docker pull 验证。
(END)
以上是关于harbor 离线安装的主要内容,如果未能解决你的问题,请参考以下文章
Harbor高可用集群设计及部署(实操+视频),基于离线安装方式