variable "mongo" { type = object({ app_name = optional(string, "mongo") image = string version = string }) } resource "kubernetes_service_v1" "mongo" { metadata { name = var.mongo.app_name namespace = kubernetes_namespace_v1.stoat.metadata[0].name } spec { selector = { app = var.mongo.app_name } port { port = 27017 target_port = 27017 } } } resource "kubernetes_persistent_volume_claim_v1" "mongo" { metadata { name = var.mongo.app_name namespace = kubernetes_namespace_v1.stoat.metadata[0].name } spec { storage_class_name = "local-path" access_modes = ["ReadWriteOnce"] resources { requests = { storage = "5Gi" } } } } resource "kubernetes_deployment_v1" "mongo" { metadata { name = var.mongo.app_name namespace = kubernetes_namespace_v1.stoat.metadata[0].name } spec { replicas = 1 selector { match_labels = { app = var.mongo.app_name } } template { metadata { labels = { "app" = var.mongo.app_name } } spec { container { name = var.mongo.app_name image = "${var.mongo.image}:${var.mongo.version}" port { container_port = 27017 } volume_mount { name = "mongo-data" mount_path = "/data/db" } } volume { name = "mongo-data" persistent_volume_claim { claim_name = var.mongo.app_name } } } } } }