apiVersion: apps/v1 kind: Deployment metadata: name: open-webui namespace: open-webui labels: app.kubernetes.io/name: open-webui app.kubernetes.io/part-of: open-webui spec: replicas: 1 strategy: type: RollingUpdate rollingUpdate: maxSurge: 1 maxUnavailable: 0 selector: matchLabels: app.kubernetes.io/name: open-webui template: metadata: labels: app.kubernetes.io/name: open-webui app.kubernetes.io/part-of: open-webui spec: serviceAccountName: open-webui containers: - name: open-webui image: ghcr.io/open-webui/open-webui:latest imagePullPolicy: IfNotPresent ports: - name: http containerPort: 8080 protocol: TCP env: # OpenWebUI configuration - name: WEBUI_SECRET_KEY valueFrom: secretKeyRef: name: body-wars-secret key: vllm-api-key optional: false # Backend configuration for vLLM (OpenAI-compatible, NOT Ollama) # OLLAMA_BASE_URLS removed: astro-orbiter runs vLLM, not Ollama - name: OPENAI_BASE_URL value: "http://astro-orbiter:8000/v1" - name: OPENAI_API_KEY valueFrom: secretKeyRef: name: body-wars-secret key: vllm-api-key optional: false - name: OPENAI_MODEL_FALLBACK value: "Gemma-4-26B-A4B-it-AWQ" # Allow access from ingress - name: WEBUI_URL value: "https://body-wars.local.mk-labs.cloud" # Observability settings - name: ENABLE_API_KEY value: "true" - name: ENABLE_MODEL_FILTER value: "false" # Storage - name: DATA_DIR value: "/app/backend/data" resources: requests: cpu: 100m memory: 256Mi limits: cpu: 1000m memory: 1Gi livenessProbe: httpGet: path: /health port: http initialDelaySeconds: 30 periodSeconds: 10 timeoutSeconds: 5 failureThreshold: 3 volumeMounts: - name: data mountPath: /app/backend/data volumes: - name: data emptyDir: sizeLimit: 1Gi