커스텀 이미지 만들기 (original) (raw)

Linux

소스 디스크, 이미지, 스냅샷 또는 Cloud Storage에 저장된 이미지에서 커스텀 이미지를 만들고 이 이미지를 사용하여 가상 머신(VM) 인스턴스를 만들 수 있습니다. 커스텀 이미지는 영구 부팅 디스크 또는 구체적인 이미지를 만들어 특정 상태로 수정하고 VM을 만들기 위해 이 상태를 저장해야 하는 상황에 적합합니다.

또는 가상 디스크 가져오기 도구를 사용하여 부팅 디스크 이미지를 기존 시스템에서 Compute Engine으로 가져와 커스텀 이미지 목록에 추가할 수 있습니다.

시작하기 전에

Console

When you use the Google Cloud console to access Google Cloud services and APIs, you don't need to set up authentication.

gcloud

  1. Google Cloud CLI를 설치합니다. 설치 후 다음 명령어를 실행하여 Google Cloud CLI를 초기화합니다.
    gcloud init
    외부 ID 공급업체(IdP)를 사용하는 경우 먼저 제휴 ID로 gcloud CLI에 로그인해야 합니다.
  2. Set a default region and zone.

Go

로컬 개발 환경에서 이 페이지의 Go 샘플을 사용하려면 gcloud CLI를 설치하고 초기화한 후 사용자 인증 정보로 애플리케이션 기본 사용자 인증 정보를 설정합니다.
Google Cloud CLI를 설치합니다.
외부 ID 공급업체(IdP)를 사용하는 경우 먼저 제휴 ID로 gcloud CLI에 로그인해야 합니다.
If you're using a local shell, then create local authentication credentials for your user account:
gcloud auth application-default login
You don't need to do this if you're using Cloud Shell.
If an authentication error is returned, and you are using an external identity provider (IdP), confirm that you have signed in to the gcloud CLI with your federated identity.
자세한 내용은 다음을 참조하세요: Set up authentication for a local development environment.

자바

로컬 개발 환경에서 이 페이지의 Java 샘플을 사용하려면 gcloud CLI를 설치하고 초기화한 후 사용자 인증 정보로 애플리케이션 기본 사용자 인증 정보를 설정합니다.
Google Cloud CLI를 설치합니다.
외부 ID 공급업체(IdP)를 사용하는 경우 먼저 제휴 ID로 gcloud CLI에 로그인해야 합니다.
If you're using a local shell, then create local authentication credentials for your user account:
gcloud auth application-default login
You don't need to do this if you're using Cloud Shell.
If an authentication error is returned, and you are using an external identity provider (IdP), confirm that you have signed in to the gcloud CLI with your federated identity.
자세한 내용은 다음을 참조하세요: Set up authentication for a local development environment.

Node.js

로컬 개발 환경에서 이 페이지의 Node.js 샘플을 사용하려면 gcloud CLI를 설치하고 초기화한 후 사용자 인증 정보로 애플리케이션 기본 사용자 인증 정보를 설정합니다.
Google Cloud CLI를 설치합니다.
외부 ID 공급업체(IdP)를 사용하는 경우 먼저 제휴 ID로 gcloud CLI에 로그인해야 합니다.
If you're using a local shell, then create local authentication credentials for your user account:
gcloud auth application-default login
You don't need to do this if you're using Cloud Shell.
If an authentication error is returned, and you are using an external identity provider (IdP), confirm that you have signed in to the gcloud CLI with your federated identity.
자세한 내용은 다음을 참조하세요: Set up authentication for a local development environment.

Python

로컬 개발 환경에서 이 페이지의 Python 샘플을 사용하려면 gcloud CLI를 설치하고 초기화한 후 사용자 인증 정보로 애플리케이션 기본 사용자 인증 정보를 설정합니다.
Google Cloud CLI를 설치합니다.
외부 ID 공급업체(IdP)를 사용하는 경우 먼저 제휴 ID로 gcloud CLI에 로그인해야 합니다.
If you're using a local shell, then create local authentication credentials for your user account:
gcloud auth application-default login
You don't need to do this if you're using Cloud Shell.
If an authentication error is returned, and you are using an external identity provider (IdP), confirm that you have signed in to the gcloud CLI with your federated identity.
자세한 내용은 다음을 참조하세요: Set up authentication for a local development environment.

REST

로컬 개발 환경에서 이 페이지의 REST API 샘플을 사용하려면 gcloud CLI에 제공한 사용자 인증 정보를 사용합니다.
Google Cloud CLI를 설치합니다.
외부 ID 공급업체(IdP)를 사용하는 경우 먼저 제휴 ID로 gcloud CLI에 로그인해야 합니다.
자세한 내용은 Google Cloud 인증 문서의 REST 사용을 위한 인증을 참조하세요.

커스텀 이미지 만들기

이 섹션에서는 Linux VM에서 커스텀 이미지를 만드는 방법을 설명합니다. Windows 이미지를 만드는 방법에 대한 상세 설명은 Windows 이미지 만들기를 참조하세요.

이미지 저장 위치 선택

커스텀 이미지를 만들 때 이중 리전 위치를 제외하고 이미지의 Cloud Storage 위치를 지정할 수 있습니다. 이미지 스토리지 위치를 지정하면 데이터 위치에 대한 규제 및 규정 준수 요구사항뿐 아니라 여러 리전 간에 데이터 중복성을 제공함으로써 고가용성 요건을 충족할 수 있습니다. Cloud Storage에 저장된 이미지를 생성, 수정, 삭제하려면 roles/compute.storageAdmin이 있어야 합니다.

스토리지 위치 기능은 선택사항입니다. 위치를 선택하지 않으면 Compute Engine은 이미지 소스와 가장 가까운 멀티 리전에 이미지를 저장합니다. 예를 들어 us-central1에 있는 소스 디스크에서 이미지를 만들 때 커스텀 이미지의 위치를 지정하지 않으면 Compute Engine은 us 멀티 리전에 이미지는 저장합니다.

VM을 만드는 리전에서 이미지를 사용할 수 없는 경우 Compute Engine은 VM을 처음 만들 때 해당 리전에 이미지를 캐시합니다.

이미지가 저장된 위치를 확인하려면 gcloud compute에서 images describe 명령어를 사용하세요.

gcloud compute images describe IMAGE_NAME
--project=PROJECT_ID

다음을 바꿉니다.

이 기능이 출시되기 이전의 모든 기존 이미지는 현재 위치에 그대로 남아 있으며, 변경 사항은 다른 모든 이미지의 이미지 위치를 볼 수 있다는 점뿐입니다. 기존 이미지를 이동하려면 새 위치에 이미지를 다시 만들어야 합니다.

이미지를 위한 VM 준비

실행 중인 VM에 연결되어 있는 경우에도 디스크에서 이미지를 만들 수 있습니다. 그러나 이미지의 안정성을 높이려면 이미지를 쉽게 캡처할 수 있는 상태로 VM을 전환해야 합니다. 이 섹션에서는 이미지의 부팅 디스크를 준비하는 방법을 설명합니다.

영구 디스크에 데이터 쓰기 최소화

디스크 쓰기를 줄이려면 다음 프로세스 중 하나를 사용합니다.

디스크의 자동 삭제 옵션 중지

기본적으로 자동 삭제 옵션은 부팅 디스크에 사용 설정되어 있습니다. 디스크에서 이미지를 만들기 전에 자동 삭제를 중지하여 VM이 삭제될 때 디스크가 자동으로 삭제되지 않도록 합니다.

디스크의 자동 삭제를 중지하려면 다음 방법 중 하나를 사용하세요.

VM을 준비한 후 이미지를 만듭니다.

이미지 만들기

다음 소스에서 디스크 이미지를 만들 수 있습니다.

10분마다 한 번씩 디스크 이미지를 만들 수 있습니다. 디스크 이미지 만들기 요청 버스트를 실행하려면 60분 동안 최대 6개의 요청을 실행할 수 있습니다. 자세한 내용은 스냅샷 빈도 제한을 참조하세요.

콘솔

  1. Google Cloud 콘솔에서 이미지 만들기 페이지로 이동합니다.
    이미지 만들기로 이동
  2. 이미지의 이름을 지정합니다.
  3. 이미지를 만들 소스를 지정합니다. 소스는 영구 디스크, 스냅샷, 다른 이미지, Cloud Storage의 disk.raw 파일일 수 있습니다.
  4. 실행 중인 VM에 연결된 디스크에서 이미지를 만드는 경우 인스턴스 계속 실행을 선택하여 VM이 실행되는 동안 이미지를 만들 것임을 확인합니다. 이미지를 만들기 전에 VM을 준비할 수 있습니다.
  5. 소스 디스크 위치 기준(기본값) 드롭다운 목록에서 이미지를 저장할 위치를 지정합니다. 예를 들어 us를 지정하여 us 멀티 리전에 이미지를 저장하거나 us-central1을 지정하여 us-central1 리전에 저장합니다. 선택하지 않으면 Compute Engine은 이미지의 소스 위치와 가장 가까운 멀티 리전에 이미지를 저장합니다.
  6. 선택사항: 이미지 속성을 지정합니다.
    • 계열: 새 이미지가 속할 이미지 계열입니다.
    • 설명: 커스텀 이미지에 대한 설명입니다.
    • 라벨: 리소스를 그룹화하는 라벨입니다.
  7. 암호화 키를 지정합니다. Google-owned and Google-managed encryption key, Cloud Key Management Service(Cloud KMS) 키 또는 고객 제공 암호화(CSEK) 키 중에서 선택할 수 있습니다. 암호화 키를 지정하지 않으면 이미지는 Google-owned and Google-managed encryption key를 통해 암호화됩니다.
  8. 만들기를 클릭하여 이미지를 만듭니다.

gcloud

Google Cloud CLI에서 gcloud compute images create 명령어를 사용하여 커스텀 이미지를 만듭니다.

소스 디스크에서 이미지 만들기:

--force 플래그는 실행 중인 인스턴스에서 이미지를 만들 수 있는 선택적 플래그입니다. 기본적으로는 실행 중인 인스턴스에서 이미지를 만들 수 없습니다. 인스턴스가 실행되는 동안 이미지를 만들려고 하는 경우에만 이 플래그를 지정하세요.

gcloud compute images create IMAGE_NAME
--source-disk=SOURCE_DISK
--source-disk-zone=ZONE
[--family=IMAGE_FAMILY]
[--storage-location=LOCATION]
[--force]

다음을 바꿉니다.

소스 이미지에서 이미지 만들기:

gcloud compute images create IMAGE_NAME
--source-image=SOURCE_IMAGE
[--source-image-project=IMAGE_PROJECT]
[--family=IMAGE_FAMILY]
[--storage-location=LOCATION]

다음을 바꿉니다.

스냅샷에서 이미지 만들기:

gcloud compute images create IMAGE_NAME
--source-snapshot=SOURCE_SNAPSHOT
[--storage-location=LOCATION]

다음을 바꿉니다.

이미지 위치 보기:

gcloud compute images describe 명령어를 사용하여 이미지 위치를 봅니다.

gcloud compute images describe IMAGE_NAME

IMAGE_NAME을 검토할 이미지의 이름으로 바꿉니다.

Go

Go

이 샘플을 사용해 보기 전에 Compute Engine 빠른 시작: 클라이언트 라이브러리 사용의 Go 설정 안내를 따르세요. 자세한 내용은 Compute Engine Go API 참고 문서를 확인하세요.

Compute Engine에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 로컬 개발 환경의 인증 설정을 참조하세요.

자바

Java

이 샘플을 사용해 보기 전에 Compute Engine 빠른 시작: 클라이언트 라이브러리 사용의 Java 설정 안내를 따르세요. 자세한 내용은 Compute Engine Java API 참고 문서를 확인하세요.

Compute Engine에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 로컬 개발 환경의 인증 설정을 참조하세요.

Python

Python

이 샘플을 사용해 보기 전에 Compute Engine 빠른 시작: 클라이언트 라이브러리 사용의 Python 설정 안내를 따르세요. 자세한 내용은 Compute Engine Python API 참고 문서를 확인하세요.

Compute Engine에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 로컬 개발 환경의 인증 설정을 참조하세요.

REST

images().insert 메서드에 대해 POST 요청을 실행합니다. 이때 요청 본문의 URL은 이미지를 만들 소스 객체를 가리킵니다. 자체 프로젝트 ID와 리소스 이름을 사용하여 리소스에 URL을 지정합니다.

영구 디스크에서 이미지 만들기:

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

