라벨을 사용한 리소스 정리


라벨은 Google Cloud에서 관련 리소스 또는 연결된 리소스를 그룹화하는 데 사용할 수 있는 키-값 쌍입니다. 예를 들어 Compute Engine에서 라벨을 사용하면 프로덕션, 스테이징 또는 개발과 같은 카테고리로 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

라벨이란 무엇인가요?

라벨은 Google Cloud 인스턴스에 할당할 수 있는 키-값 쌍입니다. 이러한 리소스를 구성하고 필요한 세부사항으로 규모에 맞게 비용을 관리하는 데 도움이 됩니다. 각 리소스에 라벨을 연결한 후 이 라벨을 기준으로 리소스를 필터링할 수 있습니다. 라벨에 대한 정보는 청구 요금을 라벨별로 분류할 수 있는 결제 시스템으로 전달됩니다. 기본 제공되는 결제 보고서를 통해 리소스 라벨별로 비용을 필터링하고 그룹화할 수 있습니다. 라벨을 사용하여 결제 데이터 내보내기를 쿼리할 수도 있습니다.

라벨 요구사항

리소스에 적용된 라벨은 다음 요구사항을 충족해야 합니다.

  • 각 리소스에 라벨을 최대 64개까지 사용할 수 있습니다.
  • 각 라벨은 키-값 쌍이어야 합니다.
  • 키는 비워 둘 수 없으며 최소 길이는 1자(영문 기준)이고 최대 길이는 63자(영문 기준)입니다. 값은 비워 둘 수 있으며 최대 길이는 63자(영문 기준)입니다.
  • 키와 값에는 소문자, 숫자, 밑줄, 대시만 사용할 수 있습니다. 모든 문자는 UTF-8 인코딩을 사용해야 하며 국제 문자가 허용됩니다. 키는 소문자나 국제 문자로 시작해야 합니다.
  • 라벨의 키 부분은 단일 리소스에서 고유해야 합니다. 그러나 여러 리소스에 같은 키를 사용할 수 있습니다.

이러한 한도는 각 라벨의 키와 값 및 라벨이 있는 개별 Google Cloud 리소스에 적용됩니다. 한 프로젝트의 모든 리소스에 적용할 수 있는 라벨 수에는 제한이 없습니다.

라벨의 일반적인 사용 사례

다음은 라벨의 몇 가지 일반적인 사용 사례입니다.

  • 팀 또는 비용 센터 라벨: 팀 또는 비용 센터를 기준으로 라벨을 추가하여 서로 다른 팀(예: team:researchteam:analytics)에서 소유하는 인스턴스를 구분할 수 있습니다. 비용 계산이나 예산 책정에 이 유형의 라벨을 사용할 수 있습니다.

  • 구성요소 라벨: component:redis, component:frontend, component:ingest, component:dashboard를 예시로 들 수 있습니다.

  • 환경 또는 단계 라벨: environment:productionenvironment:test를 예로 들 수 있습니다.

  • 상태 라벨: state:active , state:readytodelete, state:archive를 예로 들 수 있습니다.

  • 소유권 라벨: 작업을 담당하는 팀을 식별하는 데 사용됩니다(예: team:shopping-cart).

  • 가상 머신 라벨: 가상 머신에 라벨을 연결할 수 있습니다. 이전에 정의한 가상 머신 태그는 값이 없는 라벨로 나타납니다.

모든 API 호출의 타임스탬프 또는 개별 값과 같은 다수의 고유 라벨을 만들지 않는 것이 좋습니다. 이 접근 방식의 문제는 값이 자주 변경되거나 카탈로그를 복잡하게 하는 키로 인해 리소스를 효과적으로 필터링하고 보고하기 어렵다는 것입니다.

라벨 및 태그

라벨은 리소스에 대해 쿼리 가능한 주석으로 사용될 수 있지만 정책에 조건을 설정하는 데는 사용할 수 없습니다. 태그를 사용하면 정책을 세밀하게 제어하여 리소스에 특정 태그가 있는지 여부에 따라 정책을 조건부로 허용하거나 거부할 수 있습니다. 자세한 내용은 태그 개요를 참조하세요.

Compute Engine에서 라벨 사용

다음 Compute Engine 리소스에 라벨을 적용할 수 있습니다.

  • 가상 머신(VM) 인스턴스
  • 이미지
  • 영구 디스크
  • 영구 디스크 스냅샷

다음과 같은 관련 Google Cloud 구성요소에 라벨을 사용할 수도 있습니다.

예를 들어 다음 라벨을 리소스에 키-값 쌍으로 추가할 수 있습니다.

{
 "labels": {
    "vmrole": "webserver",
    "environment": "production",
    "location": "west",...
    }
 }

라벨을 사용하여 리소스 만들기

새 리소스를 만들 때 리소스에 라벨을 적용할 수 있습니다.

콘솔

  1. 만들려는 리소스 페이지로 이동합니다.

  2. 라벨에서 라벨 추가를 클릭합니다.

  3. 생성 프로세스를 계속합니다.

gcloud

라벨을 추가하려면 create 하위 명령어를 --labels 플래그와 함께 사용합니다. 다음 gcloud 명령어를 사용하여 Compute Engine 리소스에 라벨을 추가할 수 있습니다.

예시

gcloud compute instances create ... \
    --labels webserver=backend,media=images

API

API에서 새 리소스를 추가하기 위한 POST 요청을 하는 동안 요청 본문에 labels 속성을 추가하여 새 리소스에 라벨을 적용합니다.

예를 들어 다음 스니펫은 webserver:backendmedia:images 라벨을 사용하여 VM 인스턴스를 만들기 위해 POST 요청을 수행합니다.

POST https://compute.googleapis.com/compute/v1/projects/myproject/zones/us-central1-f/instances

{
 "name": "myVM",
 "machineType": "zones/us-central1-f/machineTypes/custom-2-15360-ext",
  ...,
 "labels": {
   "webserver": "backend",
   "media": "images"
  }
}

기존 리소스에 라벨 추가 또는 업데이트

Google Cloud 콘솔, gcloud CLI 또는 Compute Engine API를 사용하여 리소스에 라벨을 추가하거나 기존 라벨을 업데이트할 수 있습니다. 전달 규칙의 라벨을 추가하거나 업데이트하려면 gcloud CLI 또는 Compute Engine API를 사용합니다.

콘솔

  1. 라벨을 추가할 각 리소스 페이지로 이동합니다.

    • VM 인스턴스의 경우 VM 인스턴스로 이동합니다.
    • 스냅샷의 경우 스냅샷으로 이동합니다.
    • 이미지의 경우 이미지로 이동합니다.
    • 디스크의 경우 디스크로 이동합니다.
    • 고정 외부 IP 주소의 경우 외부 IP 주소로 이동합니다.
    • VPN 터널의 경우 VPN으로 이동합니다.
  2. 라벨을 지정할 리소스 옆에 있는 체크박스를 선택합니다.

  3. 라벨 열을 펼치려면 정보 패널 표시를 클릭합니다.

  4. 패널에서 라벨을 선택합니다.

  5. 라벨을 추가하려면 라벨 추가를 클릭하고 키-값 쌍을 추가합니다.

  6. 라벨을 업데이트하려면 기존 라벨을 선택하고 값을 수정합니다.

  7. 변경사항을 저장합니다.

gcloud

라벨을 추가하거나 변경하려면 --update-labels 플래그와 함께 update 하위 명령어를 사용합니다. 다음 gcloud 명령어를 사용하여 Compute Engine 리소스의 라벨을 업데이트할 수 있습니다.

예시

gcloud compute disks update example-disk \
    --update-labels backend=webserver,media=images

이미 존재하는 라벨 키를 제공할 경우 Google Cloud CLI가 기존 키를 새 라벨 값으로 업데이트합니다. 새 키를 입력하면 도구에서 라벨 목록에 새 키를 추가합니다.

API

라벨을 추가하거나 업데이트하려면 최신 디지털 지문과 적용할 라벨의 전체 목록을 사용하여 리소스의 setLabels 메서드에 대해 POST 요청을 실행합니다.

메타데이터 및 태그와 마찬가지로 리소스에 유지할 기존 라벨이 있는 경우 추가할 새 라벨과 함께 이러한 라벨을 요청에 포함해야 합니다.

예를 들어 다음 스니펫은 environment:testan-existing-tag:yes 라벨을 설정하기 위해 VM 인스턴스에 POST 요청을 수행합니다.

POST https://compute.googleapis.com/compute/v1/projects/myproject/zones/us-central1-f/instances/example-instance/setLabels

