가상 머신(VM) 빌드 이미지

이 페이지는 Compute Engine에서 실행할 제품의 공개 머신 이미지를 만드는 데 도움이 됩니다.

이미지에는 부트 로더와 운영체제가 포함되고, 인스턴스 시작에 필요한 루트 시스템 파일이 포함됩니다. 제품에 사용할 앱과 서비스 집합으로 이미지를 구성할 수 있습니다. 이미지는 고객이 클라우드에서 가상 머신(VM) 인스턴스를 실행하는 데 사용됩니다.

먼저 개발 프로젝트에서 이미지를 만들어 보고, Google 파트너 엔지니어가 이미지를 확인한 후에 이를 공개 프로젝트로 이동하는 것이 좋습니다.

시작하기 전에

  1. Google Cloud SDK를 다운로드합니다.

기본 제품 VM 만들기

Cloud Marketplace용 커스텀 머신 이미지를 만들려면 다음 단계를 완료해야 합니다(다음 섹션에 설명되어 있음).

  • Google에서 지원되는 기본 공개 이미지 중 하나를 사용하여 VM을 만들고 앱 관련 패키지 및 구성을 설치합니다.

    Arm 프로세서 또는 x86 프로세서를 사용하는 이미지를 선택할 수 있습니다. 또한 하나의 VM 제품에 서로 다른 머신 유형을 타겟팅하는 여러 이미지를 포함할 수 있습니다. CPU 플랫폼 및 이를 지원하는 머신 유형에 대한 자세한 내용은 CPU 플랫폼을 참조하세요.

  • 고객에게 지원을 제공하려면 스크립트를 설치하여 앱 사용자 인증 정보를 검색합니다.

라이선스가 허가된 VM 이미지 만들기

  1. gcloud를 사용하여 Google Cloud CLI 기본값을 설정합니다.

    gcloud config set project <project_id>
    gcloud config set compute/zone <zone>
  2. 소프트웨어를 설치하는 데 사용되고 나중에 Cloud Marketplace에서 사용할 이미지로 변환할 기본 인스턴스를 만듭니다. 인스턴스 만들기에 대한 자세한 정보는 인스턴스 만들기 및 시작을 참조하세요.

    gcloud compute instances create ${INSTANCE} --scopes
    https://www.googleapis.com/auth/cloud-platform 
  3. 소프트웨어를 설치하고 맞춤설정합니다. 승인 사용자 인증 정보 생성과 같이 필요한 모든 시작 스크립트를 포함합니다.

    안전한 무작위 비밀번호를 사용하여 승인 사용자 인증 정보를 만들려면 다음 섹션의 승인 사용자 인증 정보 만들기 단계를 따르세요.

    기본 인스턴스를 만들고 맞춤설정했으면 VM 이미지를 만드는 데 필요한 디스크를 준비합니다.

  4. 디스크를 삭제합니다. VM에서 직접 VM 이미지를 만들면 사용자 디렉터리와 SSH 키가 고객의 VM으로 전송되므로 VM 이미지를 만들 때 입력 디스크를 삭제해야 합니다.

    디스크를 삭제하려면 다음을 수행하세요.

    1. Compute Engine VM 인스턴스 메뉴에서 삭제하려는 인스턴스 이름을 클릭한 다음 편집을 클릭합니다.

    2. 아래로 스크롤하여 인스턴스 삭제 시 부팅 디스크 삭제 체크박스를 선택 해제하고 저장을 클릭합니다. 디스크를 사용하여 이미지를 만듭니다.

    3. 디스크는 보존한 상태로 VM을 삭제합니다. 삭제를 확인하라는 메시지가 표시됩니다. 부팅 디스크도 삭제는 선택하지 마세요.

    4. 그런 다음 새 VM 인스턴스를 만들어야 합니다. 관리, 디스크, 네트워킹, SSH 키 옵션을 확장합니다.

    5. 디스크 아래에서 이전 인스턴스의 디스크를 추가 데이터 디스크로 연결합니다. 인스턴스 삭제 시디스크 유지가 선택되었는지 확인합니다.

      이제 인스턴스에 SSH로 연결하고 소프트웨어 설치 프로세스 중에 생성된 모든 홈 디렉토리 또는 임시 파일을 삭제할 수 있습니다. 데이터 디스크에 액세스하려면 먼저 마운트해야 합니다. 디스크 마운트에 대한 자세한 내용은 Persistent Disk 추가 또는 크기 조정을 참조하세요.

    6. 완료되었으면 종료하고 인스턴스를 삭제합니다. 업데이트된 데이터 디스크는 보존합니다. 이제 다음 단계를 수행하여 VM 이미지를 만들 수 있습니다.

  5. 다음 단계에 따라 Producer Portal에서 VM 제품의 라이선스 이름을 가져옵니다.

    1. Google Cloud Console에서 Producer Portal을 엽니다.

      https://console.cloud.google.com/producer-portal?project=YOUR_PROJECT_ID
      

      YOUR_PROJECT_ID를 개발 또는 공개 프로젝트의 ID로 바꿉니다. 먼저 개발 프로젝트에서 이미지를 만들어 보고, Google 파트너 엔지니어가 이미지를 확인한 후에 이를 공개 프로젝트로 이동하는 것이 좋습니다.

    2. 제품 이름을 클릭합니다.

    3. 배포 패키지 섹션으로 이동합니다. VM 라이선스에서 이름을 기록해 둡니다. 이 라이선스 이름은 다음 단계에서 이미지를 만들 때 사용됩니다.

  6. 다음 gcloud 명령어를 실행하여 라이선스 이미지를 만듭니다.

    gcloud compute images create CREATE_IMAGE_NAME \
     --project PUBLIC_PROJECT_NAME \
     --source-disk projects/DEV_PROJECT_NAME/zones/SOURCE_DISK_ZONE/disks/SOURCE_DISK_NAME \
     --licenses LICENSE_NAME \
     --description ADD_DESCRIPTION
    

    다음을 바꿉니다.

    • CREATE_IMAGE_NAME: 이미지의 이름 및 이를 지원하는 CPU 아키텍처입니다. 형식은 who-vmOS-image-architecture-date입니다. 이미지에 지원되는 CPU 아키텍처에 따라 architectureArm 또는 x86_64로 바꿉니다. 제품의 이미지를 업데이트할 때마다 고유한 새 이름을 사용해야 합니다.

    • PUBLIC_PROJECT_NAME: Cloud Marketplace 공개 프로젝트의 프로젝트 ID입니다. 이 프로젝트의 Compute 스토리지 관리자 역할(roles/compute.storageAdmin)을 부여받아야 합니다.

    • LICENSE_NAME: 이전 단계에서 기록해 둔 VM 제품의 라이선스 이름입니다.

    • DEV_PROJECT_NAME: Cloud Marketplace를 개발하고 테스트하기 위해 만든 프로젝트의 프로젝트 ID입니다. 이 프로젝트의 Compute 이미지 사용자 역할(roles/compute.imageUser)이 있어야 합니다.

    • SOURCE_DISK_ZONE: 소스 디스크의 영역

    • SOURCE_DISK_NAME: 소스 디스크의 이름입니다.

    • ADD_DESCRIPTION: 만들려는 이미지에 대한 선택적인 텍스트 설명입니다.

