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: - apiVersion: forklift.konveyor.io/v1beta1 kind: Provider name: <provider_name> uid: <provider_uid> labels: createdForProviderType: vsphere createdForResourceType: providers type: Opaque stringData: user: <user> password: <password> insecureSkipVerify: <"true"/"false"> cacert: | <ca_certificate> url: <api_end_point> EOF
$ 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
Copy to Clipboard Copied! - 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> settings: vddkInitImage: <VDDK_image> sdkEndpoint: vcenter secret: name: <secret> namespace: <namespace> EOF
$ 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: vcenter
3 secret: name: <secret>
4 namespace: <namespace> EOF
Copy to Clipboard Copied!
호스트
매니페스트를 생성합니다.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> id: <source_host_mor> ipAddress: <source_network_ip> 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
Copy to Clipboard Copied! - 1
- VMware vSphere
Provider
CR의 이름을 지정합니다. - 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: pod source: id: <source_network_id> name: <source_network_name> - destination: name: <network_attachment_definition> namespace: <network_attachment_definition_namespace> 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
$ 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: pod
1 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
Copy to Clipboard Copied! - 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> source: id: <source_datastore> provider: source: name: <source_provider> namespace: <namespace> destination: name: <destination_provider> namespace: <namespace> EOF
$ 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
Copy to Clipboard Copied! - 1
- 허용되는 값은
ReadWriteOnce
및ReadWriteMany
입니다. - 2
- VMware vSphere 데이터 저장소 moRef를 지정합니다. 예를 들면
f2737930-b567-451a-9ceb-2887f6207009
입니다. moRef를 검색하려면 VMware vSphere moRef 검색을 참조하십시오.
선택 사항:
Plan
CR에 지정된 단계에서 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
$ 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
Copy to Clipboard Copied! 다음과 같습니다.
Playbook은 선택적 Base64로 인코딩된 Ansible 플레이북을 나타냅니다.
플레이북을 지정하는 경우
이미지는
hook-runner
여야 합니다.참고기본
hook-runner
이미지를 사용하거나 사용자 정의 이미지를 지정할 수 있습니다. 사용자 지정 이미지를 지정하는 경우 플레이북을 지정할 필요가 없습니다.
마이그레이션을 위한
계획
매니페스트를 생성합니다.cat << EOF | oc apply -f - apiVersion: forklift.konveyor.io/v1beta1 kind: Plan metadata: name: <plan> namespace: <namespace> spec: warm: false provider: source: name: <source_provider> namespace: <namespace> destination: name: <destination_provider> namespace: <namespace> map: network: name: <network_map> namespace: <namespace> storage: name: <storage_map> namespace: <namespace> targetNamespace: <target_namespace> vms: - id: <source_vm> - name: <source_vm> hooks: - hook: namespace: <namespace> name: <hook> step: <step> EOF
$ cat << EOF | oc apply -f - apiVersion: forklift.konveyor.io/v1beta1 kind: Plan metadata: name: <plan>
1 namespace: <namespace> spec: warm: false
2 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
Copy to Clipboard Copied! - 1
Plan
CR의 이름을 지정합니다.- 2
- 마이그레이션이 웜인지 -
true
- 또는 cold -false
인지 여부를 지정합니다. 마이그레이션 매니페스트에서cutover
매개변수 값을 지정하지 않고 웜마이그레이션
을 지정하면 사전 복사 단계만 실행됩니다. - 3
- 계획당 하나의 네트워크 맵과 하나의 스토리지 맵만 지정합니다.
- 4
- 마이그레이션할 VM이 네트워크에 할당되지 않은 경우에도 네트워크 매핑을 지정합니다. 이 경우 매핑이 비어 있을 수 있습니다.
- 5
NetworkMap
CR의 이름을 지정합니다.- 6
- 마이그레이션할 VM이 디스크 이미지로 할당되지 않은 경우에도 스토리지 매핑을 지정합니다. 이 경우 매핑이 비어 있을 수 있습니다.
- 7
StorageMap
CR의 이름을 지정합니다.- 8
id
또는name
매개변수를 사용하여 소스 VM을 지정할 수 있습니다.
- 9
- VMware vSphere VM moRef를 지정합니다. moRef를 검색하려면 VMware vSphere moRef 검색을 참조하십시오.
- 10
- 선택 사항: VM에 대해 최대 두 개의 후크를 지정할 수 있습니다. 각 후크는 별도의 마이그레이션 단계에서 실행되어야 합니다.
- 11
Hook
CR의 이름을 지정합니다.- 12
- 허용되는 값은 마이그레이션 계획이 시작되기 전에
PreHook
이거나마이그레이션이 완료된 후 postHook
입니다.
Plan
CR을 실행할마이그레이션
매니페스트를 생성합니다.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
$ 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
Copy to Clipboard Copied! 참고컷오버 시간을 지정하는 경우 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: - apiVersion: forklift.konveyor.io/v1beta1 kind: Provider name: <provider_name> uid: <provider_uid> labels: createdForProviderType: ovirt createdForResourceType: providers type: Opaque stringData: user: <user> password: <password> insecureSkipVerify: <"true"/"false"> cacert: | <ca_certificate> url: <api_end_point> EOF
$ 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
Copy to Clipboard Copied! - 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> secret: name: <secret> namespace: <namespace> EOF
$ 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
Copy to Clipboard Copied!
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: pod source: id: <source_network_id> name: <source_network_name> - destination: name: <network_attachment_definition> namespace: <network_attachment_definition_namespace> 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
$ 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: pod
1 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
Copy to Clipboard Copied!
소스 및 대상 스토리지를 매핑하는
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> source: id: <source_storage_domain> provider: source: name: <source_provider> namespace: <namespace> destination: name: <destination_provider> namespace: <namespace> EOF
$ 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
Copy to Clipboard Copied! 선택 사항:
Plan
CR에 지정된 단계에서 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
$ 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
Copy to Clipboard Copied! 다음과 같습니다.
Playbook은 선택적 Base64로 인코딩된 Ansible 플레이북을 나타냅니다.
플레이북을 지정하는 경우
이미지는
hook-runner
여야 합니다.참고기본
hook-runner
이미지를 사용하거나 사용자 정의 이미지를 지정할 수 있습니다. 사용자 지정 이미지를 지정하는 경우 플레이북을 지정할 필요가 없습니다.
마이그레이션을 위한
계획
매니페스트를 생성합니다.cat << EOF | oc apply -f - apiVersion: forklift.konveyor.io/v1beta1 kind: Plan metadata: name: <plan> namespace: <namespace> preserveClusterCpuModel: true spec: warm: false provider: source: name: <source_provider> namespace: <namespace> destination: name: <destination_provider> namespace: <namespace> map: network: name: <network_map> namespace: <namespace> storage: name: <storage_map> namespace: <namespace> targetNamespace: <target_namespace> vms: - id: <source_vm> - name: <source_vm> hooks: - hook: namespace: <namespace> name: <hook> step: <step> EOF
$ cat << EOF | oc apply -f - apiVersion: forklift.konveyor.io/v1beta1 kind: Plan metadata: name: <plan>
1 namespace: <namespace> preserveClusterCpuModel: true
2 spec: warm: false
3 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
Copy to Clipboard Copied! - 1
Plan
CR의 이름을 지정합니다.- 2
- 아래 참고를 참조하십시오.
- 3
- 마이그레이션이 워밍인지 또는 콜드인지를 지정합니다. 마이그레이션 매니페스트에서
cutover
매개변수 값을 지정하지 않고 웜마이그레이션
을 지정하면 사전 복사 단계만 실행됩니다. - 4
- 계획당 하나의 네트워크 맵과 하나의 스토리지 맵만 지정합니다.
- 5
- 마이그레이션할 VM이 네트워크에 할당되지 않은 경우에도 네트워크 매핑을 지정합니다. 이 경우 매핑이 비어 있을 수 있습니다.
- 6
NetworkMap
CR의 이름을 지정합니다.- 7
- 마이그레이션할 VM이 디스크 이미지로 할당되지 않은 경우에도 스토리지 매핑을 지정합니다. 이 경우 매핑이 비어 있을 수 있습니다.
- 8
StorageMap
CR의 이름을 지정합니다.- 9
id
또는name
매개변수를 사용하여 소스 VM을 지정할 수 있습니다.- 10
- RHV VM UUID를 지정합니다.
- 11
- 선택 사항: VM에 대해 최대 두 개의 후크를 지정할 수 있습니다. 각 후크는 별도의 마이그레이션 단계에서 실행되어야 합니다.
- 12
Hook
CR의 이름을 지정합니다.- 13
- 허용되는 값은 마이그레이션 계획이 시작되기 전에
PreHook
이거나마이그레이션이 완료된 후 postHook
입니다.
참고-
마이그레이션된 시스템이 사용자 지정 CPU 모델로 설정된 경우
preserveClusterCpuModel
의 설정에 관계없이 대상 클러스터의 해당 CPU 모델로 설정됩니다. 마이그레이션된 시스템이 사용자 지정 CPU 모델로 설정되지 않은 경우:
-
preserveClusterCpuModel
이 'true'로 설정된 경우 MTV는 클러스터 구성에 따라 RHV에서 실행될 때 VM의 CPU 모델을 확인한 다음 마이그레이션된 VM을 해당 CPU 모델로 설정합니다. -
preserveClusterCpuModel
이 'false'로 설정된 경우 MTV는 CPU 유형을 설정하지 않으며 VM은 대상 클러스터의 기본 CPU 모델로 설정됩니다.
-
Plan
CR을 실행할마이그레이션
매니페스트를 생성합니다.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
$ 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
Copy to Clipboard Copied! 참고컷오버 시간을 지정하는 경우 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: - apiVersion: forklift.konveyor.io/v1beta1 kind: Provider name: <provider_name> uid: <provider_uid> labels: createdForProviderType: openstack createdForResourceType: providers type: Opaque stringData: user: <user> password: <password> insecureSkipVerify: <"true"/"false"> domainName: <domain_name> projectName: <project_name> regionName: <region_name> cacert: | <ca_certificate> url: <api_end_point> EOF
$ 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
Copy to Clipboard Copied! - 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> secret: name: <secret> namespace: <namespace> EOF
$ 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
Copy to Clipboard Copied!
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: pod source: id: <source_network_id> name: <source_network_name> - destination: name: <network_attachment_definition> namespace: <network_attachment_definition_namespace> 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
$ 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: pod
1 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
Copy to Clipboard Copied!
소스 및 대상 스토리지를 매핑하는
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> source: id: <source_volume_type> provider: source: name: <source_provider> namespace: <namespace> destination: name: <destination_provider> namespace: <namespace> EOF
$ 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
Copy to Clipboard Copied! 선택 사항:
Plan
CR에 지정된 단계에서 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
$ 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
Copy to Clipboard Copied! 다음과 같습니다.
Playbook은 선택적 Base64로 인코딩된 Ansible 플레이북을 나타냅니다.
플레이북을 지정하는 경우
이미지는
hook-runner
여야 합니다.참고기본
hook-runner
이미지를 사용하거나 사용자 정의 이미지를 지정할 수 있습니다. 사용자 지정 이미지를 지정하는 경우 플레이북을 지정할 필요가 없습니다.
마이그레이션을 위한
계획
매니페스트를 생성합니다.cat << EOF | oc apply -f - apiVersion: forklift.konveyor.io/v1beta1 kind: Plan metadata: name: <plan> namespace: <namespace> spec: provider: source: name: <source_provider> namespace: <namespace> destination: name: <destination_provider> namespace: <namespace> map: network: name: <network_map> namespace: <namespace> storage: name: <storage_map> namespace: <namespace> targetNamespace: <target_namespace> vms: - id: <source_vm> - name: <source_vm> hooks: - hook: namespace: <namespace> name: <hook> step: <step> EOF
$ 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
Copy to Clipboard Copied! - 1
Plan
CR의 이름을 지정합니다.- 2
- 계획당 하나의 네트워크 맵과 하나의 스토리지 맵만 지정합니다.
- 3
- 마이그레이션할 VM이 네트워크에 할당되지 않은 경우에도 네트워크 매핑을 지정합니다. 이 경우 매핑이 비어 있을 수 있습니다.
- 4
NetworkMap
CR의 이름을 지정합니다.- 5
- 마이그레이션할 VM이 디스크 이미지로 할당되지 않은 경우에도 스토리지 매핑을 지정합니다. 이 경우 매핑이 비어 있을 수 있습니다.
- 6
StorageMap
CR의 이름을 지정합니다.- 7
id
또는name
매개변수를 사용하여 소스 VM을 지정할 수 있습니다.- 8
- OpenStack VM UUID를 지정합니다.
- 9
- 선택 사항: VM에 대해 최대 두 개의 후크를 지정할 수 있습니다. 각 후크는 별도의 마이그레이션 단계에서 실행되어야 합니다.
- 10
Hook
CR의 이름을 지정합니다.- 11
- 허용되는 값은 마이그레이션 계획이 시작되기 전에
PreHook
이거나마이그레이션이 완료된 후 postHook
입니다.
Plan
CR을 실행할마이그레이션
매니페스트를 생성합니다.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
$ 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
Copy to Clipboard Copied! 참고컷오버 시간을 지정하는 경우 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: - 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> EOF
$ 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
Copy to Clipboard Copied!
소스 공급자에 대한
공급자
매니페스트를 생성합니다.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> secret: name: <secret> namespace: <namespace> 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
Copy to Clipboard Copied!
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: pod source: id: <source_network_id> - destination: name: <network_attachment_definition> namespace: <network_attachment_definition_namespace> type: multus source: id: <source_network_id> provider: source: name: <source_provider> namespace: <namespace> destination: name: <destination_provider> namespace: <namespace> EOF
$ 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: pod
1 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
Copy to Clipboard Copied!
소스 및 대상 스토리지를 매핑하는
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> source: name: Dummy storage for source provider <provider_name> provider: source: name: <source_provider> namespace: <namespace> destination: name: <destination_provider> namespace: <namespace> EOF
$ 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
Copy to Clipboard Copied! 선택 사항:
Plan
CR에 지정된 단계에서 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
$ 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
Copy to Clipboard Copied! 다음과 같습니다.
Playbook은 선택적 Base64로 인코딩된 Ansible 플레이북을 나타냅니다.
플레이북을 지정하는 경우
이미지는
hook-runner
여야 합니다.참고기본
hook-runner
이미지를 사용하거나 사용자 정의 이미지를 지정할 수 있습니다. 사용자 지정 이미지를 지정하는 경우 플레이북을 지정할 필요가 없습니다.
마이그레이션을 위한
계획
매니페스트를 생성합니다.cat << EOF | oc apply -f - apiVersion: forklift.konveyor.io/v1beta1 kind: Plan metadata: name: <plan> namespace: <namespace> spec: provider: source: name: <source_provider> namespace: <namespace> destination: name: <destination_provider> namespace: <namespace> map: network: name: <network_map> namespace: <namespace> storage: name: <storage_map> namespace: <namespace> targetNamespace: <target_namespace> vms: - id: <source_vm> - name: <source_vm> hooks: - hook: namespace: <namespace> name: <hook> step: <step> EOF
$ 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
Copy to Clipboard Copied! - 1
Plan
CR의 이름을 지정합니다.- 2
- 계획당 하나의 네트워크 맵과 하나의 스토리지 맵만 지정합니다.
- 3
- 마이그레이션할 VM이 네트워크에 할당되지 않은 경우에도 네트워크 매핑을 지정합니다. 이 경우 매핑이 비어 있을 수 있습니다.
- 4
NetworkMap
CR의 이름을 지정합니다.- 5
- 마이그레이션할 VM이 디스크 이미지로 할당되지 않은 경우에도 스토리지 매핑을 지정합니다. 이 경우 매핑이 비어 있을 수 있습니다.
- 6
StorageMap
CR의 이름을 지정합니다.- 7
id
또는name
매개변수를 사용하여 소스 VM을 지정할 수 있습니다.- 8
- OVA VM UUID를 지정합니다.
- 9
- 선택 사항: VM에 대해 최대 두 개의 후크를 지정할 수 있습니다. 각 후크는 별도의 마이그레이션 단계에서 실행되어야 합니다.
- 10
Hook
CR의 이름을 지정합니다.- 11
- 허용되는 값은 마이그레이션 계획이 시작되기 전에
PreHook
이거나마이그레이션이 완료된 후 postHook
입니다.
Plan
CR을 실행할마이그레이션
매니페스트를 생성합니다.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
$ 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
Copy to Clipboard Copied! 참고컷오버 시간을 지정하는 경우 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: - apiVersion: forklift.konveyor.io/v1beta1 kind: Provider name: <provider_name> uid: <provider_uid> labels: createdForProviderType: openshift createdForResourceType: providers type: Opaque stringData: token: <token> password: <password> insecureSkipVerify: <"true"/"false"> cacert: | <ca_certificate> url: <api_end_point> EOF
$ 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
Copy to Clipboard Copied! - 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> secret: name: <secret> namespace: <namespace> EOF
$ 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
Copy to Clipboard Copied!
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: pod source: name: <network_name> type: pod - destination: name: <network_attachment_definition> namespace: <network_attachment_definition_namespace> 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
$ 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: pod
1 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
Copy to Clipboard Copied!
소스 및 대상 스토리지를 매핑하는
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> source: name: <storage_class> provider: source: name: <source_provider> namespace: <namespace> destination: name: <destination_provider> namespace: <namespace> EOF
$ 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
Copy to Clipboard Copied! - 1
- 허용되는 값은
ReadWriteOnce
및ReadWriteMany
입니다.
선택 사항:
Plan
CR에 지정된 단계에서 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
$ 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
Copy to Clipboard Copied! 다음과 같습니다.
Playbook은 선택적 Base64로 인코딩된 Ansible 플레이북을 나타냅니다.
플레이북을 지정하는 경우
이미지는
hook-runner
여야 합니다.참고기본
hook-runner
이미지를 사용하거나 사용자 정의 이미지를 지정할 수 있습니다. 사용자 지정 이미지를 지정하는 경우 플레이북을 지정할 필요가 없습니다.
마이그레이션을 위한
계획
매니페스트를 생성합니다.cat << EOF | oc apply -f - apiVersion: forklift.konveyor.io/v1beta1 kind: Plan metadata: name: <plan> namespace: <namespace> spec: provider: source: name: <source_provider> namespace: <namespace> destination: name: <destination_provider> namespace: <namespace> map: network: name: <network_map> namespace: <namespace> storage: name: <storage_map> namespace: <namespace> targetNamespace: <target_namespace> vms: - name: <source_vm> namespace: <namespace> hooks: - hook: namespace: <namespace> name: <hook> step: <step> EOF
$ 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
Copy to Clipboard Copied! - 1
Plan
CR의 이름을 지정합니다.- 2
- 계획당 하나의 네트워크 맵과 하나의 스토리지 맵만 지정합니다.
- 3
- 마이그레이션할 VM이 네트워크에 할당되지 않은 경우에도 네트워크 매핑을 지정합니다. 이 경우 매핑이 비어 있을 수 있습니다.
- 4
NetworkMap
CR의 이름을 지정합니다.- 5
- 마이그레이션할 VM이 디스크 이미지로 할당되지 않은 경우에도 스토리지 매핑을 지정합니다. 이 경우 매핑이 비어 있을 수 있습니다.
- 6
StorageMap
CR의 이름을 지정합니다.- 7
- 선택 사항: VM에 대해 최대 두 개의 후크를 지정할 수 있습니다. 각 후크는 별도의 마이그레이션 단계에서 실행되어야 합니다.
- 8
Hook
CR의 이름을 지정합니다.- 9
- 허용되는 값은 마이그레이션 계획이 시작되기 전에
PreHook
이거나마이그레이션이 완료된 후 postHook
입니다.
Plan
CR을 실행할마이그레이션
매니페스트를 생성합니다.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
$ 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
Copy to Clipboard Copied! 참고컷오버 시간을 지정하는 경우 UTC 시간 오프셋과 함께 ISO 8601 형식을 사용합니다(예:
2024-04-04T01:23:45.678+09:00
).