7.8. 가상 머신 내보내기
VM(가상 머신) 및 관련 디스크를 내보내 VM을 다른 클러스터로 가져오거나 법의 목적으로 볼륨을 분석할 수 있습니다.
				명령줄 인터페이스를 사용하여 VirtualMachineExport CR(사용자 정의 리소스)을 생성합니다.
			
				또는 virtctl vmexport 명령을 사용하여 VirtualMachineExport CR을 생성하고 내보낸 볼륨을 다운로드할 수 있습니다.
			
Migration Toolkit for Virtualization 을 사용하여 OpenShift Virtualization 클러스터 간에 가상 머신을 마이그레이션할 수 있습니다.
7.8.1. VirtualMachineExport 사용자 정의 리소스 생성
					VirtualMachineExport CR(사용자 정의 리소스)을 생성하여 다음 오브젝트를 내보낼 수 있습니다.
				
- 가상 머신(VM): 지정된 VM의 PVC(영구 볼륨 클레임)를 내보냅니다.
- 
							VM 스냅샷: VirtualMachineSnapshotCR에 포함된 PVC를 내보냅니다.
- 
							PVC: PVC를 내보냅니다. virt-launcherPod와 같은 다른 Pod에서 PVC를 사용하는 경우 PVC가 더 이상 사용되지 않을 때까지 내보내기는Pending상태로 유지됩니다.
					VirtualMachineExport CR은 내보낸 볼륨에 대한 내부 및 외부 링크를 생성합니다. 내부 링크는 클러스터 내에서 유효합니다. 외부 링크는 Ingress 또는 경로를 사용하여 액세스할 수 있습니다.
				
내보내기 서버는 다음 파일 형식을 지원합니다.
- 
							raw: 원시 디스크 이미지 파일입니다.
- 
							gzip: 압축 디스크 이미지 파일.
- 
							dir: PVC 디렉토리 및 파일
- 
							tar.gz: 압축 된 PVC 파일.
사전 요구 사항
- VM 내보내기에는 VM을 종료해야 합니다.
프로세스
- 다음 예에 따라 VirtualMachine , - VirtualMachineSnapshot- PersistentVolumeClaimCR에서 볼륨을 내보내는- VirtualMachineExport매니페스트를 생성하고- example-export.yaml로 저장합니다.- VirtualMachineExport예- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- VirtualMachineExportCR을 생성합니다.- oc create -f example-export.yaml - $ oc create -f example-export.yaml- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- VirtualMachineExportCR을 가져옵니다.- oc get vmexport example-export -o yaml - $ oc get vmexport example-export -o yaml- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 내보낸 볼륨의 내부 및 외부 링크가 - status스탠자에 표시됩니다.- 출력 예 - Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
7.8.2. 내보낸 가상 머신 매니페스트에 액세스
					VM(가상 머신) 또는 스냅샷을 내보낸 후 내보내기 서버에서 VirtualMachine 매니페스트 및 관련 정보를 가져올 수 있습니다.
				
사전 요구 사항
- VirtualMachineExportCR(사용자 정의 리소스)을 생성하여 가상 머신 또는 VM 스냅샷을 내보냈습니다.참고- spec.source.kind: PersistentVolumeClaim매개변수가 있는- VirtualMachineExport오브젝트는 가상 머신 매니페스트를 생성하지 않습니다.
프로세스
- 매니페스트에 액세스하려면 먼저 소스 클러스터에서 대상 클러스터로 인증서를 복사해야 합니다. - 소스 클러스터에 로그인합니다.
- 다음 명령을 실행하여 - cacert.crt파일에 인증서를 저장합니다.- oc get vmexport <export_name> -o jsonpath={.status.links.external.cert} > cacert.crt- $ oc get vmexport <export_name> -o jsonpath={.status.links.external.cert} > cacert.crt- 1 - Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 1
- VirtualMachineExport오브젝트의- metadata.name값으로 바꿉니다- <export_name>.
 
