3.5. 配置复制存储库
您必须将对象存储配置为用作复制存储库。MTC 将数据从源集群复制到复制存储库,然后从复制存储库复制到目标集群。
MTC 支持使用文件系统和快照数据复制的方法将数据从源集群迁移到目标集群。您可以选择适合于您的环境并受您的存储供应商支持的方法。
MTC 支持以下存储供应商:
- 多云对象网关
 - Amazon Web Services S3
 - Google Cloud Platform
 - Microsoft Azure Blob
 - 通用 S3 对象存储,例如 Minio 或 Ceph S3
 
3.5.1. 先决条件 复制链接链接已复制到粘贴板!
- 所有集群都必须具有对复制存储库的不间断网络访问权限。
 - 如果您将代理服务器与内部托管的复制存储库搭配使用,您必须确保代理允许访问复制存储库。
 
3.5.2. 检索多云对象网关凭证 复制链接链接已复制到粘贴板!
您必须检索 Multicloud Object Gateway(MCG)凭证和 S3 端点,以便将 MCG 配置为 MTC 的 Migration Toolkit for Containers(MTC)的复制仓库。
					您必须检索 Multicloud Object Gateway (MCG)凭证,您需要为 MTC 创建一个 Secret 自定义资源 (CR)。
				
虽然 MCG Operator 已被弃用,但 MCG 插件仍可用于 OpenShift Data Foundation。要下载插件,请访问下载 Red Hat OpenShift Data Foundation,并为您的操作系统下载适当的 MCG 插件。
先决条件
- 请根据相关的 Red Hat OpenShift Data Foundation 部署指南部署 OpenShift Data Foundation。
 
流程
通过为
NooBaaCR 运行oc describe命令,获取 S3 端点、AWS_ACCESS_KEY_ID和AWS_SECRET_ACCESS_KEY值。您可以使用这些凭证将 MCG 作为复制存储库来添加。
3.5.3. 配置 Amazon Web Services 复制链接链接已复制到粘贴板!
您可以将 Amazon Web Services(AWS)S3 对象存储配置为 MTC 的 Migration Toolkit for Containers(MTC)的复制仓库。
先决条件
- 已安装 AWS CLI。
 - AWS S3 存储桶必须可以被源和目标集群访问。
 如果您使用快照复制方法:
- 您必须有权访问 EC2 Elastic Block Storage (EBS)。
 - 源和目标集群必须位于同一区域。
 - 源和目标集群必须具有相同的存储类。
 - 存储类必须与快照兼容。
 
流程
设置
BUCKET变量:BUCKET=<your_bucket>
$ BUCKET=<your_bucket>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 设置
REGION变量:REGION=<your_region>
$ REGION=<your_region>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 创建 AWS S3 存储桶:
aws s3api create-bucket \ --bucket $BUCKET \ --region $REGION \ --create-bucket-configuration LocationConstraint=$REGION$ aws s3api create-bucket \ --bucket $BUCKET \ --region $REGION \ --create-bucket-configuration LocationConstraint=$REGION1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
 us-east-1不支持LocationConstraint。如果您的区域是us-east-1,忽略--create-bucket-configuration LocationConstraint=$REGION。
创建一个 IAM 用户:
aws iam create-user --user-name velero
$ aws iam create-user --user-name velero1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
 - 如果要使用 Velero 备份具有多个 S3 存储桶的集群,请为每个集群创建一个唯一用户名。
 
创建
velero-policy.json文件:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 附加策略,为
velero用户提供所需的最低权限:aws iam put-user-policy \ --user-name velero \ --policy-name velero \ --policy-document file://velero-policy.json
$ aws iam put-user-policy \ --user-name velero \ --policy-name velero \ --policy-document file://velero-policy.jsonCopy to Clipboard Copied! Toggle word wrap Toggle overflow 为
velero用户创建访问密钥:aws iam create-access-key --user-name velero
$ aws iam create-access-key --user-name veleroCopy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 记录
AWS_SECRET_ACCESS_KEY和AWS_ACCESS_KEY_ID。您可以使用凭证将 AWS 添加为复制存储库。
3.5.4. 配置 Google Cloud Platform 复制链接链接已复制到粘贴板!
您可以将 Google Cloud Platform(GCP)存储桶配置为 Migration Toolkit for Containers(MTC)的复制仓库。
先决条件
- 
							您必须安装了 
