在用户的开发运维过程中,存在需要同时用到多个容器镜像仓库的场景,这些仓库可能跨主账号、跨地域、跨国、跨平台。用户可以通过手动完成实例间的推送、分发任务,但是会存在运维成本较高、同步不及时、不便于管理等问题。
基于该场景,目前 TCR 提供了同步复制功能,以及开源的镜像迁移工具。其中:
本文将介绍混合云大背景下,不同镜像仓库之间镜像数据的同步复制的经典使用场景以及对应的最佳实践。
在创建并管理 TCR 企业版实例的复制实例前,您需要完成以下准备工作:
当用户存在跨地域业务时,用户可以通过使用 实例复制 的功能实现单地域上传、多地域高速实时同步、就近内网拉取。相较于实例同步功能,该功能可统一多地域集群的发布配置,并提高云原生应用制品的跨地域同步速度。
但若当跨地域业务涉及跨国的情况时,用户还需结合 实例同步 功能的使用。出于安全合规的考虑,目前暂不支持跨国的实例复制。
注意:为实现就近内网拉取,需要用户手动将复制地域内的私有网络 VPC 依次接入该实例。详情请参见 内网访问控制,选择复制地域内的私有网络。
当用户同时使用公有云镜像仓库和自建镜像仓库,或是多家公有云镜像仓库时,往往存在跨平台的镜像迁移或同步的需求。在跨平台场景下,用户可以选择使用 TCR 的自定义域名功能,通过单一配置实现多平台的统一访问,以保证服务的连续性,详情请参见 配置自定义域名。
image-transfer 是腾讯云针对镜像迁移的开源工具,支持多种镜像仓库中的 Docker 镜像之间的批量迁移,只需仓库是基于 Docker Registry V2 搭建的 Docker 镜像仓库服务(例如腾讯云 TCR 个人版(CCR)/ TCR 企业版、Docker Hub、 Quay、 阿里云镜像服务ACR、 Harbor 等)。该工具具有两种使用模式,通用模式以及用于腾讯云的一键迁移模式,如下图所示:
使用 image-transfer 的通用模式可以实现多个镜像仓库对多个镜像仓库的镜像迁移,用户只需配置好认证鉴权文件以及迁移规则文件即可开始迁移。关于工具的下载、安装、使用方法请参见 image-transfer。
在跨平台的场景下,除了数据的批量迁移外,用户往往还存在跨平台镜像的实时同步需求。
从自建 Harbor 同步镜像至 TCR 企业版,详情请参见 从自建 Harbor 同步镜像到 TCR 企业版。在 Harbor 侧配置同步规则。从自建的容器镜像服务转向使用 TCR,一方面可以减少用户自行搭建及维护的运维管理成本,并提供云上专业稳定的托管服务及技术支持。另一方面可以实现与云上容器服务的联动使用,用户可享受容器上云的一致性使用体验,可使用容器集群内网拉取镜像,降低公网带宽成本。同理,用户可以通过在 Harbor 侧配置规则,同步镜像至其他第三方仓库服务平台。除 Harbor 本身外,目前 Harbor 支持的镜像仓库服务如下:
用户还可以通过将自建 Harbor 仓库作为中转仓库,实现第三方仓库服务平台之间的镜像同步。
如下图所示,以将阿里云 ACR 的镜像实时同步至腾讯云 TCR为例:
在开发和运维过程中,一个应用从开发到上线往往要经历多个步骤:开发、测试、进入准生产环境、最终上线进入生产环境,相应的镜像也要经过多个步骤的流转。
用户可以利用 TCR 实例同步功能搭建上述的 DevOps 流水线实现镜像的流转。若上述不同环境所属的主账号不同,请在配置实例同步规则时开启“支持跨主账号实例同步”。
用户还可以使用交付流水线功能实现推送代码自动触发镜像构建和应用部署或本地推送镜像后自动触发部署。
注意:目前 TCR 的交付流水线功能仅支持预置的固定流水线,如果用户有上述更加复杂的 DevOps 流水线的需求,可以使用 CODING DevOps。CODING DevOps 是腾讯云的一站式 DevOps 研发实践工具,TCR 的交付流水线功能依赖于 CODING DevOps 的持续集成与持续部署功能。
本页内容是否解决了您的问题?