6.5. 配置复制存储库
您必须将对象存储配置为用作复制存储库。MTC 将数据从源集群复制到复制存储库,然后从复制存储库复制到目标集群。
MTC 支持将数据从源集群迁移到目标集群的文件系统和快照数据复制方法。您可以选择适合于您的环境并受您的存储供应商支持的方法。
支持以下存储供应商:
- 多云对象网关
- Amazon Web Services S3
- Google Cloud Platform
- Microsoft Azure Blob
- 通用 S3 对象存储,例如 Minio 或 Ceph S3
6.5.1. 先决条件 复制链接链接已复制到粘贴板!
- 所有集群都必须具有对复制存储库的不间断网络访问权限。
- 如果您将代理服务器与内部托管的复制存储库搭配使用,您必须确保代理允许访问复制存储库。
6.5.2. 检索多云对象网关凭证 复制链接链接已复制到粘贴板!
您必须检索 Multicloud Object Gateway(MCG)凭证和 S3 端点,以便将 MCG 配置为 MTC 的 Migration Toolkit for Containers(MTC)的复制仓库。您必须检索 Multicloud Object Gateway(MCG)凭证,以便为 OpenShift API 创建用于数据保护(OADP)的 Secret
自定义资源(CR)。
MCG 是 OpenShift Data Foundation 的一个组件。
先决条件
- 请根据相关的 OpenShift Data Foundation 部署指南部署 OpenShift Data Foundation。
流程
通过对
NooBaa
自定义资源运行describe
命令,获取 S3 端点、AWS_ACCESS_KEY_ID
和AWS_SECRET_ACCESS_KEY
。您可以使用这些凭证将 MCG 作为复制存储库来添加。
6.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=$REGION
1 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 velero
1 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.json
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 为
velero
用户创建访问密钥:aws iam create-access-key --user-name velero
$ aws iam create-access-key --user-name velero
Copy 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 添加为复制存储库。
6.5.4. 配置 Google Cloud Platform 复制链接链接已复制到粘贴板!
您可以将 Google Cloud Platform(GCP)存储桶配置为 Migration Toolkit for Containers(MTC)的复制仓库。
先决条件
-
您必须安装了
gcloud
和gsutil
CLI 工具。详情请查看 Google 云文档。 - GCP 存储桶必须可以被源和目标集群访问。
如果您使用快照复制方法:
- 源和目标集群必须位于同一区域。
- 源和目标集群必须具有相同的存储类。
- 存储类必须与快照兼容。
流程
登录到 GCP:
gcloud auth login
$ gcloud auth login
Copy 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 list
Copy 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.server
Copy 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_EMAIL
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 您可以使用
credentials-velero
文件将 GCP 添加为复制存储库。
6.5.5. 配置 Microsoft Azure 复制链接链接已复制到粘贴板!
您可以将 Microsoft Azure Blob 存储容器配置为 Migration Toolkit for Containers(MTC)的复制仓库。
先决条件
- 已安装 Azure CLI。
- Azure Blob 存储容器必须可以被源和目标集群访问。
如果您使用快照复制方法:
- 源和目标集群必须位于同一区域。
- 源和目标集群必须具有相同的存储类。
- 存储类必须与快照兼容。
流程
登录到 Azure:
az login
$ az login
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 设置
AZURE_RESOURCE_GROUP
变量:AZURE_RESOURCE_GROUP=Velero_Backups
$ AZURE_RESOURCE_GROUP=Velero_Backups
Copy 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 CentralUS
1 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=velero
Copy 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_ID
Copy 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 添加为复制存储库。