gcloud和gsutilCLI 工具。详情请查看 Google 云文档。 - GCP 存储桶必须可以被源和目标集群访问。
 如果您使用快照复制方法:
- 源和目标集群必须位于同一区域。
 - 源和目标集群必须具有相同的存储类。
 - 存储类必须与快照兼容。
 
流程
登录到 GCP:
gcloud auth login
$ gcloud auth loginCopy to Clipboard Copied! Toggle word wrap Toggle overflow 设置
BUCKET变量:BUCKET=<bucket>
$ BUCKET=<bucket>1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
 - 指定存储桶名称。
 
创建存储桶:
gsutil mb gs://$BUCKET/
$ gsutil mb gs://$BUCKET/Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将
PROJECT_ID变量设置为您的活跃项目:PROJECT_ID=$(gcloud config get-value project)
$ PROJECT_ID=$(gcloud config get-value project)Copy to Clipboard Copied! Toggle word wrap Toggle overflow 创建服务帐户:
gcloud iam service-accounts create velero \ --display-name "Velero service account"$ gcloud iam service-accounts create velero \ --display-name "Velero service account"Copy to Clipboard Copied! Toggle word wrap Toggle overflow 列出服务帐户:
gcloud iam service-accounts list
$ gcloud iam service-accounts listCopy to Clipboard Copied! Toggle word wrap Toggle overflow 设置
SERVICE_ACCOUNT_EMAIL变量,使其与email值匹配:SERVICE_ACCOUNT_EMAIL=$(gcloud iam service-accounts list \ --filter="displayName:Velero service account" \ --format 'value(email)')$ SERVICE_ACCOUNT_EMAIL=$(gcloud iam service-accounts list \ --filter="displayName:Velero service account" \ --format 'value(email)')Copy to Clipboard Copied! Toggle word wrap Toggle overflow 附加策略,为
velero用户提供所需的最低权限:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 创建
velero.server自定义角色:gcloud iam roles create velero.server \ --project $PROJECT_ID \ --title "Velero Server" \ --permissions "$(IFS=","; echo "${ROLE_PERMISSIONS[*]}")"$ gcloud iam roles create velero.server \ --project $PROJECT_ID \ --title "Velero Server" \ --permissions "$(IFS=","; echo "${ROLE_PERMISSIONS[*]}")"Copy to Clipboard Copied! Toggle word wrap Toggle overflow 为项目添加 IAM 策略绑定:
gcloud projects add-iam-policy-binding $PROJECT_ID \ --member serviceAccount:$SERVICE_ACCOUNT_EMAIL \ --role projects/$PROJECT_ID/roles/velero.server$ gcloud projects add-iam-policy-binding $PROJECT_ID \ --member serviceAccount:$SERVICE_ACCOUNT_EMAIL \ --role projects/$PROJECT_ID/roles/velero.serverCopy to Clipboard Copied! Toggle word wrap Toggle overflow 更新 IAM 服务帐户:
gsutil iam ch serviceAccount:$SERVICE_ACCOUNT_EMAIL:objectAdmin gs://${BUCKET}$ gsutil iam ch serviceAccount:$SERVICE_ACCOUNT_EMAIL:objectAdmin gs://${BUCKET}Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将 IAM 服务帐户的密钥保存到当前目录中的
credentials-velero文件中:gcloud iam service-accounts keys create credentials-velero \ --iam-account $SERVICE_ACCOUNT_EMAIL$ gcloud iam service-accounts keys create credentials-velero \ --iam-account $SERVICE_ACCOUNT_EMAILCopy to Clipboard Copied! Toggle word wrap Toggle overflow 您可以使用
credentials-velero文件将 GCP 添加为复制存储库。
3.5.5. 配置 Microsoft Azure 复制链接链接已复制到粘贴板!
您可以将 Microsoft Azure Blob 存储容器配置为 Migration Toolkit for Containers(MTC)的复制仓库。
先决条件
- 已安装 Azure CLI。
 - Azure Blob 存储容器必须可以被源和目标集群访问。
 如果您使用快照复制方法:
