locals { app_slug = "${var.instance}${var.component == "" ? "" : "-"}${var.component}" pvc_labels = merge(var.labels, { "app.kubernetes.io/component" = "pvc" }) pvc_spec = merge({ "accessModes" = [var.storage.access_mode] "volumeMode" = var.storage.type "resources" = { "requests" = { "storage" = var.storage.size } } }, var.storage.class != "" ? { "storageClassName" = var.storage.class } : {}) } resource "kubectl_manifest" "pvc" { ignore_fields = ["spec.resources.requests.storage"] yaml_body = <<-EOF apiVersion: v1 kind: PersistentVolumeClaim metadata: name: ${local.app_slug} namespace: "${var.namespace}" annotations: k8up.io/backup: "${var.backup}" resize.kubesphere.io/storage_limit: "${var.storage.max_size} labels: ${jsonencode(local.pvc_labels)} spec: ${jsonencode(local.pvc_spec)} EOF }