当前位置:主页 > 查看内容

容器镜像服务 从自建 Harbor 同步镜像到 TCR 企业版 - 最佳实践

发布时间:2021-09-18 00:00| 位朋友查看

简介:操作场景 当用户将在 IDC 内自建的容器集群迁移至云上容器服务时,也可选择将自建的容器镜像托管服务一同迁移至云上进行托管。将自建的镜像仓库服务迁移至腾讯云容器镜像服务 TCR 后,一方面减少了用户自行搭建及维护的运维管理成本,并提供云上专业稳定的托……

操作场景

当用户将在 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. 单击【测试连接】。
    • 如显示“测试连接成功”,则说明当前自建 Harbor 服务可以正常访问该企业版实例。
    • 如显示“测试连接失败”,则请确认 配置自建 Harbor 服务可访问容器镜像服务企业版实例。
  5. 单击【确定】新建该目标仓库,新建成功后如下图所示:
    注意

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

  6. 选择左侧导航栏中的【系统管理】>【复制管理】,并单击【新建规则】,参考以下信息创建同步规则。如下图所示:
    • 名称:同步规则名称,可根据具体使用场景填写。
    • 描述:该复制规则的描述。
    • 复制模式:仅支持 “Push-based”。
    • 源资源过滤器:可过滤选择需要同步的资源,不填写则默认选择自建 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. 查看同步记录及进度
    选择左侧导航栏中的【系统管理】>【复制管理】,选择在 步骤5 中已创建的同步规则,即可查看该同步规则的复制任务。如下图所示,在该复制任务中已有一条任务记录,您可查看该复制任务的状态及成功百分比。
  3. 在容器镜像服务内查看同步镜像
    进入容器镜像服务控制台的“镜像仓库”页面,并选择与自建 Harbor 服务进行同步的实例,即可查看已同步成功的容器镜像。如下图所示,在 tcr-sync 命名空间内已自动创建 nginx 镜像仓库,并推送了 nginx:latest 容器镜像。

本站部分内容转载于网络,版权归原作者所有,转载之目的在于传播更多优秀技术内容,如有侵权请联系QQ/微信:153890879删除,谢谢!

推荐图文

  • 周排行
  • 月排行
  • 总排行

随机推荐