가상 어플라이언스에서 머신 이미지 가져오기


머신 이미지를 사용하여 Compute Engine에서 실행되는 VM 인스턴스에 대한 1개 이상의 디스크에 관련된 모든 구성, 메타데이터, 권한, 데이터를 저장합니다. 머신 이미지 사용할 때와 사용 방법에 대한 자세한 내용은 머신 이미지를 참조하세요.

이 문서에서는 가상 어플라이언스에서 머신 이미지를 가져오는 단계를 설명합니다.

시작하기 전에

  • 머신 이미지를 가져오려는 프로젝트에 신뢰할 수 있는 이미지 정책이 정의되어 있으면 projects/compute-image-importprojects/compute-image-tools를 허용되는 게시자 목록에 추가합니다.
  • 다른 프로젝트에서 가상 어플라이언스를 가져오는 경우에는 프로젝트 간 가져오기를 참조하세요.
  • Compute Engine의 가상 어플라이언스 가져오기 가이드에서 소스 VM 및 OVF 파일 요구사항을 검토합니다.
  • 머신 이미지를 가져오기 전에 요구사항을 충족하는 방법을 알아보려면 VM 이미지 가져오기 및 내보내기 기본 요건을 참조하세요.
  • 아직 인증을 설정하지 않았다면 설정합니다. 인증은 Google Cloud 서비스 및 API에 액세스하기 위해 ID를 확인하는 프로세스입니다. 로컬 개발 환경에서 코드 또는 샘플을 실행하려면 다음과 같이 Compute Engine에 인증하면 됩니다.

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

    gcloud

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

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

    REST

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

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

      gcloud init

제한 및 제약사항

  • 여러 프로젝트 간에 머신 이미지를 공유할 수는 있지만 공유 VPC 네트워크는 지원되지 않습니다.
  • VPC 서비스 제어로 보호되는 프로젝트에서는 이 기능이 지원되지 않습니다.
  • 디스크가 200TB가 넘는 소스 VM에서는 머신 이미지를 만들 수 없습니다.

지원되는 운영체제

운영체제 지원은 운영체제 세부정보를 참조하세요.

머신 이미지 가져오기

Google Cloud CLI 또는 REST를 사용하여 가상 어플라이언스에서 머신 이미지를 가져올 수 있습니다.

gcloud

gcloud compute machine-images import 명령어를 사용하여 가상 어플라이언스에서 머신 이미지를 가져옵니다.

gcloud compute machine-images import MACHINE_IMAGE_NAME \
    --source-uri=gs:SOURCE_URI \
    --os=OS

다음을 바꿉니다.

  • MACHINE_IMAGE_NAME: 가져오려는 머신 이미지의 이름입니다.
  • SOURCE_URI: Cloud Storage의 OVA 또는 OVF 파일 경로입니다.
  • OS: OVA 파일의 운영체제입니다. 이 플래그는 기본적으로 선택사항이지만 일부 경우에는 필수사항입니다. 이 플래그를 제공하는 것이 좋습니다.

예시

예를 들어 다음 gcloud 명령어를 사용하여 gs://my-bucket 디렉터리에 저장되어 있고 centos-7을 실행하는 my-ova라는 소스 OVA 파일에서 my-machine-image라는 머신 이미지를 가져올 수 있습니다.

gcloud compute machine-images import my-machine-image  \
    --source-uri=gs://my-bucket/my-ova/ \
    --os=centos-7

