가상 디스크 가져오기

이 문서에서는 가상 머신 (VM) 디스크 이미지를 Google Distributed Cloud (GDC) 에어 갭으로 가져오는 단계를 설명합니다.

골든 디스크 또는 골든 이미지라고도 하는 기존 가상 디스크를 GDC로 가져와 시간을 절약하고 결과 이미지를 사용하여 가상 머신을 만듭니다. 가져오기 도구는 RAW 및 QCOW 이미지 형식을 지원합니다.

이 문서는 VM 이미지를 만드는 플랫폼 관리자 또는 애플리케이션 운영자 그룹의 개발자를 대상으로 합니다. 자세한 내용은 GDC 에어 갭 문서 대상을 참조하세요.

시작하기 전에

계속하기 전에 다음 사항을 확인하세요.

환경 준비

  • gdcloud CLI가 다운로드, 설치, 구성되었습니다. GDC의 모든 CLI 명령어는 gdcloud CLI 또는 kubectl CLI를 사용하며 운영체제 (OS) 환경이 필요합니다.

IAM 역할 요청

가상 디스크를 가져오는 데 필요한 권한을 얻으려면 IAM 프로젝트 관리자에게 프로젝트에 대한 다음 역할을 부여해 달라고 요청하세요.

  • 가상 머신 프로젝트 관리자 (project-vm-admin): 프로젝트 네임스페이스에서 VM을 만들고, 수정하고, 나열하고, 삭제합니다.

  • 프로젝트 뷰어 (project-viewer): 프로젝트 네임스페이스 내의 모든 리소스를 볼 수 있습니다.

  • 가상 머신 이미지 프로젝트 관리자 (project-vm-image-admin): 프로젝트 네임스페이스에서 VM 이미지를 만들고, 나열하고, 삭제합니다.

모든 VM 역할은 VM이 있는 프로젝트의 네임스페이스에 바인딩되어야 합니다. 단계에 따라 액세스 권한을 확인합니다.

가상 디스크 가져오기

워크스테이션에서 직접 가상 디스크 파일을 가져올 수 있습니다. 가져오기 도구는 파일을 프로젝트의 객체 스토리지 버킷에 자동으로 업로드합니다.

가상 디스크를 가져오려면 gdcloud CLI 또는 Virtual Machine Manager API를 사용합니다.

gdcloud

import 명령어는 GDC 제공 이미지에 시큐어 셸 (SSH) 및 원격 데스크톱 프로토콜 (RDP)을 사용하여 인스턴스에 연결하기 위한 사용자 인증 정보를 구성하는 데 필요한 패키지가 있는지 확인합니다. 여기에는 게스트 환경의 패키지가 포함됩니다.

이 명령어는 인스턴스가 GDC에서 제대로 실행되도록 네트워크 시간 프로토콜 (NTP) 및 cloud-init용 패키지도 설치합니다.

  • 부팅 이미지를 만들려면 gdcloud compute images import 명령어를 사용합니다.
gdcloud compute images import IMAGE_NAME \
  --source-file=SOURCE_FILE \
  --os=IMAGE_OS \
  --timeout=TIMEOUT

다음 변수를 바꿉니다.

  • IMAGE_NAME: 대상 이미지의 이름입니다. 이름은 35자(영문 기준) 이하여야 합니다.
  • SOURCE_FILE: 가상 디스크 파일입니다. 이 파일은 워크스테이션의 로컬 파일입니다. 절대 경로 또는 상대 경로를 제공할 수 있습니다.
  • IMAGE_OS: 가져올 디스크의 OS입니다.
  • thought TIMEOUT: 가져오기가 'TIMEOUT'으로 실패하기 전에 지속될 수 있는 시간입니다. 예를 들어 2h를 지정하면 2시간 후에 프로세스가 실패합니다. 기본 제한 시간은 1h입니다.

가상 디스크의 크기와 네트워크 연결 속도에 따라 업로드 작업에 시간이 오래 걸릴 수 있습니다. 디스크 크기에 따라 가져오기 작업을 실행하는 데 수십 분이 걸릴 수 있습니다.

API

API를 통해 가상 디스크를 가져오려면 다음을 수행합니다.

  1. 관리 API 서버에서 VirtualMachineImageImport 커스텀 리소스를 만들어 이미지 가져오기 프로세스를 시작합니다.

    kubectl --kubeconfig MANAGEMENT_API_SERVER \
      -n PROJECT_ID \
      apply -f - <<EOF
    apiVersion: virtualmachine.gdc.goog/v1
    kind: VirtualMachineImageImport
    metadata:
      name: IMAGE_NAME
      namespace: PROJECT_ID
    spec:
      source:
        objectStorage:
          bucketRef:
            name: vm-images-bucket
          objectName: SOURCE_FILE
      imageMetadata:
        name: IMAGE_NAME
        operatingSystem: IMAGE_OS
        minimumDiskSize: DISK_SIZE
    EOF
    

    다음 변수를 바꿉니다.

    • MANAGEMENT_API_SERVER: Management API 서버의 kubeconfig 파일입니다.
    • IMAGE_NAME: 가져올 이미지의 이름입니다. 이름은 35자(영문 기준) 이하여야 합니다.
    • PROJECT_ID: 이미지를 가져올 프로젝트의 프로젝트 ID입니다.
    • SOURCE_FILE: 가상 디스크를 객체 스토리지에 업로드하는 소스 파일의 이름입니다. 이 값은 vm-images-bucket/ 뒤에 있는 객체 스토리지 경로의 섹션입니다.
    • IMAGE_OS: 가져올 디스크의 OS입니다.
    • DISK_SIZE: 이 이미지에서 만드는 디스크의 최소 크기입니다. 원본 이미지의 파일 시스템 크기에 최소 20% 의 버퍼를 사용합니다. 예를 들어 원본 파일 시스템 크기가 10G인 가상 디스크에는 12G 이상을 사용합니다.
  2. VirtualMachineImageImport 커스텀 리소스의 상태를 쿼리하여 가져오기 진행 상황을 모니터링합니다.

    kubectl --kubeconfig MANAGEMENT_API_SERVER \
      -n PROJECT_ID \
      get virtualmachineimageimport.virtualmachine.gdc.goog IMAGE_NAME \
      -o jsonpath='{.status}'
    

리소스 삭제

가져오기 프로세스에는 가상 디스크 파일을 객체 스토리지에 업로드하는 작업이 포함됩니다. gdcloud CLI를 사용하는 경우 가져오기가 실패하더라도 명령어가 완료되면 CLI가 객체를 삭제합니다. 명령어를 중단하거나 API를 사용하여 이미지를 가져오는 경우 가상 디스크 파일은 파일을 수동으로 삭제할 때까지 vm-images-bucket라는 객체 스토리지 버킷에 남아 있을 수 있습니다.

다음 단계