当您想将一个账号下的镜像同步到另一个账号时,您可以使用跨账号同步实例功能。跨账号同步实例功能不受地域限制,支持手动和自动的方式将实例下的镜像同步到另一个账号实例中。本文介绍如何通过手动和自动方式跨账号同步实例。

前提条件

如果您想将源实例的镜像同步到目标实例,请确保您的源实例为标准版和高级版,基础版的源实例不支持同步实例功能。目标实例可以是基础版、标准版和高级版。
说明 您可以在实例列表页面单击企业版实例的右下角的升级,升级企业版实例规格。

背景信息

跨账号同步实例支持阿里云账号和阿里云账号之间,RAM用户和RAM用户之间,阿里云账号和RAM用户之间的实例同步。

跨账号自动同步实例

通过配置同步规则,在源实例上传镜像时,自动触发将该镜像同步到另一个账号的目标实例中。本文假设源实例所在账号为A账号,目标实例所在的账号为B账号。

操作前准备

在进行跨账号自动同步实例之前,您需要先获取以下信息:

  • 获取A账号和B账号的UID。具体操作,请参见如何查看主账号UID?
    说明 如果您使用的是RAM用户,您需要获取RAM用户所在的主账号的UID。
  • 获取目标实例的所在地域和实例ID。

    登录容器镜像服务控制台,在实例列表页面顶部选择地域,单击目标企业版实例。在概览页面实例信息区域可以查看实例所在地域和实例ID。

  • 跨账号自动同步实例支持按照命名空间和仓库同步:
    • 按照命名空间同步时,目标实例和源实例必须有相同的命名空间,并且目标实例的命名空间已开启自动创建仓库的能力。关于开启自动创建仓库的更多信息,请参见创建命名空间
    • 按照仓库同步时,目标实例和源实例必须有相同的命名空间和镜像仓库。

步骤一:在B账号中对A账号进行授权

在B账号中对A账号进行授权,允许A账号可以同步镜像到B账号的实例中。

  1. 创建aliyuncontainerregistrycrossaccoutsyncrole角色。
    说明 角色名称必须为aliyuncontainerregistrycrossaccoutsyncrole。
    1. 使用B账号登录RAM控制台
    2. 在控制台左侧导航栏选择身份管理 > 角色,在右侧页面单击创建角色
    3. 选择类型配置向导中设置可信实体类型为阿里云账号,单击下一步
    4. 配置角色配置向导中设置角色名称为aliyuncontainerregistrycrossaccoutsyncrole,单击完成
    5. 创建完成配置向导中单击关闭
  2. 创建权限策略。
    1. 在RAM控制台左侧导航栏选择权限管理 > 权限策略管理,在右侧页面单击创建权限策略
    2. 新建自定义权限策略页面设置策略名称,选择配置模式脚本配置,根据实际情况替换以下内容中的Resource字段,然后将以下内容复制到文档框中,单击确定
      {
          "Statement": [
              {
                  "Effect": "Allow",
                  "Action": [
                      "cr:CreateSyncRule",
                      "cr:CreateRepositorySync"
                  ],
                  "Resource": "acs:cr:cn-beijing:151356101970****:instance/cri-4im1o411ls8g****"
              },
              {
                  "Effect": "Allow",
                  "Action": [
                      "cr:CreateSyncRule",
                      "cr:CreateRepositorySync"
                  ],
                  "Resource": "acs:cr:cn-hangzhou:151356101970****:instance/cri-4im1o411ls8gxr****"
              }
          ],
          "Version": "1"
      }
      Resource:授权资源,格式为acs:cr:<B账号目标实例所在地域>:<B账号UID>:instance/<B账号目标实例ID>
      说明 如果B账号为RAM用户,ResourceB账号UID为RAM用户所在主账号的UID。
  3. 为aliyuncontainerregistrycrossaccoutsyncrole角色添加上文创建的权限策略。
    1. 权限策略管理页面搜索上文创建的权限策略名称,单击上文创建的权限策略名称。
    2. 单击引用记录页签,然后单击新增授权
    3. 添加权限面板设置授权范围整个云账号授权主体为aliyuncontainerregistrycrossaccoutsyncrole,单击自定义策略,然后在文本框中搜索上文创建的权限策略名称,单击搜索到的权限策略名称,然后单击确定
    4. 单击完成
  4. 修改aliyuncontainerregistrycrossaccoutsyncrole角色的信任策略。
    1. 在RAM控制台左侧导航栏选择身份管理 > 角色
    2. 在角色页面搜索aliyuncontainerregistrycrossaccoutsyncrole,单击aliyuncontainerregistrycrossaccoutsyncrole。
    3. 单击信任策略管理,然后单击修改信任策略管理
    4. 修改信任策略面板,根据实际情况替换以下内容中Service字段,然后将以下内容复制到文档框中,单击确定
      {
        "Statement": [
          {
            "Action": "sts:AssumeRole",
            "Effect": "Allow",
            "Principal": {
              "Service": [
                "125287961064****@cr.aliyuncs.com"
              ]
            }
          }
        ],
        "Version": "1"
      }
      Service:授权对象,格式为<A账号的UID>@cr.aliyuncs.com
      说明 如果A账号为RAM用户,ServiceA账号UID为RAM用户所在主账号的UID。

步骤二:创建同步规则

  1. 使用A账号登录容器镜像服务控制台
  2. 在顶部菜单栏,选择所需地域。
  3. 实例列表页面单击目标企业版实例。
  4. 在企业版实例管理页面左侧导航栏选择分发管理 > 实例同步,在右侧页面单击新建规则
  5. 新建规则对话框实例信息配置向导中设置参数,单击下一步
    参数 说明
    规则名称 设置同步规则的名称。
    同步场景 设置同步场景跨账号
    目标UID 输入目标实例所在账号的UID。
    目标实例 选择目标实例所在地域,输入目标实例ID。
  6. 同步信息配置向导中设置同步级别,可选按照命名空间和仓库同步,选择相应的命名空间或者仓库,设置仓库版本过滤规则,然后单击创建同步规则
    在企业版实例管理页面选择分发管理 > 同步记录,在同步记录页面可以看到同步任务的状态为同步成功,同时在目标实例中可以看到推送的镜像,说明跨账号自动同步实例成功。

跨账号手动同步实例

通过配置同步规则,手动将源实例的镜像推送到另一个账号的目标实例中。本文假设源实例所在账号为A账号,目标实例所在的账号为B账号。

  1. 获取A账号和B账号的UID,目标实例的所在地域和实例ID。具体操作,请参见上文的操作前准备。
  2. 在B账号中对A账号进行授权,允许A账号可以同步镜像到B账号的实例中。具体操作,请参见上文的步骤一。
  3. 登录容器镜像服务控制台
  4. 在顶部菜单栏,选择所需地域。
  5. 实例列表页面单击目标企业版实例。
  6. 在企业版实例管理页面选择仓库管理 > 镜像仓库
  7. 在镜像仓库页面单击目标镜像仓库的名称。
  8. 在镜像仓库详情页面左侧导航栏单击镜像版本,然后单击目标镜像右侧操作列下的同步
  9. 镜像同步对话框设置同步场景跨账号,输入目标实例账号UID,选择目标仓库,输入目标实例ID、目标命名空间、目标仓库名称和镜像版本,然后单击确定
    在企业版实例管理页面选择分发管理 > 同步记录,在同步记录页面可以看到同步任务的状态为同步成功,同时在目标实例中可以看到同步的镜像,说明跨账号手动同步实例成功。