{
 "labels": {
  "environment": "test",
  "an-existing-tag": "yes"
 },
 "labelFingerprint": "42WmSpB8rSM="
}

라벨 보기

Google Cloud 콘솔, gcloud CLI 또는 Compute Engine API를 사용하여 리소스의 라벨을 볼 수 있습니다. 전달 규칙의 라벨을 보려면 gcloud CLI 또는 Compute Engine API를 사용합니다.

콘솔

  1. 리소스 페이지로 이동합니다.

    • VM 인스턴스의 경우 VM 인스턴스로 이동합니다.
    • 스냅샷의 경우 스냅샷으로 이동합니다.
    • 이미지의 경우 이미지로 이동합니다.
    • 디스크의 경우 디스크로 이동합니다.
    • 고정 외부 IP 주소의 경우 외부 IP 주소로 이동합니다.
    • VPN 터널의 경우 VPN으로 이동합니다.
  2. 리소스를 클릭하여 세부정보를 확인합니다.

  3. 라벨을 찾습니다.

gcloud

라벨을 보려면 describe 하위 명령어를 사용합니다. 다음 gcloud 명령어를 사용하여 Compute Engine 리소스의 라벨을 볼 수 있습니다.

예시

gcloud compute disks describe example-disk

출력에는 다음 라벨이 포함됩니다.

...
id: '5047929990219134234'
kind: compute#disk
labelFingerprint: GHZ1Un209U=0
labels:
  environment: dev
  department: finance
...

API

라벨을 검색하려면 다음 리소스에 GET 요청을 수행합니다.

예를 들어 다음 스니펫은 VM 인스턴스의 라벨을 검색하기 위해 GET 요청을 수행합니다.

GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/VM_NAME

다음을 바꿉니다.

  • PROJECT_ID: 프로젝트 ID입니다.
  • ZONE: VM의 영역입니다.
  • VM_NAME: VM의 이름

API 요청의 라벨 디지털 지문 가져오기

API에서 라벨을 업데이트하거나 추가할 때 다른 요청과 충돌하지 않도록 최신 라벨 디지털 지문을 요청과 함께 제공해야 합니다. 디지털 지문은 API 요청에만 필요합니다. Google Cloud 콘솔과 Google Cloud CLI 도구에는 디지털 지문이 필요하지 않습니다.

최신 labelsFingerprint를 가져오려면 다음 리소스에 GET 요청을 실행합니다.

예를 들어 다음 스니펫은 VM 인스턴스의 labelsFingerprint를 가져옵니다.

GET https://compute.googleapis.com/compute/v1/projects/myproject/zones/us-central1-f/instances/example-instance

응답에 labelFingerprint 속성이 포함되어 있습니다.

200 OK

{
 "kind": "compute#instance",
 "id": "4392196237934605253",
 "creationTimestamp": "2015-09-15T14:05:16.475-07:00",
 "zone": "https://content.googleapis.com/compute/v1/projects/myproject/zones/us-central1-f",
 "status": "RUNNING",
 ...
 "labels": {
  "environment": "test"
 },
 "labelFingerprint": "p1ty_9HoBk0="
}

라벨 삭제

Google Cloud 콘솔, gcloud CLI 또는 Compute Engine API를 사용하여 리소스에서 라벨을 삭제할 수 있습니다. 전달 규칙의 라벨을 삭제하려면 gcloud CLI 또는 Compute Engine API를 사용합니다.

콘솔

  1. 라벨을 삭제할 리소스 페이지로 이동합니다.

    • VM 인스턴스의 경우 VM 인스턴스로 이동합니다.
    • 스냅샷의 경우 스냅샷으로 이동합니다.
    • 이미지의 경우 이미지로 이동합니다.
    • 디스크의 경우 디스크로 이동합니다.
    • 고정 외부 IP 주소의 경우 외부 IP 주소로 이동합니다.
    • VPN 터널의 경우 VPN으로 이동합니다.
  2. 라벨을 제거할 리소스 옆에 있는 체크박스를 선택합니다.

  3. 라벨 열을 펼치려면 정보 패널 표시를 클릭합니다.

  4. 라벨을 삭제하려면 삭제를 클릭합니다.

  5. 변경사항을 저장합니다.

gcloud

