Stoat deployment

This commit is contained in:
Antonin Ruan
2026-02-12 20:40:39 +01:00
parent c258a1d09e
commit 8d435f9f30
11 changed files with 1901 additions and 0 deletions
+114
View File
@@ -0,0 +1,114 @@
variable "rabbit" {
type = object({
app_name = optional(string, "rabbit")
image = string
version = string
user = optional(string, "rabbit")
port = optional(number, 5672)
})
}
resource "random_password" "rabbit" {
length = 16
}
resource "kubernetes_service_v1" "rabbit" {
metadata {
name = var.rabbit.app_name
namespace = kubernetes_namespace_v1.stoat.metadata[0].name
}
spec {
selector = {
app = var.rabbit.app_name
}
port {
port = var.rabbit.port
target_port = var.rabbit.port
}
}
}
resource "kubernetes_persistent_volume_claim_v1" "rabbit-data" {
metadata {
name = var.rabbit.app_name
namespace = kubernetes_namespace_v1.stoat.metadata[0].name
}
spec {
storage_class_name = "local-path"
access_modes = ["ReadWriteOnce"]
resources {
requests = {
storage = "1Gi"
}
}
}
}
resource "kubernetes_config_map_v1" "rabbit_env" {
metadata {
name = "${var.rabbit.app_name}-env"
namespace = kubernetes_namespace_v1.stoat.metadata[0].name
}
data = {
RABBITMQ_DEFAULT_USER = var.rabbit.user
RABBITMQ_DEFAULT_PASS = random_password.rabbit.result
}
}
resource "kubernetes_deployment_v1" "rabbit" {
metadata {
name = var.rabbit.app_name
namespace = kubernetes_namespace_v1.stoat.metadata[0].name
}
spec {
replicas = 1
selector {
match_labels = {
app = var.rabbit.app_name
}
}
template {
metadata {
labels = {
"app" = var.rabbit.app_name
}
}
spec {
container {
name = var.rabbit.app_name
image = "${var.rabbit.image}:${var.rabbit.version}"
port {
container_port = var.rabbit.port
}
env_from {
config_map_ref {
name = kubernetes_config_map_v1.rabbit_env.metadata[0].name
optional = false
}
}
volume_mount {
name = "rabbit-data"
mount_path = "/var/lib/rabbitmq"
}
}
volume {
name = "rabbit-data"
persistent_volume_claim {
claim_name = kubernetes_persistent_volume_claim_v1.rabbit-data.metadata[0].name
}
}
}
}
}
}