2.3. 복제 리포지토리의 오브젝트 스토리지 구성
복제 리포지토리로 사용할 오브젝트 스토리지를 구성해야 합니다. MTC(Migration Toolkit for Containers)는 소스 클러스터에서 복제 리포지토리로 데이터를 복사한 다음 복제 리포지토리에서 대상 클러스터로 데이터를 복사합니다.
MTC는 소스 클러스터에서 대상 클러스터로 데이터를 마이그레이션하기 위한 파일 시스템 및 스냅샷 데이터 복사 방법을 지원합니다. 환경에 적합하고 스토리지 공급자가 지원하는 방법을 선택할 수 있습니다.
다음과 같은 스토리지 공급자가 지원됩니다.
- MCG(Multi-Cloud Object Gateway)
- AWS(Amazon Web Services) S3
- GCP(Google Cloud Provider)
- Microsoft Azure
- 일반 S3 오브젝트 스토리지(예: Minio 또는 Ceph S3)
제한된 환경에서 내부 호스팅 복제 리포지토리를 만들 수 있습니다.
사전 요구 사항
- 모든 클러스터에는 복제 리포지토리에 대한 중단없는 네트워크 액세스 권한이 있어야 합니다.
- 내부 호스팅 복제 리포지토리와 함께 프록시 서버를 사용하는 경우 프록시가 복제 리포지토리에 액세스할 수 있는지 확인해야 합니다.
2.3.1. Multi-Cloud Object Gateway 스토리지 버킷을 복제 리포지토리로 구성
OpenShift Container Storage Operator를 설치하고 MCG(Multi-Cloud Object Gateway) 스토리지 버킷을 MTC(Migration Toolkit for Containers)의 복제 리포지토리로 구성할 수 있습니다.
2.3.1.1. OpenShift Container Storage Operator 설치
OperatorHub에서 OpenShift Container Storage Operator를 설치할 수 있습니다.
프로세스
- OpenShift Container Platform 웹 콘솔에서 Operator → OperatorHub를 클릭합니다.
- 키워드로 필터링(이 경우 OCS)을 사용하여 OpenShift Container Storage Operator를 찾습니다.
- OpenShift Container Storage Operator를 선택하고 설치를 클릭합니다.
- 업데이트 채널, 설치 모드 및 승인 전략을 선택합니다.
설치를 클릭합니다.
설치된 운영자 페이지에서 OpenShift Container Storage Operator가 openshift-storage 프로젝트에 Succeeded 상태로 나타납니다.
2.3.1.2. Multi-Cloud Object Gateway 스토리지 버킷 작성
MCG(Multi-Cloud Object Gateway) 스토리지 버킷의 사용자 정의 리소스(CR)를 생성할 수 있습니다.
프로세스
OpenShift Container Platform 클러스터에 로그인합니다.
$ oc login
다음과 같은 내용과 함께
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-pv-pool-bs namespace: openshift-storage spec: pvPool: numVolumes: 3 1 resources: requests: storage: 50Gi 2 storageClass: gp2 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-pv-pool-bc namespace: openshift-storage spec: placementPolicy: tiers: - backingStores: - mcg-pv-pool-bs placement: Spread
BucketClass
오브젝트를 생성합니다.$ oc create -f bc.yml
다음과 같은 내용과 함께
ObjectBucketClaim
CR 구성 파일,obc.yml
을 생성합니다.apiVersion: objectbucket.io/v1alpha1 kind: ObjectBucketClaim metadata: name: migstorage namespace: openshift-storage spec: bucketName: migstorage 1 storageClassName: openshift-storage.noobaa.io additionalConfig: bucketclass: mcg-pv-pool-bc
- 1
- MTC 웹 콘솔에 복제 리포지토리를 추가하기 위한 버킷 이름을 기록합니다.
ObjectBucketClaim
오브젝트를 생성합니다.$ oc create -f obc.yml
리소스 생성 프로세스를 보고
ObjectBucketClaim
상태가Bound
인지 확인합니다.$ watch -n 30 'oc get -n openshift-storage objectbucketclaim migstorage -o yaml'
이 프로세스는 5-10분 정도 걸릴 수 있습니다.
MTC 웹 콘솔에 복제 리포지토리를 추가할 때 필요한 다음 값을 확보하고 기록합니다.
S3 끝점:
$ oc get route -n openshift-storage s3
S3 공급자 액세스 키:
$ oc get secret -n openshift-storage migstorage -o go-template='{{ .data.AWS_ACCESS_KEY_ID }}' | base64 --decode
S3 공급자 보안 액세스 키:
$ oc get secret -n openshift-storage migstorage -o go-template='{{ .data.AWS_SECRET_ACCESS_KEY }}' | base64 --decode