You need to enable JavaScript to run this app.
导航

镜像仓库体验版迁移标准版方案

最近更新时间2023.11.21 16:05:05

首次发布时间2022.12.30 16:18:04

本文介绍镜像仓库体验版实例迁移标准版版实例的迁移方案。

说明

体验版实例镜像同步至标准版实例的操作详情参见 体验版实例同步至标准版实例

背景信息

体验版实例为共享实例,为了给更多用户提供更稳定的服务,从 2023年01月01日 起,体验版实例镜像和 Helm Chart 的推/拉并发数、下载速度、公网流出流量等将执行相应的限制。全面完成限流限速加上公网流量访问限制后,无法满足大规模用户请求场景。为避免业务影响,建议在限流限速前完成业务迁移。

体验版不适合的场景

  • 推拉速度有要求的客户,不能接受速度过慢的问题。
  • 对稳定性有明确要求的客户。
  • 需要频繁通过公网拉取镜像。
  • 存储量大,现有 namespace/repo/tag 多,且需要长期保留的业务。
  • 并发拉取高的客户,例如一次需拉取10个以上的 pod。

方案概述

从性能与稳定性等角度考虑,我们建议业务方迁移到标准版镜像仓库标准版上。考虑到不同业务方对镜像仓库 CR 使用方式有较大差异,我们针对几种场景分别梳理了体验版迁移方案,供业务方自查使用。

针对不同使用场景,我们分别提供迁移方案供选择:

  • 直接使用 CR 的服务
    推荐采用方案一进行标准版迁移,直接复用此前的火山引擎账号(主账号),无需新建账号。

  • 将 CR 的服务封装后对外提供
    根据其用户的 CR 使用场景,我们有不同的方案推荐:

    • CR 实例归属在 业务方名下
      业务方的客户此前通过业务方的火山引擎账号(主账号)、临时访问 token 或火山引擎子用户访问 CR。这种情况推荐采用 方案一

    • CR 实例归属在 客户名下
      业务方的客户此前通过自己名下的火山引擎账号(主账号)访问 CR。这类场景的迁移方案有两种思路:

      • 为客户创建 独享 标准版实例:为每个客户 新建 一个标准版实例,然后按照 方案一 帮助客户迁移。
      • 为客户创建 共享 标准版实例:采用 方案二 进行标准版迁移。业务方可自行评估客户是否需要保留火山引擎账号(主账号)。

方案一

将火山引擎账号(主账号)下的体验版实例,迁移到相同主账号下的标准版实例。

迁移步骤

  1. 业务方需要在此前体验版归属的火山引擎账号下新建一个标准版实例,如需公网推拉镜像则还需要开启公网访问入口。

  2. 将此前存在体验版实例下的镜像迁移至标准版实例:
    创建一条实例同步规则,类型选择体验版迁移,源实例中命名空间全部勾选,触发选择手动触发,自动清理请勿勾选。


    alt

  3. 手动触发实例同步规则后,等待镜像迁移完成。

    alt

  4. 完成迁移后,建议体验版镜像保留一段时间,待确认迁移。

API 迁移

业务方需要确认此前使用的 CR API 是否为 Basic API(如果此前 API 为 xxxBasic,则为 Basic API)。由于 Basic API无法操作标准版实例,请业务方参考 API 参考 文档完成 API 迁移。

迁移后操作变更

  • VKE 相关变更

    • 则搭建工作负载中涉及的镜像仓库地址需要进行变更:

    • 使用 YAML 搭建负载时,则需要将 YAML 中镜像地址更改为新的镜像仓库地址:

    • 如果此前通过免密组件访问 CR,则需要对免密组件进行配置拓展,需要额外配置新创建的标准版实例:


    • 如此通过配置 Secret 方式访问 CR,则需要额外为新建的标准版实例添加一个镜像拉取的 Secret。在搭建负载时可以将原来的 imagePullSecret 与现在的 imagePullSecret 同时挂载上:



  • CP 相关变更
    则流水线中所有涉及镜像仓库地址的地方需要完成更新:


  • 此前 dockerfile 中包含从体验版镜像仓库拉取的镜像,则需要更改为新的标准版镜像仓库地址。

逻辑变更

请业务方自行评估镜像仓库地址变更后是否会产生其他影响,并进行对应的逻辑调整。

方案二

为客户创建 共享 标准版实例。将 客户火山引擎账号(主账号) 下的镜像仓库基础实例,迁移至 业务方火山引擎账号(主账号) 下新建的共享的标准版实例。

