diff --git a/cluster/applications/body-wars-helm/application.yaml b/cluster/applications/body-wars-helm/application.yaml new file mode 100644 index 0000000..1fa3c24 --- /dev/null +++ b/cluster/applications/body-wars-helm/application.yaml @@ -0,0 +1,39 @@ +apiVersion: argoproj.io/v1alpha1 +kind: Application +metadata: + name: body-wars + namespace: argocd + annotations: + argocd.argoproj.io/sync-wave: "9" +spec: + project: default + source: + repoURL: https://helm-charts.open-webui.com + chart: open-webui + targetRevision: 16.3.0 + helm: + values: | + ingress: + enabled: true + className: nginx + hosts: + - host: body-wars.local.mk-labs.cloud + paths: + - path: / + pathType: Prefix + tls: + - secretName: body-wars-tls + hosts: + - body-wars.local.mk-labs.cloud + openwebui: + backend: + url: http://astro-orbiter:8000/v1 + destination: + server: https://kubernetes.default.svc + namespace: open-webui + syncPolicy: + automated: + prune: true + selfHeal: true + syncOptions: + - CreateNamespace=true diff --git a/cluster/applications/open-webui/application.yaml b/cluster/applications/open-webui/application.yaml index aae8c2c..ee13c9d 100644 --- a/cluster/applications/open-webui/application.yaml +++ b/cluster/applications/open-webui/application.yaml @@ -38,7 +38,7 @@ spec: destination: server: https://kubernetes.default.svc - namespace: body-wars + namespace: open-webui syncPolicy: automated: diff --git a/cluster/applications/open-webui/deployment.yaml b/cluster/applications/open-webui/deployment.yaml index d0f1087..99ffb55 100644 --- a/cluster/applications/open-webui/deployment.yaml +++ b/cluster/applications/open-webui/deployment.yaml @@ -39,9 +39,8 @@ spec: name: body-wars-secret key: vllm-api-key optional: false - # Backend configuration for vLLM - - name: OLLAMA_BASE_URLS - value: "http://astro-orbiter:8000" + # 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 @@ -52,6 +51,9 @@ spec: optional: false - name: OPENAI_MODEL_FALLBACK value: "Gemma-4-26B-A4B-it-AWQ" + # Disable OpenAI API key validation (we're using vLLM, not OpenAI) + - name: OPENAI_VALIDATE_ENDPOINT + value: "false" # Allow access from ingress - name: WEBUI_URL value: "https://body-wars.local.mk-labs.cloud" @@ -60,6 +62,9 @@ spec: value: "true" - name: ENABLE_MODEL_FILTER value: "false" + # Disable Ollama model detection (we use vLLM/OpenAI-compatible only) + - name: ENABLE_OLLAMA_API + value: "false" # Storage - name: DATA_DIR value: "/app/backend/data" @@ -83,5 +88,5 @@ spec: mountPath: /app/backend/data volumes: - name: data - emptyDir: - sizeLimit: 1Gi + persistentVolumeClaim: + claimName: open-webui-data diff --git a/cluster/applications/open-webui/externalsecret.yaml b/cluster/applications/open-webui/externalsecret.yaml index 81260d1..57be4ad 100644 --- a/cluster/applications/open-webui/externalsecret.yaml +++ b/cluster/applications/open-webui/externalsecret.yaml @@ -24,3 +24,9 @@ spec: remoteRef: key: vllm property: api-key + # WebUI JWT signing secret - TEMPORARILY DISABLED + # Uncomment and configure once open-webui item exists in 1Password: + # - secretKey: webui_secret_key + # remoteRef: + # key: open-webui + # property: secret-key diff --git a/cluster/applications/open-webui/pvc.yaml b/cluster/applications/open-webui/pvc.yaml new file mode 100644 index 0000000..519ed04 --- /dev/null +++ b/cluster/applications/open-webui/pvc.yaml @@ -0,0 +1,15 @@ +apiVersion: v1 +kind: PersistentVolumeClaim +metadata: + name: open-webui-data + namespace: open-webui + labels: + app.kubernetes.io/name: open-webui + app.kubernetes.io/component: data +spec: + accessModes: + - ReadWriteOnce + storageClassName: nfs-emporium + resources: + requests: + storage: 10Gi diff --git a/cluster/platform/astro-orbiter-gateway/externalname-service.yaml b/cluster/platform/astro-orbiter-gateway/externalname-service.yaml new file mode 100644 index 0000000..e4d44b1 --- /dev/null +++ b/cluster/platform/astro-orbiter-gateway/externalname-service.yaml @@ -0,0 +1,37 @@ +apiVersion: v1 +kind: Service +metadata: + name: astro-orbiter + namespace: default + labels: + app.kubernetes.io/name: astro-orbiter-gateway + app.kubernetes.io/component: llm-inference +spec: + type: ExternalName + externalName: 10.1.71.130 + ports: + - name: vllm-8000 + port: 8000 + protocol: TCP + - name: llama-cpp-8001 + port: 8001 + protocol: TCP + - name: router-8002 + port: 8002 + protocol: TCP +--- +apiVersion: v1 +kind: Service +metadata: + name: astro-orbiter-vllm + namespace: default + labels: + app.kubernetes.io/name: astro-orbiter-gateway + app.kubernetes.io/component: llm-inference +spec: + type: ExternalName + externalName: 10.1.71.130 + ports: + - name: vllm + port: 8000 + protocol: TCP