diff --git a/ragstack/charts/langflow-runtime/README.md b/ragstack/charts/langflow-runtime/README.md deleted file mode 100644 index 7bce8b9070c1..000000000000 --- a/ragstack/charts/langflow-runtime/README.md +++ /dev/null @@ -1,44 +0,0 @@ -# LangFlow runtime chart - -Deploy LangFlow flows to Kubernetes with this Helm chart. - -## Import a flow - -There are two ways to import a flow: - -1. **From a remote location**: You can reference a flow stored in a remote location, such as a URL or a Git repository by customizing the `values.yaml` file in the section `downloadFlows`: - -```yaml -downloadFlows: - flows: - - url: https://raw.githubusercontent.com/langflow-ai/langflow/dev/tests/data/BasicChatwithPromptandHistory.json -# basicAuth: "myuser:mypassword" -# headers: -# Authorization: "Bearer my-key" -``` - -2. **Packaging the flow as docker image**: You can add a flow from to a docker image based on Langflow runtime and refer to it in the chart. - See an example in the `apps` directory. - -## Deploy the flow - -``` -helm install langflow ./langflow-runtime \ - --set "downloadFlows.flows[0].uuid=4ca07770-c0e4-487c-ad42-77c6039ce02e" \ - --set "downloadFlows.flows[0].url=https://raw.githubusercontent.com/nicoloboschi/langflow-flows/main/openai.json" \ - --set replicaCount=1 - -kubectl port-forward svc/langflow-langflow-runtime 7860:7860 - -curl -X POST \ - "http://localhost:7860/api/v1/run/4ca07770-c0e4-487c-ad42-77c6039ce02e?stream=false" \ - -H 'Content-Type: application/json'\ - -d '{"input_value": "message", - "output_type": "chat", - "input_type": "chat", - "tweaks": { - "ChatInput-1BPcY": {}, - "ChatOutput-J1bsS": {} -}}' - -``` diff --git a/ragstack/charts/langflow-runtime/examples/just-chat/Dockerfile b/ragstack/charts/langflow-runtime/examples/just-chat/Dockerfile deleted file mode 100644 index 1c524e9c0a24..000000000000 --- a/ragstack/charts/langflow-runtime/examples/just-chat/Dockerfile +++ /dev/null @@ -1,4 +0,0 @@ -FROM ghcr.io/datastax/ragstack-ai-langflow-backend:0.0.8 -RUN mkdir /app/flows -COPY ./*json /app/flows/. -ENV LANGFLOW_LOAD_FLOWS_PATH=/app/flows diff --git a/ragstack/charts/langflow-runtime/examples/just-chat/README.md b/ragstack/charts/langflow-runtime/examples/just-chat/README.md deleted file mode 100644 index 34fb3a7d33b5..000000000000 --- a/ragstack/charts/langflow-runtime/examples/just-chat/README.md +++ /dev/null @@ -1,15 +0,0 @@ -# Package the flow as docker image - -You can package the flow as a docker image and refer to it in the chart. - -``` -docker build -t langflow-just-chat . -``` - -Then refer to this image in the `values.yaml`: - -```yaml -image: - repository: langflow-just-chat - tag: latest -``` diff --git a/ragstack/charts/langflow-runtime/examples/just-chat/justchat.json b/ragstack/charts/langflow-runtime/examples/just-chat/justchat.json deleted file mode 100644 index 3a7bcf21c6fb..000000000000 --- a/ragstack/charts/langflow-runtime/examples/just-chat/justchat.json +++ /dev/null @@ -1,362 +0,0 @@ -{ - "id": "4ca07770-c0e4-487c-ad42-77c6039ce02e", - "data": { - "nodes": [ - { - "id": "ChatInput-FKsPa", - "type": "genericNode", - "position": { "x": 393, "y": 150.625 }, - "data": { - "type": "ChatInput", - "node": { - "template": { - "code": { - "type": "code", - "required": true, - "placeholder": "", - "list": false, - "show": true, - "multiline": true, - "value": "from typing import Optional, Union\n\nfrom langflow.base.io.chat import ChatComponent\nfrom langflow.field_typing import Text\nfrom langflow.schema import Record\n\n\nclass ChatInput(ChatComponent):\n display_name = \"Chat Input\"\n description = \"Get chat inputs from the Playground.\"\n icon = \"ChatInput\"\n\n def build_config(self):\n build_config = super().build_config()\n build_config[\"input_value\"] = {\n \"input_types\": [],\n \"display_name\": \"Message\",\n \"multiline\": True,\n }\n\n return build_config\n\n def build(\n self,\n sender: Optional[str] = \"User\",\n sender_name: Optional[str] = \"User\",\n input_value: Optional[str] = None,\n session_id: Optional[str] = None,\n return_record: Optional[bool] = False,\n ) -> Union[Text, Record]:\n return super().build_no_record(\n sender=sender,\n sender_name=sender_name,\n input_value=input_value,\n session_id=session_id,\n return_record=return_record,\n )\n", - "fileTypes": [], - "file_path": "", - "password": false, - "name": "code", - "advanced": true, - "dynamic": true, - "info": "", - "load_from_db": false, - "title_case": false - }, - "input_value": { - "type": "str", - "required": false, - "placeholder": "", - "list": false, - "show": true, - "multiline": true, - "fileTypes": [], - "file_path": "", - "password": false, - "name": "input_value", - "display_name": "Message", - "advanced": false, - "input_types": [], - "dynamic": false, - "info": "", - "load_from_db": false, - "title_case": false, - "value": "asasa" - }, - "return_record": { - "type": "bool", - "required": false, - "placeholder": "", - "list": false, - "show": true, - "multiline": false, - "value": false, - "fileTypes": [], - "file_path": "", - "password": false, - "name": "return_record", - "display_name": "Return Record", - "advanced": true, - "dynamic": false, - "info": "Return the message as a record containing the sender, sender_name, and session_id.", - "load_from_db": false, - "title_case": false - }, - "sender": { - "type": "str", - "required": false, - "placeholder": "", - "list": true, - "show": true, - "multiline": false, - "value": "User", - "fileTypes": [], - "file_path": "", - "password": false, - "options": ["Machine", "User"], - "name": "sender", - "display_name": "Sender Type", - "advanced": true, - "dynamic": false, - "info": "", - "load_from_db": false, - "title_case": false, - "input_types": ["Text"] - }, - "sender_name": { - "type": "str", - "required": false, - "placeholder": "", - "list": false, - "show": true, - "multiline": false, - "value": "User", - "fileTypes": [], - "file_path": "", - "password": false, - "name": "sender_name", - "display_name": "Sender Name", - "advanced": false, - "dynamic": false, - "info": "", - "load_from_db": false, - "title_case": false, - "input_types": ["Text"] - }, - "session_id": { - "type": "str", - "required": false, - "placeholder": "", - "list": false, - "show": true, - "multiline": false, - "fileTypes": [], - "file_path": "", - "password": false, - "name": "session_id", - "display_name": "Session ID", - "advanced": true, - "dynamic": false, - "info": "If provided, the message will be stored in the memory.", - "load_from_db": false, - "title_case": false, - "input_types": ["Text"] - }, - "_type": "CustomComponent" - }, - "description": "Get chat inputs from the Playground.", - "icon": "ChatInput", - "base_classes": ["object", "Record", "str", "Text"], - "display_name": "Chat Input", - "documentation": "", - "custom_fields": { - "sender": null, - "sender_name": null, - "input_value": null, - "session_id": null, - "return_record": null - }, - "output_types": ["Text", "Record"], - "field_formatters": {}, - "frozen": false, - "field_order": [], - "beta": false - }, - "id": "ChatInput-FKsPa" - }, - "selected": false, - "width": 384, - "height": 375 - }, - { - "id": "ChatOutput-KPOpD", - "type": "genericNode", - "position": { "x": 1032, "y": 283.625 }, - "data": { - "type": "ChatOutput", - "node": { - "template": { - "code": { - "type": "code", - "required": true, - "placeholder": "", - "list": false, - "show": true, - "multiline": true, - "value": "from typing import Optional, Union\n\nfrom langflow.base.io.chat import ChatComponent\nfrom langflow.field_typing import Text\nfrom langflow.schema import Record\n\n\nclass ChatOutput(ChatComponent):\n display_name = \"Chat Output\"\n description = \"Display a chat message in the Playground.\"\n icon = \"ChatOutput\"\n\n def build(\n self,\n sender: Optional[str] = \"Machine\",\n sender_name: Optional[str] = \"AI\",\n input_value: Optional[str] = None,\n session_id: Optional[str] = None,\n return_record: Optional[bool] = False,\n record_template: Optional[str] = \"{text}\",\n ) -> Union[Text, Record]:\n return super().build_with_record(\n sender=sender,\n sender_name=sender_name,\n input_value=input_value,\n session_id=session_id,\n return_record=return_record,\n record_template=record_template or \"\",\n )\n", - "fileTypes": [], - "file_path": "", - "password": false, - "name": "code", - "advanced": true, - "dynamic": true, - "info": "", - "load_from_db": false, - "title_case": false - }, - "input_value": { - "type": "str", - "required": false, - "placeholder": "", - "list": false, - "show": true, - "multiline": true, - "fileTypes": [], - "file_path": "", - "password": false, - "name": "input_value", - "display_name": "Message", - "advanced": false, - "input_types": ["Text"], - "dynamic": false, - "info": "", - "load_from_db": false, - "title_case": false - }, - "record_template": { - "type": "str", - "required": false, - "placeholder": "", - "list": false, - "show": true, - "multiline": true, - "value": "{text}", - "fileTypes": [], - "file_path": "", - "password": false, - "name": "record_template", - "display_name": "Record Template", - "advanced": true, - "dynamic": false, - "info": "In case of Message being a Record, this template will be used to convert it to text.", - "load_from_db": false, - "title_case": false, - "input_types": ["Text"] - }, - "return_record": { - "type": "bool", - "required": false, - "placeholder": "", - "list": false, - "show": true, - "multiline": false, - "value": false, - "fileTypes": [], - "file_path": "", - "password": false, - "name": "return_record", - "display_name": "Return Record", - "advanced": true, - "dynamic": false, - "info": "Return the message as a record containing the sender, sender_name, and session_id.", - "load_from_db": false, - "title_case": false - }, - "sender": { - "type": "str", - "required": false, - "placeholder": "", - "list": true, - "show": true, - "multiline": false, - "value": "Machine", - "fileTypes": [], - "file_path": "", - "password": false, - "options": ["Machine", "User"], - "name": "sender", - "display_name": "Sender Type", - "advanced": true, - "dynamic": false, - "info": "", - "load_from_db": false, - "title_case": false, - "input_types": ["Text"] - }, - "sender_name": { - "type": "str", - "required": false, - "placeholder": "", - "list": false, - "show": true, - "multiline": false, - "value": "AI", - "fileTypes": [], - "file_path": "", - "password": false, - "name": "sender_name", - "display_name": "Sender Name", - "advanced": false, - "dynamic": false, - "info": "", - "load_from_db": false, - "title_case": false, - "input_types": ["Text"] - }, - "session_id": { - "type": "str", - "required": false, - "placeholder": "", - "list": false, - "show": true, - "multiline": false, - "fileTypes": [], - "file_path": "", - "password": false, - "name": "session_id", - "display_name": "Session ID", - "advanced": true, - "dynamic": false, - "info": "If provided, the message will be stored in the memory.", - "load_from_db": false, - "title_case": false, - "input_types": ["Text"] - }, - "_type": "CustomComponent" - }, - "description": "Display a chat message in the Playground.", - "icon": "ChatOutput", - "base_classes": ["object", "Record", "str", "Text"], - "display_name": "Chat Output", - "documentation": "", - "custom_fields": { - "sender": null, - "sender_name": null, - "input_value": null, - "session_id": null, - "return_record": null, - "record_template": null - }, - "output_types": ["Text", "Record"], - "field_formatters": {}, - "frozen": false, - "field_order": [], - "beta": false - }, - "id": "ChatOutput-KPOpD" - }, - "selected": false, - "width": 384, - "height": 383 - } - ], - "edges": [ - { - "source": "ChatInput-FKsPa", - "sourceHandle": "{œbaseClassesœ:[œobjectœ,œRecordœ,œstrœ,œTextœ],œdataTypeœ:œChatInputœ,œidœ:œChatInput-FKsPaœ}", - "target": "ChatOutput-KPOpD", - "targetHandle": "{œfieldNameœ:œinput_valueœ,œidœ:œChatOutput-KPOpDœ,œinputTypesœ:[œTextœ],œtypeœ:œstrœ}", - "data": { - "targetHandle": { - "fieldName": "input_value", - "id": "ChatOutput-KPOpD", - "inputTypes": ["Text"], - "type": "str" - }, - "sourceHandle": { - "baseClasses": ["object", "Record", "str", "Text"], - "dataType": "ChatInput", - "id": "ChatInput-FKsPa" - } - }, - "style": { "stroke": "#555" }, - "className": "stroke-foreground stroke-connection", - "id": "reactflow__edge-ChatInput-FKsPa{œbaseClassesœ:[œobjectœ,œRecordœ,œstrœ,œTextœ],œdataTypeœ:œChatInputœ,œidœ:œChatInput-FKsPaœ}-ChatOutput-KPOpD{œfieldNameœ:œinput_valueœ,œidœ:œChatOutput-KPOpDœ,œinputTypesœ:[œTextœ],œtypeœ:œstrœ}" - } - ], - "viewport": { - "x": -107.7632978980871, - "y": -17.72772770977791, - "zoom": 1.2660822170323138 - } - }, - "description": "Craft Language Connections Here.", - "name": "justchat", - "last_tested_version": "0.0.3", - "is_component": false -} diff --git a/ragstack/charts/langflow-runtime/examples/just-chat/values.yaml b/ragstack/charts/langflow-runtime/examples/just-chat/values.yaml deleted file mode 100644 index ac6bc22150cf..000000000000 --- a/ragstack/charts/langflow-runtime/examples/just-chat/values.yaml +++ /dev/null @@ -1,11 +0,0 @@ -image: - repository: "langflow-just-chat" - tag: latest - -downloadFlows: - path: /app/flows - flows: - - url: https://raw.githubusercontent.com/langflow-ai/langflow/dev/tests/data/BasicChatwithPromptandHistory.json - basicAuth: "myuser:cc" - headers: - X-test: "Bearer my" diff --git a/ragstack/charts/langflow-runtime/langflow-runtime/.helmignore b/ragstack/charts/langflow-runtime/langflow-runtime/.helmignore deleted file mode 100644 index 0e8a0eb36f4c..000000000000 --- a/ragstack/charts/langflow-runtime/langflow-runtime/.helmignore +++ /dev/null @@ -1,23 +0,0 @@ -# Patterns to ignore when building packages. -# This supports shell glob matching, relative path matching, and -# negation (prefixed with !). Only one pattern per line. -.DS_Store -# Common VCS dirs -.git/ -.gitignore -.bzr/ -.bzrignore -.hg/ -.hgignore -.svn/ -# Common backup files -*.swp -*.bak -*.tmp -*.orig -*~ -# Various IDEs -.project -.idea/ -*.tmproj -.vscode/ diff --git a/ragstack/charts/langflow-runtime/langflow-runtime/Chart.yaml b/ragstack/charts/langflow-runtime/langflow-runtime/Chart.yaml deleted file mode 100644 index cb3af2f22293..000000000000 --- a/ragstack/charts/langflow-runtime/langflow-runtime/Chart.yaml +++ /dev/null @@ -1,6 +0,0 @@ -apiVersion: v2 -name: langflow-runtime -description: A helm chart for running LangFlow flows as a service -type: application -version: 0.1.0 -appVersion: "" diff --git a/ragstack/charts/langflow-runtime/langflow-runtime/templates/_helpers.tpl b/ragstack/charts/langflow-runtime/langflow-runtime/templates/_helpers.tpl deleted file mode 100644 index bf1da88efa9a..000000000000 --- a/ragstack/charts/langflow-runtime/langflow-runtime/templates/_helpers.tpl +++ /dev/null @@ -1,62 +0,0 @@ -{{/* -Expand the name of the chart. -*/}} -{{- define "langflow-runtime.name" -}} -{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" }} -{{- end }} - -{{/* -Create a default fully qualified app name. -We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec). -If release name contains chart name it will be used as a full name. -*/}} -{{- define "langflow-runtime.fullname" -}} -{{- if .Values.fullnameOverride }} -{{- .Values.fullnameOverride | trunc 63 | trimSuffix "-" }} -{{- else }} -{{- $name := default .Chart.Name .Values.nameOverride }} -{{- if contains $name .Release.Name }} -{{- .Release.Name | trunc 63 | trimSuffix "-" }} -{{- else }} -{{- printf "%s-%s" .Release.Name $name | trunc 63 | trimSuffix "-" }} -{{- end }} -{{- end }} -{{- end }} - -{{/* -Create chart name and version as used by the chart label. -*/}} -{{- define "langflow-runtime.chart" -}} -{{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" }} -{{- end }} - -{{/* -Common labels -*/}} -{{- define "langflow-runtime.labels" -}} -helm.sh/chart: {{ include "langflow-runtime.chart" . }} -{{ include "langflow-runtime.selectorLabels" . }} -{{- if .Chart.AppVersion }} -app.kubernetes.io/version: {{ .Chart.AppVersion | quote }} -{{- end }} -app.kubernetes.io/managed-by: {{ .Release.Service }} -{{- end }} - -{{/* -Selector labels -*/}} -{{- define "langflow-runtime.selectorLabels" -}} -app.kubernetes.io/name: {{ include "langflow-runtime.name" . }} -app.kubernetes.io/instance: {{ .Release.Name }} -{{- end }} - -{{/* -Create the name of the service account to use -*/}} -{{- define "langflow-runtime.serviceAccountName" -}} -{{- if .Values.serviceAccount.create }} -{{- default (include "langflow-runtime.fullname" .) .Values.serviceAccount.name }} -{{- else }} -{{- default "default" .Values.serviceAccount.name }} -{{- end }} -{{- end }} diff --git a/ragstack/charts/langflow-runtime/langflow-runtime/templates/deployment.yaml b/ragstack/charts/langflow-runtime/langflow-runtime/templates/deployment.yaml deleted file mode 100644 index fe183a2dc3e2..000000000000 --- a/ragstack/charts/langflow-runtime/langflow-runtime/templates/deployment.yaml +++ /dev/null @@ -1,90 +0,0 @@ -apiVersion: apps/v1 -kind: Deployment -metadata: - name: {{ include "langflow-runtime.fullname" . }} - labels: - {{- include "langflow-runtime.labels" . | nindent 4 }} -spec: - replicas: {{ .Values.replicaCount }} - selector: - matchLabels: - {{- include "langflow-runtime.selectorLabels" . | nindent 6 }} - template: - metadata: - {{- with .Values.podAnnotations }} - annotations: - {{- toYaml . | nindent 8 }} - {{- end }} - labels: - {{- include "langflow-runtime.labels" . | nindent 8 }} - {{- with .Values.podLabels }} - {{- toYaml . | nindent 8 }} - {{- end }} - spec: - {{- with .Values.imagePullSecrets }} - imagePullSecrets: - {{- toYaml . | nindent 8 }} - {{- end }} - serviceAccountName: {{ include "langflow-runtime.serviceAccountName" . }} - securityContext: - {{- toYaml .Values.podSecurityContext | nindent 8 }} - containers: - - name: {{ .Chart.Name }} - securityContext: - {{- toYaml .Values.securityContext | nindent 12 }} - image: "{{ .Values.image.repository }}:{{ .Values.image.tag | default .Chart.AppVersion }}" - imagePullPolicy: {{ .Values.image.pullPolicy }} - ports: - - name: http - containerPort: {{ .Values.service.port }} - protocol: TCP - livenessProbe: - {{- toYaml .Values.livenessProbe | nindent 12 }} - readinessProbe: - {{- toYaml .Values.readinessProbe | nindent 12 }} - resources: - {{- toYaml .Values.resources | nindent 12 }} - volumeMounts: - {{- with .Values.volumeMounts }} - {{- toYaml . | nindent 12 }} - {{- end }} - command: ["/bin/bash", "-cx"] - args: - - > - set -e && - mkdir -p {{ .Values.downloadFlows.path }} && - {{- range .Values.downloadFlows.flows }} - echo "Downloading flows from {{ .url }}" && - curl --fail -o {{ $.Values.downloadFlows.path }}/{{ .uuid | default (.url | sha256sum | trunc 8) }}.json \ - {{- if .basicAuth }} - -u "{{ .basicAuth }}" \ - {{- end }} - {{- if .headers }} - {{- range $key, $value := .headers }} - -H "{{ $key }}: {{ $value }}" \ - {{- end }} - {{- end }} - {{ .url }} && - {{- end }} - echo 'Flows downloaded' && - langflow run --backend-only --host 0.0.0.0 --port {{ .Values.service.port }} - env: - - name: LANGFLOW_LOAD_FLOWS_PATH - value: "{{ .Values.downloadFlows.path }}" - {{- toYaml .Values.env | nindent 12 }} - {{- with .Values.volumes }} - volumes: - {{- toYaml . | nindent 8 }} - {{- end }} - {{- with .Values.nodeSelector }} - nodeSelector: - {{- toYaml . | nindent 8 }} - {{- end }} - {{- with .Values.affinity }} - affinity: - {{- toYaml . | nindent 8 }} - {{- end }} - {{- with .Values.tolerations }} - tolerations: - {{- toYaml . | nindent 8 }} - {{- end }} diff --git a/ragstack/charts/langflow-runtime/langflow-runtime/templates/ingress.yaml b/ragstack/charts/langflow-runtime/langflow-runtime/templates/ingress.yaml deleted file mode 100644 index 05ead6bc79e1..000000000000 --- a/ragstack/charts/langflow-runtime/langflow-runtime/templates/ingress.yaml +++ /dev/null @@ -1,61 +0,0 @@ -{{- if .Values.ingress.enabled -}} -{{- $fullName := include "langflow-runtime.fullname" . -}} -{{- $svcPort := .Values.service.port -}} -{{- if and .Values.ingress.className (not (semverCompare ">=1.18-0" .Capabilities.KubeVersion.GitVersion)) }} - {{- if not (hasKey .Values.ingress.annotations "kubernetes.io/ingress.class") }} - {{- $_ := set .Values.ingress.annotations "kubernetes.io/ingress.class" .Values.ingress.className}} - {{- end }} -{{- end }} -{{- if semverCompare ">=1.19-0" .Capabilities.KubeVersion.GitVersion -}} -apiVersion: networking.k8s.io/v1 -{{- else if semverCompare ">=1.14-0" .Capabilities.KubeVersion.GitVersion -}} -apiVersion: networking.k8s.io/v1beta1 -{{- else -}} -apiVersion: extensions/v1beta1 -{{- end }} -kind: Ingress -metadata: - name: {{ $fullName }} - labels: - {{- include "langflow-runtime.labels" . | nindent 4 }} - {{- with .Values.ingress.annotations }} - annotations: - {{- toYaml . | nindent 4 }} - {{- end }} -spec: - {{- if and .Values.ingress.className (semverCompare ">=1.18-0" .Capabilities.KubeVersion.GitVersion) }} - ingressClassName: {{ .Values.ingress.className }} - {{- end }} - {{- if .Values.ingress.tls }} - tls: - {{- range .Values.ingress.tls }} - - hosts: - {{- range .hosts }} - - {{ . | quote }} - {{- end }} - secretName: {{ .secretName }} - {{- end }} - {{- end }} - rules: - {{- range .Values.ingress.hosts }} - - host: {{ .host | quote }} - http: - paths: - {{- range .paths }} - - path: {{ .path }} - {{- if and .pathType (semverCompare ">=1.18-0" $.Capabilities.KubeVersion.GitVersion) }} - pathType: {{ .pathType }} - {{- end }} - backend: - {{- if semverCompare ">=1.19-0" $.Capabilities.KubeVersion.GitVersion }} - service: - name: {{ $fullName }} - port: - number: {{ $svcPort }} - {{- else }} - serviceName: {{ $fullName }} - servicePort: {{ $svcPort }} - {{- end }} - {{- end }} - {{- end }} -{{- end }} diff --git a/ragstack/charts/langflow-runtime/langflow-runtime/templates/service.yaml b/ragstack/charts/langflow-runtime/langflow-runtime/templates/service.yaml deleted file mode 100644 index 1c2fe4b24b92..000000000000 --- a/ragstack/charts/langflow-runtime/langflow-runtime/templates/service.yaml +++ /dev/null @@ -1,15 +0,0 @@ -apiVersion: v1 -kind: Service -metadata: - name: {{ include "langflow-runtime.fullname" . }} - labels: - {{- include "langflow-runtime.labels" . | nindent 4 }} -spec: - type: {{ .Values.service.type }} - ports: - - port: {{ .Values.service.port }} - targetPort: http - protocol: TCP - name: http - selector: - {{- include "langflow-runtime.selectorLabels" . | nindent 4 }} diff --git a/ragstack/charts/langflow-runtime/langflow-runtime/templates/serviceaccount.yaml b/ragstack/charts/langflow-runtime/langflow-runtime/templates/serviceaccount.yaml deleted file mode 100644 index 1e83bffc63fa..000000000000 --- a/ragstack/charts/langflow-runtime/langflow-runtime/templates/serviceaccount.yaml +++ /dev/null @@ -1,13 +0,0 @@ -{{- if .Values.serviceAccount.create -}} -apiVersion: v1 -kind: ServiceAccount -metadata: - name: {{ include "langflow-runtime.serviceAccountName" . }} - labels: - {{- include "langflow-runtime.labels" . | nindent 4 }} - {{- with .Values.serviceAccount.annotations }} - annotations: - {{- toYaml . | nindent 4 }} - {{- end }} -automountServiceAccountToken: {{ .Values.serviceAccount.automount }} -{{- end }} diff --git a/ragstack/charts/langflow-runtime/langflow-runtime/values.yaml b/ragstack/charts/langflow-runtime/langflow-runtime/values.yaml deleted file mode 100644 index 2d7d08bcb5ed..000000000000 --- a/ragstack/charts/langflow-runtime/langflow-runtime/values.yaml +++ /dev/null @@ -1,111 +0,0 @@ -replicaCount: 1 - -image: - repository: "ghcr.io/datastax/ragstack-ai-langflow-backend" - pullPolicy: IfNotPresent - tag: "latest" - -downloadFlows: - path: /app/flows -# flows: -# - url: https://raw.githubusercontent.com/langflow-ai/langflow/dev/tests/data/basic_example.json -# basicAuth: "myuser:mypassword" -# headers: -# Authorization: "Bearer my-key" - -imagePullSecrets: [] -nameOverride: "" -fullnameOverride: "" - -serviceAccount: - # Specifies whether a service account should be created - create: true - # Automatically mount a ServiceAccount's API credentials? - automount: true - # Annotations to add to the service account - annotations: {} - # The name of the service account to use. - # If not set and create is true, a name is generated using the fullname template - name: "" - -podAnnotations: {} -podLabels: {} - -podSecurityContext: {} - # fsGroup: 2000 - -securityContext: {} - # capabilities: - # drop: - # - ALL - # readOnlyRootFilesystem: true - # runAsNonRoot: true - # runAsUser: 1000 -env: - - name: LANGFLOW_LOG_LEVEL - value: "INFO" -# - name: openai_key_var -# valueFrom: -# secretKeyRef: -# name: openai-key -# key: openai-key - - -service: - type: ClusterIP - port: 7860 - -ingress: - enabled: false - className: "" - annotations: {} - # kubernetes.io/ingress.class: nginx - # kubernetes.io/tls-acme: "true" - hosts: - - host: chart-example.local - paths: - - path: / - pathType: ImplementationSpecific - tls: [] - # - secretName: chart-example-tls - # hosts: - # - chart-example.local - -resources: {} - # We usually recommend not to specify default resources and to leave this as a conscious - # choice for the user. This also increases chances charts run on environments with little - # resources, such as Minikube. If you do want to specify resources, uncomment the following - # lines, adjust them as necessary, and remove the curly braces after 'resources:'. - # limits: - # cpu: 100m - # memory: 128Mi - # requests: - # cpu: 100m - # memory: 128Mi - -livenessProbe: - httpGet: - path: /api/v1/version - port: http -readinessProbe: - httpGet: - path: /api/v1/version - port: http - -volumes: [] -# - name: foo -# secret: -# secretName: mysecret -# optional: false - -# Additional volumeMounts on the output Deployment definition. -volumeMounts: [] -# - name: foo -# mountPath: "/etc/foo" -# readOnly: true - -nodeSelector: {} - -tolerations: [] - -affinity: {} \ No newline at end of file diff --git a/ragstack/deploy/kubernetes/helm/langflow/.helmignore b/ragstack/deploy/kubernetes/helm/langflow/.helmignore deleted file mode 100644 index 0e8a0eb36f4c..000000000000 --- a/ragstack/deploy/kubernetes/helm/langflow/.helmignore +++ /dev/null @@ -1,23 +0,0 @@ -# Patterns to ignore when building packages. -# This supports shell glob matching, relative path matching, and -# negation (prefixed with !). Only one pattern per line. -.DS_Store -# Common VCS dirs -.git/ -.gitignore -.bzr/ -.bzrignore -.hg/ -.hgignore -.svn/ -# Common backup files -*.swp -*.bak -*.tmp -*.orig -*~ -# Various IDEs -.project -.idea/ -*.tmproj -.vscode/ diff --git a/ragstack/deploy/kubernetes/helm/langflow/Chart.yaml b/ragstack/deploy/kubernetes/helm/langflow/Chart.yaml deleted file mode 100644 index be932c64a5ee..000000000000 --- a/ragstack/deploy/kubernetes/helm/langflow/Chart.yaml +++ /dev/null @@ -1,29 +0,0 @@ -apiVersion: v2 -name: langflow -description: A Helm chart for Kubernetes - -# A chart can be either an 'application' or a 'library' chart. -# -# Application charts are a collection of templates that can be packaged into versioned archives -# to be deployed. -# -# Library charts provide useful utilities or functions for the chart developer. They're included as -# a dependency of application charts to inject those utilities and functions into the rendering -# pipeline. Library charts do not define any templates and therefore cannot be deployed. -type: application - -# This is the chart version. This version number should be incremented each time you make changes -# to the chart and its templates, including the app version. -# Versions are expected to follow Semantic Versioning (https://semver.org/) -version: 0.1.0 - -# This is the version number of the application being deployed. This version number should be -# incremented each time you make changes to the application. Versions are not expected to -# follow Semantic Versioning. They should reflect the version the application is using. -appVersion: 1.16.0 - -dependencies: - - name: postgresql - version: 12.1.0 - repository: https://charts.bitnami.com/bitnami - condition: postgresql.enabled diff --git a/ragstack/deploy/kubernetes/helm/langflow/README.md b/ragstack/deploy/kubernetes/helm/langflow/README.md deleted file mode 100644 index dcb62e25bc3b..000000000000 --- a/ragstack/deploy/kubernetes/helm/langflow/README.md +++ /dev/null @@ -1,19 +0,0 @@ -# helm chart - -This is the helm chart for RAGStack LangFlow. Postgres is a dependent chart but optional. - -## how to install - -``` -cd ragstack/deploy/kubernetes/helm - -helm dependency update ./langflow - -kubectl create namespace langflow - -helm install --dry-run langflow ./langflow --values ./langflow/values.yaml - -helm install --namespace langflow --debug langflow ./langflow --values ./langflow/values.yaml - -helm upgrade langflow ./langflow --values ./langflow/values.yaml --namespace langflow --debug -``` diff --git a/ragstack/deploy/kubernetes/helm/langflow/templates/NOTES.txt b/ragstack/deploy/kubernetes/helm/langflow/templates/NOTES.txt deleted file mode 100644 index 2087c008ab73..000000000000 --- a/ragstack/deploy/kubernetes/helm/langflow/templates/NOTES.txt +++ /dev/null @@ -1,22 +0,0 @@ -1. Get the application URL by running these commands: -{{- if .Values.ingress.enabled }} -{{- range $host := .Values.ingress.hosts }} - {{- range .paths }} - http{{ if $.Values.ingress.tls }}s{{ end }}://{{ $host.host }}{{ . }} - {{- end }} -{{- end }} -{{- else if contains "NodePort" .Values.service.type }} - export NODE_PORT=$(kubectl get --namespace {{ .Release.Namespace }} -o jsonpath="{.spec.ports[0].nodePort}" services {{ include "langflow.fullname" . }}) - export NODE_IP=$(kubectl get nodes --namespace {{ .Release.Namespace }} -o jsonpath="{.items[0].status.addresses[0].address}") - echo http://$NODE_IP:$NODE_PORT -{{- else if contains "LoadBalancer" .Values.service.type }} - NOTE: It may take a few minutes for the LoadBalancer IP to be available. - You can watch the status of by running 'kubectl get --namespace {{ .Release.Namespace }} svc -w {{ include "langflow.fullname" . }}' - export SERVICE_IP=$(kubectl get svc --namespace {{ .Release.Namespace }} {{ include "langflow.fullname" . }} --template "{{"{{ range (index .status.loadBalancer.ingress 0) }}{{.}}{{ end }}"}}") - echo http://$SERVICE_IP:{{ .Values.service.port }} -{{- else if contains "ClusterIP" .Values.service.type }} - export POD_NAME=$(kubectl get pods --namespace {{ .Release.Namespace }} -l "app.kubernetes.io/name={{ include "langflow.name" . }},app.kubernetes.io/instance={{ .Release.Name }}" -o jsonpath="{.items[0].metadata.name}") - export CONTAINER_PORT=$(kubectl get pod --namespace {{ .Release.Namespace }} $POD_NAME -o jsonpath="{.spec.containers[0].ports[0].containerPort}") - echo "Visit http://127.0.0.1:8080 to use your application" - kubectl --namespace {{ .Release.Namespace }} port-forward $POD_NAME 8080:$CONTAINER_PORT -{{- end }} diff --git a/ragstack/deploy/kubernetes/helm/langflow/templates/_helpers.tpl b/ragstack/deploy/kubernetes/helm/langflow/templates/_helpers.tpl deleted file mode 100644 index fd3b228820f3..000000000000 --- a/ragstack/deploy/kubernetes/helm/langflow/templates/_helpers.tpl +++ /dev/null @@ -1,62 +0,0 @@ -{{/* -Expand the name of the chart. -*/}} -{{- define "langflow.name" -}} -{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" }} -{{- end }} - -{{/* -Create a default fully qualified app name. -We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec). -If release name contains chart name it will be used as a full name. -*/}} -{{- define "langflow.fullname" -}} -{{- if .Values.fullnameOverride }} -{{- .Values.fullnameOverride | trunc 63 | trimSuffix "-" }} -{{- else }} -{{- $name := default .Chart.Name .Values.nameOverride }} -{{- if contains $name .Release.Name }} -{{- .Release.Name | trunc 63 | trimSuffix "-" }} -{{- else }} -{{- printf "%s-%s" .Release.Name $name | trunc 63 | trimSuffix "-" }} -{{- end }} -{{- end }} -{{- end }} - -{{/* -Create chart name and version as used by the chart label. -*/}} -{{- define "langflow.chart" -}} -{{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" }} -{{- end }} - -{{/* -Common labels -*/}} -{{- define "langflow.labels" -}} -helm.sh/chart: {{ include "langflow.chart" . }} -{{ include "langflow.selectorLabels" . }} -{{- if .Chart.AppVersion }} -app.kubernetes.io/version: {{ .Chart.AppVersion | quote }} -{{- end }} -app.kubernetes.io/managed-by: {{ .Release.Service }} -{{- end }} - -{{/* -Selector labels -*/}} -{{- define "langflow.selectorLabels" -}} -app.kubernetes.io/name: {{ include "langflow.name" . }} -app.kubernetes.io/instance: {{ .Release.Name }} -{{- end }} - -{{/* -Create the name of the service account to use -*/}} -{{- define "langflow.serviceAccountName" -}} -{{- if .Values.serviceAccount.create }} -{{- default (include "langflow.fullname" .) .Values.serviceAccount.name }} -{{- else }} -{{- default "default" .Values.serviceAccount.name }} -{{- end }} -{{- end }} diff --git a/ragstack/deploy/kubernetes/helm/langflow/templates/backend-statefulset.yaml b/ragstack/deploy/kubernetes/helm/langflow/templates/backend-statefulset.yaml deleted file mode 100644 index 932e6f69ba2a..000000000000 --- a/ragstack/deploy/kubernetes/helm/langflow/templates/backend-statefulset.yaml +++ /dev/null @@ -1,134 +0,0 @@ -apiVersion: apps/v1 -kind: StatefulSet -metadata: - name: {{ include "langflow.fullname" . }} - labels: - {{- include "langflow.labels" . | nindent 4 }} -spec: - serviceName: "{{ include "langflow.fullname" . }}-service" - replicas: {{ .Values.langflow.replicaCount }} - selector: - matchLabels: - {{- include "langflow.selectorLabels" . | nindent 6 }} - template: - metadata: - {{- with .Values.langflow.podAnnotations }} - annotations: - {{- toYaml . | nindent 8 }} - {{- end }} - labels: - {{- include "langflow.selectorLabels" . | nindent 8 }} - spec: - {{- with .Values.imagePullSecrets }} - imagePullSecrets: - {{- toYaml . | nindent 8 }} - {{- end }} - serviceAccountName: {{ include "langflow.serviceAccountName" . }} - securityContext: - {{- toYaml .Values.langflow.podSecurityContext | nindent 8 }} - volumes: - {{- if .Values.enableTls }} - - name: certs - secret: - secretName: "{{ .Values.tlsSecretName }}" - {{- end }} - {{- if .Values.secretProvider.enabled }} - - name: secrets-store-inline - csi: - driver: secrets-store.csi.k8s.io - readOnly: true - volumeAttributes: - secretProviderClass: "{{- .Values.secretProvider.name }}" - {{- end }} - containers: - - name: {{ .Chart.Name }} - securityContext: - {{- toYaml .Values.langflow.securityContext | nindent 12 }} - image: "{{ .Values.langflow.image.repository }}:{{ .Values.langflow.image.tag | default .Chart.AppVersion }}" - imagePullPolicy: {{ .Values.langflow.image.pullPolicy }} - {{- if .Values.langflow.command }} - command: - {{- toYaml .Values.langflow.command | nindent 12 }} - {{- end }} - {{- if .Values.langflow.args }} - args: - {{- toYaml .Values.langflow.args | nindent 12 }} - {{- end }} - ports: - - name: http - containerPort: {{ .Values.langflow.backend.port | default 7860 }} - protocol: TCP - volumeMounts: - {{- if .Values.enableTls }} - - name: certs - readOnly: true - mountPath: /certs - {{- end }} - {{- if .Values.secretProvider.enabled }} - - name: secrets-store-inline - mountPath: "/mnt/secrets" - readOnly: true - {{- end }} - {{- if eq .Values.langflow.database.type "sqlite" }} - - name: data - mountPath: /data - {{- end }} - livenessProbe: - httpGet: - path: /health - port: {{ .Values.langflow.backend.port | default 7860 }} - initialDelaySeconds: {{ .Values.langflow.backend.initialDelaySeconds | default 60 }} - periodSeconds: {{ .Values.langflow.backend.periodSeconds | default 15 }} - timeoutSeconds: {{ .Values.langflow.backend.timeoutSeconds | default 5 }} - failureThreshold: {{ .Values.langflow.backend.failureThreshold | default 2 }} - readinessProbe: - httpGet: - path: /health - port: {{ .Values.langflow.backend.port | default 7860 }} - initialDelaySeconds: {{ .Values.langflow.backend.initialDelaySeconds | default 45 }} - periodSeconds: {{ .Values.langflow.backend.periodSeconds | default 15 }} - timeoutSeconds: {{ .Values.langflow.backend.timeoutSeconds | default 5 }} - failureThreshold: {{ .Values.langflow.backend.failureThreshold | default 2 }} - env: - - name: ENVIRONMENT - value: "{{ .Values.environment | default "dev" }}" - - name: DOMAIN - value: "{{ .Values.domain | default "localhost" }}" - {{- if and .Values.langflow.database .Values.langflow.database.secretsEnabled }} - - name: LANGFLOW_DATABASE_URL - valueFrom: - secretKeyRef: - name: db-sql-url - key: db-sql-url.txt - {{- else if and .Values.langflow.database .Values.langflow.database.url }} - value: "{{ .Values.langflow.database.url }}" - {{- end }} - - name: LANGFLOW_HOST - value: "{{ .Values.langflow.host | default "0.0.0.0" }}" - - name: LANGFLOW_BACKEND_ONLY - value: "{{ .Values.langflow.backend.backendOnly | default false }}" - resources: - {{- toYaml .Values.langflow.resources | nindent 12 }} - {{- with .Values.langflow.nodeSelector }} - nodeSelector: - {{- toYaml . | nindent 8 }} - {{- end }} - {{- with .Values.langflow.affinity }} - affinity: - {{- toYaml . | nindent 8 }} - {{- end }} - {{- with .Values.langflow.tolerations }} - tolerations: - {{- toYaml . | nindent 8 }} - {{- end }} - {{- if eq .Values.langflow.database.type "sqlite" }} - volumeClaimTemplates: - - metadata: - name: data - spec: - accessModes: [ "ReadWriteOnce" ] - resources: - requests: - storage: {{ .Values.langflow.database.size }} - storageClassName: "langflow-sqlite" - {{- end }} \ No newline at end of file diff --git a/ragstack/deploy/kubernetes/helm/langflow/templates/db-storageclass.yaml b/ragstack/deploy/kubernetes/helm/langflow/templates/db-storageclass.yaml deleted file mode 100644 index ddf2ed59e4aa..000000000000 --- a/ragstack/deploy/kubernetes/helm/langflow/templates/db-storageclass.yaml +++ /dev/null @@ -1,42 +0,0 @@ -{{- if .Values.langflow.database.type }} -apiVersion: storage.k8s.io/v1 -kind: StorageClass -metadata: - name: "{{ template "langflow.fullname" . }}-{{ .Values.langflow.database.type }}" - namespace: {{ .Release.Namespace }} - labels: - app: {{ template "langflow.name" . }} - chart: {{ template "langflow.chart" . }} - release: {{ .Release.Name }} - heritage: {{ .Release.Service }} - component: {{ .Values.langflow.database.type }} - cluster: {{ template "langflow.fullname" . }} -allowVolumeExpansion: true -reclaimPolicy: Retain -volumeBindingMode: WaitForFirstConsumer -{{- if .Values.langflow.database.volumes.storageClass }} -provisioner: {{ .Values.langflow.database.volumes.storageClass.provisioner }} -parameters: - {{- if .Values.langflow.database.volumes.storageClass.type }} - type: {{ .Values.langflow.database.volumes.storageClass.type }} - {{- end }} - {{- if .Values.langflow.database.volumes.storageClass.fsType }} - fsType: {{ .Values.langflow.database.volumes.storageClass.fsType }} - {{- end }} - {{- if .Values.langflow.database.volumes.storageClass.extraParams }} -{{ toYaml .Values.langflow.database.volumes.storageClass.extraParams | indent 2 }} - {{- end }} -{{- else if .Values.default_storage }} -provisioner: {{ .Values.default_storage.provisioner }} -parameters: - {{- if .Values.default_storage.type }} - type: {{ .Values.default_storage.type }} - {{- end }} - {{- if .Values.default_storage.fsType }} - fsType: {{ .Values.default_storage.fsType }} - {{- end }} - {{- if .Values.default_storage.extraParams }} -{{ toYaml .Values.default_storage.extraParams | indent 2 }} - {{- end }} -{{- end }} -{{- end }} \ No newline at end of file diff --git a/ragstack/deploy/kubernetes/helm/langflow/templates/frontend-deployment.yaml b/ragstack/deploy/kubernetes/helm/langflow/templates/frontend-deployment.yaml deleted file mode 100644 index 4decc3fe508c..000000000000 --- a/ragstack/deploy/kubernetes/helm/langflow/templates/frontend-deployment.yaml +++ /dev/null @@ -1,107 +0,0 @@ -{{- if .Values.langflow.frontend.enabled }} -apiVersion: apps/v1 -kind: Deployment -metadata: - name: {{ include "langflow.fullname" . }}-frontend - labels: - {{- include "langflow.labels" . | nindent 4 }} -spec: - replicas: {{ .Values.langflow.frontend.replicaCount }} - selector: - matchLabels: - {{- include "langflow.selectorLabels" . | nindent 6 }} - template: - metadata: - {{- with .Values.langflow.frontend.podAnnotations }} - annotations: - {{- toYaml . | nindent 8 }} - {{- end }} - labels: - {{- include "langflow.selectorLabels" . | nindent 8 }} - spec: - {{- with .Values.imagePullSecrets }} - imagePullSecrets: - {{- toYaml . | nindent 8 }} - {{- end }} - serviceAccountName: {{ include "langflow.serviceAccountName" . }} - securityContext: - {{- toYaml .Values.langflow.podSecurityContext | nindent 8 }} - volumes: - {{- if .Values.enableTls }} - - name: certs - secret: - secretName: "{{ .Values.tlsSecretName }}" - {{- end }} - {{- if .Values.secretProvider.enabled }} - - name: secrets-store-inline - csi: - driver: secrets-store.csi.k8s.io - readOnly: true - volumeAttributes: - secretProviderClass: "{{- .Values.secretProvider.name }}" - {{- end }} - containers: - - name: {{ .Chart.Name }} - securityContext: - {{- toYaml .Values.langflow.securityContext | nindent 12 }} - image: "{{ .Values.langflow.frontend.image.repository }}:{{ .Values.langflow.frontend.image.tag | default .Chart.AppVersion }}" - imagePullPolicy: {{ .Values.langflow.frontend.image.pullPolicy }} - {{- if .Values.langflow.frontend.command }} - command: - {{- toYaml .Values.langflow.frontend.command | nindent 12 }} - {{- end }} - {{- if .Values.langflow.frontend.args }} - args: - {{- toYaml .Values.langflow.frontend.args | nindent 12 }} - {{- end }} - ports: - - name: http - containerPort: {{ .Values.langflow.frontend.port | default 8080 }} - protocol: TCP - volumeMounts: - {{- if .Values.enableTls }} - - name: certs - readOnly: true - mountPath: /certs - {{- end }} - {{- if .Values.secretProvider.enabled }} - - name: secrets-store-inline - mountPath: "/mnt/secrets" - readOnly: true - {{- end }} - livenessProbe: - httpGet: - path: /index - port: {{ .Values.langflow.frontend.port | default 8080 }} - initialDelaySeconds: {{ .Values.langflow.frontend.initialDelaySeconds | default 60 }} - periodSeconds: {{ .Values.langflow.frontend.periodSeconds | default 15 }} - timeoutSeconds: {{ .Values.langflow.frontend.timeoutSeconds | default 5 }} - failureThreshold: {{ .Values.langflow.frontend.failureThreshold | default 2 }} - readinessProbe: - httpGet: - path: /index - port: {{ .Values.langflow.frontend.port | default 8080 }} - initialDelaySeconds: {{ .Values.langflow.frontend.initialDelaySeconds | default 45 }} - periodSeconds: {{ .Values.langflow.frontend.periodSeconds | default 15 }} - timeoutSeconds: {{ .Values.langflow.frontend.timeoutSeconds | default 5 }} - failureThreshold: {{ .Values.langflow.frontend.failureThreshold | default 2 }} - env: - - name: ENVIRONMENT - value: "{{ .Values.environment | default "dev" }}" - - name: BACKEND_URL - value: "http://{{ template "langflow.fullname" . }}.{{ .Release.Namespace }}.svc.cluster.local:{{ .Values.langflow.backend.port | default 7860 }}" - resources: - {{- toYaml .Values.langflow.frontend.resources | nindent 12 }} - {{- with .Values.langflow.nodeSelector }} - nodeSelector: - {{- toYaml . | nindent 8 }} - {{- end }} - {{- with .Values.langflow.affinity }} - affinity: - {{- toYaml . | nindent 8 }} - {{- end }} - {{- with .Values.langflow.tolerations }} - tolerations: - {{- toYaml . | nindent 8 }} - {{- end }} -{{- end }} \ No newline at end of file diff --git a/ragstack/deploy/kubernetes/helm/langflow/templates/hpa.yaml b/ragstack/deploy/kubernetes/helm/langflow/templates/hpa.yaml deleted file mode 100644 index 56d23cc8af67..000000000000 --- a/ragstack/deploy/kubernetes/helm/langflow/templates/hpa.yaml +++ /dev/null @@ -1,28 +0,0 @@ -{{- if .Values.autoscaling.enabled }} -apiVersion: autoscaling/v2beta1 -kind: HorizontalPodAutoscaler -metadata: - name: {{ include "langflow.fullname" . }} - labels: - {{- include "langflow.labels" . | nindent 4 }} -spec: - scaleTargetRef: - apiVersion: apps/v1 - kind: Deployment - name: {{ include "langflow.fullname" . }} - minReplicas: {{ .Values.autoscaling.minReplicas }} - maxReplicas: {{ .Values.autoscaling.maxReplicas }} - metrics: - {{- if .Values.autoscaling.targetCPUUtilizationPercentage }} - - type: Resource - resource: - name: cpu - targetAverageUtilization: {{ .Values.autoscaling.targetCPUUtilizationPercentage }} - {{- end }} - {{- if .Values.autoscaling.targetMemoryUtilizationPercentage }} - - type: Resource - resource: - name: memory - targetAverageUtilization: {{ .Values.autoscaling.targetMemoryUtilizationPercentage }} - {{- end }} -{{- end }} diff --git a/ragstack/deploy/kubernetes/helm/langflow/templates/ingress.yaml b/ragstack/deploy/kubernetes/helm/langflow/templates/ingress.yaml deleted file mode 100644 index a09a5c04fc56..000000000000 --- a/ragstack/deploy/kubernetes/helm/langflow/templates/ingress.yaml +++ /dev/null @@ -1,41 +0,0 @@ -{{- if .Values.ingress.enabled -}} -{{- $fullName := include "langflow.fullname" . -}} -{{- $svcPort := .Values.service.port -}} -{{- if semverCompare ">=1.14-0" .Capabilities.KubeVersion.GitVersion -}} -apiVersion: networking.k8s.io/v1beta1 -{{- else -}} -apiVersion: extensions/v1beta1 -{{- end }} -kind: Ingress -metadata: - name: {{ $fullName }} - labels: - {{- include "langflow.labels" . | nindent 4 }} - {{- with .Values.ingress.annotations }} - annotations: - {{- toYaml . | nindent 4 }} - {{- end }} -spec: - {{- if .Values.ingress.tls }} - tls: - {{- range .Values.ingress.tls }} - - hosts: - {{- range .hosts }} - - {{ . | quote }} - {{- end }} - secretName: {{ .secretName }} - {{- end }} - {{- end }} - rules: - {{- range .Values.ingress.hosts }} - - host: {{ .host | quote }} - http: - paths: - {{- range .paths }} - - path: {{ . }} - backend: - serviceName: {{ $fullName }} - servicePort: {{ $svcPort }} - {{- end }} - {{- end }} - {{- end }} diff --git a/ragstack/deploy/kubernetes/helm/langflow/templates/service.yaml b/ragstack/deploy/kubernetes/helm/langflow/templates/service.yaml deleted file mode 100644 index ddc6fe82519a..000000000000 --- a/ragstack/deploy/kubernetes/helm/langflow/templates/service.yaml +++ /dev/null @@ -1,15 +0,0 @@ -apiVersion: v1 -kind: Service -metadata: - name: {{ include "langflow.fullname" . }} - labels: - {{- include "langflow.labels" . | nindent 4 }} -spec: - type: {{ .Values.service.type }} - ports: - - port: {{ .Values.service.port }} - targetPort: http - protocol: TCP - name: http - selector: - {{- include "langflow.selectorLabels" . | nindent 4 }} diff --git a/ragstack/deploy/kubernetes/helm/langflow/templates/serviceaccount.yaml b/ragstack/deploy/kubernetes/helm/langflow/templates/serviceaccount.yaml deleted file mode 100644 index e45c47f5991e..000000000000 --- a/ragstack/deploy/kubernetes/helm/langflow/templates/serviceaccount.yaml +++ /dev/null @@ -1,12 +0,0 @@ -{{- if .Values.serviceAccount.create -}} -apiVersion: v1 -kind: ServiceAccount -metadata: - name: {{ include "langflow.serviceAccountName" . }} - labels: - {{- include "langflow.labels" . | nindent 4 }} - {{- with .Values.serviceAccount.annotations }} - annotations: - {{- toYaml . | nindent 4 }} - {{- end }} -{{- end }} diff --git a/ragstack/deploy/kubernetes/helm/langflow/templates/tests/test-connection.yaml b/ragstack/deploy/kubernetes/helm/langflow/templates/tests/test-connection.yaml deleted file mode 100644 index e574fee42d4a..000000000000 --- a/ragstack/deploy/kubernetes/helm/langflow/templates/tests/test-connection.yaml +++ /dev/null @@ -1,15 +0,0 @@ -apiVersion: v1 -kind: Pod -metadata: - name: "{{ include "langflow.fullname" . }}-test-connection" - labels: - {{- include "langflow.labels" . | nindent 4 }} - annotations: - "helm.sh/hook": test -spec: - containers: - - name: wget - image: busybox - command: ['wget'] - args: ['{{ include "langflow.fullname" . }}:{{ .Values.service.port }}'] - restartPolicy: Never diff --git a/ragstack/deploy/kubernetes/helm/langflow/values.yaml b/ragstack/deploy/kubernetes/helm/langflow/values.yaml deleted file mode 100644 index fd7ca8432da6..000000000000 --- a/ragstack/deploy/kubernetes/helm/langflow/values.yaml +++ /dev/null @@ -1,142 +0,0 @@ -# Default values for langflow. -# This is a YAML-formatted file. -# Declare variables to be passed into your templates. - -postgresql: - enabled: false - -environment: "dev" -enableTls: false - -autoscaling: - enabled: false - -imagePullSecrets: [] -nameOverride: "langflow" -fullnameOverride: "langflow" - -serviceAccount: - # Specifies whether a service account should be created - create: true - # Annotations to add to the service account - annotations: {} - # The name of the service account to use. - # If not set and create is true, a name is generated using the fullname template - name: "" - -securityContext: {} - # capabilities: - # drop: - # - ALL - # readOnlyRootFilesystem: true - # runAsNonRoot: true - # runAsUser: 1000 - -service: - type: ClusterIP - port: 7860 - -ingress: - enabled: false - annotations: {} - # kubernetes.io/ingress.class: nginx - # kubernetes.io/tls-acme: "true" - hosts: - - host: chart-example.local - paths: [] - tls: [] - # - secretName: chart-example-tls - # hosts: - # - chart-example.local - -# Define the storage class for GCP storage -# default_storage: -# provisioner: "kubernetes.io/gce-pd" -# type: "pd-standard" -# fsType: "ext4" -# extraParams: {} -# Define the storage class for AWS storage -default_storage: - provisioner: "kubernetes.io/aws-ebs" - type: "gp2" - fsType: "ext4" - -backendSts: - enabled: false - -langflow: - replicaCount: 1 - command: - - langflow - args: - - run - - --host - - 0.0.0.0 - - --backend-only - - --log-level - - info - - --workers - - "1" - - --port - - "7860" - backend: - port: 7860 - database: - secretsEnabled: false - type: "sqlite" - size: "1Gi" - volumes: - storageClass: - provisioner: "kubernetes.io/aws-ebs" - type: "gp2" - fsType: "ext4" - extraParams: {} - image: - repository: ghcr.io/datastax/ragstack-ai-langflow-backend - pullPolicy: IfNotPresent - # Overrides the image tag whose default is the chart appVersion. - tag: latest - resources: - # We usually recommend not to specify default resources and to leave this as a conscious - # choice for the user. This also increases chances charts run on environments with little - # resources, such as Minikube. If you do want to specify resources, uncomment the following - # lines, adjust them as necessary, and remove the curly braces after 'resources:'. - limits: - cpu: 1000m - memory: 1.5Gi - requests: - cpu: 250m - memory: 768Mi - - frontend: - enabled: true - port: 8080 - image: - repository: itestmycode/ragstack-ai-langflow-frontend - pullPolicy: IfNotPresent - # Overrides the image tag whose default is the chart appVersion. - tag: 0.0.8 - resources: - limits: - cpu: 1000m - memory: 1.5Gi - requests: - cpu: 250m - memory: 768Mi - - nodeSelector: {} - - tolerations: [] - - affinity: {} - podAnnotations: - prometheus.io/scrape: "true" - prometheus.io/port: "9090" - prometheus.io/path: "/metrics" - - podSecurityContext: {} - # fsGroup: 2000 - - -secretProvider: - enabled: false