라벨 만들기 및 관리

라벨은 Google Cloud에서 관련 리소스 또는 연결된 리소스를 그룹화하는 데 사용할 수 있는 키-값 쌍입니다. 예를 들어 Compute Engine에서 라벨을 사용하면 프로덕션, 스테이징 또는 개발과 같은 카테고리로 VM을 그룹화하여 각 개발 단계에 속하는 리소스를 검색할 수 있습니다.

리소스에 라벨을 추가한 후 중첩 필터링 기능을 활용하여 라벨을 사용해 리소스를 보다 정확하게 검색할 수 있습니다.

시작하기 전에

라벨이란 무엇인가요?

라벨은 Google Cloud 인스턴스를 체계화하는 데 도움이 되는 키-값 쌍입니다. 각 리소스에 라벨을 연결한 다음 라벨을 기준으로 리소스를 필터링할 수 있습니다. 라벨에 대한 정보는 결제 시스템으로 전달되므로 라벨을 기준으로 청구된 요금을 확인할 수 있습니다.

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

라벨의 일반적인 사용 사례

모든 API 호출의 타임스탬프 또는 개별 값과 같은 고유 라벨을 대량으로 만드는 것은 권장하지 않습니다. 다음은 라벨의 몇 가지 일반적인 사용 사례입니다.

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

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

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

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

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

라벨 요구사항

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

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

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

Compute Engine에서 라벨 사용

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

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

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

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

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

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

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

Console

  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": [{
   "key": "webserver",
   "value": "backend"
   },
   {
   "key": "media",
   "value": "images"
  }]
}

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

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

Console

  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

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

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="
}

라벨 보기

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

Console

  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 요청에만 필요합니다. Cloud Consolegcloud 명령줄 도구에는 디지털 지문이 필요하지 않습니다.

최신 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="
}

라벨 삭제

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

Console

  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="
}

라벨을 사용한 검색 필터링

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

Console

  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 도구의 필터 구문에 대한 자세한 내용은 gcloud topic filters 문서를 참조하세요.

API

리소스를 필터링하려면 URL 인코딩 filter 쿼리 매개변수를 사용하여 다음 리소스의 list 메서드에 대해 GET 요청을 수행합니다.

예를 들어 env:dev 라벨을 기준으로 필터링하려면 쿼리 문자열에 filter=labels.env+eq+dev를 사용해 GET 요청을 수행합니다.

GET https://compute.googleapis.com/compute/v1/projects/myproject/zones/us-central1-a/instances/list?filter=labels.env+eq+dev

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

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

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

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

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

다음 단계