説明
StatefulSet の volume_claim_template は、Pod 用の永続ボリュームクレームを作成できます。永続化が必要なアプリケーションでは通常の構成であり、ストレージ要求自体が脆弱性ではありません。
一時データや再生成可能なデータだけを扱う場合は、永続化の必要性を確認してください。不要な保持はコストや、バックアップ・暗号化・廃棄の管理範囲を増やす場合があります。
想定される影響
- 不要な永続データが残り、保存コストと管理負担が増える場合があります。
- 必要なクレームの削除や保持設定の誤変更は、データ損失やサービス中断につながる場合があります。
対処方法
- 永続化の必要性と要求容量を確認してください。必要な PVC から storage 要求だけを削除しないでください。
- 永続化が必要ならバックアップ、暗号化、保持方針を構成してください。不要ならデータを移行・整理してからデプロイ構成の変更を計画してください。
- 変更前に StatefulSet の変更可能フィールド、PVC の保持方針、ボリュームの回収ポリシーを確認してください。クレームテンプレートの変更ではワークロードの再作成が必要になる場合があります。
例
Pod テンプレートと関連 Service を省略した部分例です。変更後は永続クレームが不要な構成の比較であり、データ移行手順や、どの用途でも安全になる設定を示すものではありません。
変更前
hcl
resource "kubernetes_stateful_set" "example" {
metadata {
name = "prometheus"
}
spec {
service_name = "prometheus"
selector {
match_labels = {
app = "prometheus"
}
}
volume_claim_template {
metadata {
name = "data"
}
spec {
access_modes = ["ReadWriteOnce"]
storage_class_name = "standard"
resources {
requests = {
storage = "16Gi"
}
}
}
}
}
}
変更後
hcl
resource "kubernetes_stateful_set" "example" {
metadata {
name = "prometheus"
}
spec {
service_name = "prometheus"
selector {
match_labels = {
app = "prometheus"
}
}
}
}
補足:
- 変更前: 16Gi の永続ストレージを要求します。実際のデータ要件に合っていれば適切です。
- 変更後: クレームテンプレートを宣言しません。この抜粋だけで既存の PVC やデータが自動削除されるわけではありません。