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를 사용하십시오.
클론 분할과 볼륨 이동은 모두 백그라운드 작업이므로 실행 중에는 프로덕션 워크로드에 영향을 미치지 않습니다. 분리 프로세스를 시작하는 스크립트는 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