REST

  1. 가상 어플라이언스를 Cloud Storage에 업로드합니다.

  2. Cloud Build APIPOST 요청을 전송합니다.

    POST https://cloudbuild.googleapis.com/v1/projects/PROJECT_ID/builds
    {
     "timeout": "7200s",
     "steps":[
       {
         "args":[
           "-machine-image-name=MACHINE_IMAGE_NAME",
           "-ovf-gcs-path=SOURCE_URI",
           "-os=OS",
           "-client-id=api",
           "-timeout=7000s"
         ],
         "name":"gcr.io/compute-image-tools/gce_ovf_import:release",
         "env":[
           "BUILD_ID=$BUILD_ID"
         ]
       }
     ],
     "tags":"gce-ovf-machine-image-import"
    }
    

    다음을 바꿉니다.

    • PROJECT_ID: OVA 파일을 가져올 프로젝트의 프로젝트 ID입니다.
    • MACHINE_IMAGE_NAME: 가져올 머신 이미지의 이름입니다. 예를 들면 my-machine-image입니다.
    • SOURCE_URI: Cloud Storage에 저장된 OVF 패키지가 포함된 디렉터리 또는 OVA 파일의 URI입니다. 예를 들면 gs://my-bucket/my-instance.ova입니다.
    • OS: OVA 파일의 운영체제입니다. 예를 들면 ubuntu-1604입니다. 이 플래그는 기본적으로 선택사항이지만 일부 경우에는 필수사항입니다. 이 플래그를 제공하는 것이 좋습니다.

    제공할 수 있는 추가 args 값은 Compute Engine OVF 가져오기 GitHub 페이지의 선택적 플래그 섹션을 참조하세요.

OVF 재정의로 머신 이미지 가져오기

커스텀 CPU 및 메모리

gcloud

OVF 파일에 지정된 CPU 또는 메모리 구성을 재정의하려면 Google Cloud CLI 단계에 따라 머신 이미지를 가져오고 --custom-cpu--custom-memory 플래그를 지정합니다.

예시

my-machine-image라는 머신 이미지에는 다음 재정의가 OVF 파일 설정에 적용되어 있습니다.

  • 운영체제: Ubuntu 1404
  • CPU: 2 CPUs
  • 메모리: 2048 MB

이러한 재정의로 my-machine-image를 가져오려면 다음 명령어를 실행합니다.

gcloud compute machine-images import my-machine-image \
    --os=ubuntu-1404 --source-uri=gs://my-bucket/Ubuntu.ova \
    --custom-cpu=2 --custom-memory=2048MB

REST

OVF 파일에 지정된 CPU 또는 메모리 구성을 재정의하려면 Compute Engine API 단계에 따라 머신 이미지 가져오기-machine-type 인수 지정을 수행합니다. 이 -machine-type은 사용할 사전 정의된 머신 유형 또는 커스텀 머신 유형을 나타냅니다.

예시

my-machine-image라는 머신 이미지에는 다음 재정의가 OVF 파일 설정에 적용되어 있습니다.

  • 운영체제: Ubuntu 1404
  • CPU: 2 CPUs
  • 메모리: 2048 MB

이러한 재정의로 my-machine-image를 가져오려면 Compute Engine API에 대해 다음 요청을 수행합니다.

POST https://cloudbuild.googleapis.com/v1/projects/PROJECT_ID/builds
{
  "timeout":"7200s",
  "steps":[
    {
      "args":[
        "-machine-image-name=my-machine-image",
        "-ovf-gcs-path=gs://my-bucket/Ubuntu.ova",
        "-os=ubuntu-1404",
        "-machine-type=custom-2-2048",
        "-client-id=api",
        "-timeout=7000s"
      ],
      "name":"gcr.io/compute-image-tools/gce_ovf_import:release",
      "env":[
        "BUILD_ID=$BUILD_ID"
      ]
    }
  ],
  "tags":"gce-ovf-machine-image-import"
}

PROJECT_ID를 프로젝트 ID로 바꿉니다.

커스텀 네트워크

gcloud

커스텀 네트워크를 설정하려면 Google Cloud CLI 단계에 따라 머신 이미지를 가져오고 --network 플래그를 지정합니다. 네트워크가 커스텀 서브넷 모드로 구성된 경우 --subnet--zone 플래그도 지정해야 합니다.

예시

my-machine-image라는 머신 이미지에는 다음 재정의가 OVF 파일 설정에 적용되어 있습니다.

  • 운영체제: Ubuntu 1404
  • 네트워크: custom-vpc-network
  • 서브넷: company-vpc-us-east1-c
  • 영역: us-east1-c

이러한 재정의로 my-machine-image를 가져오려면 다음 예시 명령어를 실행합니다.

gcloud compute machine-images import my-machine-image \
    --os=ubuntu-1404 \
    --source-uri=gs://my-bucket/Ubuntu.ova \
    --network=custom-vpc-network \
    --subnet=company-vpc-us-east1-c \
    --zone=us-east1-c

