华润万象生活即将上市,获润晖1亿美元基石投资
06-18
Harbor是VMware开源的企业级DockerRegistry管理项目。与docker官方相比,拥有更丰富的权限和完整的架构设计,适合大规模Docker集群部署提供仓库服务和UI界面。
一般情况下,harbor可以通过helm或者docker-compose来安装。本文以compose安装为例,介绍如何配置harbor将腾讯云对象存储COS配置为私有镜像仓库存储地址。
另外,除了使用自建harbor之外,还可以使用腾讯云镜像仓库来简化维护流程:部署流程1准备工作:安装docker-compose代码语言:txt copycurl -L " -s)-$( uname -m)" -o /usr/local/bin/docker-compose2 重启docker 代码语言:txt 复制 systemctl daemon-reload3 下载 habor 包并解压harbor.v2.1.0.tar.gz 3.1 配置项注意事项:hostname 修改主机地址,即访问域名 https 添加HTTPS证书配置。需要注意的是,如果使用CLB,则需要在CLB和证书storage_service中配置COS信息。
请注意,harbor 支持 aws S3。 COS 桶信息可以在 s3 中配置。
对象存储中需要预先构建相应的桶信息。注意港口日志。
路径:默认/var/log/harbor/registryctl.log 代码语言:txt copy#harbor.v2.1.0.tar.gzviharbor.yml-----------harbor.yml----- -#Harbor的配置文件#访问管理界面和注册服务的IP地址或主机名。#不要使用localhost或.0.0.1,因为Harbor需要被外部客户端访问。
主机名:harbor.yourset。 com# http 相关的 confighttp: # http 的端口,默认为 80。
如果启用 https,该端口将重定向到 https 端口 port: 80# https 相关的 confighttps: # Harbor 的 https 端口,默认为 port: # cert 和 cert 的路径nginx 证书的密钥文件ate: /data/key/harbor.yourset.com.crt private_key: /data/key/harbor.yourset.xyz.key# # 取消注释以下内容将启用所有 Harbor 组件之间的 tls 通信# internal_tls:# # 设置启用为 true 意味着内部 tls 已启用# 启用: true# # 将您的证书和密钥文件放在目录上# dir: /etc/harbor/tls/internal# 如果要启用外部代理,请取消注释 external_url# 启用后,主机名将不再使用# external_url: Harbor admin 的初始密码# 仅在第一次安装harbor 时有效# 记住启动Harbor 后从UI 更改admin 密码。harbor_admin_password: Harborxxx# Harbor DB configurationdatabase: # Harbor DB root 用户的密码。
在任何生产使用之前更改此设置。 password: root # 空闲连接池中的最大连接数。
如果<=0,则不保留空闲连接。 max_idle_conns: 50 # 最大打开连接数电子数据库。
如果它 <= 0,则打开连接的数量没有限制。 # 注意:默认连接数是harbor的postgres的。
max_open_conns: # 默认数据卷data_volume: /data# Harbor Storage 设置默认使用本地文件系统上的 /data 目录# 取消注释 storage_service 设置 如果要使用外部存储storage_service: s3: accesskey: xxxxxx Secretkey: xxxxxxx RegionEndpoint: cos.ap- guangzhou.myqcloud.com 区域: ap-guangzhou 存储桶:harborgz-xxxxx secure:true # ca_bundle 是自定义根 ca 证书的路径,该证书将被注入到注册表和图表存储库容器的信任库中。 当用户使用自签名证书托管内部存储时,通常需要这样做。
# ca_bundle:# # 存储后端,默认为文件系统,选项包括文件系统、azure、gcs、s3、swift 和 oss# # 有关此配置的更多信息iguration 请参考 filesystem:# maxthreads: # # 当你想禁用注册表重定向时,将disable设置为true#redirect:#disabled: false###....4 启动并进入安装目录 代码语言: txt copy $ docker- compose down -v# 修改配置后,需要重新检查运行环境 $ ./prepare# 启动harbor服务 $ docker-compose up -d5 测试5.1网页测试。如果需要https访问,则需要申请证书并在CLB和harbor服务器上进行配置。
在harbor.yml中的https中: 代码语言:txt复制---------------- https:#harbor的https端口,默认为port:#harbor的证书和密钥文件的路径nginx 证书: /data/key/harbor.yourset.com.crt private_key: /data/key/harbor.yourset.xyz.key5.2 本地测试,输入密码 5.3 测试推送镜像注意事项: 需要建立在首先是harbor项目,否则推送会失败。代码语言:txt copy [root@centos ~/tmp]# docker tag hello-world .0.0.1/s3/hello-world:v1.0.0 [root@centos ~/tmp]# docker push .0.0.1/s3 /hello-world:v1.0.0推送引用仓库[.0.0.1/s3/hello-world]f22b8db9: 正在准备未授权:项目未找到,名称:s3:项目未找到,名称:s3[root@centos ~ /tmp]# docker Push .0.0.1/s3/hello-world:v1.0.0T他push指的是repository [.0.0.1/s3/hello-world]f22b8db9: Pushed v1.0.0:digest: sha:1b6f0cfce9b2 size: .4 对象存储中也生成了相关文件:尔塔坑记录2.1 坑一: S3 配置网上搜索到的文章以及其他用户反馈 S3 部分的配置如下: 代码语言:txt copy s3:region:ap-xxxbucket:xx-sigp-xxxxxxxaccesskey:xxxxxxxsecretkey:xxxxxendpoint:cos.ap- singapore.myqcloud.com secure: true 使用此配置后,启动harbor后,harbor-registryclt等容器会一直重启,导致镜像无法推送和拉取:查看错误日志: 代码语言:txt copy tail -f /var/log/harbor/registryctl.log 8月3日15:32:31 .30.0.1registryctl[8]:08-03T07:32:31Z[错误][/registryctl/config/config.go:63] :加载存储驱动程序失败,错误:未提供区域参数Aug 3 15:32:31 .30.0.1registryctl[8]:08-03T07:32:31Z [致命][/registryctl/main.go:78]:失败加载配置报错:无区域参数 提供关键信息:询问了几位同事,没有得出结论。
在Google上搜了半天也没找到相关文档,所以决定从源码入手。首先查看registryctl/main.go源码: 继续查看config.go:63 validRegins列表。
查询可用区,此时需要配置腾讯云COS地址。当然,它不在AWS区域列表中,所以会提示err: Noregionparameterprovided。
因此,需要传入“regionendpoint”的key,以避免查询AWS自带的region列表(网上的文章有误导性),而不是传入“endpoint”,所以需要将harbor.yml中的配置更改为: 代码language: txt copy s3:region: ap-xxxbucket:xx-sigp-xxxxxxxaccesskey:xxxxxxxsecretkey:xxxxxregionendpoint:cos.ap-singapore.myqcloud.com secure:true修改后重新加载harbor启动成功,push和拉镜子是正常的。 2.2 陷阱二:COS 强一致性配置陷阱。
有用户按照上述部??署后发现新的错误。现象是 docker 推送文件成功,但是 Harbor 总是返回错误: 与 COS 团队沟通后,主要是列表强一致性问题,即放入文件后直接列出,并不一定会导致文件被删除。
列出,因为列表最终是一致的,需要 COS 运维同事下发强一致的配置来保证文件能够列出。发布配置需要提供客户账号appid、可用区、桶名信息(可以向腾讯云提交工单)。
发布配置后可以解决此错误。三、总结代码语言:txt副本 1、部署过程中及时记录您的操作过程,并关注日志。
代码语言:txt 复制 2.如果网上没有现成的答案,请询问身边的专家。代码语言:txt复制 3.如果实在解决不了问题,请查看源码。
所有的逻辑都已经写在代码里了。
版权声明:本文内容由互联网用户自发贡献,本站不拥有所有权,不承担相关法律责任。如果发现本站有涉嫌抄袭的内容,欢迎发送邮件 举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。
标签:
相关文章
06-18
06-17
06-06
06-18
06-18
最新文章
【玩转GPU】ControlNet初学者生存指南
【实战】获取小程序中用户的城市信息(附源码)
包雪雪简单介绍Vue.js:开学
Go进阶:使用Gin框架简单实现服务端渲染
线程池介绍及实际案例分享
JMeter 注释 18 - JMeter 常用配置组件介绍
基于Sentry的大数据权限解决方案
【云+社区年度征文集】GPE监控介绍及使用