迁移步骤

  1. 业务方需要在业务方的火山引擎账号(主账号)下新建一个标准版实例。如果需要公网推拉镜像,则还需要开启公网访问入口。

  2. 业务方使用主账号,在标准版实例下创建与体验版对应的同名 Namespace。

  3. 客户火山引擎账号(主账号) 下的镜像仓库基础实例,迁移至 业务方火山引擎账号(主账号) 下新建的共享的标准版实例。当前不支持用户自行完成此类操作,如果您有这类的需求,请 提交工单

  4. 完成迁移后建议原镜像保留一段时间。

API 迁移

业务方需要确认此前使用的 CR API 是否为 Basic API(如果此前 API 为 xxxBasic,则为 Basic API)。由于 Basic API无法操作标准版实例,请业务方参考 API 参考 文档完成 API 迁移。

迁移后操作变更

  • VKE CP 相关变更
    CP、VKE 变更与 方案一 类似。区别是跨主账号访问镜像仓库时,必须通过配置对应的仓库密钥进行。VKE 访问 CR 的凭证 更新操作可参考 方案一 中部分。

  • 子用户配置访问策略
    可将操作资源限制在某个 Namespace 中,从而实现用户间的隔离。参考官网文档 创建子用户用户自定义策略 进行自定义策略。自定义策略样例如下,该策略将子用户可操作的资源限定在对应标准版实例的 library 命名空间内(可对命名空间进行创建删除等操作)。

    {
      "Statement": [
        {
          "Effect": "Allow",
          "Action": [
            "cr:*"
          ],
          "Resource": [
            "trn:cr:*:*:repository/$instanceName/library",
            "trn:cr:*:*:repository/$instanceName/library/*"
          ]
        }
      ]
    }
    
  • 此前 dockerfile 中包含从体验版镜像仓库拉取的镜像,则需要更改为新的标准版镜像仓库地址。

逻辑变更

请业务方自行评估镜像仓库地址变更后是否会产生其他影响,并进行对应的逻辑调整。

说明

在业务方将 CR 的服务封装后提供给客户使用时,如果单个客户的用量、QPS 等较小,则推荐采用 共享 标准版方式完成体验版向标准版的迁移,也就是 方案一,从而能够降低成本并提高资源的使用效率。

账号体系变化

alt

推荐业务方客户采用火山引擎子用户的方式访问 CR 而不是由主账号提供临时访问凭证。子用户模式能更好控制权限并实现不同客户之间的分隔。业务方如果基于计费等其他目的考虑,需要为客户提供一个火山引擎账号(主账号),则可以保留此前的火山引擎账号(主账号)。

CP、VKE 访问变化

alt

如果客户的子用户仅用于访问 CR,则 CP、VKE 等使用流程需要进行一定适配。CP 流水线中涉及到镜像地址的配置、VKE 中工作负载涉及镜像地址的配置,均需更换为该用户对应的标准版镜像仓库及命名空间。同时,在 VKE 跨镜像使用场景下,均需要提供用户的子用户、实例访问密码。CP 上传私有镜像时,则需要更改获取临时 Token 的任务。

运维变更

  • 需要更新用户账号与火山引擎账号(主账号)对应的信息。

  • 需要将用户目前的镜像进行迁移,在业务方主账号下创建一个标准版实例。然后,分别为用户在该标准版实例下创建一个与之前同名 的 Namespace。最后,进行镜像迁移。本次迁移为跨主账号的实例同步,当前不支持用户自行完成此类操作,如果您有这类的需求,请 提交工单

  • 用户 CP 流水线中涉及到镜像地址的配置、VKE 中工作负载涉及镜像地址的配置都需要进行更换,替换到新的地址。

  • 如果此前 dokcerfile 中有从体验版镜像仓库拉取镜像的地方,则需要将镜像仓库地址替换为新的标准版实例地址。

性能与容量
目前火山引擎平台中单主账户下可配置上万个子用户,因此从短期来看,改用 IAM 子用户后不会造成性能瓶颈。一个标准版的性能有上限,预计最多支持 1K~3K 客户 。如果客户量过大,推荐业务方创建多个标准版实例并进行分区,以保证客户使用时的稳定性。

兼容性
如果此前业务方未将火山引擎账号暴露给用户,则进行变更后用户基本无感知,对客户侧不会造成兼容性问题。