# MinIO - Official minio/minio chart, direct Helm deployment (no operator) # All-in-one: single helm_release + dedicated xfs StorageClass. # Why xfs: default `longhorn` SC uses ext4 whose mkfs on 100Gi (~4.5min) # exceeds kubelet mount timeout. xfs mkfs is near-instant. min.io chart has # no persistence.fsType, so fsType must be set on the StorageClass. resource "kubernetes_storage_class" "longhorn_xfs" { metadata { name = "longhorn-xfs" } storage_provisioner = "driver.longhorn.io" reclaim_policy = "Delete" allow_volume_expansion = true volume_binding_mode = "Immediate" parameters = { numberOfReplicas = "2" staleReplicaTimeout = "60" fsType = "xfs" dataLocality = "disabled" } } # MinIO Helm release removed — managed by ArgoCD instead # Reason: MinIO is Terraform state backend (chicken-and-egg problem) # Solution: ArgoCD Application (k8s/argocd/apps/phase0-minio.yaml) handles deployment # Terraform manages everything else, state lives in MinIO (safe external backend) variable "create_storage_namespace" { description = "Create storage namespace if it doesn't exist" type = bool default = false }