REST

커스텀 네트워크를 사용하려면 Compute Engine API 단계에 따라 머신 이미지 가져오기-network 인수 지정을 수행합니다. 네트워크가 커스텀 서브넷 모드로 구성되어 있으면 -subnet-zone 인수도 지정해야 합니다.

예시

my-machine-image라는 머신 이미지에는 다음 재정의가 OVF 파일 설정에 적용되어 있습니다.

  • 운영체제: Ubuntu 1404
  • 네트워크: custom-vpc-network
  • 서브넷: company-vpc-us-east1-c
  • 영역: us-central1-c

이러한 재정의로 my-machine-image를 가져오려면 Compute Engine API에 대해 다음 요청을 수행합니다.

POST https://cloudbuild.googleapis.com/v1/projects/PROJECT_ID/builds
{
  "timeout":"7200s",
  "steps":[
    {
      "args":[
        "-machine-image-name=my-machine-image",
        "-ovf-gcs-path=gs://my-bucket/Ubuntu.ova",
        "-os=ubuntu-1404",
        "-zone=us-central1-c",
        "-network=custom-vpc-network",
        "-subnet=company-vpc-us-east1-c",
        "-client-id=api",
        "-timeout=7000s"
      ],
      "name":"gcr.io/compute-image-tools/gce_ovf_import:release",
      "env":[
        "BUILD_ID=$BUsILD_ID"
      ]
    }
  ],
  "tags":"gce-ovf-machine-image-import"
}

PROJECT_ID를 프로젝트 ID로 바꿉니다.

외부 IP를 허용하지 않는 네트워크 내에서 머신 이미지 가져오기

외부 IP 주소를 허용하지 않는 네트워크를 사용하여 머신 이미지를 가져오려면 다음 단계를 수행합니다.

  1. 가상 어플라이언스를 Cloud Storage에 추가합니다.

  2. 이 가져오기 프로세스에서는 머신 이미지의 운영체제에 패키지 관리자를 설치해야 합니다. 이러한 패키지 관리자는 Google Cloud 외부의 패키지 저장소를 요청해야 할 수 있습니다. 이러한 업데이트의 액세스를 허용하려면 Cloud NAT를 구성해야 합니다. 자세한 내용은 Cloud Router를 사용하여 NAT 구성 만들기를 참조하세요.

  3. 비공개 Google 액세스를 구성합니다. 자세한 내용은 비공개 Google 액세스 구성을 참조하세요.

  4. Google Cloud CLI 또는 Cloud Build API를 사용하여 머신 이미지를 가져옵니다.

    가상 어플라이언스에서 머신 이미지를 가져오면 임시 VM이 프로젝트에 생성됩니다. 이러한 임시 VM에 외부 IP 주소가 할당되지 않도록 하려면 추가 플래그 또는 인수를 지정해야 합니다.

    필요한 플래그 또는 인수에 대한 자세한 내용을 보려면 다음 탭을 클릭하세요.

gcloud

--no-address 플래그와 함께 gcloud compute machine-images import 명령어를 사용합니다.

gcloud compute machine-images import MACHINE_IMAGE_NAME \
    --source-uri=SOURCE_URI \
    --os=OS \
    --zone=ZONE \
    --no-address

다음을 바꿉니다.

  • MACHINE_IMAGE_NAME: 가져오려는 머신 이미지의 이름입니다.
  • SOURCE_URI: Cloud Storage에서 OVA 또는 OVF 파일의 URI입니다. 예를 들면 gs://my-bucket/Ubuntu.ova입니다.
  • OS: OVA 파일의 운영체제입니다. 이 플래그는 기본적으로 선택사항이지만 일부 경우에는 필수사항입니다. 이 플래그를 제공하는 것이 좋습니다. 지원되는 값 목록은 gcloud compute machine-images import 명령어의 --os 플래그 옵션을 참조하세요.
  • ZONE: 머신 이미지를 가져올 영역입니다. 비워두면 프로젝트의 기본 영역이 사용됩니다.

REST

Cloud Build API를 사용하고 -no-external-ip 인수를 지정합니다.

 POST https://cloudbuild.googleapis.com/v1/projects/PROJECT_ID/builds
 {
  "timeout":"7200s",
  "steps":[
    {
      "args":[
        "-machine-image-name=MACHINE_IMAGE_NAME",
        "-ovf-gcs-path=SOURCE_URI",
        "-os=OS",
        "-zone=ZONE",
        "-no-external-ip",
        "-client-id=api",
        "-timeout=7000s"
      ],
      "name":"gcr.io/compute-image-tools/gce_ovf_import:release",
      "env":[
        "BUILD_ID=$BUILD_ID"
      ]
    }
  ],
  "tags":"gce-ovf-machine-image-import"
}

다음을 바꿉니다.

  • PROJECT_ID: 머신 이미지를 가져올 프로젝트의 프로젝트 ID입니다.
  • MACHINE_IMAGE_NAME: 가져오려는 머신 이미지의 이름입니다. 예를 들면 my-machine-image입니다.
  • SOURCE_URI: Cloud Storage에 저장된 OVA 파일의 URI입니다. 예를 들면 gs://my-bucket/my-machine.ova입니다.
  • OS: OVA 파일의 운영체제입니다. 예를 들면 ubuntu-1604입니다. 이 플래그는 기본적으로 선택사항이지만 일부 경우에는 필수사항입니다. 이 플래그를 제공하는 것이 좋습니다. 지원되는 값 목록은 gcloud compute instances import 명령어의 --os 플래그 옵션을 참조하세요.
  • ZONE: 머신 이미지를 가져올 영역입니다.

커스텀 서비스 계정을 사용하여 머신 이미지 가져오기

머신 이미지 가져오기 중에 임시 가상 머신(VM) 인스턴스가 프로젝트에 생성됩니다. 이러한 임시 VM의 가져오기 도구는 인증을 받아야 합니다.

서비스 계정은 VM에 연결된 ID입니다. 서비스 계정 액세스 토큰은 VM 메타데이터 서버를 통해 액세스할 수 있으며 VM에서 내보내기 도구를 인증하는 데 사용됩니다.

기본적으로 가져오기 프로세스는 기본 Compute Engine 서비스 계정을 사용합니다. 그러나 프로젝트에서 기본 Compute Engine 서비스 계정이 사용 중지된 경우 또는 커스텀 Compute Engine 서비스 계정을 사용하려는 경우 서비스 계정을 만들고 가져오기 프로세스에 지정해야 합니다.

gcloud

  1. 가상 어플라이언스를 Cloud Storage에 추가합니다.

  2. 서비스 계정을 만들고 최소 역할을 할당합니다. 서비스 계정 만들기에 대한 자세한 내용은 서비스 계정 만들기 및 관리를 참조하세요.

    지정된 Compute Engine 서비스 계정에는 최소한 다음 역할이 할당되어 있어야 합니다.

    • roles/compute.storageAdmin
    • roles/storage.objectViewer

    이러한 최소 역할은 --compute-service-account 플래그에 지정된 서비스 계정에 필요합니다. 자세한 내용은 Compute Engine 서비스 계정에 필요한 역할 부여를 참조하세요.

  3. gcloud compute machine-images import 명령어를 사용하여 가상 어플라이언스에서 머신 이미지를 가져옵니다.

    gcloud compute machine-images import MACHINE_IMAGE_NAME \
        --source-uri=gs:SOURCE_URI \
        --os=OS \
        --compute-service-account=TEMP_SERVICE_ACCOUNT_EMAIL \
        --service-account=SERVICE_ACCOUNT_EMAIL \
        --scopes=SCOPES
    

    다음을 바꿉니다.

    • MACHINE_IMAGE_NAME: 가져오려는 머신 이미지의 이름입니다.
    • SOURCE_URI: Cloud Storage의 OVA 또는 OVF 파일 경로입니다.
    • OS: OVA 파일의 운영체제입니다. 이 플래그는 기본적으로 선택사항이지만 일부 경우에는 필수사항입니다. 이 플래그를 제공하는 것이 좋습니다.
    • TEMP_SERVICE_ACCOUNT_EMAIL: 이전 단계에서 만든 커스텀 서비스 계정과 연결된 이메일 주소입니다. 이 서비스 계정은 임시 VM에서 사용됩니다. 지정하지 않을 경우 VM은 기본 Compute Engine 서비스 계정을 사용합니다.
    • SERVICE_ACCOUNT_EMAIL: 이 머신 이미지에서 만든 VM에 연결할 커스텀 서비스 계정과 연결된 이메일 주소입니다. 이 서비스 계정에는 권한 제한이 없으므로 필요에 따라 이 서비스 계정을 맞춤설정할 수 있습니다. 지정하지 않을 경우 기본 Compute Engine 서비스 계정이 VM에 연결됩니다.
    • SCOPES: --service-account 옵션의 액세스 수준을 지정합니다. 지정하지 않을 경우 기본 범위가 사용됩니다. 자세한 내용은 --scopes 플래그를 참조하세요.

REST

  1. 가상 어플라이언스를 Cloud Storage에 추가합니다.

  2. 서비스 계정을 만들고 최소 역할을 할당합니다. 서비스 계정 만들기에 대한 자세한 내용은 서비스 계정 만들기 및 관리를 참조하세요.

    지정된 Compute Engine 서비스 계정에는 최소한 다음 역할이 할당되어 있어야 합니다.

    • roles/compute.storageAdmin
    • roles/storage.objectViewer

    이러한 최소 역할은 -compute-service-account 인수에 지정된 서비스 계정에 필요합니다. 자세한 내용은 Compute Engine 서비스 계정에 필요한 역할 부여를 참조하세요.

  3. Cloud Build APIPOST 요청을 전송합니다.

    POST https://cloudbuild.googleapis.com/v1/projects/PROJECT_ID/builds
    {
    "timeout":"7200s",
    "steps":[
      {
        "args":[
          "-machine-image-name=MACHINE_IMAGE_NAME",
          "-ovf-gcs-path=SOURCE_URI",
          "-os=OS",
          "-zone=ZONE",
          "-compute-service-account=TEMP_SERVICE_ACCOUNT_EMAIL",
          "-service-account=SERVICE_ACCOUNT_EMAIL",
          "-client-id=api",
          "-timeout=7000s"
        ],
        "name":"gcr.io/compute-image-tools/gce_ovf_import:release",
        "env":[
          "BUILD_ID=$BUILD_ID"
        ]
      }
    ],
    "tags":"gce-ovf-machine-image-import"
    }
    

    다음을 바꿉니다.

    • PROJECT_ID: 머신 이미지를 가져올 프로젝트의 프로젝트 ID입니다.
    • MACHINE_IMAGE_NAME: 가져오려는 머신 이미지의 이름입니다. 예를 들면 my-machine-image입니다.
    • SOURCE_URI: Cloud Storage에 저장된 OVA 파일의 URI입니다. 예를 들면 gs://my-bucket/my-machine.ova입니다.
    • OS: OVA 파일의 운영체제입니다. 예를 들면 ubuntu-1604입니다. 이 플래그는 기본적으로 선택사항이지만 일부 경우에는 필수사항입니다. 이 플래그를 제공하는 것이 좋습니다. 지원되는 값 목록은 gcloud compute instances import 명령어의 --os 플래그 옵션을 참조하세요.
    • ZONE: 머신 이미지를 가져올 영역입니다.
    • TEMP_SERVICE_ACCOUNT_EMAIL: 이전 단계에서 만든 커스텀 서비스 계정과 연결된 이메일 주소입니다. 이 서비스 계정은 임시 VM에서 사용됩니다. 지정하지 않을 경우 VM은 기본 Compute Engine 서비스 계정을 사용합니다.
    • SERVICE_ACCOUNT_EMAIL: 이 머신 이미지에서 만든 VM에 연결할 커스텀 서비스 계정과 연결된 이메일 주소입니다. 이 서비스 계정에는 권한 제한이 없으므로 필요에 따라 이 서비스 계정을 맞춤설정할 수 있습니다. 지정하지 않을 경우 기본 Compute Engine 서비스 계정이 VM에 연결됩니다.
    • SCOPES: --service-account 옵션의 액세스 수준을 지정합니다. 지정하지 않을 경우 기본 범위가 사용됩니다. 자세한 내용은 --scopes 플래그를 참조하세요.

다음 단계