定义数据存储区

在执行迁移的过程中,Migrate for Anthos 会将信息写入不同的数据存储区:

  1. 代表迁移后虚拟机的 Docker 映像文件将写入 Docker 注册表。

    这些 Docker 映像文件代表迁移后的 Linux 虚拟机的文件和目录。迁移 Windows 工作负载时不需要此存储区。

  2. 代表迁移后工作负载的迁移工件将写入数据存储区。

    工件包括可用于部署迁移后的工作负载的配置 YAML 文件,以及其他文件。确切的工件取决于您要迁移的是 Linux 还是 Windows 工作负载。

这些存储区的默认实现和位置取决于您创建用于执行迁移的处理集群的位置。由于 Anthos clusters on VMwareAnthos clusters on AWS 没有默认存储区,因此您必须在安装 Migrate for Anthos 的过程中配置它们。

平台 Docker 映像文件注册表* 迁移工件存储区
Anthos clusters on Google Cloud 默认为 Container Registry (GCR)

(可选)指定支持基本身份验证的任何 Docker 注册表。

默认值为 Cloud Storage

(可选)指定 S3 作为 Linux 迁移的工件存储区。不支持将 S3 用于迁移 Windows 工作负载。

Anthos clusters on VMware

无默认存储区。

指定 GCR 或支持基本身份验证的任何 Docker 注册表

无默认存储区。

指定 Cloud StorageS3 作为工件存储区。

Anthos clusters on AWS

无默认存储区。

指定 GCRECR 或支持基本身份验证的任何 Docker 注册表

无默认存储区。

指定 Cloud StorageS3 作为工件存储区。

* Windows 迁移不需要 Docker 映像文件注册表。只有迁移 Linux 虚拟机时才需要它。

查看存储区状态

安装 Migrate for Anthos 后,您可以运行 migctl doctor 命令来验证 Migrate for Anthos 的安装情况。在验证过程中,migctl doctor 命令会检查存储区的状态:

migctl doctor