{ "name": "IMAGE_NAME", "sourceDisk": "/zones/ZONE/disks/SOURCE_DISK", ("storageLocations": "LOCATION",) ("forceCreate": "TRUE") }

다음을 바꿉니다.

선택사항인 forceCreate 파라미터를 사용하면 실행 중인 VM에서 이미지를 만들 수 있습니다. 실행 중인 VM에서 이미지를 만들려고 하는 경우에만 TRUE로 지정하세요. forceCreate 기본 설정은 FALSE입니다.

다른 이미지에서 이미지 만들기:

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

{ "name": "IMAGE_NAME", "sourceImage": "/global/images/SOURCE_IMAGE", ("storageLocations": "LOCATION") }

다음을 바꿉니다.

스냅샷에서 이미지 만들기:

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/images { "name": "IMAGE_NAME", "sourceSnapshot": "(/SOURCE_PROJECT_ID)/global/snapshots/SOURCE_SNAPSHOT", ("storageLocations": "LOCATION") }

다음을 바꿉니다.

이미지 추가에 대한 자세한 내용은 이미지 참조를 참조하세요.

커스텀 이미지를 만든 후에는 프로젝트 간에 공유할 수 있습니다. 다른 프로젝트의 사용자가 커스텀 이미지를 사용하도록 허용하면 해당 사용자는 요청에 이미지 프로젝트를 지정하여 이러한 이미지에 액세스할 수 있습니다.

게스트 운영체제 기능 사용 설정

게스트 운영체제(OS) 기능을 사용하여 커스텀 이미지에서 다음 네트워킹, 보안, 스토리지, OS 옵션을 구성합니다. 이렇게 기능이 구성된 커스텀 이미지는 부팅 디스크로 사용됩니다.

gcloud

기존 커스텀 이미지에서 새 커스텀 이미지를 만들려면 --guest-os-features 플래그와 함께 gcloud compute images create 명령어를 사용하세요.

gcloud compute images create IMAGE_NAME
--source-image=SOURCE_IMAGE
[--source-image-project=IMAGE_PROJECT]
--guest-os-features="FEATURES,..."
[--storage-location=LOCATION]

다음을 바꿉니다.

REST

기존 커스텀 이미지에서 새 커스텀 이미지를 만들려면 guestOsFeatures 플래그와 함께 images().insert 메서드를 사용하세요.

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

{ "name": "IMAGE_NAME", "sourceImage": "(projects/IMAGE_PROJECT)/global/images/SOURCE_IMAGE", ("storageLocations": "LOCATION",) "guestOsFeatures": [ { "type": "FEATURES" } ] }

다음을 바꿉니다.

UEFI 변수에 민감한 정보 포함하지 않기

통합 확장 가능 펌웨어 인터페이스(UEFI) 변수는 부팅 시간 동안 UEFI 펌웨어에서 VM 운영체제를 부팅하는 데 사용하는 키-값 쌍 변수입니다. 변수가 하드웨어 칩에 저장되는 물리적 머신과 달리 Compute Engine은 이러한 변수 스토리지를 가상화합니다. 따라서 많은 운영체제에서 모든 애플리케이션과 사용자가 이러한 변수에 도달하여 이 정보에 액세스할 수 있습니다.

이러한 이유로 인해 비밀번호 또는 비공개 키와 같은 민감한 정보나 개인 식별 정보를 UEFI 변수에 쓰거나 저장하지 않는 것이 좋습니다.

Arm 이미지 고려사항

Google은 Arm CPU 플랫폼에서 실행되는 A4X, C4A, Tau T2A 머신 시리즈를 제공합니다. 이러한 머신 시리즈 중 하나로 VM을 시작한 후 소스 VM을 사용하여 Arm 이미지를 만들 수 있습니다. 커스텀 Arm 이미지를 만드는 프로세스는 x86 이미지를 만드는 프로세스와 동일합니다.

사용자가 Arm 이미지와 x86 이미지를 구별할 수 있도록 Arm 이미지에는 ARM64로 설정된 architecture 필드가 있습니다. 이 필드에 가능한 값은 다음과 같습니다.

그러면 이미지 사용자는 이 필드에서 필터링하여 x86 또는 Arm 기반 이미지를 찾을 수 있습니다.

다음 단계