Kubernetes メタデータラベル形式の確認

ラベルの形式と実際のセレクターとの一致を確認してください。

説明

Kubernetes ラベルが形式規則に違反すると、API がリソースの作成や変更を拒否する場合があります。Service、NetworkPolicy、運用ツールはラベルで対象を選ぶため、形式と意味を併せて管理する必要があります。

ラベル値は空文字列、または 63 文字以内の文字列です。空でない場合は英数字で始まり英数字で終わる必要があり、途中には英数字、ハイフン、アンダースコア、ドットを使用できます。

想定される影響

  • 不正なラベルによってデプロイやリソース更新に失敗する場合があります。
  • 有効なラベルでも、セレクターと一致しないと意図した対象を選択できない場合があります。

対処方法

  • Kubernetes の形式規則に合うラベルキーと値を使ってください。キーの任意の DNS 接頭辞と名前部分の規則も確認してください。
  • ラベル変更時には Service やポリシーのセレクターも確認し、実際に意図した対象を選択することを検証してください。

例

メタデータだけを示し、必須の Pod spec は省略しています。大文字と小文字は区別されるため、MyApp を選択する側も同じ値を使う必要があります。

変更前

hcl
resource "kubernetes_pod" "example" {
  metadata {
    name = "terraform-example"

    labels = {
      app = "g**dy.l+bel"
    }
  }
}

変更後

hcl
resource "kubernetes_pod" "example" {
  metadata {
    name = "terraform-example"

    labels = {
      app = "MyApp"
    }
  }
}

補足:

  • 変更前: アスタリスクとプラス記号を含む値は無効であり、API に拒否される場合があります。
  • 変更後: 有効な MyApp を使用します。他のリソースのセレクターとも一致させる必要があります。

参考資料