4.5. 配置复制存储库
您必须将对象存储配置为用作复制存储库。MTC 将数据从源集群复制到复制存储库,然后从复制存储库复制到目标集群。对于一个受限网络环境,多云对象网关(MCG)是唯一支持的选项。
MTC 支持将数据从源集群迁移到目标集群的文件系统和快照数据复制方法。您可以选择适合于您的环境并受您的存储供应商支持的方法。
4.5.1. 先决条件
- 所有集群都必须具有对复制存储库的不间断网络访问权限。
- 如果您将代理服务器与内部托管的复制存储库搭配使用,您必须确保代理允许访问复制存储库。
4.5.2. 配置多云对象网关
您可以安装 OpenShift Container Storage Operator,并将一个 Multi-Cloud Object Gateway(MCG)存储桶配置为 Migration Toolkit for Containers(MTC)的复制仓库。
4.5.2.1. 安装 OpenShift Container Storage Operator
您可以从 OperatorHub 安装 OpenShift Container Storage Operator。
流程
- 在 OpenShift Container Platform Web 控制台中,点击 Operators → OperatorHub。
- 使用 Filter by keyword (本例中为 OCS)来查找 OpenShift Container Storage Operator。
- 选择 OpenShift Container Storage Operator 并点 Install。
- 选择一个 Update Channel、Installation Mode 和 Approval Strategy。
点击 Install。
在 Installed Operators 页面中,OpenShift Container Storage Operator 会出现在 openshift-storage 项目中,状态为 Succeeded。
4.5.2.2. 创建 Multi-Cloud Object Gateway 存储桶
您可以创建 Multi-Cloud Object Gateway(MCG)存储桶的自定义资源(CR)。
流程
登录到 OpenShift Container Platform 集群:
$ oc login -u <username>
使用以下内容创建
NooBaa
CR 配置文件,noobaa.yml
:apiVersion: noobaa.io/v1alpha1 kind: NooBaa metadata: name: <noobaa> namespace: openshift-storage spec: dbResources: requests: cpu: 0.5 1 memory: 1Gi coreResources: requests: cpu: 0.5 2 memory: 1Gi
创建
NooBaa
对象:$ oc create -f noobaa.yml
使用以下内容创建
BackingStore
CR 配置文件,bs.yml
:apiVersion: noobaa.io/v1alpha1 kind: BackingStore metadata: finalizers: - noobaa.io/finalizer labels: app: noobaa name: <mcg_backing_store> namespace: openshift-storage spec: pvPool: numVolumes: 3 1 resources: requests: storage: <volume_size> 2 storageClass: <storage_class> 3 type: pv-pool
创建
BackingStore
对象:$ oc create -f bs.yml
使用以下内容创建
BucketClass
CR 配置文件,bc.yml
:apiVersion: noobaa.io/v1alpha1 kind: BucketClass metadata: labels: app: noobaa name: <mcg_bucket_class> namespace: openshift-storage spec: placementPolicy: tiers: - backingStores: - <mcg_backing_store> placement: Spread
创建
BucketClass
对象:$ oc create -f bc.yml
使用以下内容创建
ObjectBucketClaim
CR 配置文件,obc.yml
:apiVersion: objectbucket.io/v1alpha1 kind: ObjectBucketClaim metadata: name: <bucket> namespace: openshift-storage spec: bucketName: <bucket> 1 storageClassName: <storage_class> additionalConfig: bucketclass: <mcg_bucket_class>
- 1
- 记录在 MTC web 控制台中添加复制存储库的存储桶名称。
创建
ObjectBucketClaim
对象:$ oc create -f obc.yml
监控资源创建过程以验证
ObjectBucketClaim
的状态变为Bound
:$ watch -n 30 'oc get -n openshift-storage objectbucketclaim migstorage -o yaml'
这个过程可能需要五到十分钟。
获取并记录以下值,当您将复制存储库添加到 MTC web 控制台时需要这些值:
S3 端点:
$ oc get route -n openshift-storage s3
S3 provider access key:
$ oc get secret -n openshift-storage migstorage \ -o go-template='{{ .data.AWS_ACCESS_KEY_ID }}' | base64 --decode
S3 provider secret access key:
$ oc get secret -n openshift-storage migstorage \ -o go-template='{{ .data.AWS_SECRET_ACCESS_KEY }}' | base64 --decode
4.5.3. 其他资源
- Red Hat OpenShift Container Storage 文档中的断开连接的环境。
- MTC 工作流
- 关于数据复制方法
- 在 MTC web 控制台中添加复制存储库