머신 이미지 만들기


머신 이미지를 사용하여 Compute Engine에서 실행되는 VM 인스턴스에 대한 여러 디스크에 관련된 모든 구성, 메타데이터, 권한, 데이터를 저장합니다. 머신 이미지를 만드는 데 사용하는 VM 인스턴스를 소스 VM 인스턴스라고 합니다.

머신 이미지 사용할 때와 사용 방법에 대한 상세 설명은 머신 이미지를 참조하세요.

이 문서에서는 소스 VM 인스턴스에서 머신 이미지를 만드는 단계를 설명합니다.

시작하기 전에

  • 아직 인증을 설정하지 않았다면 설정합니다. 인증은 Google Cloud 서비스 및 API에 액세스하기 위해 ID를 확인하는 프로세스입니다. 로컬 개발 환경에서 코드 또는 샘플을 실행하려면 다음과 같이 Compute Engine에 인증하면 됩니다.

    이 페이지의 샘플 사용 방법에 대한 탭을 선택하세요.

    콘솔

    Google Cloud 콘솔을 사용하여 Google Cloud 서비스 및 API에 액세스할 때는 인증을 설정할 필요가 없습니다.

    gcloud

    1. Google Cloud CLI를 설치한 후 다음 명령어를 실행하여 초기화합니다.

      gcloud init
    2. 기본 리전 및 영역을 설정합니다.

    REST

    로컬 개발 환경에서 이 페이지의 REST API 샘플을 사용하려면 gcloud CLI에 제공한 사용자 인증 정보를 사용합니다.

      Google Cloud CLI를 설치한 후 다음 명령어를 실행하여 초기화합니다.

      gcloud init

제한 및 제약사항

  • 여러 프로젝트 간에 머신 이미지를 공유할 수는 있지만 공유 VPC 네트워크는 지원되지 않습니다.
  • 최대 10분마다 머신 이미지를 만들 수 있습니다. 인스턴스에서 여러 머신 이미지 만들기 요청 버스트를 실행하려면 60분 동안 최대 6개의 요청을 실행할 수 있습니다.
  • Cloud Key Management Service(Cloud KMS) 또는 고객 제공 암호화 키(CSEK)를 사용하여 머신 이미지를 보호할 수 있습니다. 암호화 키는 디스크의 콘텐츠를 보호합니다. 그러나 메타데이터는 보호되지 않습니다.
  • CSEK를 사용하여 머신 이미지를 보호하는 경우 머신 이미지 생성 중에 모든 디스크 데이터의 전체 사본이 저장됩니다. 그 외 모든 시나리오에서는 디스크 데이터가 다른 사본에 저장됩니다.
  • 다음과 같은 소스 VM에서는 머신 이미지를 만들 수 없습니다.

    • 200TB가 넘는 디스크가 연결되어 있습니다.
    • 연결된 디스크가 없습니다.
    • 연결된 하이퍼디스크 익스트림 디스크가 있습니다.

머신 이미지에서 지원하지 않는 인스턴스 및 디스크 속성

VM 인스턴스에서 머신 이미지를 만들거나 머신 이미지에서 VM 인스턴스를 만들 때 다음 인스턴스 및 디스크 속성은 보존되거나 복원되지 않습니다.

  • disks.architecture
  • disks.description
  • disks.labels
  • disks.locked
  • disks.multiWriter
  • disks.onUpdateAction
  • disks.provisionedIops
  • disks.shieldedInstanceInitialState
  • disks.sourceImage
  • disks.sourceImageEncryptionKey
  • disks.sourceInstantSnapshot
  • disks.sourceSnapshot
  • disks.sourceSnapshotEncryptionKey
  • privateIpv6GoogleAccess
  • resourceManagerTags
  • resourcePolicies
  • secure_tag
  • shieldedInstanceConfig

VM에서 머신 이미지 만들기

Google Cloud 콘솔, Google Cloud CLI 또는 REST를 사용하여 머신 이미지를 만들 수 있습니다.

