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 3d7e596e..43fbbe97 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 d39139bc..b1f8d1ea 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 7c45922d..1cfa4fd4 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: