From 69dc14f5d66fdaa4051359fbc1729cf893f96bcc Mon Sep 17 00:00:00 2001 From: Scott Davidson <49713135+sd109@users.noreply.github.com> Date: Tue, 4 Mar 2025 03:35:43 +0000 Subject: [PATCH] Add separate API service resource to Helm chart (#5572) ### What problem does this PR solve? Adds a new Kubernetes Service resource to the Helm chart which specifically targets the RAGFlow API. This feature useful for cases where you want to expose the RAGFlow HTTP API separately from the web interface, for example if RAGFlow is running behind an authenticating proxy it allows a route to bypass the proxy (e.g. by defining a separate ingress resource which forwards to the separate API-only k8s service added here) to provide RAGFlow API access. This is still secure since API access is already authenticated by API keys inside RAGFlow itself. ### Type of change - [X] New Feature (non-breaking change which adds functionality) --- helm/templates/ingress.yaml | 2 +- helm/templates/ragflow.yaml | 22 ++++++++++++++++++++++ helm/values.yaml | 4 ++++ 3 files changed, 27 insertions(+), 1 deletion(-) diff --git a/helm/templates/ingress.yaml b/helm/templates/ingress.yaml index 3d7e596e3..43fbbe97d 100644 --- a/helm/templates/ingress.yaml +++ b/helm/templates/ingress.yaml @@ -35,7 +35,7 @@ spec: {{- end }} backend: service: - name: {{ include "ragflow.fullname" $ }} + name: {{ .Release.Name }} port: name: http {{- end }} diff --git a/helm/templates/ragflow.yaml b/helm/templates/ragflow.yaml index d39139bc3..b1f8d1ea1 100644 --- a/helm/templates/ragflow.yaml +++ b/helm/templates/ragflow.yaml @@ -31,6 +31,8 @@ spec: ports: - containerPort: 80 name: http + - containerPort: 9380 + name: http-api volumeMounts: - mountPath: /etc/nginx/conf.d/ragflow.conf subPath: ragflow.conf @@ -70,3 +72,23 @@ spec: targetPort: http name: http type: {{ .Values.ragflow.service.type }} +--- +{{- if .Values.ragflow.api.service.enabled }} +apiVersion: v1 +kind: Service +metadata: + name: {{ .Release.Name }}-api + labels: + {{- include "ragflow.labels" . | nindent 4 }} + app.kubernetes.io/component: ragflow +spec: + selector: + {{- include "ragflow.selectorLabels" . | nindent 4 }} + app.kubernetes.io/component: ragflow + ports: + - protocol: TCP + port: 80 + targetPort: http-api + name: http-api + type: {{ .Values.ragflow.api.service.type }} +{{- end }} diff --git a/helm/values.yaml b/helm/values.yaml index 7c45922d3..1cfa4fd4a 100644 --- a/helm/values.yaml +++ b/helm/values.yaml @@ -69,6 +69,10 @@ ragflow: service: # Use LoadBalancer to expose the web interface externally type: ClusterIP + api: + service: + enabled: true + type: ClusterIP infinity: image: