This documentation is for a release that is no longer maintained
See documentation for the latest supported version 3 or the latest supported version 4.2.2. 配置复制存储库
您必须将对象存储配置为用作复制存储库。集群应用程序迁移工具将数据从源集群复制到复制存储库,然后使用文件系统或者快照数据复制方法从复制存储库复制到目标集群。
支持以下存储供应商:
- 通用 S3 对象存储,例如 Minio 或 Ceph S3
- 多云对象网关 (MCG)
- Amazon Web Services (AWS) S3
- Google Cloud Provider (GCP)
- Microsoft Azure
2.2.1. 了解用于迁移的数据复制方法
CAM 工具支持文件系统和快照数据复制方法,用于将数据从源集群迁移到目标集群。您可以选择适合于您的环境并受您的存储供应商支持的方法。
2.2.1.1. 文件系统复制方法
CAM 工具将数据文件从源集群复制到复制存储库,并从那里复制到目标集群。
| 优点 | 限制: | 
|---|---|
| 
 | 
 | 
2.2.1.2. 快照复制方法
CAM 工具将源集群的数据快照复制到云供应商的对象存储,后者配置为复制存储库。数据在目标集群上恢复。
AWS、Google Cloud Provider 和 Microsoft Azure 支持快照复制方法。
| 优点 | 限制: | 
|---|---|
| 
 | 
 | 
将多云对象网关(MCG)配置为迁移的复制存储库只是技术预览功能。红帽产品服务等级协议 (SLA) 不支持技术预览功能,并且这些功能可能并不完善。红帽不推荐在生产环境中使用它们。这些技术预览功能可以使用户提早试用新的功能,并有机会在开发阶段提供反馈意见。
有关红帽技术预览功能支持范围的详情,请参阅 https://access.redhat.com/support/offerings/techpreview/。
2.2.2. 配置 MCG 存储桶做为复制存储库
您可以安装 OpenShift Container Storage Operator,并将一个 Multi-Cloud Object Gateway (MCG) 存储桶配置为复制存储库。
2.2.2.1. 安装 OpenShift Container Storage Operator
您可以从 OperatorHub 安装 OpenShift Container Storage Operator。
流程
- 
								在 OpenShift Container Platform web 控制台中,点 Administration Namespaces。 
- 点 Create Namespace。
- 
								在 Name 字段中输入 openshift-storage,点 Create。
- 
								点 Operators OperatorHub。 
- 使用 Filter by keyword (本例中为 OCS)来查找 OpenShift Container Storage Operator。
- 选择 OpenShift Container Storage Operator 并点 Install。
- 
								在 Create Operator Subscription 页面中,选择 openshift-storage命名空间。
- 指定您的更新频道和批准策略。
- 点 Subscribe。 - 在 Installed Operators 页面中,OpenShift Container Storage Operator 会出现在 openshift-storage 项目中,状态为 Succeeded。 
2.2.2.2. 创建 Multi-Cloud Object Gateway 存储桶
您可以创建 Multi-Cloud Object Gateway (MCG) 存储桶的自定义资源 (CR) 。
流程
- 登录到 OpenShift Container Platform 集群: - oc login - $ oc login- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 使用以下内容创建 - NooBaaCR 配置文件,- noobaa.yml:- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 创建 - NooBaa对象:- oc create -f noobaa.yml - $ oc create -f noobaa.yml- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 使用以下内容创建 - BackingStoreCR 配置文件,- bs.yml:- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 创建 - BackingStore对象:- oc create -f bs.yml - $ oc create -f bs.yml- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 使用以下内容创建 - BucketClassCR 配置文件,- bc.yml:- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 创建 - BucketClass对象:- oc create -f bc.yml - $ oc create -f bc.yml- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 使用以下内容创建 - ObjectBucketClaimCR 配置文件,- obc.yml:- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 1
- 记录下在 CAM web 控制台中添加为复制存储库的存储桶的名称。
 
- 创建 - ObjectBucketClaim对象:- oc create -f obc.yml - $ oc create -f obc.yml- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 监控资源创建过程以验证 - ObjectBucketClaim的状态变为- Bound:- watch -n 30 'oc get -n openshift-storage objectbucketclaim migstorage -o yaml' - $ watch -n 30 'oc get -n openshift-storage objectbucketclaim migstorage -o yaml'- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 这个过程可能需要五到十分钟。 
- 获取并记录以下值,当您将复制存储库添加到 CAM web 控制台时需要这些值: - S3 端点: - oc get route -n openshift-storage s3 - $ oc get route -n openshift-storage s3- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- S3 provider access key: - oc get secret -n openshift-storage migstorage -o go-template='{{ .data.AWS_ACCESS_KEY_ID }}' | base64 -d- $ oc get secret -n openshift-storage migstorage -o go-template='{{ .data.AWS_ACCESS_KEY_ID }}' | base64 -d- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- S3 provider secret access key: - oc get secret -n openshift-storage migstorage -o go-template='{{ .data.AWS_SECRET_ACCESS_KEY }}' | base64 -d- $ oc get secret -n openshift-storage migstorage -o go-template='{{ .data.AWS_SECRET_ACCESS_KEY }}' | base64 -d- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
 