- 源和目标集群必须位于同一区域。
 - 源和目标集群必须具有相同的存储类。
 - 存储类必须与快照兼容。
 
流程
登录到 Azure:
az login
$ az loginCopy to Clipboard Copied! Toggle word wrap Toggle overflow 设置
AZURE_RESOURCE_GROUP变量:AZURE_RESOURCE_GROUP=Velero_Backups
$ AZURE_RESOURCE_GROUP=Velero_BackupsCopy to Clipboard Copied! Toggle word wrap Toggle overflow 创建 Azure 资源组:
az group create -n $AZURE_RESOURCE_GROUP --location CentralUS
$ az group create -n $AZURE_RESOURCE_GROUP --location CentralUS1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
 - 指定位置。
 
设置
AZURE_STORAGE_ACCOUNT_ID变量:AZURE_STORAGE_ACCOUNT_ID="velero$(uuidgen | cut -d '-' -f5 | tr '[A-Z]' '[a-z]')"
$ AZURE_STORAGE_ACCOUNT_ID="velero$(uuidgen | cut -d '-' -f5 | tr '[A-Z]' '[a-z]')"Copy to Clipboard Copied! Toggle word wrap Toggle overflow 创建 Azure 存储帐户:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 设置
BLOB_CONTAINER变量:BLOB_CONTAINER=velero
$ BLOB_CONTAINER=veleroCopy to Clipboard Copied! Toggle word wrap Toggle overflow 创建 Azure Blob 存储容器:
az storage container create \ -n $BLOB_CONTAINER \ --public-access off \ --account-name $AZURE_STORAGE_ACCOUNT_ID
$ az storage container create \ -n $BLOB_CONTAINER \ --public-access off \ --account-name $AZURE_STORAGE_ACCOUNT_IDCopy to Clipboard Copied! Toggle word wrap Toggle overflow 为
velero创建服务主体和凭证:AZURE_SUBSCRIPTION_ID=`az account list --query '[?isDefault].id' -o tsv`
$ AZURE_SUBSCRIPTION_ID=`az account list --query '[?isDefault].id' -o tsv` AZURE_TENANT_ID=`az account list --query '[?isDefault].tenantId' -o tsv`Copy to Clipboard Copied! Toggle word wrap Toggle overflow 创建一个带有
Contributor角色的服务主体,分配一个特定的--role和--scopes:AZURE_CLIENT_SECRET=`az ad sp create-for-rbac --name "velero" \ --role "Contributor" \ --query 'password' -o tsv \ --scopes /subscriptions/$AZURE_SUBSCRIPTION_ID/resourceGroups/$AZURE_RESOURCE_GROUP`$ AZURE_CLIENT_SECRET=`az ad sp create-for-rbac --name "velero" \ --role "Contributor" \ --query 'password' -o tsv \ --scopes /subscriptions/$AZURE_SUBSCRIPTION_ID/resourceGroups/$AZURE_RESOURCE_GROUP`Copy to Clipboard Copied! Toggle word wrap Toggle overflow CLI 为您生成一个密码。确保您记录了密码。
创建服务主体后,获取客户端 ID。
AZURE_CLIENT_ID=`az ad app credential list --id <your_app_id>`
$ AZURE_CLIENT_ID=`az ad app credential list --id <your_app_id>`Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注意要成功完成此操作,您必须知道您的 Azure 应用程序 ID。
在
credentials-velero文件中保存服务主体的凭证:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 您可以使用
credentials-velero文件将 Azure 添加为复制存储库。