Shift 운영자를 수동으로 배포합니다(표준 모드)
NetApp Shift 툴킷을 NetApp Trident CSI 및 가상화용 마이그레이션 툴킷(MTV)을 사용하여 컨테이너화된 서비스로 수동으로 배포합니다. 이 프로세스는 주석 및 레이블을 활용하여 구성 요소 간에 요청을 적절하게 라우팅하고 자동화된 스토리지 프로비저닝 및 가상 머신 디스크 마이그레이션을 지원합니다.
아키텍처 구성 요소
NetApp Shift 툴킷, Trident CSI 및 가상화용 마이그레이션 툴킷이 OpenShift 환경에서 자동화된 스토리지 프로비저닝 및 VM 디스크 마이그레이션을 지원하기 위해 어떻게 함께 작동하는지 이해하십시오.
NetApp Shift 툴킷
-
이미지 레지스트리를 통해 컨테이너화된 서비스로 배포됨
-
특정 어노테이션이 포함된 MTV에서 발생하는 영구 볼륨 클레임(PVC) 요청을 수신하는 엔드포인트를 노출합니다.
-
VM 디스크 마이그레이션 작업(형식 변환 포함) 처리를 담당합니다.
NetApp Trident CSI (버전 26.06 이상)
-
컨테이너 스토리지 인터페이스(CSI) 프로비저너 역할을 합니다.
-
Shift 툴킷에서 PVC 가져오기 요청을 수신합니다.
-
PVC 주석 및 레이블을 기반으로 논리를 적용하여 요청을 직접 처리할지 아니면 Shift로 리디렉션할지 결정합니다.
Migration Toolkit for Virtualization(MTV 2.12 이상)
-
가상 머신 마이그레이션 계획을 총괄합니다.
-
VM 마이그레이션 중 스토리지 프로비저닝에 필요한 PVC 요청 발행
-
후속 처리를 안내하기 위한 주석을 추가합니다.
시작하기 전에
OpenShift 환경에 필요한 구성 요소가 설치 및 구성되어 있는지 확인한 후 Shift 오퍼레이터를 배포하십시오.
-
가상화 운영자용 Migration Toolkit은 2.12 이상 버전을 실행 중입니다.
-
Trident는 OpenShift OperatorHub를 통해 설치됩니다 - "Trident 설치 가이드"
-
NetApp Shift는 NetApp Trident에서 Shift 엔드포인트에 액세스할 수 있는 컨테이너로 배포됩니다.
-
Shift 툴킷 사용을 위해 특별히 스토리지 클래스가 생성되고 어노테이션이 추가되었습니다.
-
주석은 Shift 툴킷을 의도된 핸들러로 식별하고 대상 Trident 백엔드를 지정합니다.
-
MTV는 PVC에 다음과 같은 주석을 포함합니다.
forklift.konveyor.io/netapp-shift: "true"
1단계: Shift 설치 프로그램 다운로드 및 압축 해제
Shift 설치 패키지에는 Shift 운영자를 배포하고 Shift를 설치하는 데 필요한 모든 것이 포함되어 있습니다.
|
|
클러스터에서 quay.io에 액세스할 수 없는 경우 이 단계를 건너뛰고 오프라인 설치(에어갭 클러스터) 절차를 따르십시오. 오프라인 이미지 가져오기가 완료되면 2단계로 돌아가십시오. |
-
Shift 설치 프로그램의 최신 버전을 "NetApp 지원 사이트 툴체스트"에서 다운로드하십시오.
-
설치 패키지를 압축 해제합니다:
tar -xf Shift-installer-1.0.0.tar.gz -
설치 프로그램 디렉토리로 이동합니다.
cd shift-installer
2단계: Shift 네임스페이스 및 API 자격 증명 생성
Shift 운영자를 위한 전용 네임스페이스를 설정하고 안전한 API 액세스에 필요한 자격 증명을 생성합니다.
-
Shift 네임스페이스를 생성합니다.
oc create ns shift -
Shift 네임스페이스 내에서 Shift API 액세스를 위한 시크릿을 생성합니다. 예시 값을 사용 환경에 맞는 고유한 사용자 이름과 강력한 암호로 교체합니다.
oc create secret generic shift-credentials -n shift \ --from-literal=username='admin' \ --from-literal=password='admin'
|
|
비밀번호를 원하는 값으로 변경하십시오. |
3단계: TLS 인증서 ConfigMaps 생성
Shift 서비스가 HTTPS 트래픽을 제공하는 데 사용하는 TLS 인증서와 개인 키를 제공하는 ConfigMaps을 생성합니다.
인증서는 CN/SAN이 shift-toolkit-service.shift.svc.cluster.local`로 설정된 상태로 발급되어야 합니다. 인증서 및 키 파일의 이름은 각각 `server.cert 및 `server.key`이어야 합니다.
-
TLS 인증서용 ConfigMap을 생성합니다.
oc create configmap shift-toolkit-service-server-crt -n shift \ --from-file=server.cert=server.cert -
TLS 개인 키에 대한 ConfigMap을 생성합니다.
oc create configmap shift-toolkit-service-server-key -n shift \ --from-file=server.key=server.key
|
|
HTTPS를 사용하지 않는 경우, `INSECURE_TLS=true`을 `bundle.yaml`에 설정하십시오. HTTPS가 비활성화되고 TLS 인증서가 실제로 사용되지 않더라도 필요한 ConfigMaps은 위에서 설명한 대로 생성되어야 합니다. |
4단계: CA 번들 ConfigMap 생성
PVC 리스너가 Shift 서비스의 TLS 인증서를 확인하는 데 사용하는 CA 번들을 제공하는 ConfigMap을 생성합니다.
-
PEM 파일을 가리키세요.
--from-fileserver.certConfigMap의 키는 반드시 `ca.crt`이어야 합니다. 이 ConfigMap이 설정되면 리스너는 `INSECURE_TLS=false`로 실행되어 `SHIFT_CA_CERT_FILE`을 사용하여 이 번들에 대해 Shift 인증서를 검증합니다.
-
CA 번들용 ConfigMap을 생성합니다.
oc create configmap shift-toolkit-service-ca -n shift \ --from-file=ca.crt=ca.cert
5단계: 영구 볼륨 클레임 생성
번들을 배포하기 전에 Shift filedb(데이터베이스) 및 로그에 필요한 PVC를 생성하십시오.
-
PVC 정의를 적용하기 전에
deploy/filedb-pvc.yaml및deploy/logs-pvc.yaml`를 업데이트하여 클러스터에 적합한 `storageClassName`을(를) 지정하십시오(예: `ontap-storageclass).이러한 PVC는 6단계: Shift 운영자 배포에서 번들을 배포하기 전에 생성되어 사용 가능해야 합니다. -
filedb PVC 매니페스트를 적용합니다.
oc apply -f deploy/filedb-pvc.yaml -
로그 PVC 매니페스트를 적용합니다.
oc apply -f deploy/logs-pvc.yaml
6단계: Shift 운영자 배포
Shift 운영자 구성을 OpenShift 클러스터에 적용하고 필요한 Pod가 성공적으로 실행되는지 확인하십시오.
-
shift-installer 디렉토리에서 배포 명령을 실행합니다.
oc apply -f deploy/shift-bundle.yaml -
Pod 생성 상태를 사용하여 설치를 확인하십시오.
oc get pods -n shift출력 예:
NAME READY STATUS RESTARTS AGE shift-68ccd597c-dtsj7 1/1 Running 0 18s shift-pvc-listener-57d546f6b8-r9mgc 1/1 Running 0 18s
|
|
배포를 해제하려면 `oc delete -f deploy/bundle.yaml --ignore-not-found`을(를) 실행하십시오. 이 명령은 네임스페이스와 시크릿을 유지하면서 `bundle.yaml`에서 배포한 리소스를 제거합니다. |
7단계: Shift 통합을 위한 스토리지 클래스 구성
Shift 연동에 필요한 어노테이션을 추가하여 새 스토리지 클래스를 생성하거나 기존 스토리지 클래스를 업데이트하세요.
스토리지 클래스에는 다음 어노테이션이 포함되어야 합니다.
-
shift.netapp.io/storage-class-type -
shift.netapp.io/trident-backend-uuid
-
필요한 어노테이션을 추가하여 스토리지 클래스를 패치하십시오.
oc patch storageclass nimnas1172 \ --type=merge \ -p '{ "metadata": { "annotations": { "shift.netapp.io/storage-class-type": "shift", "shift.netapp.io/trident-backend-uuid": "facc3aad-83bb-423a-b6a1-ba0fb8811217" } } }'출력 예:
storageclass.storage.k8s.io/nimnas1172 patched백엔드 UUID는 다음 명령을 실행하여 가져올 수 있습니다. oc get tbc -n trident -
기존 스토리지 클래스를 확인하십시오.
oc get sc출력 예:
nimnas1172 (default) csi.trident.netapp.io Delete Immediate true
8단계: MTV 플랜 생성 및 트리거
Shift 운영자 배포 및 스토리지 클래스 구성을 완료한 후 MTV 플랜을 생성하고 실행할 수 있습니다.
MTV 플랜 생성에 대한 자세한 내용은 "Migration Toolkit for Virtualization 문서"을 참조하십시오.
다음 스크린샷은 마이그레이션 계획이 실행될 때 수행되는 일련의 단계를 보여줍니다.
다음 스크린샷은 Shift 툴킷을 사용하여 변환한 후 NetApp Trident에서 가져온 PVC를 보여줍니다.
마이그레이션 계획이 성공적으로 완료되었습니다 — 가상 머신 5대와 약 5TB의 데이터가 약 6분 만에 마이그레이션되었습니다.
마이그레이션이 완료되면 각 클론 볼륨을 분리해야 합니다. 분리 방법은 ONTAP 버전에 따라 다릅니다. ONTAP 9.17.1 이상 버전에서는 clone split을 사용하고, 이전 버전에서는 vol move를 사용하십시오.
마이그레이션 후 PVC 분할 작업을 더 빠르게 진행하려면 소스 NFS 데이터스토어를 5TB 이하로 유지하십시오. 더 큰 볼륨을 사용할 수도 있지만, VM 마이그레이션을 위해 200~300개의 클론을 생성할 때는 분할 작업을 더 신속하게 완료하는 데 더 작은 볼륨이 이상적입니다.
클론 분할과 볼륨 이동은 모두 백그라운드 작업이므로 실행 중에는 프로덕션 워크로드에 영향을 미치지 않습니다. 분리 프로세스를 시작하는 스크립트는 NetApp Console 자동화 카탈로그의 마이그레이션 후 분리 위젯에서 사용할 수 있습니다.
오프라인 설치(에어갭 클러스터)
이 섹션에서는 quay.io에 접근할 수 없는 클러스터를 위한 *대체 설치 경로*를 설명합니다. 클러스터에서 quay.io에 접근할 수 있는 경우 1~8단계를 따르십시오.
quay.io에 접근할 수 없는 클러스터의 경우, 번들을 배포하기 전에 이미지 tarball을 OpenShift 내부 레지스트리로 가져오십시오.
외부 레지스트리 경로는 필요하지 않습니다. 이미지 푸시 작업과 번들 이미지 참조는 모두 `image-registry.openshift-image-registry.svc:5000`을 사용하며, 이는 클러스터 네트워크를 통해 액세스할 수 있고 클러스터 CA에 의해 보호됩니다.
-
ocCLI가 클러스터 관리자 권한으로 로그인됨 -
skopeo설치됨 -
호스트에서 사용 가능한 이미지 tarball:
-
shift-toolkit-1.0.0-image.tar -
shift-toolkit-listener-1.0.0-image.tar
-
-
내부 레지스트리를 활성화합니다(일회성 단계이며, 이미 구성된 경우 건너뛰세요).
oc patch configs.imageregistry.operator.openshift.io cluster \ --type=merge -p '{"spec":{"defaultRoute":true}}' oc get route default-route -n openshift-image-registry -
활성
oc세션을 사용하여 레지스트리 자격 증명을 생성합니다.서비스 계정 토큰을 직접 사용하지 마십시오. Blob 업로드 중에 오류가 발생할 수 있습니다. `oc registry login`를 사용하여 레지스트리 리디렉션 흐름과 호환되는 인증 파일을 생성하십시오.
REGISTRY=image-registry.openshift-image-registry.svc:5000 oc registry login --skip-check \ --registry=$REGISTRY \ --to=/tmp/registry-auth.json -
Shift 툴킷 이미지를 내부 레지스트리에 푸시합니다.
skopeo copy \ docker-archive:shift-toolkit-1.0.0-image.tar \ docker://$REGISTRY/shift/shift-toolkit:1.0.0 \ --dest-tls-verify=false \ --dest-authfile=/tmp/registry-auth.json -
Shift 툴킷 리스너 이미지를 내부 레지스트리에 푸시합니다.
skopeo copy \ docker-archive:shift-toolkit-listener-1.0.0-image.tar \ docker://$REGISTRY/shift/shift-toolkit-listener:1.0.0 \ --dest-tls-verify=false \ --dest-authfile=/tmp/registry-auth.json -
`deploy/bundle.yaml`의 이미지 참조를 내부 레지스트리를 사용하도록 업데이트하십시오.
sed -i \ -e "s|quay.io/netapp/shift-toolkit:1.0.0|$REGISTRY/shift/shift-toolkit:1.0.0|g" \ -e "s|quay.io/netapp/shift-toolkit-listener:1.0.0|$REGISTRY/shift/shift-toolkit-listener:1.0.0|g" \ -e "s|imagePullPolicy: Always|imagePullPolicy: IfNotPresent|g" \ deploy/bundle.yaml -
번들을 배포합니다.
oc apply -f deploy/bundle.yaml