2.2.3. 将 AWS S3 存储桶配置为复制存储库
您可以将 AWS S3 存储桶配置为复制存储库。
先决条件
- AWS S3 存储桶必须可以被源和目标集群访问。
- 您必须安装了 AWS CLI。
- 如果您使用快照复制方法: - 您必须有权访问 EC2 Elastic Block Storage (EBS)。
- 源和目标集群必须位于同一区域。
- 源和目标集群必须具有相同的存储类。
- 存储类必须与快照兼容。
 
流程
- 创建 AWS S3 存储桶: - aws s3api create-bucket \ --bucket <bucket_name> \ --region <bucket_region>- $ aws s3api create-bucket \ --bucket <bucket_name> \- 1 - --region <bucket_region>- 2 - Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 创建 IAM 用户 - velero:- aws iam create-user --user-name velero - $ aws iam create-user --user-name velero- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 创建 EC2 EBS 快照策略: - Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 为一个或所有 S3 存储桶创建 AWS S3 访问策略: - Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - "Resource": [ "arn:aws:s3:::*"- "Resource": [ "arn:aws:s3:::*"- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 将 EC2 EBS 策略附加到 - velero:- aws iam put-user-policy \ --user-name velero \ --policy-name velero-ebs \ --policy-document file://velero-ec2-snapshot-policy.json - $ aws iam put-user-policy \ --user-name velero \ --policy-name velero-ebs \ --policy-document file://velero-ec2-snapshot-policy.json- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 将 AWS S3 策略附加到 - velero:- aws iam put-user-policy \ --user-name velero \ --policy-name velero-s3 \ --policy-document file://velero-s3-policy.json - $ aws iam put-user-policy \ --user-name velero \ --policy-name velero-s3 \ --policy-document file://velero-s3-policy.json- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 为 - velero创建访问密钥:- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
2.2.4. 将 Google Cloud Provider 存储桶配置为复制存储库
您可以将 Google Cloud Provider (GCP) 存储桶配置为复制存储库。
先决条件
- AWS S3 存储桶必须可以被源和目标集群访问。
- 
							您必须安装了 gsutil。
- 如果您使用快照复制方法: - 源和目标集群必须位于同一区域。
- 源和目标集群必须具有相同的存储类。
- 存储类必须与快照兼容。
 
流程
- 运行 - gsutil init以登录:- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 设置 - BUCKET变量:- BUCKET=<bucket_name> - $ BUCKET=<bucket_name>- 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 
- 创建 - velero服务帐户:- gcloud iam service-accounts create velero \ --display-name "Velero Storage"- $ gcloud iam service-accounts create velero \ --display-name "Velero Storage"- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 将 - SERVICE_ACCOUNT_EMAIL变量设置为服务帐户的电子邮件地址:- SERVICE_ACCOUNT_EMAIL=$(gcloud iam service-accounts list \ --filter="displayName:Velero Storage" \ --format 'value(email)') - $ SERVICE_ACCOUNT_EMAIL=$(gcloud iam service-accounts list \ --filter="displayName:Velero Storage" \ --format 'value(email)')- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 向服务帐户授予权限: - Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 将服务帐户的密钥保存到当前目录中的 - 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 
2.2.5. 将 Microsoft Azure Blob 存储容器配置为复制存储库
您可以将 Microsoft Azure Blob 存储容器配置为复制存储库。
先决条件
- 您必须具有 Azure 存储帐户。
- 您必须安装了 Azure CLI。
- Azure Blob 存储容器必须可以被源和目标集群访问。
- 如果您使用快照复制方法: - 源和目标集群必须位于同一区域。
- 源和目标集群必须具有相同的存储类。
- 存储类必须与快照兼容。
 
流程
- 设置 - 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=velerobackups - $ AZURE_STORAGE_ACCOUNT_ID=velerobackups- 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_TENANT_ID=`az account list --query '[?isDefault].tenantId' -o tsv` AZURE_CLIENT_SECRET=`az ad sp create-for-rbac --name "velero" --role "Contributor" --query 'password' -o tsv` AZURE_CLIENT_ID=`az ad sp list --display-name "velero" --query '[0].appId' -o tsv` - $ AZURE_SUBSCRIPTION_ID=`az account list --query '[?isDefault].id' -o tsv` $ AZURE_TENANT_ID=`az account list --query '[?isDefault].tenantId' -o tsv` $ AZURE_CLIENT_SECRET=`az ad sp create-for-rbac --name "velero" --role "Contributor" --query 'password' -o tsv` $ AZURE_CLIENT_ID=`az ad sp list --display-name "velero" --query '[0].appId' -o tsv`- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 在 - credentials-velero文件中保存服务主体的凭证:- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow