이미지 계열 권장사항

이 문서에서는 Compute Engine에서 이미지 계열을 사용할 때의 권장사항을 설명합니다.

시작하기 전에

공개 이미지 계열

Compute Engine은 자동화 시스템이 최신 이미지를 참조할 수 있도록 하기 위해 이미지 계열을 제공합니다. 관리자는 일련의 이미지를 이미지 계열로 그룹화할 수 있습니다. 이렇게 하면 이미지 사용자는 정확한 이미지 이름이 아닌 이미지 계열 이름만 추적하면 됩니다. 이미지 이름은 고유해야 하므로 이미지 빌드 파이프라인은 애플리케이션 이름, 날짜, 버전과 같은 이미지에 인코딩된 정보를 사용하여 이미지 이름을 만드는 경우가 많습니다(예: my-application-v3-20210101). 자동화 도구는 이미지 이름을 주기적으로 업데이트하는 대신 이미지 계열 이름을 참조할 수 있습니다. 이미지 계열을 사용하면 항상 해당 계열의 최신 이미지(예: my-application)에 액세스할 수 있습니다.

이미지 계열

공개 이미지는 이미지 계열로 그룹화됩니다. 공개 이미지 계열은 항상 각 영역에서 사용할 수 있는 이미지의 최신 버전을 가리킵니다. 새 이미지가 전역으로 출시될 때 이미지 계열의 초기 가용성은 영역에 따라 달라지므로 Google 이미지 업데이트 중에 워크플로의 영역별 내결함성이 향상됩니다.

이미지를 출시하는 동안 이미지 계열에 있는 최신 버전의 이미지는 영역마다 다를 수 있습니다. 예를 들어 debian-cloud 프로젝트의 debian-10 이미지 계열은 항상 최신 Debian 10 이미지를 가리키지만 us-central1-asouthamerica-east1-b 영역에 있는 최신 Debian 10 이미지는 다를 수 있습니다.

Google Cloud CLI를 사용하여 이미지 계열에서 VM을 만들 때 Compute Engine은 요청에 대해 VM 영역에서 사용할 수 있는 최신 이미지를 사용합니다. Google Cloud Console을 사용하여 VM을 만들 때 Compute Engine은 선택한 영역에서 사용할 수 있는 공개 이미지만 표시합니다. 전역적으로 사용 가능한 최신 이미지를 사용하여 VM을 만들려면 gcloud CLI instances create 명령어를 사용하고 --image-family-scope=global을 지정합니다.

사용 가능한 최신 이미지 버전 보기

이미지 계열에서 전역적으로 사용할 수 있는 최신 이미지를 보거나 특정 영역에서 사용할 수 있는 최신 이미지를 볼 수 있습니다.

전역

이미지 계열에서 전역적으로 사용할 수 있는 최신 이미지를 보려면 다음 방법 중 하나를 사용합니다.

gcloud

gcloud compute images describe-from-family 명령어를 사용합니다.

gcloud compute images describe-from-family IMAGE_FAMILY_NAME  \
   --project=IMAGE_PROJECT

다음을 바꿉니다.

  • IMAGE_FAMILY_NAME: 검색할 이미지 계열의 이름입니다. 이미지 계열 이름의 전체 목록은 운영체제 세부정보를 참조하세요.
  • IMAGE_PROJECT: 이미지 프로젝트의 이름입니다. 이미지 프로젝트 이름의 전체 목록은 운영체제 세부정보를 참조하세요.

API

images.getFromFamily 메서드에 대해 GET 요청을 실행합니다.

GET https://compute.googleapis.com/compute/v1/projects/IMAGE_PROJECT/global/images/family/IMAGE_FAMILY_NAME

다음을 바꿉니다.

  • IMAGE_PROJECT: 이미지 프로젝트의 이름입니다. 이미지 프로젝트 이름의 전체 목록은 운영체제 세부정보를 참조하세요.
  • IMAGE_FAMILY_NAME: 검색할 이미지 계열의 이름입니다. 이미지 계열 이름의 전체 목록은 운영체제 세부정보를 참조하세요.

영역당

특정 영역의 이미지 계열에서 사용 가능한 최신 이미지를 보려면 다음 방법 중 하나를 사용합니다.

gcloud

--zone 플래그와 함께 gcloud compute images describe-from-family 명령어를 사용합니다.

gcloud compute images describe-from-family IMAGE_FAMILY_NAME  \
   --project=IMAGE_PROJECT \
   --zone=ZONE

다음을 바꿉니다.

  • IMAGE_FAMILY_NAME: 검색할 이미지 계열의 이름입니다. 이미지 계열 이름의 전체 목록은 운영체제 세부정보를 참조하세요.
  • IMAGE_PROJECT: 이미지 프로젝트의 이름입니다. 이미지 프로젝트 이름의 전체 목록은 운영체제 세부정보를 참조하세요.
  • ZONE: 쿼리할 영역입니다.

API

imageFamilyViews 메서드에 대해 GET 요청을 실행합니다.

GET https://compute.googleapis.com/compute/v1/projects/IMAGE_PROJECT/zones/ZONE/imageFamilyViews/IMAGE_FAMILY_NAME

다음을 바꿉니다.

  • IMAGE_PROJECT: 이미지 프로젝트의 이름입니다. 이미지 프로젝트 이름의 전체 목록은 운영체제 세부정보를 참조하세요.
  • ZONE: 쿼리할 영역입니다.
  • IMAGE_FAMILY_NAME: 검색할 이미지 계열의 이름입니다. 이미지 계열 이름의 전체 목록은 운영체제 세부정보를 참조하세요.

커스텀 이미지 계열

커스텀 이미지 계열로 자체 이미지를 만들 수 있습니다. 이미지 계열은 이미지 계열을 만들 때 사용한 최신 이미지를 가리킵니다. 이미지 계열을 이전 이미지 버전으로 롤백해야 하는 경우 이전 이미지가 지원 중단되지 않았다면 해당 계열에서 최신 이미지를 지원 중단할 수 있습니다. 자세한 내용은 이미지 계열에서 이미지 버전 설정을 참조하세요.

이미지 계열로 이미지를 만들거나 이미지 계열을 새로 만들려면 이미지 생성 단계에서 추가적으로 --family 플래그를 추가해야 합니다. 예를 들면 다음과 같습니다.

gcloud compute images create my-application-v3-20210101 \
    --source-disk my-application-disk-1 \
    --source-disk-zone us-central1-f \
    --family my-application

이 명령어를 실행하면 이미지 my-application을 기반으로 인스턴스를 실행하는 모든 호출이 새로 만들어진 이미지 my-application-v3-20210101을 가리킵니다.

이미지 계열 사용 방법

이미지 계열에서 최신 이미지를 참조할 수 있지만 최신 이미지가 애플리케이션과 호환되지 않을 수 있으므로 프로덕션 환경이 검증되지 않은 경우 문제가 발생할 수 있습니다. 위험을 최소화하는 방식으로 이미지 계열의 이점을 활용하려면 이미지 계열을 프로덕션 환경에 도입하기 전에 해당 계열의 최신 참조 이미지를 테스트하는 것이 좋습니다.

요약하면 다음과 같은 접근 방식을 고려할 수 있습니다.

  • 프로덕션 환경과 별도의 테스트 환경을 설정합니다.
  • 테스트 환경에서 다음 단계를 완료합니다.
    • 소스 이미지 계열에서 커스텀 이미지 계열을 만듭니다.
    • 워크로드에서 커스텀 이미지 계열의 새 이미지에 대한 안정성을 확인합니다.
  • 안정성이 확인되면 커스텀 이미지 계열을 프로덕션 환경으로 이동합니다.

예를 들어 이 프로세스의 절차는 다음과 같습니다.

  1. 테스트 프로젝트의 소스 이미지 계열에서 이미지를 만듭니다. 이 새로운 이미지 소스 계열에는 테스트 환경에서 참조할 나만의 커스텀 이미지 계열도 있어야 합니다. 커스텀 이미지 계열에서 이미지를 만들려면 다음 명령어를 실행하세요.

    gcloud compute images create test-image-name \
    --source-image-project source-project \
    --source-image-family source-image-family \
    --project test-project \
    --family test-image-family
    

    다음을 바꿉니다.

    • test-image-name: 테스트 이미지의 이름입니다.
    • source-project: 소스 이미지 계열이 속한 프로젝트입니다.
    • source-image-family: 소스 이미지 계열의 이름입니다.
    • test-project: 이미지 계열을 추가할 테스트 프로젝트의 이름입니다.
    • test-image-family: 테스트 이미지 계열의 이름입니다.
  2. 커스텀 이미지 계열 test-image-family을 사용하여 워크로드를 테스트할 VM을 만듭니다. VM을 만들려면 다음 명령어를 실행하세요.

    gcloud compute instances create test-instance-name \
    --image-family your-test-image-family \
    --project test-project
    

    다음을 바꿉니다.

    • test-instance-name: 테스트 인스턴스의 이름입니다.
    • test-image-family: 테스트 이미지 계열의 이름입니다.
    • test-project: 테스트 프로젝트의 이름입니다.
  3. 이 이미지가 워크로드에 적합한 것으로 확인되면 이미지를 프로덕션 환경에 복사합니다.

    gcloud compute images create prod-image-name \
    --source-image-family test-image-family \
    --source-image-project test-project \
    --project prod-project \
    --family prod-image-family
    

    다음을 바꿉니다.

    • prod-image-name: 프로덕션 이미지의 이름입니다.
    • test-image-family: 테스트 이미지 계열의 이름입니다.
    • test-project: 테스트 이미지 계열이 속한 프로젝트입니다.
    • prod-project: 프로덕션 환경에 있는 프로젝트의 이름입니다.
    • prod-image-family: 프로덕션 환경에서 사용할 이미지 계열의 이름입니다.