ラベルを構成する

Cloud Run ラベルは、Cloud Run サービスとリビジョンに適用される Key-Value ペアです。このページでは、Cloud Run サービスとリビジョンのラベルを設定、変更、削除する方法について説明します。Cloud Run サービスにラベルを設定すると、このラベルの付いた新しいサービス リビジョンがこのサービスに作成されます。古いリビジョンにはラベルは適用されません。

たとえば、次のような用途が考えられます。

  • 費用の割り当てと請求の内訳に使用する
  • 個々のチームやコストセンターで使用されているリソースを特定する
  • デプロイ環境(本番、ステージング、検証、テスト)を区別する
  • 所有者、状態のラベルを特定する
  • Logging でログをフィルタする

ラベルの使用ルール

Cloud Run サービスで設定されたラベルを使用する場合、次のルールが適用されます。

Cloud Run で使用できるのは、有効な Google Cloud ラベルのみです。

ラベルを設定または変更する

構成を変更すると、新しいリビジョンが作成されます。明示的に更新しない限り、以降のリビジョンでも、この構成が自動的に設定されます。

新しいリビジョンをデプロイするときに、Google Cloud コンソール、gcloud コマンドライン、または YAML ファイルを使用してラベルを設定または変更できます。

コンソール

  1. Google Cloud コンソールで、[Cloud Run] に移動します。

    Cloud Run に移動

  2. ラベルを設定するサービスの左側にあるチェックボックスをオンにします。

  3. 右端の情報パネルがオンになっていることを確認します(情報パネルを表示)。

  4. [ラベル] をクリックして、ラベルペインを表示します。

    ラベルを設定

  5. 既存のラベル Key-Value を編集するには、ラベルを探して、値を必要に応じて変更します。

  6. サービスに新しいラベルを設定するには、[ラベルを追加] をクリックしてキーと値を指定します。

  7. [保存] をクリックします。

コマンドライン

次のコマンドを使用して、サービスのラベルを更新できます。

gcloud run services update SERVICE --update-labels KEY=VALUE

複数のラベルを更新するには、Key-Value ペアのカンマ区切りリストを指定します。ラベルがすでに存在する場合、update-labels コマンドはラベルキー用に新しい値を設定します。それ以外の場合は、新しいラベルを作成します。

次のように置き換えます。

  • SERVICE は、Cloud Run サービスの名前に置き換えます。
  • KEY は、ラベルキーの名前に置き換えます。
  • VALUE は、キーの値に置き換えます。

デプロイ中にラベルを設定することもできます。

gcloud run deploy SERVICE --image IMAGE --labels KEY=VALUE

デプロイ中に複数のラベルを作成するには、Key-Value ペアのカンマ区切りのリストを指定します。

YAML

既存のサービス構成をダウンロードして表示するには、gcloud run services describe --format export コマンドを使用します。読みやすく整えられた結果が YAML 形式で出力されます。次に、下記の手順でフィールドを変更し、gcloud run services replace コマンドを使用して変更後の YAML ファイルをアップロードします。必ず説明されているとおりにフィールドを変更してください。

  1. 次のコマンドで、構成を表示してダウンロードします。

    gcloud run services describe SERVICE --format export > service.yaml
  2. 2 か所で labels 属性を更新します。

    apiVersion: serving.knative.dev/v1
    kind: Service
    metadata:
      name: SERVICE
      labels:
        LABEL: VALUE
    spec:
      template:
        metadata:
          labels:
            LABEL: VALUE
          name: REVISION

    次のように置き換えます。

    • SERVICE は、Cloud Run サービスの名前に置き換えます。
    • LABEL は、ラベルの名前に置き換えます。
    • VALUE は、目的の値に置き換えます。
    • REVISION を新しいリビジョン名に置き換えるか、削除(存在する場合)します。新しいリビジョン名を指定する場合は、次の条件を満たす必要があります
      • SERVICE- で始まる
      • 小文字、数字、- のみが使用されている
      • 末尾が - ではない
      • 63 文字以内である

    metadata.labels はサービス オブジェクトにラベルを設定し、spec.template.metadata.label は作成されたリビジョンにラベルを設定します。リビジョンに設定されたラベルのみがログと請求に渡されます。

  3. 次のコマンドを使用して、サービスを新しい構成に置き換えます。

    gcloud run services replace service.yaml

Terraform

Terraform 構成を適用または削除する方法については、基本的な Terraform コマンドをご覧ください。

次のスニペットでは、foo(値は bar)と baz(値は quux)の 2 つのラベルが Cloud Run インスタンスに追加され、Terraform の構成にある google_cloud_run_v2_service リソースを使用しています。

次に示すように、template の下にラベルを追加すると、リビジョンにラベルが設定されます。リビジョンに設定されたラベルのみがログと請求に渡されます。template 以外の場所にラベルを追加すると、リビジョンではなく、サービスに対してラベルが設定されます。

resource "google_cloud_run_v2_service" "default" {
  name     = "cloudrun-service-labels"
  location = "us-central1"

  template {
    containers {
      image = "us-docker.pkg.dev/cloudrun/container/hello"
    }
    # Labels
    labels = {
      foo : "bar"
      baz : "quux"
    }
  }
}

次のように置き換えます。

  • name プロパティをサービスの名前で置き換えます。
  • location プロパティをサービスで使用するロケーションに置き換えます。
  • image プロパティをコンテナ イメージに置き換えます。
  • foobaz を独自のラベル名に置き換えます。
  • barquux を独自のラベル値に置き換えます。

ラベル別にサービスを一覧表示する

Google Cloud CLI フィルタを使用して、ラベル別にサービスを一覧表示できます。

  gcloud run services list --filter metadata.labels.LABEL=VALUE
  

次のように置き換えます。

  • LABEL は、ラベルの名前に置き換えます。
  • VALUE は、フィルタ後のリストに含める値に置き換えます。

サービスのラベルを削除する

サービスのラベルを削除するには、コンソールまたはコマンドラインを使用します。

コンソール

  1. Google Cloud コンソールで、[Cloud Run] に移動します。

    Cloud Run に移動

  2. ラベルを削除するサービスの左側にあるチェックボックスをオンにします。

  3. 右端の情報パネルがオンになっていることを確認します(情報パネルを表示)。

  4. [ラベル] をクリックして、ラベルペインを表示します。

  5. 削除するラベルを見つけます。

  6. ラベルの [値] テキストボックスの右にカーソルを合わせ、表示されるゴミ箱アイコンをクリックします。

  7. [保存] をクリックします。

コマンドライン

サービスからラベルをすべて消去するには:

gcloud run services update SERVICE --clear-labels

サービスから特定のラベルを削除するには、キーのカンマ区切りリストを指定します。

gcloud run services update SERVICE --remove-labels LABEL

次のように置き換えます。

  • SERVICE は、Cloud Run サービスの名前に置き換えます。
  • LABEL は、ラベルの名前に置き換えます。