デプロイにラベルを追加する

ラベルは、関連する、または、互いに関連付けられたデプロイを整理するための手軽な方法です。たとえば、よく使用される方法としては、本番環境用、ステージング用、開発用それぞれのデプロイを個別にラベル付けして、各ステージに属しているデプロイを必要に応じて簡単に検索できるようにします。

ラベルとは

ラベルとは、Google Cloud デプロイに割り当てることができる Key-Value ペアのことです。ラベルはこれらのリソースを整理し、必要な粒度に基づいてコストを大規模に管理する場合に役立ちます。各リソースにラベルを設定し、そのラベルに基づいてリソースをフィルタできます。ラベルに関する情報は課金システムに転送され、請求料金をラベル別に分類できます。組み込みの請求レポートにより、リソースラベルで費用をフィルタしてグループ化できます。また、ラベルを使用して請求データ エクスポートをクエリすることもできます。

ラベルの要件

リソースに適用するラベルは、次の要件を満たす必要があります。

  • 各リソースには、最大 64 個のラベルを設定できます。
  • ラベルは、Key-Value ペアでなければなりません。
  • キーは 1 文字以上、63 文字までにする必要があります。空にすることはできません。値は 63 文字以下にします。空にすることもできます。
  • キーと値には、小文字、数字、アンダースコア、ダッシュのみを使用できます。すべての文字は UTF-8 でエンコードする必要があります。国際文字も使用できます。キーは、小文字または国際文字で始める必要があります。
  • ラベルのキー部分は、単一のリソース内では一意である必要があります。ただし、複数のリソースで同じキーを使用できます

これらの上限は、各ラベルのキーと値だけでなく、ラベルのある個々の Google Cloud リソースにも適用されます。1 つのプロジェクト内のすべてのリソースに適用できるラベルの数に上限はありません。

ラベルの一般的な用途

次に、ラベルの一般的な使用例を示します。

  • チームまたはコストセンターのラベル: チームやコストセンターに基づいてラベルを追加し、各チームが所有するデプロイを区別します(例: team:researchteam:analytics)。この種類のラベルは、費用計算または予算作成に使用できます。

  • コンポーネント ラベル: component:rediscomponent:frontendcomponent:ingestcomponent:dashboard など。

  • 環境ラベルまたはステージのラベル: environment:productionenvironment:test など。

  • 状態のラベル: state:activestate:readytodeletestate:archive など。

  • オーナー権限ラベル: 運用担当チームの識別に使用されます(例: team:shopping-cart)。

すべての API 呼び出しにタイムスタンプや個別の値を設定するなど、一意のラベルを多数作成することはおすすめしません。このアプローチの問題は、値が頻繁に変更される場合やカタログを混乱させるキーを使用している場合に、リソースを効果的にフィルタして報告することが困難になることです。

ラベルとタグ

ラベルは、リソースに対するクエリ可能なアノテーションとして使用できますが、ポリシーの条件の設定には使用できません。タグを使用すると、ポリシーをきめ細かく制御することによって、リソースに特定のタグが付加されているかどうかに基づいて、条件付きでポリシーを許可または拒否することが可能になります。詳細については、タグの概要をご覧ください。

ラベル付きデプロイの作成

デプロイの作成時に、1 つ以上のキーと値のペアをラベルとして指定することにより、ラベルを追加できます。既存のデプロイが存在する場合は、それを更新して、新しいラベルの追加や既存のラベルの変更を行うことができます。

ラベル付きのデプロイを作成するには、gcloud CLI または API を使用する必要があります。

gcloud

gcloud で、--labels フラグの後ろにキーと値のペアのカンマ区切りリストを指定して、デプロイにラベルを追加します。たとえば次のコマンドは、デプロイに environment=productionstorage=media の 2 つのラベルを追加します。

gcloud deployment-manager deployments create example-deployment --config example-config.yaml \
    --labels environment=production,storage=media

デプロイに適用されたラベルを確認するには、デプロイの記述を次のように取得します。

gcloud deployment-manager deployments describe example-deployment
---
fingerprint: 0p03t0z31PQLOrGH8KdhWQ==
id: '2204841443843636456'
insertTime: '2017-04-18T09:42:47.323-07:00'
labels:
- key: environment
  value: production
- key: storage
  value: media
