操作场景
当用户将在 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 服务部署在腾讯云私有网络环境内,或已通过专线打通至腾讯云私有网络,则可通过内网进行数据同步。通过内网进行数据同步可提升数据同步速度,并节省公网流量费用。
- 登录 容器镜像服务 控制台,选择左侧导航栏中的访问控制>内网访问。
- 在页面上方的实例名称下拉列表中,选择需要进行数据同步的实例。
- 单击新建,在弹出的“新建内网访问链路”窗口中配置新建内网访问链路以允许自建 Harbor 服务通过内网访问该实例。其中:
- 所属实例:当前已选择实例,即需要进行数据同步的实例。
- 私有网络:自建 Harbor 服务所在的私有网络,或已通过专线接入的私有网络。
- 子网:新建内网访问链路将占用所选私有网络的一个内网 IP,请选择私有网络下的一个子网以分配该内网 IP 所属的子网。
- 完成以上配置后,可获得内网访问链路的目标访问 IP。为在私有网络环境中将实例域名解析至该内网 IP,请管理该内网访问链路的自动解析,开启默认域名的自动解析,如下图所示。详情可参见 管理内网解析。
您也可以在自建 Harbor 服务所在云服务器上配置 Host。如果选择手动配置,可在云服务器上执行以下命令,配置 Host。如果当前正在使用独立的 DNS 服务,也可在 DNS 服务中配置。
echo x.x.x.x harbor-sync.tencentcloudcr.com >> /etc/hosts
若当前自建 Harbor 服务未部署在腾讯云私有网络环境内,或无法通过专线打通至腾讯云私有网络,则可通过公网进行数据同步。同步过程中可能产生公网流量费用,具体请参考网络运营商或云服务商定价。
- 登录 容器镜像服务 控制台,选择左侧导航栏中的访问控制>公网访问。
- 在页面上方的实例名称下拉列表中,选择需要进行数据同步的实例。
- 单击列表上方的开启公网访问入口即可开始开启入口。
待该按钮状态由开启中变为关闭公网访问入口,且添加公网白名单为可选状态,则说明入口已开启。入口开启后,默认拒绝全部来源的公网访问。 - 单击添加公网白名单,在弹出的“新建公网访问白名单”窗口中配置白名单策略以允许自建 Harbor 服务通过公网访问该实例。其中:
- 所属实例:当前已选择实例,即需要进行数据同步的实例。
- 公网 IP 地址段:自建 Harbor 服务出口的公网 IP。如果无法确认具体的公网 IP 地址,可临时配置为
0.0.0.0/0
以放通全部公网来源的访问,完成同步后请尽快删除该配置。 - 备注:可填写白名单配置的备注信息,例如“允许自建 Harbor 公网访问”。
配置完成后如下图所示:
创建企业版实例访问凭证
容器镜像服务企业版支持创建、管理多个访问凭证,建议您为数据同步操作创建独立的访问凭证,完成数据同步后及时删除,避免实例访问权限泄露。
- 登录 容器镜像服务 控制台,选择左侧导航栏中的实例列表。
- 在“实例列表”页面中选择需要进行数据同步的实例,进入实例详情页。
- 选择访问凭证页签,并单击实例列表上方的新建。
- 在弹出的“新建访问凭证”窗口中,按照以下步骤进行获取:
- 在“新建访问凭证”步骤中,输入凭证“用途描述”并单击下一步。用途描述可填写为“自建 Harbor 数据同步专用”。
- 在“保存访问凭证”步骤中,单击保存访问凭证下载凭证信息。请妥善保管访问凭证,仅一次保存机会。
创建完成后即可在访问凭证页签中查看。当数据同步完成后,请及时进行访问凭证的禁用及删除操作。
配置 Harbor 同步仓库及同步规则
Harbor 支持添加第三方 Registry 并配置数据复制规则,本文以 Harbor v2.1.2 为例进行操作说明。
- 使用管理员账号登录至自建 Harbor 服务,可查看并进行系统管理。
- 选择左侧导航栏中的系统管理>仓库管理,进入“仓库管理”页面。
- 在“仓库管理”页面中,单击新建目标,参考以下信息添加企业版实例。
- 提供者:选择 “Tencent TCR”。
- 目标名:自定义该同步目标名称,例如 tencent-tcr。
- 描述:该同步目标的描述。
- 目标 URL:企业版实例访问域名,例如
https://harbor-sync.tencentcloudcr.com
。
- 访问 ID:填写已在访问管理> API密钥管理 中获取的 SecretId。
- 访问密码:填写已在访问管理> API密钥管理 中获取的 SecretKey。
- 验证远程证书:保持默认设置。
- 单击测试连接。
- 单击确定新建该目标仓库。
注意:
如果自建 Harbor 版本较低,提供者选项中无 “Tencent TCR”,请在创建新的目标仓库时,选择提供者为 "Docker Registry",且访问 ID、访问密码分别填写在实例管理中获取的镜像仓库长期访问凭证(用户名 + 密码),而不是腾讯云的 SecretId,SecretKey。在此配置下,暂不支持在 TCR 侧自动新建命名空间。
- 选择左侧导航栏中的系统管理>复制管理,并单击新建规则,参考以下信息创建同步规则。
- 名称:同步规则名称,可根据具体使用场景填写。
- 描述:该复制规则的描述。
- 复制模式:默认为 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
容器镜像并触发同步为例:
- 推送容器镜像并查看
使用 docker 客户端推送本地的 nginx:latest
容器镜像,并进入自建 Harbor 控制台内查看已推送的镜像。
- 查看同步记录及进度
选择左侧导航栏中的系统管理>复制管理,选择在 步骤6 中已创建的同步规则,即可查看该同步规则的复制任务。
- 在容器镜像服务内查看同步镜像
进入容器镜像服务控制台的“镜像仓库”页面,并选择与自建 Harbor 服务进行同步的实例,即可查看已同步成功的容器镜像。
本页内容是否解决了您的问题?