migctl doctor 命令的以下示例输出中,对勾标记表示 Migrate for Anthos 已成功部署,但您尚未配置必要的数据存储区:

  [✓] Deployment
  [!] Docker Registry
  [!] Artifacts Repo`
  [!] Source Status

配置存储区后,您可以再次运行 migctl doctor 命令以确保存储区配置正确:

  [✓] Deployment
  [✓] Docker registry
  [✓] Artifacts repo
  [!] Source Status

Google Cloud Console 支持

Google Cloud Console 根据存储区实现显示存储区中的项目的网址。例如,如果存储区是使用 S3 实现的,则 Google Cloud Console 会在 S3 中显示存储分区的网址。

存储区位置的选项

数据存储区的位置会对迁移性能和费用产生影响。

例如,代表迁移后虚拟机的 Docker 映像文件可能会非常大。如果您有本地处理集群,但将 Docker 映像文件写入 Google Cloud 上的 GCR,则会导致数据上传的性能延迟和。

对于本地处理集群,您可能会发现定义集群本地的 Docker 注册表更高效。通过让注册表在本地运行,可以最大限度地缩短上传延迟时间并最大限度地降低存储费用。

对于部署在 Google Cloud 上的 GKE 集群,使用默认 GCR 代码库可获得最佳性能,但您需要支付该存储空间的费用。但是,您无需将 GCR 与云端集群搭配使用,并且可以选择使用您自己的 Docker 注册表。

存储区身份验证

Migrate for Anthos 使用的所有存储区都需要进行身份验证。身份验证机制取决于存储区类型,如下表所示:

存储区 实现 身份验证
Docker 映像文件注册表 GCR Google Cloud 服务帐号的 JSON 密钥。

如需了解详情,请参阅创建服务帐号以访问 Container Registry 和 Cloud Storage

ECR 访问密钥和密钥或凭据文件。如需了解详情,请参阅管理 IAM 用户的访问密钥
Docker 注册表 用于基本身份验证的用户名和密码。
迁移工件存储区 Cloud Storage Google Cloud 服务帐号的 JSON 密钥。

如需了解详情,请参阅创建服务帐号以访问 Container Registry 和 Cloud Storage

S3 访问密钥和密钥或凭据文件。如需了解详情,请参阅访问权限管理概览

支持 TLS

一些存储区可使用 TLS/SSL 通过 HTTPS 进行访问。如果与存储区的 HTTPS 连接使用自签名证书,则必须在配置存储区时传递一个包含以下内容的 PEM 文件:

  • 自签名证书的公钥
  • 从根证书和所有中间证书直到实际服务器证书的串联

配置 Docker 注册表

使用 migctl 命令来配置 Docker 注册表。使用 migctl 命令,您可以对注册表配置执行以下操作:

  • 创建
  • 更新
  • 删除
  • 列表
  • 设为默认

您可以定义多个配置。Migrate for Anthos 使用当前定义为“默认”的配置。使用 migctl docker-registry list 命令查看当前配置,包括默认配置。使用 migctl docker-registry set-default 命令设置默认配置。

以下示例展示了如何配置 Docker 注册表:

  • GCR

    migctl docker-registry create gcr registry-name --project project-id --json-key=m4a-install.json

    其中:

    • registry-name 是用户定义的 Docker 注册表配置的名称。

    • project-id 是 Google 项目 ID

    • m4a-install.json 是用于访问 Container Registry 和 Cloud Storage 的服务帐号的 JSON 密钥文件的名称,如配置服务帐号中所述。

  • ECR

    migctl docker-registry create ecr registry-name --registry-path url --access-key-id=key-id

    系统会提示您输入 key-id 的 Secret 密钥。

    或者,指定凭据文件的路径:

    migctl docker-registry create ecr registry-name --registry-path url --credentials-file-path file-path 

    其中:

    • registry-name 是用户定义的 Docker 注册表配置的名称。

    • url 指定注册表路径的网址(不含 http://https:// 前缀)。

    • key-id 指定访问密钥。如需了解详情,请参阅管理 IAM 用户的访问密钥

    • file-path 指定从 AWS 控制台下载的 CSV 文件的路径(该文件包含凭据)。如需详细了解如何创建 CSV 文件,请参阅配置 AWS IAM 组和实例角色

  • Docker 注册表

    migctl docker-registry create basic-auth registry-name --registry-path url --username username --ca-pem-file ca-pem-filename

    其中:

    • registry-name 是用户定义的 Docker 注册表配置的名称。

    • url 指定注册表的网址(不含 http://https:// 前缀)。例如 localhost:8080/myregistry

    • username 用于注册表的基本身份验证凭据。系统会提示您输入密码。

    • 如果注册表使用自签名证书,则 ca-pem-filename 指定包含公钥或完整 CA 链(意味着从中间 CA 证书直到根证书的串联)的 PEM 文件。例如:

      cat int1.pem int2.pem ... root.pem

稍后如需更新注册表配置,请使用与创建该配置相同的参数运行 migctl docker-registry update 命令:

migctl docker-registry update gcr registry-name same-flags-as-create

配置 Docker 注册表时,它将成为默认注册表。但是,您可能定义了多个注册表。如需查看当前注册表列表,请运行以下命令:

migctl docker-registry list

如需设置默认注册表配置(即当前用于迁移的配置),请使用以下命令:

migctl docker-registry set-default registry-name

如需删除注册表配置,请运行以下命令:

migctl docker-registry delete registry-name

配置工件存储区

使用 migctl 命令配置工件存储区。使用 migctl 命令,您可以对存储区配置执行以下操作:

  • 创建
  • 更新
  • 删除
  • 列表
  • 设为默认

您可以定义多个配置。Migrate for Anthos 使用当前定义为“默认”的配置。使用 migctl artifacts-repo list 命令查看当前配置,包括默认配置。使用 migctl artifacts-repo set-default 命令设置默认配置。

以下示例展示了如何配置工件代码库:

  • Cloud Storage

    migctl artifacts-repo create gcs repository-name --bucket-name bucket-name --json-key=m4a-install.json

    其中:

    • repository-name 是用户定义的工件存储区配置的名称。

    • bucket-name 指定 Cloud Storage 存储区中的现有存储分区。如果您没有现有存储分区,请按照创建存储分区中的说明创建一个存储分区。

      注意:在 Google Cloud 上的集群上安装 Migrate for Anthos 时,Migrate for Anthos 安装程序会自动创建名称如下的默认存储分区:

      GCP_PROJECT-migration-artifacts

      其中 GCP_PROJECT 是 Google 项目 ID。但是,在本地部署集群或 AWS 上的 Anthos 集群上安装 Migrate for Anthos 时,系统不会创建默认存储分区。您必须自己创建存储分区。

    • project-id 是 Google 项目 ID

    • m4a-install.json 是用于访问 Container Registry 和 Cloud Storage 的服务帐号的 JSON 密钥文件的名称,如配置服务帐号中所述。

  • S3

    migctl artifacts-repo create s3 repository-name --bucket-name bucket-name --region aws-region --access-key-id=key-id

    系统会提示您输入 key-id 的 Secret 密钥。

    或者,指定凭据文件的路径:

    migctl artifacts-repo create s3 repository-name --bucket-name bucket-name --region aws-region --credentials-file-path file-path

    其中:

    • repository-name 是用户定义的工件存储区配置的名称。

    • bucket-name 指定 S3 存储区中的现有存储分区。如果您当前没有存储分区,请按照使用 Amazon S3 存储分区中的说明创建一个存储分区。

    • aws-region 指定存储区的 AWS 区域。只要集群有权访问存储区,处理集群和存储区就可以位于不同区域。

    • key-id 指定访问密钥。如需了解详情,请参阅访问权限管理概览

    • file-path 指定从 AWS 控制台下载的 CSV 文件的路径(该文件包含凭据)。如需详细了解如何创建 CSV 文件,请参阅配置 AWS IAM 组和实例角色

稍后如需更新存储区配置,请使用与创建该配置相同的参数运行 migctl docker-registry update 命令:

migctl artifacts-repo update gcr repository-name same-flags-as-create

配置存储区注册表时,它将成为默认存储区。但是,您可能定义了多个存储区。如需查看当前存储区列表,请运行以下命令:

migctl artifacts-repo list

如需设置默认存储区配置(即当前用于迁移的配置),请使用以下命令:

migctl artifacts-repo set-default repository-name

如需删除存储区配置,请执行以下操作:

migctl artifacts-repo delete repository-name

后续步骤