manifest: manifest-1492533767362
name: example-deployment
operation:
  endTime: '2017-04-18T09:43:04.581-07:00'
  name: operation-1492533767010-54d7398ff76d1-7930b926-f64e72ae
  operationType: insert
  progress: 100
  startTime: '2017-04-18T09:42:48.034-07:00'
  status: DONE
  user:user@example.com

API

API で、デプロイを作成する手順に従い、新しい labels プロパティをリクエスト本文の中で指定します。例:

{
  "name": "example-deployment",
  "target": {
    "config": {
      "content": "..."
      },
   }
  "labels": [
  {
    "key": "environment",
    "value": "production"
  },
  {
    "key": "storage",
    "value": "media"
  }
 ]
}

ラベルの削除

コンソール

  1. Google Cloud Console の [デプロイ] ページに移動します。

    [デプロイ] ページに移動

  2. プロンプトが表示されたら、プロジェクトを選択して [続行] をクリックします。

  3. ラベルを削除するデプロイの横にあるボックスをオンにします。サイドパネルが表示されます。

  4. 削除するラベルの横にある [X] をクリックします。

  5. 変更を保存します。

gcloud

gclouddeployments update コマンドを使用して、--remove-labels フラグの後ろに削除するラベルキーのカンマ区切りリストを指定することにより、ラベルを削除します。

たとえば次のコマンドは、environment キーを使用してラベルを削除します。

gcloud deployment-manager deployments update example-deployment --remove-labels environment

API

API で、デプロイを更新する手順に従い、デプロイの更新をリクエスト本文の中で指定します。この更新に labels プロパティが含まれていなければ、実質的にラベルが削除されます。

ラベルの追加または更新

既存のデプロイで新しいラベルを追加したり、ラベルを更新したりできます。

コンソール

  1. Google Cloud Console の [デプロイ] ページに移動します。

    [デプロイ] ページに移動

  2. プロンプトが表示されたら、プロジェクトを選択して [続行] をクリックします。

  3. ラベルを更新するデプロイの横にあるボックスをオンにします。サイドパネルが表示されます。

  4. ラベル値を変更するには、該当するラベルエントリを更新します。ラベルキーを変更するには、いったんラベルを削除し、新しいキーを使ってもう一度追加する必要があります。

  5. 変更を保存します。

gcloud

gclouddeployments update コマンドを使用して、--update-labels フラグの後ろに更新するラベルのカンマ区切りリストを指定することにより、新しいラベルを更新または追加します。

たとえば、次のコマンドは environment ラベルを更新します。

gcloud deployment-manager deployments update example-deployment --update-labels environment=production

API

API で、デプロイを更新する手順に従い、リクエスト本文から labels プロパティを除外します。これで、実質的にラベルがデプロイから削除されます。

デプロイのプレビュー中にラベルを追加する

デプロイを作成する前に、それをプレビューできます。プレビューの一環として、プレビューするデプロイにラベルを割り当てることができます。次に例を示します。

gcloud deployment-manager deployments create example-deployment --config example-config.yaml \
    --labels environment=production --preview

プレビュー中のラベルを変更するには、新しいラベルを使ってプレビューを更新する必要があります。プレビューの詳細については、構成のプレビュー ドキュメントをご覧ください。

ラベルを使用した検索結果のフィルタリング

リソースの検索結果をラベルでフィルタリングできます。

コンソール

  1. Google Cloud Console の [デプロイ] ページに移動します。

    [デプロイ] ページに移動

  2. プロンプトが表示されたら、プロジェクトを選択して [続行] をクリックします。

  3. 検索バーに「labels.」を入力すると、フィルタを適用できるラベルが自動的に表示されます。

gcloud

gcloud では、list リクエストを作成し、--filter フラグを使用します。ラベルでフィルタリングを行うには、構文 labels.[KEY]=[VALUE] を使用します。たとえば、キーが environment で値が production のラベルでフィルタリングする場合は、次のコマンドを実行します。

gcloud deployment-manager deployments list --filter labels.environment=production

gcloud CLI でのフィルタ構文の詳細については、gcloud topic filters のドキュメントをご覧ください。

API

API では、list リクエストを作成し、URL エンコードされた filter クエリ パラメータを指定します。たとえば、ラベルキー environment が値 production と等しいという条件でフィルタリングするには、次の GET リクエストを行います。

GET https://www.googleapis.com/deploymentmanager/v2/deployments/list?filter=labels.environment+eq+production

詳しくは、API リファレンスの filter をご覧ください。

次のステップ