12.4. MTV 마이그레이션 계획에 후크 추가


MCP(Migration Toolkit for Virtualization) 마이그레이션 계획에 후크를 추가하여 마이그레이션 전이나 후에 VM에서 자동화된 작업을 수행할 수 있습니다.

12.4.1. MTV 마이그레이션 계획의 후크 정보

Red Hat OpenShift 웹 콘솔에 있는 MTV CLI 또는 MTV 사용자 인터페이스를 사용하여 MTC(Migration Toolkit for Virtualization) 마이그레이션 계획에 후크를 추가할 수 있습니다.

  • 마이그레이션 전 후크는 공급자에 있는 VM에서 작업을 수행하는 후크입니다. 그러면 마이그레이션을 위한 VM이 준비됩니다.
  • 마이그레이션 후 후크는 OpenShift Virtualization으로 마이그레이션된 VM에서 작업을 수행하는 후크입니다.

12.4.1.1. 기본 후크 이미지

MTV 후크의 기본 후크 이미지는 quay.io/kubev2v/hook-runner 입니다. 이미지는 Ansible Kubernetes 리소스 및 최근 oc 바이너리를 제공하기 위해 python-openshift 가 추가된 Ansible Runner 이미지를 기반으로 합니다.

12.4.1.2. 후크 실행

마이그레이션 후크의 일부로 제공되는 Ansible 플레이북은 후크 컨테이너에 ConfigMap 으로 마운트됩니다. 후크 컨테이너는 선택한 ServiceAccount 를 사용하여 openshift-mtv 네임스페이스의 원하는 클러스터에서 작업으로 실행됩니다.

후크를 추가할 때 후크 CR이 있는 네임스페이스, 후크 이름, 후크가 사전 마이그레이션 후크인지 또는 마이그레이션 후 후크인지를 지정해야 합니다.

중요

후크를 VM에서 실행하려면 VM을 시작하고 SSH를 사용하여 사용할 수 있어야 합니다.

다음 그림에서는 마이그레이션 후크를 사용하는 일반적인 프로세스를 보여줍니다. 특정 절차는 Red Hat OpenShift 웹 콘솔을 사용하여 마이그레이션 계획에 마이그레이션 후크 추가 및 CLI를 사용하여 마이그레이션 계획에 마이그레이션 후크 추가를 참조하십시오.

그림 12.1. 마이그레이션 계획에 후크 추가

프로세스:

  1. Ansible 후크 및 인증 정보를 입력합니다.

    1. UI 또는 CLI를 사용하여 Ansible 후크 이미지를 MTV 컨트롤러에 입력합니다.

      • UI에서 ansible-runner 를 지정하고 후크를 포함하는 playbook.yml 을 입력합니다.
      • CLI에서 후크를 실행하는 플레이북을 지정하는 후크 이미지를 입력합니다.
    2. SSH 데이터와 같이 Pod 내에서 플레이북을 실행하기 위해 추가 데이터가 필요한 경우 VM의 인증 정보가 포함된 보안을 생성합니다. 시크릿은 포드에 마운트되지 않지만 플레이북에서 호출됩니다.

      참고

      이 보안은 소스 공급자의 인증 정보가 포함된 Secret CR과 동일하지 않습니다.

  2. MTV 컨트롤러는 다음을 포함하는 ConfigMap 을 생성합니다.

    • workload.yml: VM에 대한 정보를 포함합니다.
    • playbook.yml - 실행할 원시 문자열 플레이북입니다.
    • plan.yml: Plan CR입니다.

      ConfigMap 에는 VM 이름이 포함되어 있으며 플레이북에 수행할 작업을 지시합니다.

  3. MTV 컨트롤러는 사용자가 지정한 이미지를 시작하는 작업을 생성합니다.

    1. 컨테이너에 ConfigMap 을 마운트합니다.

      Ansible 후크는 사용자가 이전에 입력한 보안을 가져옵니다.

  4. 이 작업은 다음과 같이 마이그레이션 전 후크 또는 마이그레이션 후 후크를 실행합니다.

    1. 마이그레이션 전 후크의 경우 작업은 SSH를 사용하여 소스 공급자의 VM에 로그하고 후크를 실행합니다.
    2. 마이그레이션 후 후크의 경우 작업은 SSH를 사용하여 OpenShift Virtualization의 VM에 로그하고 후크를 실행합니다.

Red Hat OpenShift 웹 콘솔을 사용하여 기존 마이그레이션 계획에 마이그레이션 후크를 추가할 수 있습니다. MCP(Migration Toolkit for Virtualization) CLI에서 하나의 명령을 실행해야 합니다.

예를 들어 후크를 생성하여 VM에 cloud-init 서비스를 설치하고 마이그레이션 전에 파일을 작성할 수 있습니다.

참고

마이그레이션 전 후크 한 개, 마이그레이션 후 후크 한 개 또는 마이그레이션 계획당 하나씩 실행할 수 있습니다.