이미지를 공개로 설정

Marketplace 소유 이미지를 사용하지 않는 Terraform이 아닌 제품의 경우 고객이 Compute Engine 인스턴스에 배포할 수 있도록 이미지를 공개로 설정해야 합니다. 이미지를 공개로 설정하려면 Google Cloud 콘솔 또는 Google Cloud CLI를 사용합니다.

콘솔

  1. 공개 프로젝트의 Compute Engine 아래에서 이미지 페이지로 이동합니다.

    이미지 페이지로 이동

  2. 아래 표시된 것처럼 이미지를 선택합니다.

  3. 오른쪽 위에 정보 패널이 표시되지 않으면 정보 패널 표시를 클릭합니다.

  4. 정보 패널의 구성원 추가 필드에 allAuthenticatedUsers를 입력하고 역할 선택 메뉴에서 Compute 이미지 사용자를 선택합니다.

  5. 추가를 클릭하여 이미지를 공개로 설정합니다.

명령줄

Cloud Shell 또는 로컬 머신에서 다음 gcloud 명령어를 사용합니다.

gcloud compute images add-iam-policy-binding IMAGE_NAME --member=allAuthenticatedUsers --role=roles/compute.imageUser

승인 사용자 인증 정보 만들기

제품이 기본 방화벽 규칙이 있는 단일 VM 인스턴스의 간단한 배포인 경우 파트너 포털에서 직접 배포 패키지를 구성할 때 안전한 무작위 비밀번호를 자동으로 포함할 수 있습니다.

대부분의 사용 사례에 권장되는 오픈소스 mpdev 도구를 사용하여 배포 패키지를 만들려는 경우 mpdev를 사용하여 자동으로 안전한 무작위 비밀번호를 포함할 수 있습니다.

승인 사용자 인증 정보를 만드는 단계는 배포 패키지 만들기를 참조하세요.

제품을 배포한 후 만든 비밀번호의 값을 가져오려면 VM 인스턴스 내에서 다음 명령어를 사용합니다.

curl -H "Metadata-Flavor: Google" \
http://metadata/computeMetadata/v1/instance/attributes/PASSWORD_NAME

VM 이미지 테스트

새로 만든 이미지로 VM 인스턴스를 만들고 기능을 확인합니다.

또한 라이선스 ID를 확인하기 위해 인스턴스에 SSH로 이동하고 유효한 라이선스가 연결되었는지 확인합니다.

curl -s -H "Metadata-Flavor: Google" http://metadata.google.internal/computeMetadata/v1/instance/licenses/?recursive=true

Python 2.6 이상이 설치되었는지 확인합니다.

python -V

다음 패키지가 설치되었는지 확인합니다.

gcloud --version
gsutil --version
ssh -V
ps aux | grep sshd
curl -V
ps aux | grep dhcp

사용자 자신 이외의 다른 사용자 디렉터리가 인스턴스에 설치되지 않았는지, 자신 이외의 다른 사용자 디렉터리 및 사용자 인증 정보가 없는지 확인합니다.