5.3. 가상 머신 마이그레이션


MTV CR(사용자 정의 리소스)을 생성하여 CLI(명령줄)에서 VM(가상 머신)을 마이그레이션합니다. CR 및 마이그레이션 절차는 소스 공급자에 따라 다릅니다.

중요

클러스터 범위 CR의 이름을 지정해야 합니다.

네임스페이스 범위 CR의 이름과 네임스페이스를 모두 지정해야 합니다.

마이그레이션 계획이 정의된 것과 다른 OpenShift 클러스터로 마이그레이션하려면 cluster-admin 권한이 있는 OpenShift Virtualization 서비스 계정 토큰이 있어야 합니다.

5.3.1. VMware vSphere 소스 공급자에서 마이그레이션

CLI를 사용하여 VMware vSphere 소스 공급자에서 마이그레이션할 수 있습니다.

프로세스

  1. 소스 공급자 인증 정보에 대한 시크릿 매니페스트를 생성합니다.

    $ 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
    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 ).
  1. 소스 공급자에 대한 공급자 매니페스트를 생성합니다.

    $ 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
    1
    API 끝점의 URL을 지정합니다(예: https://<vCenter_host>/sdk ).
    2
    선택 사항이지만 마이그레이션을 가속화하기 위해 VDDK 이미지를 생성하는 것이 좋습니다. OpenShift 문서에 따라 생성한 VDDK 이미지를 지정합니다.
    3
    옵션: vcenter 또는 esxi.
    4
    공급자 Secret CR의 이름을 지정합니다.
  1. 호스트 매니페스트를 생성합니다.

    $ 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
    1
    VMware vSphere Provider CR의 이름을 지정합니다.
    2
    VMware vSphere 호스트의 Managed Object Reference (moRef)를 지정합니다. moRef를 검색하려면 VMware vSphere moRef 검색을 참조하십시오.
    3
    VMware vSphere 마이그레이션 네트워크의 IP 주소를 지정합니다.
  1. 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 
    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
    1
    허용되는 값은 podmultus 입니다.
    2
    id 또는 name 매개변수를 사용하여 소스 네트워크를 지정할 수 있습니다. id 는 VMware vSphere 네트워크 Managed Object Reference (moRef)를 지정합니다. moRef를 검색하려면 VMware vSphere moRef 검색을 참조하십시오.
    3
    각 추가 OpenShift Virtualization 네트워크에 대한 네트워크 연결 정의를 지정합니다.
    4
    typemultus 인 경우에만 필요합니다. OpenShift Virtualization 네트워크 연결 정의의 네임스페이스를 지정합니다.
  1. 소스 및 대상 스토리지를 매핑하는 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
    Copy to Clipboard
    1
    허용되는 값은 ReadWriteOnceReadWriteMany 입니다.
    2
    VMware vSphere 데이터 저장소 moRef를 지정합니다. 예를 들면 f2737930-b567-451a-9ceb-2887f6207009 입니다. moRef를 검색하려면 VMware vSphere moRef 검색을 참조하십시오.
  2. 선택 사항: 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
    Copy to Clipboard

    다음과 같습니다.

    Playbook은 선택적 Base64로 인코딩된 Ansible 플레이북을 나타냅니다. 플레이북을 지정하는 경우 이미지는 hook-runner 여야 합니다.

    참고

    기본 hook-runner 이미지를 사용하거나 사용자 정의 이미지를 지정할 수 있습니다. 사용자 지정 이미지를 지정하는 경우 플레이북을 지정할 필요가 없습니다.

  1. 마이그레이션을 위한 계획 매니페스트를 생성합니다.

    $ 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
    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 입니다.
  2. 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
    Copy to Clipboard
    참고

    컷오버 시간을 지정하는 경우 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을 사용하지 않도록 하여 데이터 손상이 발생할 수 있습니다.

프로세스

  1. 소스 공급자 인증 정보에 대한 시크릿 매니페스트를 생성합니다.

    $ 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
    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 ).
  1. 소스 공급자에 대한 공급자 매니페스트를 생성합니다.

    $ 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
    1
    API 끝점의 URL을 지정합니다(예: https://<engine_host>/ovirt-engine/api ).
    2
    공급자 Secret CR의 이름을 지정합니다.
  1. 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 
    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
    1
    허용되는 값은 podmultus 입니다.
    2
    id 또는 name 매개변수를 사용하여 소스 네트워크를 지정할 수 있습니다. id 의 경우 RHV 네트워크 UUID(Universal Unique ID)를 지정합니다.
    3
    각 추가 OpenShift Virtualization 네트워크에 대한 네트워크 연결 정의를 지정합니다.
    4
    typemultus 인 경우에만 필요합니다. OpenShift Virtualization 네트워크 연결 정의의 네임스페이스를 지정합니다.
  1. 소스 및 대상 스토리지를 매핑하는 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
    Copy to Clipboard
    1
    허용되는 값은 ReadWriteOnceReadWriteMany 입니다.
    2
    RHV 스토리지 도메인 UUID를 지정합니다. 예를 들면 f2737930-b567-451a-9ceb-2887f6207009 입니다.
  2. 선택 사항: 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
    Copy to Clipboard

    다음과 같습니다.

    Playbook은 선택적 Base64로 인코딩된 Ansible 플레이북을 나타냅니다. 플레이북을 지정하는 경우 이미지는 hook-runner 여야 합니다.

    참고

    기본 hook-runner 이미지를 사용하거나 사용자 정의 이미지를 지정할 수 있습니다. 사용자 지정 이미지를 지정하는 경우 플레이북을 지정할 필요가 없습니다.

  1. 마이그레이션을 위한 계획 매니페스트를 생성합니다.

    $ 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
    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 모델로 설정됩니다.
  2. 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
    Copy to Clipboard
    참고

    컷오버 시간을 지정하는 경우 UTC 시간 오프셋과 함께 ISO 8601 형식을 사용합니다(예: 2024-04-04T01:23:45.678+09:00 ).

5.3.3. OpenStack 소스 공급자에서 마이그레이션

CLI를 사용하여 OpenStack 소스 공급자에서 마이그레이션할 수 있습니다.

프로세스

  1. 소스 공급자 인증 정보에 대한 시크릿 매니페스트를 생성합니다.

    $ 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
    1
    ownerReferences 섹션은 선택 사항입니다.
    2
    OpenStack 사용자를 지정합니다.
    3
    사용자 OpenStack 암호를 지정합니다.
    4
    인증서 확인을 건너뛰려면 "true" 를 지정하고 "false" 를 지정하여 인증서를 확인합니다. 지정하지 않는 경우 기본값은 "false" 입니다. 인증서 확인을 건너뛰면 비보안 마이그레이션이 진행되므로 인증서가 필요하지 않습니다. 비보안 마이그레이션은 전송된 데이터가 안전하지 않은 연결을 통해 전송되고 잠재적으로 민감한 데이터가 노출될 수 있음을 의미합니다.
    5
    이 필드를 설정하지 않고 인증서 확인을 건너뛰면 MTV가 시스템 CA 사용을 시도합니다.
    6
    API 끝점 URL을 지정합니다(예: https://<identity_service>/v3 ).
  1. 소스 공급자에 대한 공급자 매니페스트를 생성합니다.

    $ 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
    1
    API 끝점의 URL을 지정합니다.
    2
    공급자 Secret CR의 이름을 지정합니다.
  1. 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 
    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
    1
    허용되는 값은 podmultus 입니다.
    2
    id 또는 name 매개변수를 사용하여 소스 네트워크를 지정할 수 있습니다. id 는 OpenStack 네트워크 UUID를 지정합니다.
    3
    각 추가 OpenShift Virtualization 네트워크에 대한 네트워크 연결 정의를 지정합니다.
    4
    typemultus 인 경우에만 필요합니다. OpenShift Virtualization 네트워크 연결 정의의 네임스페이스를 지정합니다.
  1. 소스 및 대상 스토리지를 매핑하는 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
    Copy to Clipboard
    1
    허용되는 값은 ReadWriteOnceReadWriteMany 입니다.
    2
    OpenStack volume_type UUID를 지정합니다. 예를 들면 f2737930-b567-451a-9ceb-2887f6207009 입니다.
  2. 선택 사항: 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
    Copy to Clipboard

    다음과 같습니다.

    Playbook은 선택적 Base64로 인코딩된 Ansible 플레이북을 나타냅니다. 플레이북을 지정하는 경우 이미지는 hook-runner 여야 합니다.

    참고

    기본 hook-runner 이미지를 사용하거나 사용자 정의 이미지를 지정할 수 있습니다. 사용자 지정 이미지를 지정하는 경우 플레이북을 지정할 필요가 없습니다.

  1. 마이그레이션을 위한 계획 매니페스트를 생성합니다.

    $ 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
    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 입니다.
  2. 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
    Copy to Clipboard
    참고

    컷오버 시간을 지정하는 경우 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) 파일에서 마이그레이션할 수 있습니다.

프로세스

  1. 소스 공급자 인증 정보에 대한 시크릿 매니페스트를 생성합니다.

    $ 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
    1
    ownerReferences 섹션은 선택 사항입니다.
    2
    여기서: nfs_server 는 공유가 생성된 서버의 IP 또는 호스트 이름이고 nfs_path 는 OVA 파일이 저장된 서버의 경로입니다.
  1. 소스 공급자에 대한 공급자 매니페스트를 생성합니다.

    $ 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
    1
    여기서: nfs_server 는 공유가 생성된 서버의 IP 또는 호스트 이름이고 nfs_path 는 OVA 파일이 저장된 서버의 경로입니다.
    2
    공급자 Secret CR의 이름을 지정합니다.
  1. 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 
    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
    1
    허용되는 값은 podmultus 입니다.
    2
    OVA 네트워크 UUID(Universal Unique ID)를 지정합니다.
    3
    각 추가 OpenShift Virtualization 네트워크에 대한 네트워크 연결 정의를 지정합니다.
    4
    typemultus 인 경우에만 필요합니다. OpenShift Virtualization 네트워크 연결 정의의 네임스페이스를 지정합니다.
  1. 소스 및 대상 스토리지를 매핑하는 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
    Copy to Clipboard
    1
    허용되는 값은 ReadWriteOnceReadWriteMany 입니다.
    2
    OVA의 경우 StorageMap 은 OVA의 모든 디스크가 연결된 단일 스토리지만 대상의 스토리지 클래스에 매핑할 수 있습니다. 이러한 이유로 UI에서 "Dummy storage for source provider <provider_name>"이라고 합니다. YAML에서 따옴표 없이 위의 문구를 작성하고 <provider_name>을 공급자의 실제 이름으로 바꿉니다.
  2. 선택 사항: 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
    Copy to Clipboard

    다음과 같습니다.

    Playbook은 선택적 Base64로 인코딩된 Ansible 플레이북을 나타냅니다. 플레이북을 지정하는 경우 이미지는 hook-runner 여야 합니다.

    참고

    기본 hook-runner 이미지를 사용하거나 사용자 정의 이미지를 지정할 수 있습니다. 사용자 지정 이미지를 지정하는 경우 플레이북을 지정할 필요가 없습니다.

  1. 마이그레이션을 위한 계획 매니페스트를 생성합니다.

    $ 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
    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 입니다.
  2. 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
    Copy to Clipboard
    참고

    컷오버 시간을 지정하는 경우 UTC 시간 오프셋과 함께 ISO 8601 형식을 사용합니다(예: 2024-04-04T01:23:45.678+09:00 ).

5.3.5. Red Hat OpenShift Virtualization 소스 공급자에서 마이그레이션

Red Hat OpenShift Virtualization 공급자를 소스 공급자 또는 대상 공급자로 사용할 수 있습니다.

프로세스

  1. 소스 공급자 인증 정보에 대한 시크릿 매니페스트를 생성합니다.

    $ 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
    1
    ownerReferences 섹션은 선택 사항입니다.
    2
    cluster-admin 권한이 있는 서비스 계정의 토큰을 지정합니다. 토큰과 URL 이 모두 비어 있으면 로컬 OpenShift 클러스터가 사용됩니다.
    3
    사용자 암호를 지정합니다.
    4
    인증서 확인을 건너뛰려면 "true" 를 지정하고 "false" 를 지정하여 인증서를 확인합니다. 지정하지 않는 경우 기본값은 "false" 입니다. 인증서 확인을 건너뛰면 비보안 마이그레이션이 진행되므로 인증서가 필요하지 않습니다. 비보안 마이그레이션은 전송된 데이터가 안전하지 않은 연결을 통해 전송되고 잠재적으로 민감한 데이터가 노출될 수 있음을 의미합니다.
    5
    이 필드를 설정하지 않고 인증서 확인을 건너뛰면 MTV가 시스템 CA 사용을 시도합니다.
    6
    API 서버의 끝점 URL을 지정합니다.
  1. 소스 공급자에 대한 공급자 매니페스트를 생성합니다.

    $ 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
    1
    API 서버의 끝점 URL을 지정합니다.
    2
    공급자 Secret CR의 이름을 지정합니다.
  1. 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 
    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
    1
    허용되는 값은 podmultus 입니다.
    2
    각 추가 OpenShift Virtualization 네트워크에 대한 네트워크 연결 정의를 지정합니다. 네임스페이스 속성을 사용하거나 다음과 같이 빌드된 이름으로 네임스페이스 를 지정합니다. < network_namespace>/<network_name>.
    3
    typemultus 인 경우에만 필요합니다. OpenShift Virtualization 네트워크 연결 정의의 네임스페이스를 지정합니다.
  1. 소스 및 대상 스토리지를 매핑하는 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
    Copy to Clipboard
    1
    허용되는 값은 ReadWriteOnceReadWriteMany 입니다.
  2. 선택 사항: 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
    Copy to Clipboard

    다음과 같습니다.

    Playbook은 선택적 Base64로 인코딩된 Ansible 플레이북을 나타냅니다. 플레이북을 지정하는 경우 이미지는 hook-runner 여야 합니다.

    참고

    기본 hook-runner 이미지를 사용하거나 사용자 정의 이미지를 지정할 수 있습니다. 사용자 지정 이미지를 지정하는 경우 플레이북을 지정할 필요가 없습니다.

  1. 마이그레이션을 위한 계획 매니페스트를 생성합니다.

    $ 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
    1
    Plan CR의 이름을 지정합니다.
    2
    계획당 하나의 네트워크 맵과 하나의 스토리지 맵만 지정합니다.
    3
    마이그레이션할 VM이 네트워크에 할당되지 않은 경우에도 네트워크 매핑을 지정합니다. 이 경우 매핑이 비어 있을 수 있습니다.
    4
    NetworkMap CR의 이름을 지정합니다.
    5
    마이그레이션할 VM이 디스크 이미지로 할당되지 않은 경우에도 스토리지 매핑을 지정합니다. 이 경우 매핑이 비어 있을 수 있습니다.
    6
    StorageMap CR의 이름을 지정합니다.
    7
    선택 사항: VM에 대해 최대 두 개의 후크를 지정할 수 있습니다. 각 후크는 별도의 마이그레이션 단계에서 실행되어야 합니다.
    8
    Hook CR의 이름을 지정합니다.
    9
    허용되는 값은 마이그레이션 계획이 시작되기 전에 PreHook 이거나 마이그레이션이 완료된 후 postHook 입니다.
  2. 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
    Copy to Clipboard
    참고

    컷오버 시간을 지정하는 경우 UTC 시간 오프셋과 함께 ISO 8601 형식을 사용합니다(예: 2024-04-04T01:23:45.678+09:00 ).

맨 위로 이동
Red Hat logoGithubredditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

Red Hat을 사용하는 고객은 신뢰할 수 있는 콘텐츠가 포함된 제품과 서비스를 통해 혁신하고 목표를 달성할 수 있습니다. 최신 업데이트를 확인하세요.

보다 포괄적 수용을 위한 오픈 소스 용어 교체

Red Hat은 코드, 문서, 웹 속성에서 문제가 있는 언어를 교체하기 위해 최선을 다하고 있습니다. 자세한 내용은 다음을 참조하세요.Red Hat 블로그.

Red Hat 소개

Red Hat은 기업이 핵심 데이터 센터에서 네트워크 에지에 이르기까지 플랫폼과 환경 전반에서 더 쉽게 작업할 수 있도록 강화된 솔루션을 제공합니다.

Theme

© 2025 Red Hat