머신 이미지를 만들려면 다음 정보가 필요합니다.

  • 만들려는 머신 이미지의 이름
  • 소스 VM 인스턴스의 이름
  • 소스 VM 인스턴스가 위치한 영역
  • 설명(선택사항)
  • storageLocation(선택사항). 위치를 지정하지 않은 경우 기본 스토리지 위치는 소스 VM 인스턴스의 멀티 리전 Cloud Storage 위치입니다.
  • 암호화 키(선택사항). Google 관리 키, Cloud Key Management Service(Cloud KMS) 키 또는 고객 제공 암호화(CSEK) 키 중 한 가지를 선택할 수 있습니다. 암호화 키가 지정되지 않은 경우 머신 이미지는 Google 관리 키를 사용하여 암호화됩니다.
  • 머신 이미지를 인스턴스 클론 및 스냅샷 생성에 사용하려면 인스턴스에서 머신 이미지를 생성하기 전에 인스턴스에 고유한 OS 및 앱 정보를 삭제합니다. 예를 들어 Windows VM 인스턴스의 경우 GCESysprep을 사용해 시스템 복제를 준비합니다.

콘솔

  1. Google Cloud Console에서 머신 이미지 페이지로 이동합니다.

    머신 이미지로 이동

  2. 머신 이미지 만들기를 클릭합니다.

  3. 머신 이미지의 이름을 지정합니다.

  4. 선택사항: 설명을 입력합니다.

  5. 소스 VM 인스턴스를 선택합니다.

  6. 선택사항: 머신 이미지를 저장할 위치를 지정합니다. 멀티 리전 또는 리전 스토리지 중 하나를 선택하세요. 위치에 관한 상세 설명은 머신 이미지 스토리지 위치를 참조하세요.

  7. 선택사항: 암호화 방법을 선택합니다.

  8. 만들기를 클릭합니다.

gcloud

gcloud compute machine-images create 명령어를 사용하여 인스턴스에서 머신 이미지를 만듭니다.

gcloud compute machine-images create MACHINE_IMAGE_NAME \
    --source-instance=SOURCE_VM_NAME

다음을 바꿉니다.

  • MACHINE_IMAGE_NAME: 만들려는 머신 이미지의 이름
  • SOURCE_VM_NAME: 이미지를 만들 소스 VM 인스턴스의 이름

예시

예를 들어 다음 gcloud 명령어를 사용하여 my-instance라는 소스 인스턴스에서 my-machine-image라는 머신 이미지를 만들 수 있습니다.

gcloud compute machine-images create my-machine-image  \
    --source-instance=my-instance

이 프로세스는 몇 분 정도 소요됩니다. 머신 이미지가 생성되면 다음과 비슷한 출력이 표시됩니다.

Created [https://www.googleapis.com/compute/v1/projects/project-12345/global/machineImages/my-machine-image].
NAME               STATUS
my-machine-image   READY

REST

API에서 machineimages.insert 메서드에 대해 POST 요청을 작성합니다. 요청 본문에 다음 POST 요청을 포함합니다.

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/machineImages

{
  "name": "MACHINE_IMAGE_NAME",
  "sourceInstance": "SOURCE_INSTANCE_URL"
}

다음을 바꿉니다.

  • PROJECT_ID: 프로젝트 ID입니다.
  • MACHINE_IMAGE_NAME: 만들려는 머신 이미지의 이름
  • SOURCE_INSTANCE_URL: 머신 이미지를 만드는 데 사용할 소스 VM 인스턴스의 전체 또는 부분 URL. 예를 들어 myProject라는 프로젝트에 my-instance라는 소스 인스턴스가 있는 경우 유효한 URL은 다음과 같습니다.

    • https://www.googleapis.com/compute/v1/projects/myProject/global/instances/my-instance
    • projects/myProject/global/instances/my-instance
    • global/instances/my-instance

다음 단계