79 lines
1.8 KiB
Terraform
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
|
|
}
|