라벨을 추가하거나 변경하려면 --remove-labels 플래그와 함께 update 하위 명령어를 사용합니다. 다음 gcloud 명령어를 사용하여 Compute Engine 리소스의 라벨을 삭제할 수 있습니다.

예시

gcloud compute disks update example-disk \
    --remove-labels backend,media

API

라벨을 삭제하려면 최신 디지털 지문과 적용할 라벨의 전체 목록을 사용하여 리소스의 setLabels 메서드에 대해 POST 요청을 실행합니다.

최신 labelsFingerprint 및 비어 있는 라벨 목록을 제공하여 모든 라벨을 삭제하거나 유지하려는 라벨 목록을 제공합니다(삭제하려는 라벨은 생략). 예를 들어 다음 스니펫은 VM에서 모든 라벨을 삭제합니다.

POST https://compute.googleapis.com/compute/v1/projects/myproject/zones/us-central1-f/instances/example-instance/setLabels

{
 "labels": { },
 "labelFingerprint": "42WmSpB8rSM="
}

라벨을 사용하여 검색 필터링

Google Cloud 콘솔, gcloud CLI 또는 Compute Engine API를 사용하여 라벨을 기준으로 리소스를 검색하고 결과를 필터링할 수 있습니다. 라벨을 기준으로 전달 규칙을 필터링하려면 gcloud CLI 또는 Compute Engine API를 사용하세요.

콘솔

  1. 필터링된 리소스 목록을 가져올 리소스 페이지로 이동합니다.

    • VM 인스턴스의 경우 VM 인스턴스로 이동합니다.
    • 스냅샷의 경우 스냅샷으로 이동합니다.
    • 이미지의 경우 이미지로 이동합니다.
    • 디스크의 경우 디스크로 이동합니다.
    • 고정 외부 IP 주소의 경우 외부 IP 주소로 이동합니다.
    • VPN 터널의 경우 VPN으로 이동합니다.
  2. 메시지가 표시되면 프로젝트를 선택하고 계속을 클릭합니다.

  3. 검색창에서 키, 값, 키-값 쌍을 입력합니다. 결과에 부분 일치 항목이 포함됩니다.

    예를 들어 env:dev 라벨이 있는 리소스만 표시하려면 다음 중 하나를 입력하면 됩니다.

    • env 키를 입력합니다.
    • dev 값을 입력합니다.
    • env:dev 키-값 쌍을 입력합니다.

gcloud

라벨을 기준으로 필터링하려면 --filter 플래그를 지정하여 다음 리소스의 list 하위 명령어를 사용합니다.

--filter 플래그의 값은 labels.KEY=VALUE 형식이어야 합니다. 예를 들어 env 키 및 dev 값으로 라벨을 필터링하려면 다음 명령어를 실행하면 됩니다.

gcloud compute instances list \
    --filter labels.env=dev

gcloud CLI의 필터 구문에 대한 상세 설명은 gcloud topic filters 문서를 참조하세요.

API

리소스를 필터링하려면 다음 리소스의 list 메서드에 GET 요청을 수행하고 필터 필드를 포함하세요.

예를 들어 env:dev 키-값 쌍이 있는 라벨이 있는 프로젝트 myproject 및 영역 us-central1-a의 모든 VM을 나열하려면 list 요청에서 필터 필드를 labels.env:dev로 설정합니다. 필터 필드를 쿼리 문자열 매개변수로 포함하는 경우 URL로 인코딩된 매개변수 값 filter=labels.env%3Adev를 사용하세요.

GET https://compute.googleapis.com/compute/v1/projects/myproject/zones/us-central1-a/instances?filter=labels.env%3Adev

자세한 내용은 Compute Engine API 참조에서 filter 문서 문서를 참조하세요.

VM 라벨과 네트워크 태그 사이의 관계

과거에는 라벨과 태그가 관련되어 있었습니다. 예를 들어 VM에 webserver:test 라벨을 추가한 경우 Compute Engine에서 자동으로 webserver 태그를 VM에 추가했습니다.

이제 라벨과 태그는 분리되어 있습니다. VM에 라벨을 만드는 경우 Compute Engine에서 VM의 태그를 생성하지 않습니다. VM에 태그를 만들어야 하는 경우 태그를 수동으로 생성해야 합니다.

태그를 만드는 방법을 알아보려면 네트워크 태그를 참조하세요.

다음 단계