Harbor安装指南(外部卸载SSL)

按照Harbor官方的安装教程可以很好的配置一个HTTP或者HTTPS的Harbor服务. 如果是HTTPS, 我们需要为Harbor配置证书, 这些在官方的教程中已经很好的说明了. 但是会有这样一种情况: 就是将HTTPS的卸载放在外部的负载均衡, 然后通过HTTP反向代理访问Harbor服务

1
--> External SLB (https) --> harbor-ngixn (http)  --> core/protal/registry

这时用docker pull, docker login的时候就会出现异常, 类似400 The plain HTTP request was sent to HTTPS port

按照正常思维, 我们配置Harbor配置文件中主机的域名为 https://xxx 然后让外部的负载均衡转发至Harbor即可. 然而对于Harbor来讲, 仅仅这样配置是行不通的. 还需要进行一些额外的配置才能满足我们的要求, 安装步骤记录如下:

安装Harbor (正常步骤)

首先需要确保本机安装了合适版本的 docker 和 docker-compose

v1.7.4 为例

  1. 下载 Harbor offline installer, 解压. 本文解压到 /srv/harbor
  2. 配置 docker-compose.yml 文件, 可以将443端口的转发禁用掉; 将映射到/data的volume改到 /srv/harbor/data (可选, 默认是/data)
  3. 编辑harbor.cfg文件, 配置 hostname = xxx (具体的域名, 如果是自定义端口还要加上端口号)
  4. 首次安装需要运行 ./install.sh 等待执行完成

调整

这样其实是开启了一个 HTTP 的 Harbor, 卸载 HTTPS 后的访问是不正常的

主要原因是在执行 docker login 命令的时候还会发起 http 请求, 往往出现在 https 在非 443 端口的情况
参考自#3114

编辑文件 common/config/registry/config.yml

1
2
3
4
auth:
token:
issuer: harbor-token-issuer
realm: https://xxx # 原来是http

然后重启registry即可

1
2
docker stop registry
docker start registry

如果出现UI访问异常的情况, 可以再将common/config/nginx/nginx.conf
的配置进行调整, 将以下配置全部注解掉即可

1
2
# When setting up Harbor behind other proxy, such as an Nginx instance, remove the below line if the proxy already has similar settings.
proxy_set_header X-Forwarded-Proto $scheme;
0%