사전 요구 사항

  • 마이그레이션 계획
  • 복사한 콘텐츠를 복사하여 웹 콘솔에 붙여넣는 마이그레이션 후크 파일
  • 소스 공급자의 시크릿 이 포함된 파일
  • 후크에서 호출하고 작업 중인 네임스페이스에 대한 쓰기 액세스 권한이 있는 Red Hat OpenShift 서비스 계정
  • VM에 설치된 공개 키를 사용하여 마이그레이션하려는 VM용 SSH 액세스
  • Microsoft Server에서만 실행되는 VM: 원격 실행이 활성화됨

추가 리소스

서비스 계정 생성에 대한 지침은 서비스 계정 이해 및 생성을 참조하십시오.

프로세스

  1. Red Hat OpenShift 웹 콘솔에서 마이그레이션 &gt ; 가상화 계획을 클릭한 다음 후크를 추가할 마이그레이션 계획을 클릭합니다.
  2. 후크 를 클릭합니다.
  3. 사전 마이그레이션 후크의 경우 다음 단계를 수행합니다.

    1. 사전 마이그레이션 후크 섹션에서 후크 활성화 스위치를 전환하여 사전 마이그레이션 후크를 활성화합니다.
    2. 후크 실행기 이미지를 입력합니다. spec.playbook 을 지정하는 경우 ansible-runner 가 있는 이미지를 사용해야 합니다.
    3. 후크를 Ansible 플레이북 텍스트 상자에 YAML 파일로 붙여넣습니다.
  4. 마이그레이션 후 후크의 경우 다음 단계를 수행합니다.

    1. Post migration hook 에서 Enable hook switch Enable post migration hook 를 전환합니다.
    2. 후크 실행기 이미지를 입력합니다. spec.playbook 을 지정하는 경우 ansible-runner 가 있는 이미지를 사용해야 합니다.
    3. 후크를 Ansible 플레이북 텍스트 상자에 YAML 파일로 붙여넣습니다.
  5. 탭 상단에서 업데이트 후크 를 클릭합니다.
  6. 터미널에서 다음 명령을 입력하여 각 후크를 Red Hat OpenShift 서비스 계정과 연결합니다.

    $ oc -n openshift-mtv patch hook <name_of_hook> \
      -p '{"spec":{"serviceAccount":"<service_account>"}}' --type merge
    Copy to Clipboard Toggle word wrap

다음 예제 마이그레이션 후크는 SSH를 사용하여 VM에 액세스할 수 있도록 하며 SSH 키를 생성하며 2개의 작업을 실행합니다. 즉, database를 중지하고 텍스트 파일을 생성합니다.

마이그레이션 후크의 예

- name: Main
  hosts: localhost
  vars_files:
    - plan.yml
    - workload.yml
  tasks:
  - k8s_info:
      api_version: v1
      kind: Secret
      name: privkey
      namespace: openshift-mtv
    register: ssh_credentials

  - name: Ensure SSH directory exists
    file:
      path: ~/.ssh
      state: directory
      mode: 0750

  - name: Create SSH key
    copy:
      dest: ~/.ssh/id_rsa
      content: "{{ ssh_credentials.resources[0].data.key | b64decode }}"
      mode: 0600

  - add_host:
      name: "{{ vm.ipaddress }}"  # ALT "{{ vm.guestnetworks[2].ip }}"
      ansible_user: root
      groups: vms

- hosts: vms
  vars_files:
    - plan.yml
    - workload.yml
  tasks:
  - name: Stop MariaDB
    service:
      name: mariadb
      state: stopped

  - name: Create Test File
    copy:
      dest: /premigration.txt
      content: "Migration from {{ provider.source.name }}
                of {{ vm.vm1.vm0.id }} has finished\n"
      mode: 0644
Copy to Clipboard Toggle word wrap

12.4.3. CLI를 사용하여 마이그레이션 계획에 마이그레이션 후크 추가

후크 CR을 사용하여 MTV(Migration Toolkit for Virtualization) CLI를 사용하여 사전 마이그레이션 후크 또는 마이그레이션 후 후크를 기존 마이그레이션 계획에 추가할 수 있습니다.

예를 들어 Hook CR을 생성하여 VM에 cloud-init 서비스를 설치하고 마이그레이션 전에 파일을 작성할 수 있습니다.

참고

마이그레이션 전 후크 한 개, 마이그레이션 후 후크 한 개 또는 마이그레이션 계획당 하나씩 실행할 수 있습니다. 각 후크에는 자체 후크 CR이 필요하지만 Plan CR에는 사용하는 모든 후크에 대한 데이터가 포함되어 있습니다.

참고

k8s 모듈을 사용하여 시크릿 또는 ConfigMap 에 저장된 추가 정보를 검색할 수 있습니다.

