文档中心>容器镜像服务>实践教程>从自建 Harbor 同步镜像到 TCR 企业版

从自建 Harbor 同步镜像到 TCR 企业版

最近更新时间:2023-09-13 16:52:41

我的收藏

操作场景

当用户将在 IDC 内自建的容器集群迁移至云上容器服务时,也可选择将自建的容器镜像托管服务一同迁移至云上进行托管。将自建的镜像仓库服务迁移至腾讯云容器镜像服务 TCR 后,一方面减少了用户自行搭建及维护的运维管理成本,并提供云上专业稳定的托管服务及技术支持。另一方面实现了与云上容器服务的联动使用,用户可享受容器上云的一致性使用体验,可使用容器集群内网拉取镜像,降低了公网带宽成本。
Harbor 是 VMware 公司开源的企业级 Docker Registry 项目,在开源 Docker Distribution 能力基础上扩展了例如 RBAC、镜像安全扫描及镜像同步等能力。当前已成为自建容器镜像托管及分发服务的首选。本文介绍如何将 IDC 或云上服务器内已搭建的 Harbor 中的容器镜像或 Helm Chart,同步至云上容器镜像服务企业版实例。

前提条件

在将自建 Harbor 内数据同步至云上容器镜像服务实例内,您需要首先确认并完成以下准备工作:
已搭建 Harbor 服务,且仅支持 Harbor v1.8.0 及以上版本。
确认自建 Harbor 可通过专线、公网或私有网络访问容器镜像服务。
已在云上容器集群所在地域或邻近地域成功 购买企业版实例
如果使用子账号进行操作,请参考 企业版授权方案示例 提前为子账号授予对应实例的容器镜像,Helm Chart 推送权限,建议将容器镜像服务全读写权限授予配置同步的子账号。

操作步骤

配置自建 Harbor 服务可访问容器镜像服务企业版实例

您可根据自建 Harbor 服务的实际网络情况,选择通过腾讯云私有网络进行访问或通过公网进行访问方案配置访问容器镜像服务企业版实例。
通过腾讯云私有网络进行访问
通过公网进行访问

若当前自建 Harbor 服务部署在腾讯云私有网络环境内
,或已通过专线打通至腾讯云私有网络,则可通过内网进行数据同步。通过内网进行数据同步可提升数据同步速度,并节省公网流量费用。
1. 登录 容器镜像服务 控制台,选择左侧导航栏中的访问控制 > 内网访问
2. 在页面上方的实例名称下拉列表中,选择需要进行数据同步的实例。
3. 单击新建,在弹出的“新建内网访问链路”窗口中配置新建内网访问链路以允许自建 Harbor 服务通过内网访问该实例。其中:
所属实例:当前已选择实例,即需要进行数据同步的实例。
私有网络:自建 Harbor 服务所在的私有网络,或已通过专线接入的私有网络。
子网:新建内网访问链路将占用所选私有网络的一个内网 IP,请选择私有网络下的一个子网以分配该内网 IP 所属的子网。
4. 完成以上配置后,可获得内网访问链路的目标访问 IP。为在私有网络环境中将实例域名解析至该内网 IP,请管理该内网访问链路的自动解析,开启默认域名的自动解析。详情可参见 管理内网解析。 您也可以在自建 Harbor 服务所在云服务器上配置 Host。如果选择手动配置,可在云服务器上执行以下命令,配置 Host。如果当前正在使用独立的 DNS 服务,也可在 DNS 服务中配置。
echo x.x.x.x harbor-sync.tencentcloudcr.com >> /etc/hosts

若当前自建 Harbor 服务未部署在腾讯云私有网络环境内
,或无法通过专线打通至腾讯云私有网络,则可通过公网进行数据同步。同步过程中可能产生公网流量费用,具体请参考网络运营商或云服务商定价。
1. 登录 容器镜像服务 控制台,选择左侧导航栏中的访问控制 > 公网访问
2. 在页面上方的实例名称下拉列表中,选择需要进行数据同步的实例。
3. 单击列表上方的开启公网访问入口即可开始开启入口。 待该按钮状态由开启中变为关闭公网访问入口,且添加公网白名单为可选状态,则说明入口已开启。入口开启后,默认拒绝全部来源的公网访问。
4. 单击添加公网白名单,在弹出的“新建公网访问白名单”窗口中配置白名单策略以允许自建 Harbor 服务通过公网访问该实例。其中:
所属实例:当前已选择实例,即需要进行数据同步的实例。
公网 IP 地址段:自建 Harbor 服务出口的公网 IP。如果无法确认具体的公网 IP 地址,可临时配置为 0.0.0.0/0 以放通全部公网来源的访问,完成同步后请尽快删除该配置。
备注:可填写白名单配置的备注信息,例如“允许自建 Harbor 公网访问”。

创建企业版实例访问凭证

