Files
homelab/terraform/minio-operator.tf
T

79 lines
1.8 KiB
Terraform

# MinIO Operator - v4.5.8 (compatible with installed CRD)
# v5.0.0 has credential validation bug that breaks tenants
# Downgrading to stable v4.5.8 until upstream fixes validation logic
resource "kubernetes_namespace" "minio_operator" {
metadata {
name = "minio-operator"
labels = {
"pod-security.kubernetes.io/enforce" = "baseline"
"pod-security.kubernetes.io/enforce-version" = "latest"
}
}
}
resource "helm_release" "minio_operator" {
name = "minio-operator"
repository = "https://operator.min.io"
chart = "operator"
version = "4.5.8"
namespace = kubernetes_namespace.minio_operator.metadata[0].name
values = [
yamlencode({
operator = {
image = {
repository = "minio/operator"
tag = "v4.5.8"
}
replicaCount = 1
}
console = {
enabled = true
}
})
]
depends_on = [
kubernetes_namespace.minio_operator
]
}
# MinIO credentials secret - v4.5.8 format (credsSecret with individual keys)
resource "kubernetes_secret" "minio_creds" {
metadata {
name = "minio-creds"
namespace = "storage"
}
type = "Opaque"
data = {
accesskey = base64encode("minioadmin")
secretkey = base64encode(var.minio_root_password)
}
depends_on = [
kubernetes_namespace.storage
]
}
# Placeholder: kubernetes_namespace.storage should exist from bootstrap
# If not, create:
resource "kubernetes_namespace" "storage" {
count = var.create_storage_namespace ? 1 : 0
metadata {
name = "storage"
labels = {
"pod-security.kubernetes.io/enforce" = "baseline"
"pod-security.kubernetes.io/enforce-version" = "latest"
}
}
}
variable "create_storage_namespace" {
description = "Create storage namespace if it doesn't exist"
type = bool
default = false
}