5.3. 가상 머신 마이그레이션
MTV CR(사용자 정의 리소스)을 생성하여 CLI(명령줄)에서 VM(가상 머신)을 마이그레이션합니다. CR 및 마이그레이션 절차는 소스 공급자에 따라 다릅니다.
클러스터 범위 CR의 이름을 지정해야 합니다.
네임스페이스 범위 CR의 이름과 네임스페이스를 모두 지정해야 합니다.
마이그레이션 계획이 정의된 것과 다른 OpenShift 클러스터로 마이그레이션하려면 cluster-admin 권한이 있는 OpenShift Virtualization 서비스 계정 토큰이 있어야 합니다.
5.3.1. VMware vSphere 소스 공급자에서 마이그레이션 링크 복사링크가 클립보드에 복사되었습니다!
CLI를 사용하여 VMware vSphere 소스 공급자에서 마이그레이션할 수 있습니다.
프로세스
소스 공급자 인증 정보에 대한
시크릿매니페스트를 생성합니다.$ cat << EOF | oc apply -f - apiVersion: v1 kind: Secret metadata: name: <secret> namespace: <namespace> ownerReferences:1 - apiVersion: forklift.konveyor.io/v1beta1 kind: Provider name: <provider_name> uid: <provider_uid> labels: createdForProviderType: vsphere createdForResourceType: providers type: Opaque stringData: user: <user>2 password: <password>3 insecureSkipVerify: <"true"/"false">4 cacert: |5 <ca_certificate> url: <api_end_point>6 EOF- 1
ownerReferences섹션은 선택 사항입니다.- 2
- vCenter 사용자 또는 ESX/ESXi 사용자를 지정합니다.
- 3
- vCenter 사용자의 암호 또는 ESX/ESXi 사용자를 지정합니다.
- 4
- 인증서 확인을 건너뛰려면
"true"를 지정하고"false"를 지정하여 인증서를 확인합니다. 지정하지 않는 경우 기본값은"false"입니다. 인증서 확인을 건너뛰면 비보안 마이그레이션이 진행되므로 인증서가 필요하지 않습니다. 비보안 마이그레이션은 전송된 데이터가 안전하지 않은 연결을 통해 전송되고 잠재적으로 민감한 데이터가 노출될 수 있음을 의미합니다. - 5
- 이 필드를 설정하지 않고 인증서 확인을 건너뛰면 MTV가 시스템 CA 사용을 시도합니다.
- 6
- vCenter 또는 ESX/ESXi의 API 끝점 URL을 지정합니다(예:
https://<vCenter_host>/sdk).
소스 공급자에 대한
공급자매니페스트를 생성합니다.$ cat << EOF | oc apply -f - apiVersion: forklift.konveyor.io/v1beta1 kind: Provider metadata: name: <source_provider> namespace: <namespace> spec: type: vsphere url: <api_end_point>1 settings: vddkInitImage: <VDDK_image>2 sdkEndpoint: vcenter3 secret: name: <secret>4 namespace: <namespace> EOF
호스트매니페스트를 생성합니다.$ cat << EOF | oc apply -f - apiVersion: forklift.konveyor.io/v1beta1 kind: Host metadata: name: <vmware_host> namespace: <namespace> spec: provider: namespace: <namespace> name: <source_provider>1 id: <source_host_mor>2 ipAddress: <source_network_ip>3 EOF- 1
- VMware vSphere
ProviderCR의 이름을 지정합니다. - 2
- VMware vSphere 호스트의 Managed Object Reference (moRef)를 지정합니다. moRef를 검색하려면 VMware vSphere moRef 검색을 참조하십시오.
- 3
- VMware vSphere 마이그레이션 네트워크의 IP 주소를 지정합니다.
NetworkMap매니페스트를 생성하여 소스 및 대상 네트워크를 매핑합니다.$ cat << EOF | oc apply -f - apiVersion: forklift.konveyor.io/v1beta1 kind: NetworkMap metadata: name: <network_map> namespace: <namespace> spec: map: - destination: name: <network_name> type: pod1 source:2 id: <source_network_id> name: <source_network_name> - destination: name: <network_attachment_definition>3 namespace: <network_attachment_definition_namespace>4 type: multus source: id: <source_network_id> name: <source_network_name> provider: source: name: <source_provider> namespace: <namespace> destination: name: <destination_provider> namespace: <namespace> EOF- 1
- 허용되는 값은
pod및multus입니다. - 2
id또는name매개변수를 사용하여 소스 네트워크를 지정할 수 있습니다.id는 VMware vSphere 네트워크 Managed Object Reference (moRef)를 지정합니다. moRef를 검색하려면 VMware vSphere moRef 검색을 참조하십시오.- 3
- 각 추가 OpenShift Virtualization 네트워크에 대한 네트워크 연결 정의를 지정합니다.
- 4
type이multus인 경우에만 필요합니다. OpenShift Virtualization 네트워크 연결 정의의 네임스페이스를 지정합니다.
소스 및 대상 스토리지를 매핑하는
StorageMap매니페스트를 생성합니다.$ cat << EOF | oc apply -f - apiVersion: forklift.konveyor.io/v1beta1 kind: StorageMap metadata: name: <storage_map> namespace: <namespace> spec: map: - destination: storageClass: <storage_class> accessMode: <access_mode>1 source: id: <source_datastore>2 provider: source: name: <source_provider> namespace: <namespace> destination: name: <destination_provider> namespace: <namespace> EOF- 1
- 허용되는 값은
ReadWriteOnce및ReadWriteMany입니다. - 2
- VMware vSphere 데이터 저장소 moRef를 지정합니다. 예를 들면
f2737930-b567-451a-9ceb-2887f6207009입니다. moRef를 검색하려면 VMware vSphere moRef 검색을 참조하십시오.
선택 사항:
PlanCR에 지정된 단계에서 VM에서 사용자 정의 코드를 실행하려면후크매니페스트를 생성합니다.$ cat << EOF | oc apply -f - apiVersion: forklift.konveyor.io/v1beta1 kind: Hook metadata: name: <hook> namespace: <namespace> spec: image: quay.io/konveyor/hook-runner playbook: | LS0tCi0gbmFtZTogTWFpbgogIGhvc3RzOiBsb2NhbGhvc3QKICB0YXNrczoKICAtIG5hbWU6IExv YWQgUGxhbgogICAgaW5jbHVkZV92YXJzOgogICAgICBmaWxlOiAiL3RtcC9ob29rL3BsYW4ueW1s IgogICAgICBuYW1lOiBwbGFuCiAgLSBuYW1lOiBMb2FkIFdvcmtsb2FkCiAgICBpbmNsdWRlX3Zh cnM6CiAgICAgIGZpbGU6ICIvdG1wL2hvb2svd29ya2xvYWQueW1sIgogICAgICBuYW1lOiB3b3Jr bG9hZAoK EOF다음과 같습니다.
Playbook은 선택적 Base64로 인코딩된 Ansible 플레이북을 나타냅니다.
플레이북을 지정하는 경우이미지는hook-runner여야 합니다.참고기본
hook-runner이미지를 사용하거나 사용자 정의 이미지를 지정할 수 있습니다. 사용자 지정 이미지를 지정하는 경우 플레이북을 지정할 필요가 없습니다.
마이그레이션을 위한
계획매니페스트를 생성합니다.$ cat << EOF | oc apply -f - apiVersion: forklift.konveyor.io/v1beta1 kind: Plan metadata: name: <plan>1 namespace: <namespace> spec: warm: false2 provider: source: name: <source_provider> namespace: <namespace> destination: name: <destination_provider> namespace: <namespace> map:3 network:4 name: <network_map>5 namespace: <namespace> storage:6 name: <storage_map>7 namespace: <namespace> targetNamespace: <target_namespace> vms:8 - id: <source_vm>9 - name: <source_vm> hooks:10 - hook: namespace: <namespace> name: <hook>11 step: <step>12 EOF- 1
PlanCR의 이름을 지정합니다.- 2
- 마이그레이션이 웜인지 -
true- 또는 cold -false인지 여부를 지정합니다. 마이그레이션 매니페스트에서cutover매개변수 값을 지정하지 않고 웜마이그레이션을 지정하면 사전 복사 단계만 실행됩니다. - 3
- 계획당 하나의 네트워크 맵과 하나의 스토리지 맵만 지정합니다.
- 4
- 마이그레이션할 VM이 네트워크에 할당되지 않은 경우에도 네트워크 매핑을 지정합니다. 이 경우 매핑이 비어 있을 수 있습니다.
- 5
NetworkMapCR의 이름을 지정합니다.- 6
- 마이그레이션할 VM이 디스크 이미지로 할당되지 않은 경우에도 스토리지 매핑을 지정합니다. 이 경우 매핑이 비어 있을 수 있습니다.
- 7
StorageMapCR의 이름을 지정합니다.- 8
id또는name매개변수를 사용하여 소스 VM을 지정할 수 있습니다.
- 9
- VMware vSphere VM moRef를 지정합니다. moRef를 검색하려면 VMware vSphere moRef 검색을 참조하십시오.
- 10
- 선택 사항: VM에 대해 최대 두 개의 후크를 지정할 수 있습니다. 각 후크는 별도의 마이그레이션 단계에서 실행되어야 합니다.
- 11
HookCR의 이름을 지정합니다.- 12
- 허용되는 값은 마이그레이션 계획이 시작되기 전에
PreHook이거나마이그레이션이 완료된 후 postHook입니다.
PlanCR을 실행할마이그레이션매니페스트를 생성합니다.$ cat << EOF | oc apply -f - apiVersion: forklift.konveyor.io/v1beta1 kind: Migration metadata: name: <name_of_migration_cr> namespace: <namespace> spec: plan: name: <name_of_plan_cr> namespace: <namespace> cutover: <optional_cutover_time> EOF참고컷오버 시간을 지정하는 경우 UTC 시간 오프셋과 함께 ISO 8601 형식을 사용합니다(예:
2024-04-04T01:23:45.678+09:00).
5.3.2. Red Hat Virtualization 소스 공급자에서 마이그레이션 링크 복사링크가 클립보드에 복사되었습니다!
CLI를 사용하여 RHV(Red Hat Virtualization) 소스 공급자에서 마이그레이션할 수 있습니다.
사전 요구 사항
직접 LUN 디스크를 사용하여 가상 머신을 마이그레이션하는 경우 VM을 실행할 것으로 예상되는 OpenShift Virtualization 대상 클러스터의 노드가 백엔드 스토리지에 액세스할 수 있는지 확인합니다.
- 소스 공급자에서 대상 공급자로 복사 되는 디스크 이미지와 달리 LUN은 소스 공급자의 가상 머신에서분리되지만 제거되지 않은 다음 대상 공급자에 생성된 가상 머신(VM)에 연결됩니다.
- 소스 공급자에 대한 대체가 필요한 경우 마이그레이션 중에 원본 공급자에서 LUN을 제거하지 않습니다. 그러나 소스 공급자의 VM에 LUN을 다시 연결하기 전에 대상 환경의 VM에서 LUN을 사용하지 않도록 하여 데이터 손상이 발생할 수 있습니다.
프로세스
소스 공급자 인증 정보에 대한
시크릿매니페스트를 생성합니다.$ cat << EOF | oc apply -f - apiVersion: v1 kind: Secret metadata: name: <secret> namespace: <namespace> ownerReferences:1 - apiVersion: forklift.konveyor.io/v1beta1 kind: Provider name: <provider_name> uid: <provider_uid> labels: createdForProviderType: ovirt createdForResourceType: providers type: Opaque stringData: user: <user>2 password: <password>3 insecureSkipVerify: <"true"/"false">4 cacert: |5 <ca_certificate> url: <api_end_point>6 EOF- 1
ownerReferences섹션은 선택 사항입니다.- 2
- RHV Manager 사용자를 지정합니다.
- 3
- 사용자 암호를 지정합니다.
- 4
- 인증서 확인을 건너뛰려면
"true"를 지정하고"false"를 지정하여 인증서를 확인합니다. 지정하지 않는 경우 기본값은"false"입니다. 인증서 확인을 건너뛰면 비보안 마이그레이션이 진행되므로 인증서가 필요하지 않습니다. 비보안 마이그레이션은 전송된 데이터가 안전하지 않은 연결을 통해 전송되고 잠재적으로 민감한 데이터가 노출될 수 있음을 의미합니다. - 5
- 타사 인증서로 대체되지 않은 경우 Manager CA 인증서를 입력합니다. 이 경우 Manager Apache CA 인증서를 입력합니다. https://<engine_host>/ovirt-engine/services/pki-resource?resource=ca-certificate&format=X509-PEM-CA에서 Manager CA 인증서를 검색할 수 있습니다.
- 6
- API 끝점 URL을 지정합니다(예:
https://<engine_host>/ovirt-engine/api).
소스 공급자에 대한
공급자매니페스트를 생성합니다.$ cat << EOF | oc apply -f - apiVersion: forklift.konveyor.io/v1beta1 kind: Provider metadata: name: <source_provider> namespace: <namespace> spec: type: ovirt url: <api_end_point>1 secret: name: <secret>2 namespace: <namespace> EOF
NetworkMap매니페스트를 생성하여 소스 및 대상 네트워크를 매핑합니다.$ cat << EOF | oc apply -f - apiVersion: forklift.konveyor.io/v1beta1 kind: NetworkMap metadata: name: <network_map> namespace: <namespace> spec: map: - destination: name: <network_name> type: pod1 source:2 id: <source_network_id> name: <source_network_name> - destination: name: <network_attachment_definition>3 namespace: <network_attachment_definition_namespace>4 type: multus source: id: <source_network_id> name: <source_network_name> provider: source: name: <source_provider> namespace: <namespace> destination: name: <destination_provider> namespace: <namespace> EOF
소스 및 대상 스토리지를 매핑하는
StorageMap매니페스트를 생성합니다.$ cat << EOF | oc apply -f - apiVersion: forklift.konveyor.io/v1beta1 kind: StorageMap metadata: name: <storage_map> namespace: <namespace> spec: map: - destination: storageClass: <storage_class> accessMode: <access_mode>1 source: id: <source_storage_domain>2 provider: source: name: <source_provider> namespace: <namespace> destination: name: <destination_provider> namespace: <namespace> EOF선택 사항:
PlanCR에 지정된 단계에서 VM에서 사용자 정의 코드를 실행하려면후크매니페스트를 생성합니다.$ cat << EOF | oc apply -f - apiVersion: forklift.konveyor.io/v1beta1 kind: Hook metadata: name: <hook> namespace: <namespace> spec: image: quay.io/konveyor/hook-runner playbook: | LS0tCi0gbmFtZTogTWFpbgogIGhvc3RzOiBsb2NhbGhvc3QKICB0YXNrczoKICAtIG5hbWU6IExv YWQgUGxhbgogICAgaW5jbHVkZV92YXJzOgogICAgICBmaWxlOiAiL3RtcC9ob29rL3BsYW4ueW1s IgogICAgICBuYW1lOiBwbGFuCiAgLSBuYW1lOiBMb2FkIFdvcmtsb2FkCiAgICBpbmNsdWRlX3Zh cnM6CiAgICAgIGZpbGU6ICIvdG1wL2hvb2svd29ya2xvYWQueW1sIgogICAgICBuYW1lOiB3b3Jr bG9hZAoK EOF다음과 같습니다.
Playbook은 선택적 Base64로 인코딩된 Ansible 플레이북을 나타냅니다.
플레이북을 지정하는 경우이미지는hook-runner여야 합니다.참고기본
hook-runner이미지를 사용하거나 사용자 정의 이미지를 지정할 수 있습니다. 사용자 지정 이미지를 지정하는 경우 플레이북을 지정할 필요가 없습니다.
마이그레이션을 위한
계획매니페스트를 생성합니다.$ cat << EOF | oc apply -f - apiVersion: forklift.konveyor.io/v1beta1 kind: Plan metadata: name: <plan>1 namespace: <namespace> preserveClusterCpuModel: true2 spec: warm: false3 provider: source: name: <source_provider> namespace: <namespace> destination: name: <destination_provider> namespace: <namespace> map:4 network:5 name: <network_map>6 namespace: <namespace> storage:7 name: <storage_map>8 namespace: <namespace> targetNamespace: <target_namespace> vms:9 - id: <source_vm>10 - name: <source_vm> hooks:11 - hook: namespace: <namespace> name: <hook>12 step: <step>13 EOF- 1
PlanCR의 이름을 지정합니다.- 2
- 아래 참고를 참조하십시오.
- 3
- 마이그레이션이 워밍인지 또는 콜드인지를 지정합니다. 마이그레이션 매니페스트에서
cutover매개변수 값을 지정하지 않고 웜마이그레이션을 지정하면 사전 복사 단계만 실행됩니다. - 4
- 계획당 하나의 네트워크 맵과 하나의 스토리지 맵만 지정합니다.
- 5
- 마이그레이션할 VM이 네트워크에 할당되지 않은 경우에도 네트워크 매핑을 지정합니다. 이 경우 매핑이 비어 있을 수 있습니다.
- 6
NetworkMapCR의 이름을 지정합니다.- 7
- 마이그레이션할 VM이 디스크 이미지로 할당되지 않은 경우에도 스토리지 매핑을 지정합니다. 이 경우 매핑이 비어 있을 수 있습니다.
- 8
StorageMapCR의 이름을 지정합니다.- 9
id또는name매개변수를 사용하여 소스 VM을 지정할 수 있습니다.- 10
- RHV VM UUID를 지정합니다.
- 11
- 선택 사항: VM에 대해 최대 두 개의 후크를 지정할 수 있습니다. 각 후크는 별도의 마이그레이션 단계에서 실행되어야 합니다.
- 12
HookCR의 이름을 지정합니다.- 13
- 허용되는 값은 마이그레이션 계획이 시작되기 전에
PreHook이거나마이그레이션이 완료된 후 postHook입니다.
참고-
마이그레이션된 시스템이 사용자 지정 CPU 모델로 설정된 경우
preserveClusterCpuModel의 설정에 관계없이 대상 클러스터의 해당 CPU 모델로 설정됩니다. 마이그레이션된 시스템이 사용자 지정 CPU 모델로 설정되지 않은 경우:
-
preserveClusterCpuModel이 'true'로 설정된 경우 MTV는 클러스터 구성에 따라 RHV에서 실행될 때 VM의 CPU 모델을 확인한 다음 마이그레이션된 VM을 해당 CPU 모델로 설정합니다. -
preserveClusterCpuModel이 'false'로 설정된 경우 MTV는 CPU 유형을 설정하지 않으며 VM은 대상 클러스터의 기본 CPU 모델로 설정됩니다.
-
PlanCR을 실행할마이그레이션매니페스트를 생성합니다.$ cat << EOF | oc apply -f - apiVersion: forklift.konveyor.io/v1beta1 kind: Migration metadata: name: <name_of_migration_cr> namespace: <namespace> spec: plan: name: <name_of_plan_cr> namespace: <namespace> cutover: <optional_cutover_time> EOF참고컷오버 시간을 지정하는 경우 UTC 시간 오프셋과 함께 ISO 8601 형식을 사용합니다(예:
2024-04-04T01:23:45.678+09:00).
5.3.3. OpenStack 소스 공급자에서 마이그레이션 링크 복사링크가 클립보드에 복사되었습니다!
CLI를 사용하여 OpenStack 소스 공급자에서 마이그레이션할 수 있습니다.
프로세스
소스 공급자 인증 정보에 대한
시크릿매니페스트를 생성합니다.$ cat << EOF | oc apply -f - apiVersion: v1 kind: Secret metadata: name: <secret> namespace: <namespace> ownerReferences:1 - apiVersion: forklift.konveyor.io/v1beta1 kind: Provider name: <provider_name> uid: <provider_uid> labels: createdForProviderType: openstack createdForResourceType: providers type: Opaque stringData: user: <user>2 password: <password>3 insecureSkipVerify: <"true"/"false">4 domainName: <domain_name> projectName: <project_name> regionName: <region_name> cacert: |5 <ca_certificate> url: <api_end_point>6 EOF- 1
ownerReferences섹션은 선택 사항입니다.- 2
- OpenStack 사용자를 지정합니다.
- 3
- 사용자 OpenStack 암호를 지정합니다.
- 4
- 인증서 확인을 건너뛰려면
"true"를 지정하고"false"를 지정하여 인증서를 확인합니다. 지정하지 않는 경우 기본값은"false"입니다. 인증서 확인을 건너뛰면 비보안 마이그레이션이 진행되므로 인증서가 필요하지 않습니다. 비보안 마이그레이션은 전송된 데이터가 안전하지 않은 연결을 통해 전송되고 잠재적으로 민감한 데이터가 노출될 수 있음을 의미합니다. - 5
- 이 필드를 설정하지 않고 인증서 확인을 건너뛰면 MTV가 시스템 CA 사용을 시도합니다.
- 6
- API 끝점 URL을 지정합니다(예:
https://<identity_service>/v3).
소스 공급자에 대한
공급자매니페스트를 생성합니다.$ cat << EOF | oc apply -f - apiVersion: forklift.konveyor.io/v1beta1 kind: Provider metadata: name: <source_provider> namespace: <namespace> spec: type: openstack url: <api_end_point>1 secret: name: <secret>2 namespace: <namespace> EOF
NetworkMap매니페스트를 생성하여 소스 및 대상 네트워크를 매핑합니다.$ cat << EOF | oc apply -f - apiVersion: forklift.konveyor.io/v1beta1 kind: NetworkMap metadata: name: <network_map> namespace: <namespace> spec: map: - destination: name: <network_name> type: pod1 source:2 id: <source_network_id> name: <source_network_name> - destination: name: <network_attachment_definition>3 namespace: <network_attachment_definition_namespace>4 type: multus source: id: <source_network_id> name: <source_network_name> provider: source: name: <source_provider> namespace: <namespace> destination: name: <destination_provider> namespace: <namespace> EOF
소스 및 대상 스토리지를 매핑하는
StorageMap매니페스트를 생성합니다.$ cat << EOF | oc apply -f - apiVersion: forklift.konveyor.io/v1beta1 kind: StorageMap metadata: name: <storage_map> namespace: <namespace> spec: map: - destination: storageClass: <storage_class> accessMode: <access_mode>1 source: id: <source_volume_type>2 provider: source: name: <source_provider> namespace: <namespace> destination: name: <destination_provider> namespace: <namespace> EOF선택 사항:
PlanCR에 지정된 단계에서 VM에서 사용자 정의 코드를 실행하려면후크매니페스트를 생성합니다.$ cat << EOF | oc apply -f - apiVersion: forklift.konveyor.io/v1beta1 kind: Hook metadata: name: <hook> namespace: <namespace> spec: image: quay.io/konveyor/hook-runner playbook: | LS0tCi0gbmFtZTogTWFpbgogIGhvc3RzOiBsb2NhbGhvc3QKICB0YXNrczoKICAtIG5hbWU6IExv YWQgUGxhbgogICAgaW5jbHVkZV92YXJzOgogICAgICBmaWxlOiAiL3RtcC9ob29rL3BsYW4ueW1s IgogICAgICBuYW1lOiBwbGFuCiAgLSBuYW1lOiBMb2FkIFdvcmtsb2FkCiAgICBpbmNsdWRlX3Zh cnM6CiAgICAgIGZpbGU6ICIvdG1wL2hvb2svd29ya2xvYWQueW1sIgogICAgICBuYW1lOiB3b3Jr bG9hZAoK EOF다음과 같습니다.
Playbook은 선택적 Base64로 인코딩된 Ansible 플레이북을 나타냅니다.
플레이북을 지정하는 경우이미지는hook-runner여야 합니다.참고기본
hook-runner이미지를 사용하거나 사용자 정의 이미지를 지정할 수 있습니다. 사용자 지정 이미지를 지정하는 경우 플레이북을 지정할 필요가 없습니다.
마이그레이션을 위한
계획매니페스트를 생성합니다.$ cat << EOF | oc apply -f - apiVersion: forklift.konveyor.io/v1beta1 kind: Plan metadata: name: <plan>1 namespace: <namespace> spec: provider: source: name: <source_provider> namespace: <namespace> destination: name: <destination_provider> namespace: <namespace> map:2 network:3 name: <network_map>4 namespace: <namespace> storage:5 name: <storage_map>6 namespace: <namespace> targetNamespace: <target_namespace> vms:7 - id: <source_vm>8 - name: <source_vm> hooks:9 - hook: namespace: <namespace> name: <hook>10 step: <step>11 EOF- 1
PlanCR의 이름을 지정합니다.- 2
- 계획당 하나의 네트워크 맵과 하나의 스토리지 맵만 지정합니다.
- 3
- 마이그레이션할 VM이 네트워크에 할당되지 않은 경우에도 네트워크 매핑을 지정합니다. 이 경우 매핑이 비어 있을 수 있습니다.
- 4
NetworkMapCR의 이름을 지정합니다.- 5
- 마이그레이션할 VM이 디스크 이미지로 할당되지 않은 경우에도 스토리지 매핑을 지정합니다. 이 경우 매핑이 비어 있을 수 있습니다.
- 6
StorageMapCR의 이름을 지정합니다.- 7
id또는name매개변수를 사용하여 소스 VM을 지정할 수 있습니다.- 8
- OpenStack VM UUID를 지정합니다.
- 9
- 선택 사항: VM에 대해 최대 두 개의 후크를 지정할 수 있습니다. 각 후크는 별도의 마이그레이션 단계에서 실행되어야 합니다.
- 10
HookCR의 이름을 지정합니다.- 11
- 허용되는 값은 마이그레이션 계획이 시작되기 전에
PreHook이거나마이그레이션이 완료된 후 postHook입니다.
PlanCR을 실행할마이그레이션매니페스트를 생성합니다.$ cat << EOF | oc apply -f - apiVersion: forklift.konveyor.io/v1beta1 kind: Migration metadata: name: <name_of_migration_cr> namespace: <namespace> spec: plan: name: <name_of_plan_cr> namespace: <namespace> cutover: <optional_cutover_time> EOF참고컷오버 시간을 지정하는 경우 UTC 시간 오프셋과 함께 ISO 8601 형식을 사용합니다(예:
2024-04-04T01:23:45.678+09:00).
5.3.4. OVA(Open Virtual Appliance) 소스 공급자에서 마이그레이션 링크 복사링크가 클립보드에 복사되었습니다!
CLI를 사용하여 VMware vSphere에서 소스 공급자로 생성한 OVA(Open Virtual Appliance) 파일에서 마이그레이션할 수 있습니다.
프로세스
소스 공급자 인증 정보에 대한
시크릿매니페스트를 생성합니다.$ cat << EOF | oc apply -f - apiVersion: v1 kind: Secret metadata: name: <secret> namespace: <namespace> ownerReferences:1 - apiVersion: forklift.konveyor.io/v1beta1 kind: Provider name: <provider_name> uid: <provider_uid> labels: createdForProviderType: ova createdForResourceType: providers type: Opaque stringData: url: <nfs_server:/nfs_path>2 EOF
소스 공급자에 대한
공급자매니페스트를 생성합니다.$ cat << EOF | oc apply -f - apiVersion: forklift.konveyor.io/v1beta1 kind: Provider metadata: name: <source_provider> namespace: <namespace> spec: type: ova url: <nfs_server:/nfs_path>1 secret: name: <secret>2 namespace: <namespace> EOF
NetworkMap매니페스트를 생성하여 소스 및 대상 네트워크를 매핑합니다.$ cat << EOF | oc apply -f - apiVersion: forklift.konveyor.io/v1beta1 kind: NetworkMap metadata: name: <network_map> namespace: <namespace> spec: map: - destination: name: <network_name> type: pod1 source: id: <source_network_id>2 - destination: name: <network_attachment_definition>3 namespace: <network_attachment_definition_namespace>4 type: multus source: id: <source_network_id> provider: source: name: <source_provider> namespace: <namespace> destination: name: <destination_provider> namespace: <namespace> EOF
소스 및 대상 스토리지를 매핑하는
StorageMap매니페스트를 생성합니다.$ cat << EOF | oc apply -f - apiVersion: forklift.konveyor.io/v1beta1 kind: StorageMap metadata: name: <storage_map> namespace: <namespace> spec: map: - destination: storageClass: <storage_class> accessMode: <access_mode>1 source: name: Dummy storage for source provider <provider_name>2 provider: source: name: <source_provider> namespace: <namespace> destination: name: <destination_provider> namespace: <namespace> EOF선택 사항:
PlanCR에 지정된 단계에서 VM에서 사용자 정의 코드를 실행하려면후크매니페스트를 생성합니다.$ cat << EOF | oc apply -f - apiVersion: forklift.konveyor.io/v1beta1 kind: Hook metadata: name: <hook> namespace: <namespace> spec: image: quay.io/konveyor/hook-runner playbook: | LS0tCi0gbmFtZTogTWFpbgogIGhvc3RzOiBsb2NhbGhvc3QKICB0YXNrczoKICAtIG5hbWU6IExv YWQgUGxhbgogICAgaW5jbHVkZV92YXJzOgogICAgICBmaWxlOiAiL3RtcC9ob29rL3BsYW4ueW1s IgogICAgICBuYW1lOiBwbGFuCiAgLSBuYW1lOiBMb2FkIFdvcmtsb2FkCiAgICBpbmNsdWRlX3Zh cnM6CiAgICAgIGZpbGU6ICIvdG1wL2hvb2svd29ya2xvYWQueW1sIgogICAgICBuYW1lOiB3b3Jr bG9hZAoK EOF다음과 같습니다.
Playbook은 선택적 Base64로 인코딩된 Ansible 플레이북을 나타냅니다.
플레이북을 지정하는 경우이미지는hook-runner여야 합니다.참고기본
hook-runner이미지를 사용하거나 사용자 정의 이미지를 지정할 수 있습니다. 사용자 지정 이미지를 지정하는 경우 플레이북을 지정할 필요가 없습니다.
마이그레이션을 위한
계획매니페스트를 생성합니다.$ cat << EOF | oc apply -f - apiVersion: forklift.konveyor.io/v1beta1 kind: Plan metadata: name: <plan>1 namespace: <namespace> spec: provider: source: name: <source_provider> namespace: <namespace> destination: name: <destination_provider> namespace: <namespace> map:2 network:3 name: <network_map>4 namespace: <namespace> storage:5 name: <storage_map>6 namespace: <namespace> targetNamespace: <target_namespace> vms:7 - id: <source_vm>8 - name: <source_vm> hooks:9 - hook: namespace: <namespace> name: <hook>10 step: <step>11 EOF- 1
PlanCR의 이름을 지정합니다.- 2
- 계획당 하나의 네트워크 맵과 하나의 스토리지 맵만 지정합니다.
- 3
- 마이그레이션할 VM이 네트워크에 할당되지 않은 경우에도 네트워크 매핑을 지정합니다. 이 경우 매핑이 비어 있을 수 있습니다.
- 4
NetworkMapCR의 이름을 지정합니다.- 5
- 마이그레이션할 VM이 디스크 이미지로 할당되지 않은 경우에도 스토리지 매핑을 지정합니다. 이 경우 매핑이 비어 있을 수 있습니다.
- 6
StorageMapCR의 이름을 지정합니다.- 7
id또는name매개변수를 사용하여 소스 VM을 지정할 수 있습니다.- 8
- OVA VM UUID를 지정합니다.
- 9
- 선택 사항: VM에 대해 최대 두 개의 후크를 지정할 수 있습니다. 각 후크는 별도의 마이그레이션 단계에서 실행되어야 합니다.
- 10
HookCR의 이름을 지정합니다.- 11
- 허용되는 값은 마이그레이션 계획이 시작되기 전에
PreHook이거나마이그레이션이 완료된 후 postHook입니다.
PlanCR을 실행할마이그레이션매니페스트를 생성합니다.$ cat << EOF | oc apply -f - apiVersion: forklift.konveyor.io/v1beta1 kind: Migration metadata: name: <name_of_migration_cr> namespace: <namespace> spec: plan: name: <name_of_plan_cr> namespace: <namespace> cutover: <optional_cutover_time> EOF참고컷오버 시간을 지정하는 경우 UTC 시간 오프셋과 함께 ISO 8601 형식을 사용합니다(예:
2024-04-04T01:23:45.678+09:00).
5.3.5. Red Hat OpenShift Virtualization 소스 공급자에서 마이그레이션 링크 복사링크가 클립보드에 복사되었습니다!
Red Hat OpenShift Virtualization 공급자를 소스 공급자 또는 대상 공급자로 사용할 수 있습니다.
프로세스
소스 공급자 인증 정보에 대한
시크릿매니페스트를 생성합니다.$ cat << EOF | oc apply -f - apiVersion: v1 kind: Secret metadata: name: <secret> namespace: <namespace> ownerReferences:1 - apiVersion: forklift.konveyor.io/v1beta1 kind: Provider name: <provider_name> uid: <provider_uid> labels: createdForProviderType: openshift createdForResourceType: providers type: Opaque stringData: token: <token>2 password: <password>3 insecureSkipVerify: <"true"/"false">4 cacert: |5 <ca_certificate> url: <api_end_point>6 EOF- 1
ownerReferences섹션은 선택 사항입니다.- 2
cluster-admin권한이 있는 서비스 계정의 토큰을 지정합니다. 토큰과URL이 모두 비어 있으면 로컬 OpenShift 클러스터가 사용됩니다.- 3
- 사용자 암호를 지정합니다.
- 4
- 인증서 확인을 건너뛰려면
"true"를 지정하고"false"를 지정하여 인증서를 확인합니다. 지정하지 않는 경우 기본값은"false"입니다. 인증서 확인을 건너뛰면 비보안 마이그레이션이 진행되므로 인증서가 필요하지 않습니다. 비보안 마이그레이션은 전송된 데이터가 안전하지 않은 연결을 통해 전송되고 잠재적으로 민감한 데이터가 노출될 수 있음을 의미합니다. - 5
- 이 필드를 설정하지 않고 인증서 확인을 건너뛰면 MTV가 시스템 CA 사용을 시도합니다.
- 6
- API 서버의 끝점 URL을 지정합니다.
소스 공급자에 대한
공급자매니페스트를 생성합니다.$ cat << EOF | oc apply -f - apiVersion: forklift.konveyor.io/v1beta1 kind: Provider metadata: name: <source_provider> namespace: <namespace> spec: type: openshift url: <api_end_point>1 secret: name: <secret>2 namespace: <namespace> EOF
NetworkMap매니페스트를 생성하여 소스 및 대상 네트워크를 매핑합니다.$ cat << EOF | oc apply -f - apiVersion: forklift.konveyor.io/v1beta1 kind: NetworkMap metadata: name: <network_map> namespace: <namespace> spec: map: - destination: name: <network_name> type: pod1 source: name: <network_name> type: pod - destination: name: <network_attachment_definition>2 namespace: <network_attachment_definition_namespace>3 type: multus source: name: <network_attachment_definition> namespace: <network_attachment_definition_namespace> type: multus provider: source: name: <source_provider> namespace: <namespace> destination: name: <destination_provider> namespace: <namespace> EOF
소스 및 대상 스토리지를 매핑하는
StorageMap매니페스트를 생성합니다.$ cat << EOF | oc apply -f - apiVersion: forklift.konveyor.io/v1beta1 kind: StorageMap metadata: name: <storage_map> namespace: <namespace> spec: map: - destination: storageClass: <storage_class> accessMode: <access_mode>1 source: name: <storage_class> provider: source: name: <source_provider> namespace: <namespace> destination: name: <destination_provider> namespace: <namespace> EOF- 1
- 허용되는 값은
ReadWriteOnce및ReadWriteMany입니다.
선택 사항:
PlanCR에 지정된 단계에서 VM에서 사용자 정의 코드를 실행하려면후크매니페스트를 생성합니다.$ cat << EOF | oc apply -f - apiVersion: forklift.konveyor.io/v1beta1 kind: Hook metadata: name: <hook> namespace: <namespace> spec: image: quay.io/konveyor/hook-runner playbook: | LS0tCi0gbmFtZTogTWFpbgogIGhvc3RzOiBsb2NhbGhvc3QKICB0YXNrczoKICAtIG5hbWU6IExv YWQgUGxhbgogICAgaW5jbHVkZV92YXJzOgogICAgICBmaWxlOiAiL3RtcC9ob29rL3BsYW4ueW1s IgogICAgICBuYW1lOiBwbGFuCiAgLSBuYW1lOiBMb2FkIFdvcmtsb2FkCiAgICBpbmNsdWRlX3Zh cnM6CiAgICAgIGZpbGU6ICIvdG1wL2hvb2svd29ya2xvYWQueW1sIgogICAgICBuYW1lOiB3b3Jr bG9hZAoK EOF다음과 같습니다.
Playbook은 선택적 Base64로 인코딩된 Ansible 플레이북을 나타냅니다.
플레이북을 지정하는 경우이미지는hook-runner여야 합니다.참고기본
hook-runner이미지를 사용하거나 사용자 정의 이미지를 지정할 수 있습니다. 사용자 지정 이미지를 지정하는 경우 플레이북을 지정할 필요가 없습니다.
마이그레이션을 위한
계획매니페스트를 생성합니다.$ cat << EOF | oc apply -f - apiVersion: forklift.konveyor.io/v1beta1 kind: Plan metadata: name: <plan>1 namespace: <namespace> spec: provider: source: name: <source_provider> namespace: <namespace> destination: name: <destination_provider> namespace: <namespace> map:2 network:3 name: <network_map>4 namespace: <namespace> storage:5 name: <storage_map>6 namespace: <namespace> targetNamespace: <target_namespace> vms: - name: <source_vm> namespace: <namespace> hooks:7 - hook: namespace: <namespace> name: <hook>8 step: <step>9 EOF- 1
PlanCR의 이름을 지정합니다.- 2
- 계획당 하나의 네트워크 맵과 하나의 스토리지 맵만 지정합니다.
- 3
- 마이그레이션할 VM이 네트워크에 할당되지 않은 경우에도 네트워크 매핑을 지정합니다. 이 경우 매핑이 비어 있을 수 있습니다.
- 4
NetworkMapCR의 이름을 지정합니다.- 5
- 마이그레이션할 VM이 디스크 이미지로 할당되지 않은 경우에도 스토리지 매핑을 지정합니다. 이 경우 매핑이 비어 있을 수 있습니다.
- 6
StorageMapCR의 이름을 지정합니다.- 7
- 선택 사항: VM에 대해 최대 두 개의 후크를 지정할 수 있습니다. 각 후크는 별도의 마이그레이션 단계에서 실행되어야 합니다.
- 8
HookCR의 이름을 지정합니다.- 9
- 허용되는 값은 마이그레이션 계획이 시작되기 전에
PreHook이거나마이그레이션이 완료된 후 postHook입니다.
PlanCR을 실행할마이그레이션매니페스트를 생성합니다.$ cat << EOF | oc apply -f - apiVersion: forklift.konveyor.io/v1beta1 kind: Migration metadata: name: <name_of_migration_cr> namespace: <namespace> spec: plan: name: <name_of_plan_cr> namespace: <namespace> cutover: <optional_cutover_time> EOF참고컷오버 시간을 지정하는 경우 UTC 시간 오프셋과 함께 ISO 8601 형식을 사용합니다(예:
2024-04-04T01:23:45.678+09:00).