容器镜像服务企业版支持创建、管理多个访问凭证,建议您为数据同步操作创建独立的访问凭证,完成数据同步后及时删除,避免实例访问权限泄露。
1. 登录 容器镜像服务 控制台,选择左侧导航栏中的实例列表
2. 在“实例列表”页面中选择需要进行数据同步的实例,进入实例详情页。
3. 选择访问凭证页签,并单击实例列表上方的新建
4. 在弹出的“新建访问凭证”窗口中,按照以下步骤进行获取:
4.1 在“新建访问凭证”步骤中,输入凭证“用途描述”并单击下一步。用途描述可填写为“自建 Harbor 数据同步专用”。
4.2 在“保存访问凭证”步骤中,单击保存访问凭证下载凭证信息。请妥善保管访问凭证,仅一次保存机会
创建完成后即可在访问凭证页签中查看。当数据同步完成后,请及时进行访问凭证的禁用及删除操作。

配置 Harbor 同步仓库及同步规则

Harbor 支持添加第三方 Registry 并配置数据复制规则,本文以 Harbor v2.1.2 为例进行操作说明。
1. 使用管理员账号登录至自建 Harbor 服务,可查看并进行系统管理
2. 选择左侧导航栏中的系统管理 > 仓库管理,进入“仓库管理”页面。
3. 在“仓库管理”页面中,单击新建目标,参考以下信息添加企业版实例。
提供者:选择 “Tencent TCR”。
目标名:自定义该同步目标名称,例如 tencent-tcr。
描述:该同步目标的描述。
目标 URL:企业版实例访问域名,例如 https://harbor-sync.tencentcloudcr.com
访问 ID:填写已在访问管理 > API 密钥管理 中获取的 SecretId。
访问密码:填写已在访问管理 > API 密钥管理中获取的 SecretKey。
验证远程证书:保持默认设置。
4. 单击测试连接
如显示“测试连接成功”,则说明当前自建 Harbor 服务可以正常访问该企业版实例。
如显示“测试连接失败”,则请确认 配置自建 Harbor 服务可访问容器镜像服务企业版实例
5. 单击确定新建该目标仓库。
注意
如果自建 Harbor 版本较低,提供者选项中无 “Tencent TCR”,请在创建新的目标仓库时,选择提供者为 "Docker Registry",且访问 ID、访问密码分别填写在实例管理中获取的镜像仓库长期访问凭证(用户名 + 密码),而不是腾讯云的 SecretId,SecretKey。在此配置下,暂不支持在 TCR 侧自动新建命名空间。
6. 选择左侧导航栏中的系统管理 > 复制管理,并单击新建规则,参考以下信息创建同步规则。
名称:同步规则名称,可根据具体使用场景填写。
描述:该复制规则的描述。
复制模式:默认为 Push-based 模式,仅当前使用 “Tencent TCR” 插件(Harbor 版本 ≥ 2.1.2)时,可选择 Pull-based。其中,Push-based 指将 Harbor 内新增镜像同步至 TCR,Pull-based 指将 TCR 内新增镜像同步至 Harbor。
源资源过滤器:可过滤选择需要同步的资源,不填写则默认选择自建 Harbor 内全部容器镜像及 Helm Chart 资源。
目的 Registry:选择 步骤3 中已创建的目标仓库。
目的 Namespace:指定目的端的命名空间,不填写则默认同名命名空间,建议保持默认设置。
触发模式:默认手动触发,如需在有新容器镜像或 Helm Chart 推送时自动同步,请选择 “事件驱动”,同时建议不要勾选“删除本地镜像时同时也删除远程的镜像”。
覆盖:默认覆盖同名资源。

触发同步并查看同步日志

向自建 Harbor 服务内推送容器镜像及 Helm Chart,若同步规则中的触发模式设置为“事件驱动”,则新推送的资源将自动同步至企业版实例内。可选择该同步规则查看同步日志,并可进入企业版实例控制台查看是否同步成功。此步骤以向自建 Harbor 服务内手动推送 nginx:latest 容器镜像并触发同步为例:
1. 推送容器镜像并查看 使用 docker 客户端推送本地的 nginx:latest 容器镜像,并进入自建 Harbor 控制台内查看已推送的镜像。tcr-sync 项目内已推送 nginx:latest 容器镜像,并自动创建了 nginx 镜像仓库。
2. 查看同步记录及进度 选择左侧导航栏中的系统管理 > 复制管理,选择在 步骤6 中已创建的同步规则,即可查看该同步规则的复制任务。在该复制任务中已有一条任务记录,您可查看该复制任务的状态及成功百分比。
3. 在容器镜像服务内查看同步镜像 进入容器镜像服务控制台的“镜像仓库”页面,并选择与自建 Harbor 服务进行同步的实例,即可查看已同步成功的容器镜像。