- 
									cacert.crt파일을 대상 클러스터에 복사합니다.
 
- 다음 명령을 실행하여 소스 클러스터에서 토큰을 디코딩하고 - token_decode파일에 저장합니다.- oc get secret export-token-<export_name> -o jsonpath={.data.token} | base64 --decode > token_decode- $ oc get secret export-token-<export_name> -o jsonpath={.data.token} | base64 --decode > token_decode- 1 - Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 1
- VirtualMachineExport오브젝트의- metadata.name값으로 바꿉니다- <export_name>.
 
- 
							token_decode파일을 대상 클러스터에 복사합니다.
- 다음 명령을 실행하여 - VirtualMachineExport사용자 정의 리소스를 가져옵니다.- oc get vmexport <export_name> -o yaml - $ oc get vmexport <export_name> -o yaml- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 외부및- 내부섹션으로 나누어진- status.links스탠자를 검토합니다. 각 섹션 내의- manifests.url필드를 확인합니다.- 출력 예 - Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 1
- VirtualMachine매니페스트,- DataVolume매니페스트(있는 경우) 및 외부 URL 수신 또는 경로에 대한 공용 인증서가 포함된- ConfigMap매니페스트가 포함되어 있습니다.
- 2
- CDI(Containerized Data Importer)와 호환되는 헤더가 포함된 보안이 포함되어 있습니다. 헤더에는 내보내기 토큰의 텍스트 버전이 포함되어 있습니다.
- 3
- VirtualMachine매니페스트,- DataVolume매니페스트(있는 경우) 및 내부 URL 내보내기 서버의 인증서가 포함된- ConfigMap매니페스트가 포함되어 있습니다.
 
- 대상 클러스터에 로그인합니다.
- 다음 명령을 실행하여 - 시크릿매니페스트를 가져옵니다.- curl --cacert cacert.crt <secret_manifest_url> -H \ "x-kubevirt-export-token:token_decode" -H \ "Accept:application/yaml" - $ curl --cacert cacert.crt <secret_manifest_url> -H \- 1 - "x-kubevirt-export-token:token_decode" -H \- 2 - "Accept:application/yaml"- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 예를 들면 다음과 같습니다. - curl --cacert cacert.crt https://vmexport-proxy.test.net/api/export.kubevirt.io/v1alpha1/namespaces/example/virtualmachineexports/example-export/external/manifests/secret -H "x-kubevirt-export-token:token_decode" -H "Accept:application/yaml" - $ curl --cacert cacert.crt https://vmexport-proxy.test.net/api/export.kubevirt.io/v1alpha1/namespaces/example/virtualmachineexports/example-export/external/manifests/secret -H "x-kubevirt-export-token:token_decode" -H "Accept:application/yaml"- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 다음 명령을 실행하여 - type: all(예:- ConfigMap및- VirtualMachine매니페스트)의 매니페스트를 가져옵니다.- curl --cacert cacert.crt <all_manifest_url> -H \ "x-kubevirt-export-token:token_decode" -H \ "Accept:application/yaml" - $ curl --cacert cacert.crt <all_manifest_url> -H \- 1 - "x-kubevirt-export-token:token_decode" -H \- 2 - "Accept:application/yaml"- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 예를 들면 다음과 같습니다. - curl --cacert cacert.crt https://vmexport-proxy.test.net/api/export.kubevirt.io/v1alpha1/namespaces/example/virtualmachineexports/example-export/external/manifests/all -H "x-kubevirt-export-token:token_decode" -H "Accept:application/yaml" - $ curl --cacert cacert.crt https://vmexport-proxy.test.net/api/export.kubevirt.io/v1alpha1/namespaces/example/virtualmachineexports/example-export/external/manifests/all -H "x-kubevirt-export-token:token_decode" -H "Accept:application/yaml"- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
다음 단계
- 
							내보낸 매니페스트를 사용하여 대상 클러스터에서 ConfigMap및VirtualMachine오브젝트를 생성할 수 있습니다.