Files

132 lines
2.6 KiB
Terraform
Raw Permalink Normal View History

2026-06-29 14:31:28 +02:00
resource "kubernetes_namespace" "terraform_mcp" {
metadata {
name = "terraform-mcp"
}
}
resource "kubernetes_service_account" "terraform_mcp" {
metadata {
name = "terraform-mcp-sa"
namespace = kubernetes_namespace.terraform_mcp.metadata[0].name
}
automount_service_account_token = false
}
resource "kubernetes_deployment" "terraform_mcp" {
metadata {
name = "terraform-mcp"
namespace = kubernetes_namespace.terraform_mcp.metadata[0].name
labels = {
app = "terraform-mcp"
}
}
spec {
replicas = 1
selector {
match_labels = {
app = "terraform-mcp"
}
}
strategy {
type = "Recreate"
}
template {
metadata {
labels = {
app = "terraform-mcp"
}
}
spec {
service_account_name = kubernetes_service_account.terraform_mcp.metadata[0].name
automount_service_account_token = false
container {
name = "terraform-mcp"
image = "hashicorp/terraform-mcp-server:${local.app_version}"
env {
name = "TRANSPORT_MODE"
value = "streamable-http"
}
env {
name = "TRANSPORT_PORT"
value = "8084"
}
env {
name = "TRANSPORT_HOST"
value = "0.0.0.0"
}
security_context {
allow_privilege_escalation = false
privileged = false
capabilities {
drop = ["ALL"]
}
}
port {
name = "http"
container_port = 8084
protocol = "TCP"
}
liveness_probe {
http_get {
path = "/health"
port = "http"
}
initial_delay_seconds = 10
period_seconds = 15
}
readiness_probe {
http_get {
path = "/health"
port = "http"
}
initial_delay_seconds = 5
period_seconds = 10
}
}
}
}
}
}
resource "kubernetes_service" "terraform_mcp" {
metadata {
name = "terraform-mcp-service"
namespace = kubernetes_namespace.terraform_mcp.metadata[0].name
}
spec {
selector = {
app = "terraform-mcp"
}
port {
name = "http"
port = 80
target_port = 8084
}
type = "ClusterIP"
}
lifecycle {
ignore_changes = [
metadata[0].annotations
]
}
}