説明
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 を使用します。他のリソースのセレクターとも一致させる必要があります。