一、S3 存储配置步骤
1.修改 harbor.yml 文件
在 storage_service 部分启用 S3 配置,并填写认证信息与存储参数:
storage_service:s3:accesskey: admin # S3 访问密钥secretkey: your_strong_password # S3 私有密钥region: us-west-1 # 区域(Minio 默认为 us-west-1,AWS 需按实际填写)regionendpoint: http://10.168.2.135:9000 # S3 服务访问地址bucket: harbor # 存储桶名称secure: false # 是否启用 HTTPS(Minio 默认 HTTP)multipartcopythresholdsize: "5368709120" # 分段上传阈值(建议调大至 5GB)
2.配置存储桶权限
确保 S3 存储桶策略允许 Harbor 的读写权限。例如 AWS S3 策略需包含 s3:PutObject、s3:GetObject 等操作(Minio 等自建 S3 服务默认无严格权限控制,但生产环境建议启用)
{"Version": "2012-10-17","Statement": [{"Effect": "Allow","Action": ["s3:*"],"Resource": ["arn:aws:s3:::my-bucket/*"]}]}
3.重启 Harbor 服务
# 修改配置后,需要重新检查运行环境./prepare# 关闭harbordocker-compose down -v# 启动harbordocker-compose up -d# 将之前harbor数据复制到s3mc cp /mnt/registry/registry/docker local/harbor/ --recursive
4.测试镜像上传
重启后通过 docker push 测试镜像上传,并在 S3 控制台验证文件生成
在harbor上新建项目mypy,将新建用户chkov添加为mypy项目管理员,查看推送命令

编辑/etc/docker/daemon.json,添加如下语句解决ssl证书问题
"insecure-registries": ["registry.chkov.local"],
mkdir test&&cd testtee Dockerfile <<EOFFROM python:3.9-slimWORKDIR /appCOPY requirements.txt ./RUN pip install --no-cache-dir -r requirements.txt # 禁用 pip 缓存COPY . .CMD ["gunicorn", "app:app", "--bind", "0.0.0.0:8000"]EOF# 构建镜像docker build -t registry.chkov.local/mypy/mypy:2.0 -f ./Dockerfile .# 登录harbordocker login https://registry.chkov.localdocker push registry.chkov.local/mypy/mypy:2.0


1.连接超时或端点不可达
表现:日志报错 dial tcp: lookup s3.example.com... i/o timeout。
原因:regionendpoint 地址错误或网络不通。
解决:
检查 regionendpoint 是否可解析(如通过 curl 测试连通性)。
若使用自建 S3(如 Minio),确保端口开放且防火墙规则允许访问。
2.认证失败
表现:s3aws: AccessDenied 或 InvalidAccessKeyId。
原因:密钥错误或权限不足。
解决:
验证 accesskey 和 secretkey 是否与 S3 服务一致。
检查存储桶策略是否授予足够权限(如 s3:ListBucket。
3.分段上传失败
表现:大文件上传中断或报错。
原因:multipartcopythresholdsize 过小或网络不稳定。
解决:
将 multipartcopythresholdsize 调至 5GB(值需为字符串格式)。
优化网络带宽或启用重试机制。
三、最佳实践与优化
存储性能优化
启用 HTTPS:生产环境建议设置 secure: true 并配置 TLS 证书,确保数据传输加密。
调整分段参数:根据网络带宽调整 chunksize(默认 5MB)和 multipartcopymaxconcurrency(并发数)。
高可用架构
多副本存储:结合 S3 的多 AZ 存储或版本控制功能,防止数据丢失。
Harbor HA 部署:通过 Helm 部署多实例 Harbor,并共享同一 S3 存储桶。
生命周期管理
在 S3 中配置自动清理策略,定期删除过期镜像层,降低存储成本。
通过以上配置与优化,Harbor 可高效利用 S3 存储实现镜像管理,适用于云原生及混合云场景。具体操作细节可参考 Harbor 官方文档(https://goharbor.io/docs/2.12.0/)




