Harbor对接非AWS对象存储
背景说明
项目的应用完全运行在一个离线环境中,同时通过K8S的方式进行容器编排。需要自建一个harbor的镜像仓库。并且通过私有云提供的S3服务进行容器镜像的持久化存储。我踩的其中的一个坑就是S3的region名字非AWS的标准名称。运行时抱错如下:
2025-04-21T07:47:17Z [ERROR] [/registryctl/config/config.go:63]: failed to load storage driver, err:invalid region provided: cn-nanjing-mic-d01
2025-04-21T07:47:17Z [FATAL] [/registryctl/main.go:102]: Failed to load configurations with error: invalid region provided: cn-nanjing-mic-d01
前置条件
虚拟机需要安装Docker
部署步骤
- 下载harbor的离线安装文件并上传到服务器/data路径,并解压缩,我使用的时2.13.0的版本
- 导入harbor的离线镜像
cd /data/ && docker load < harbor.v2.13.0.tar.gz
- 解压缩并配置harbor域名和S3相关,将harbor.yml.tmpl 复制为harbor.yml,编辑内容如下:
hostname: harbor.wldc.site
http:port: 80
https:port: 443certificate: /data/harbor/ssl/tls.crt #harbor的https的证书private_key: /data/harbor/ssl/tls.key #harbor的https的密钥
harbor_admin_password: Harbor12345 #harbor管理员的密码
database:password: root123max_idle_conns: 100max_open_conns: 900conn_max_lifetime: 5mconn_max_idle_time: 0
data_volume: /data/harbor/data
storage_service:s3:accesskey: UHjTUgnGzUOo8EcB #需要对接的S3的AKsecretkey: 4fmshy************6AYrxdIb #需要对接的S3的SKregion: cn-nanjing-mic-d01bucket: prd-dcmpregionendpoint: http://oss-cn-nanjing-mic-d01-a.res.mic.nj.abc.com/ #需要对接的S3的接入点,在模板配置中没有这个参数,需要把endpoint修改为这个。不然就会报背景里面提到的错误secure: false #不启用httpsv4auth: truechunksize: 5242880rootdirectory: /registryca_bundle: /data/harbor/ssl/ca.pem #S3 的https的CA证书文件
trivy:ignore_unfixed: falseskip_update: falseskip_java_db_update: falseoffline_scan: falsesecurity_check: vulninsecure: falsetimeout: 5m0s
jobservice:max_job_workers: 10max_job_duration_hours: 24job_loggers:- STD_OUTPUT- FILE
notification:webhook_job_max_retry: 3
log:level: infolocal:rotate_count: 50rotate_size: 200Mlocation: /var/log/harbor
_version: 2.13.0
proxy:http_proxy:https_proxy:no_proxy:components:- core- jobservice- trivy
upload_purging:enabled: trueage: 168hinterval: 24hdryrun: false
cache:enabled: falseexpire_hours: 24
- 运行prepare命令,该命令会自动生成compose文件以及相关的目录和配置文件
cd /data/harbor && chmod +x ./prepare && ./prepare
- 启动harbor
cd /data/harbor && docker compose up -d
- 验证harbor是否正常运行并对接成功S3
docker login harbor.wldc.site
docker tag base/httpbin:master-202208132308-24 harbor.wldc.site/base/httpbin:master-202208132308-24
docker push harbor.wldc.site/base/httpbin:master-202208132308-24
对象存储中已经存储了容器的镜像文件