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.crtyourdomain.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 文件做了修改,则重新执行 ./preparedocker-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 离线安装

centos 7离线安装harbor

Harbor高可用集群设计及部署(实操+视频),基于离线安装方式

系列CentOS 7.3 离线安装(无网络环境)CI CD环境之harbor

harbor离线安装

在linux上离线安装harbor的docker 私有仓库