사전 요구 사항

  • 마이그레이션 계획
  • 마이그레이션 후크 이미지 또는 후크 이미지가 포함된 플레이북
  • 소스 공급자의 시크릿이 포함된 파일
  • 후크에서 호출하고 작업 중인 네임스페이스에 대한 쓰기 액세스 권한이 있는 Red Hat OpenShift 서비스 계정
  • VM에 설치된 공개 키를 사용하여 마이그레이션하려는 VM용 SSH 액세스
  • Microsoft Server에서만 실행되는 VM: 원격 실행이 활성화됨

추가 리소스

서비스 계정 생성에 대한 지침은 서비스 계정 이해 및 생성을 참조하십시오.

프로세스

  1. 필요한 경우 VM의 SSH 개인 키를 사용하여 보안을 생성합니다.

    1. 기존 키를 선택하거나 키 쌍을 생성합니다.
    2. VM에 공개 키를 설치합니다.
    3. 시크릿의 개인 키를 base64로 인코딩합니다.

      apiVersion: v1
      data:
        key: VGhpcyB3YXMgZ2Vu...
      kind: Secret
      metadata:
        name: ssh-credentials
        namespace: openshift-mtv
      type: Opaque
      Copy to Clipboard Toggle word wrap
  2. 파일을 연결하고 Base64 인코딩을 위해 파이핑하여 플레이북을 인코딩합니다. 예를 들면 다음과 같습니다.

    $ cat playbook.yml | base64 -w0
    Copy to Clipboard Toggle word wrap
  3. 후크 CR을 생성합니다.

    $  cat << EOF | oc apply -f -
    apiVersion: forklift.konveyor.io/v1beta1
    kind: Hook
    metadata:
      name: <hook>
      namespace: <namespace>
    spec:
      image: quay.io/kubev2v/hook-runner
      serviceAccount:<service account> 
    1
    
      playbook: |
        LS0tCi0gbm... 
    2
    
    EOF
    Copy to Clipboard Toggle word wrap
    1
    (선택 사항) Red Hat OpenShift 서비스 계정. 클러스터의 리소스를 조작하려면 serviceAccount 를 제공해야 합니다.
    2
    base64로 인코딩된 Ansible Playbook. 플레이북을 지정하는 경우 이미지에 ansible-runner 를 포함해야 합니다.
    참고

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

    참고

    연결된 플레이북을 디코딩하려면 사용자 지정 출력으로 리소스를 검색하고 base64로 파이프합니다. 예를 들면 다음과 같습니다.

    $ oc get -n konveyor-forklift hook playbook -o \
        go-template='{{ .spec.playbook }}' | base64 -d
    Copy to Clipboard Toggle word wrap
  4. 마이그레이션의 Plan CR에서 각 VM에 대해 CR 끝에 다음 섹션을 추가합니다.

      vms:
        - id: <vm_id>
          hooks:
            - hook:
                namespace: <namespace>
                name: <name_of_hook>
              step: <type_of_hook> 
    1
    Copy to Clipboard Toggle word wrap
    1
    옵션은 마이그레이션 전에 후크를 실행하는 사전 후크이며 후크 후 마이그레이션 후 후크를 실행합니다.
중요

사전 후크를 VM에서 실행하려면 VM을 시작하고 SSH를 통해 사용할 수 있어야 합니다.

다음 예제 마이그레이션 후크는 SSH를 사용하여 VM에 액세스할 수 있도록 하며 SSH 키를 생성하며 2개의 작업을 실행합니다. 즉, database를 중지하고 텍스트 파일을 생성합니다.

마이그레이션 후크의 예

- name: Main
  hosts: localhost
  vars_files:
    - plan.yml
    - workload.yml
  tasks:
  - k8s_info:
      api_version: v1
      kind: Secret
      name: privkey
      namespace: openshift-mtv
    register: ssh_credentials

  - name: Ensure SSH directory exists
    file:
      path: ~/.ssh
      state: directory
      mode: 0750

  - name: Create SSH key
    copy:
      dest: ~/.ssh/id_rsa
      content: "{{ ssh_credentials.resources[0].data.key | b64decode }}"
      mode: 0600

  - add_host:
      name: "{{ vm.ipaddress }}"  # ALT "{{ vm.guestnetworks[2].ip }}"
      ansible_user: root
      groups: vms

- hosts: vms
  vars_files:
    - plan.yml
    - workload.yml
  tasks:
  - name: Stop MariaDB
    service:
      name: mariadb
      state: stopped

  - name: Create Test File
    copy:
      dest: /premigration.txt
      content: "Migration from {{ provider.source.name }}
                of {{ vm.vm1.vm0.id }} has finished\n"
      mode: 0644
Copy to Clipboard Toggle word wrap

맨 위로 이동
Red Hat logoGithubredditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

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

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

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

Red Hat 소개

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

Theme

© 2025 Red Hat