ラベルの作成と管理

このページでは、GKE のクラスタラベルの概要を説明します。

クラスタラベルとは何か

クラスタラベルとは、Google Cloud Platform のクラスタの整理に役立つ Key-Value ペアのことです。各リソースにラベルを設定し、そのラベルに基づいてリソースをフィルタリングできます。ラベルに関する情報は課金システムに転送されるため、ラベルを基準に請求料金を分析することもできます。

クラスタラベルの一般的な用途

タイムスタンプやすべての API 呼び出しに個別に値を作成するなど、一意のラベルを多数作成することはおすすめしません。次に、クラスタラベルの一般的なユースケースを示します。

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

  • コンポーネント クラスタラベル: たとえば、component:rediscomponent:frontendcomponent:ingestcomponent:dashboard など。

  • 環境またはステージのクラスタラベル: たとえば、environment:productionenvironment:test など。

  • 状態クラスタラベル: たとえば、state:activestate:readytodeletestate:archive など。

クラスタラベルの要件

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

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

始める前に

このタスクの準備として、次の手順を行います。

  • Google Kubernetes Engine API が有効になっていることを確認します。
  • Enable Google Kubernetes Engine API を有効にする
  • Cloud SDK がインストール済みであることを確認します。
  • デフォルトのプロジェクト ID を設定します。
    gcloud config set project [PROJECT_ID]
  • ゾーンクラスタを使用する場合は、デフォルトのコンピューティング ゾーンを設定します。
    gcloud config set compute/zone [COMPUTE_ZONE]
  • リージョン クラスタを使用する場合は、デフォルトのコンピューティング リージョンを設定します。
    gcloud config set compute/region [COMPUTE_REGION]
  • gcloud を最新バージョンに更新します。
    gcloud components update

クラスタのラベル付けについて

GKE では、クラスタレベルでラベルを適用します。クラスタにラベルを付けると、そのラベルがクラスタの個々のリソース(ノードや永続ディスクなど)のすべてに伝播されます。

クラスタラベルを追加、更新、削除するには、Google Cloud Platform Console、gcloud コマンドライン ツールまたは GKE API を使用します。

API リクエストに使用するラベルのフィンガープリントの取得

GKE API を使用してクラスタラベルを更新または追加する際は、リクエストに最新のクラスタラベルのフィンガープリントを入力して、他のリクエストとの競合を防ぐ必要があります。

最新のクラスタラベルのフィンガープリントを取得するには、該当するクラスタに対して GET リクエストを実行します。例:

GET https://container.googleapis.com/v1/projects/myproject/zones/us-central1-f/clusters/example-cluster

レスポンスに含まれる labelFingerprint プロパティを見つけます。

200 OK

{

 "name": "mycluster",
 "description": "test-cluster",
 "initialNodeCount": 3,
 ...
 "resourceLabels": {
    "env": "test",
    ...
  },
  "labelFingerprint": "p1ty_9HoBk0="
}

ラベル付きクラスタの作成

gcloud

gcloud ツールでクラスタを作成するときにラベルを追加するには、次のコマンドを実行します。

gcloud container clusters create [CLUSTER_NAME] --labels [KEY]=[VALUE]

例:

gcloud container clusters create example-cluster --labels env=dev

Console

GCP Console を使用してクラスタを作成する際にラベルを追加するには、次の手順に従います。

  1. GCP Console で Google Kubernetes Engine のメニューに移動します。

    Google Kubernetes Engine のメニューに移動

  2. [クラスタを作成] をクリックします。

  3. 必要に応じてクラスタを構成します。次に、[詳細オプション] をクリックします。

  4. [ラベルを追加] をクリックします。

  5. 必要なラベルを追加します。

  6. [作成] をクリックします。

API

クラスタの作成時にラベルを設定するには、projects.zones.clusters.create に指定する cluster オブジェクト内に resourceLabels オブジェクトを指定します。

既存クラスタのラベルの追加または更新

gcloud

gcloud ツールでラベルを更新するには、次のコマンドを実行します。

gcloud container clusters update [CLUSTER_NAME] --update-labels [KEY]=[VALUE]

例:

gcloud container clusters update example-cluster --update-labels env=dev,release=stable

ラベルを更新すると、既存のラベルが上書きされます。クラスタの既存のラベルを保持する場合は、追加する新しいラベルとともに既存のラベルを含める必要があります。

Console

GCP Console を使用してラベルを追加または更新するには、次の手順に従います。

  1. GCP Console で Google Kubernetes Engine のメニューに移動します。

    Google Kubernetes Engine のメニューに移動

  2. 単一のクラスタにラベルを追加するには、鉛筆の形をしたクラスタの編集ボタンをクリックします。

    1. [ラベルの追加] をクリックし、1 つ以上のラベルを追加します。
    2. [保存] をクリックします。
  3. 複数のクラスタにまとめて一度にラベルを追加するには:

    1. ラベルを付けるクラスタのチェックボックスをオンにします。
    2. ラベル列が表示されていない場合は、[情報パネルを表示] をクリックしてラベル列を展開します。
    3. 必要に応じて、ラベルを更新したり、新しいラベルを追加したりします。
    4. [保存] をクリックします。

API

ラベルを更新するには、クラスタの resourceLabels メソッドに対し、最新のフィンガープリントと適用するラベルの完全なリストを指定した POST リクエストを実行します。

メタデータやタグの場合と同様に、クラスタの既存のラベルを残したい場合は、追加する新しいラベルとともに、既存のラベルをリクエストに含める必要があります。

たとえば、次のスニペットは、resourceLabels メソッドにリクエストを行います。

POST https://container.googleapis.com/v1/projects/myproject/zones/us-central1-f/clusters/example-cluster/resourceLabels

{
 "resourceLabels": {
  "env": "test",
  "an-existing-tag": ""
 },
 "labelFingerprint": "42WmSpB8rSM="
}

クラスタラベルの削除

gcloud

gcloud コマンドライン ツールで、--remove-labels フラグを指定して update コマンドを実行します。削除するラベルのキーを指定します。例:

gcloud container clusters update example-cluster --remove-labels env

Console

GCP Console を使用してラベルを削除するには、次の手順に従います。

  1. GCP Console で Google Kubernetes Engine のメニューに移動します。

    Google Kubernetes Engine のメニューに移動

  2. 単一のクラスタからラベルを削除するには、鉛筆の形をしたクラスタの編集ボタンをクリックします。

    1. ラベルの横にある X をクリックして削除します。
    2. [保存] をクリックします。
  3. 複数のクラスタからまとめて一度にラベルを削除するには:

    1. ラベルを削除するクラスタの横にあるチェックボックスをオンにします。
    2. ラベル列が表示されていない場合は、[情報パネルを表示] をクリックしてラベル列を展開します。
    3. 削除するすべてのラベルの横にある X をクリックします。
    4. [保存] をクリックします。

API

API で、該当するクラスタの resourceLabels メソッドに POST リクエストを行います。すべてのラベルを削除するには、現在の labelsFingerprint とラベルの空のリストを指定します。あるいは、削除しないラベルのリストを指定します(削除するラベルは省略します)。例:

Request

POST https://container.googleapis.com/v1/projects/myproject/zones/us-central1-f/clusters/example-cluster/resourceLabels

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

次のステップ

GKE の概要を読む

このページは役立ちましたか?評価をお願いいたします。

フィードバックを送信...

Kubernetes Engine のドキュメント