# Ollama — local LLM inference with GPU resource "kubernetes_namespace" "ollama" { metadata { name = "ollama" labels = { managed-by = "terraform" tier = "application" } } } resource "kubernetes_persistent_volume_claim" "ollama_models" { metadata { name = "ollama-models" namespace = kubernetes_namespace.ollama.metadata[0].name } spec { access_modes = ["ReadWriteOnce"] resources { requests = { storage = "50Gi" } } } } resource "kubernetes_deployment" "ollama" { metadata { name = "ollama" namespace = kubernetes_namespace.ollama.metadata[0].name labels = { app = "ollama" } } spec { replicas = 1 strategy { type = "Recreate" } selector { match_labels = { app = "ollama" } } template { metadata { labels = { app = "ollama" } } spec { container { name = "ollama" image = "ollama/ollama:latest" port { container_port = 11434 } env { name = "NVIDIA_VISIBLE_DEVICES" value = "all" } volume_mount { name = "models" mount_path = "/root/.ollama" } resources { requests = { memory = "2Gi" cpu = "500m" } limits = { memory = "8Gi" cpu = "4" } } } volume { name = "models" persistent_volume_claim { claim_name = kubernetes_persistent_volume_claim.ollama_models.metadata[0].name } } } } } } resource "kubernetes_service" "ollama" { metadata { name = "ollama" namespace = kubernetes_namespace.ollama.metadata[0].name } spec { selector = { app = "ollama" } port { port = 11434 target_port = 11434 node_port = 31434 } type = "NodePort" } }