3.5. 복제 리포지토리 구성
복제 리포지토리로 사용할 오브젝트 스토리지를 구성해야 합니다. MTC(Migration Toolkit for Containers)는 소스 클러스터에서 복제 리포지토리로 데이터를 복사한 다음 복제 리포지토리에서 대상 클러스터로 데이터를 복사합니다.
MTC는 소스 클러스터에서 대상 클러스터로 데이터를 마이그레이션하기 위한 파일 시스템 및 스냅샷 데이터 복사 방법을 지원합니다. 환경에 적합하며 스토리지 공급자가 지원하는 방법을 선택합니다.
MTC는 다음과 같은 스토리지 제공자를 지원합니다.
- Multicloud Object Gateway
- Amazon Web Services S3
- Google Cloud Platform
- Microsoft Azure Blob
- 일반 S3 오브젝트 스토리지(예: Minio 또는 Ceph S3)
3.5.1. 사전 요구 사항
- 모든 클러스터에는 복제 리포지토리에 대한 중단없는 네트워크 액세스 권한이 있어야 합니다.
- 내부 호스팅 복제 리포지토리와 함께 프록시 서버를 사용하는 경우 프록시가 복제 리포지토리에 액세스할 수 있는지 확인해야 합니다.
3.5.2. 멀티 클라우드 오브젝트 게이트웨이 인증 정보 검색
MCG(Multicloud Object Gateway) 인증 정보 및 S3 끝점을 검색해야 합니다. 이 인증 정보는 MCG를 MTC(Migration Toolkit for Containers)의 복제 리포지토리로 구성해야 합니다.
					MTC에 대한 Secret CR(사용자 정의 리소스)을 생성해야 하는 MCG(Multicloud Object Gateway) 인증 정보를 검색해야 합니다.
				
MCG Operator는 더 이상 사용되지 않지만 OpenShift Data Foundation에서 MCG 플러그인을 계속 사용할 수 있습니다. 플러그인을 다운로드하려면 Red Hat OpenShift Data Foundation 을 다운로드하여 운영 체제에 적합한 MCG 플러그인을 다운로드합니다.
사전 요구 사항
프로세스
- NooBaaCR에 대해- oc describe명령을 실행하여 S3 엔드포인트- AWS_ACCESS_KEY_ID및- AWS_SECRET_ACCESS_KEY값을 가져옵니다.- 이러한 인증 정보를 사용하여 MCG를 복제 리포지토리로 추가합니다. 
3.5.3. Amazon Web Services 구성
AWS(Amazon Web Services) S3 오브젝트 스토리지를 MTC(Migration Toolkit for Containers)의 복제 리포지토리로 구성합니다.
사전 요구 사항
- AWS CLI가 설치되어 있어야 합니다.
- 소스 및 대상 클러스터에서 AWS S3 스토리지 버킷에 액세스할 수 있어야 합니다.
- 스냅샷 복사 방법을 사용하는 경우: - EC2 EBS(Elastic Block Storage)에 액세스할 수 있어야 합니다.
- 소스 및 대상 클러스터는 동일한 지역에 있어야 합니다.
- 소스 및 대상 클러스터는 동일한 스토리지 클래스를 보유해야 합니다.
- 스토리지 클래스는 스냅샷과 호환 가능해야 합니다.
 
프로세스
- 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를 복제 리포지토리로 추가합니다.
3.5.4. GCP(Google Cloud Platform) 구성
GCP(Google Cloud Platform) 스토리지 버킷을 MTC(Migration Toolkit for Containers)의 복제 리포지토리로 구성합니다.
사전 요구 사항
- 
							gcloud및gsutilCLI 툴이 설치되어 있어야 합니다. 자세한 내용은 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 
- email값과 일치하도록- SERVICE_ACCOUNT_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를 복제 리포지토리로 추가합니다.
3.5.5. Microsoft Azure 구성
Microsoft Azure Blob 스토리지 컨테이너를 MTC(Migration Toolkit for Containers)의 복제 리포지토리로 구성합니다.
사전 요구 사항
- 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를 복제 리포지토리로 추가합니다.