tencent cloud

文档反馈

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

最后更新时间:2023-02-09 11:55:37

    操作场景

    当用户将在 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
      

    创建企业版实例访问凭证

    容器镜像服务企业版支持创建、管理多个访问凭证,建议您为数据同步操作创建独立的访问凭证,完成数据同步后及时删除,避免实例访问权限泄露。

    1. 登录 容器镜像服务 控制台,选择左侧导航栏中的实例列表
    2. 在“实例列表”页面中选择需要进行数据同步的实例,进入实例详情页。
    3. 选择访问凭证页签,并单击实例列表上方的新建
    4. 在弹出的“新建访问凭证”窗口中,按照以下步骤进行获取:
      1. 在“新建访问凭证”步骤中,输入凭证“用途描述”并单击下一步。用途描述可填写为“自建 Harbor 数据同步专用”。
      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. 单击测试连接
    5. 单击确定新建该目标仓库。
    注意:

    如果自建 Harbor 版本较低,提供者选项中无 “Tencent TCR”,请在创建新的目标仓库时,选择提供者为 "Docker Registry",且访问 ID、访问密码分别填写在实例管理中获取的镜像仓库长期访问凭证(用户名 + 密码),而不是腾讯云的 SecretId,SecretKey。在此配置下,暂不支持在 TCR 侧自动新建命名空间。

    1. 选择左侧导航栏中的系统管理>复制管理,并单击新建规则,参考以下信息创建同步规则。
      • 名称:同步规则名称,可根据具体使用场景填写。
      • 描述:该复制规则的描述。
      • 复制模式:默认为 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 控制台内查看已推送的镜像。
    2. 查看同步记录及进度
      选择左侧导航栏中的系统管理>复制管理,选择在 步骤6 中已创建的同步规则,即可查看该同步规则的复制任务。
    3. 在容器镜像服务内查看同步镜像
      进入容器镜像服务控制台的“镜像仓库”页面,并选择与自建 Harbor 服务进行同步的实例,即可查看已同步成功的容器镜像。
    联系我们

    联系我们,为您的业务提供专属服务。

    技术支持

    如果你想寻求进一步的帮助,通过工单与我们进行联络。我们提供7x24的工单服务。

    7x24 电话支持