# Open WebUI — chat interface for Ollama with image generation resource "kubernetes_namespace" "webui" { metadata { name = "webui" labels = { managed-by = "terraform" tier = "application" } } } resource "kubernetes_persistent_volume_claim" "webui_data" { metadata { name = "webui-data" namespace = kubernetes_namespace.webui.metadata[0].name } spec { access_modes = ["ReadWriteOnce"] resources { requests = { storage = "5Gi" } } } } resource "kubernetes_deployment" "open_webui" { metadata { name = "open-webui" namespace = kubernetes_namespace.webui.metadata[0].name labels = { app = "open-webui" } } spec { replicas = 1 selector { match_labels = { app = "open-webui" } } template { metadata { labels = { app = "open-webui" } } spec { container { name = "open-webui" image = "ghcr.io/open-webui/open-webui:main" port { container_port = 8080 } env { name = "OLLAMA_BASE_URL" value = "http://ollama.ollama.svc.cluster.local:11434" } env { name = "AUTOMATIC1111_BASE_URL" value = "http://stable-diffusion.stable-diffusion.svc.cluster.local:7860" } env { name = "ENABLE_IMAGE_GENERATION" value = "true" } volume_mount { name = "data" mount_path = "/app/backend/data" } resources { requests = { memory = "256Mi" cpu = "100m" } limits = { memory = "1Gi" cpu = "1" } } } volume { name = "data" persistent_volume_claim { claim_name = kubernetes_persistent_volume_claim.webui_data.metadata[0].name } } } } } } resource "kubernetes_service" "open_webui" { metadata { name = "open-webui" namespace = kubernetes_namespace.webui.metadata[0].name } spec { selector = { app = "open-webui" } port { port = 8080 target_port = 8080 node_port = 30080 } type = "NodePort" } }