mirror of
https://github.com/infiniflow/ragflow.git
synced 2025-12-08 20:42:30 +08:00
Add OpenSearch support to Helm chart (#8921)
### What problem does this PR solve? Adds OpenSearch support to the RAGFlow Helm chart based on https://github.com/infiniflow/ragflow/pull/7140 and the existing Elasticsearch support in the Helm chart. ### Type of change - [X] New Feature (non-breaking change which adds functionality)
This commit is contained in:
@ -10,4 +10,8 @@ data:
|
||||
xpack.security.enabled: "true"
|
||||
xpack.security.http.ssl.enabled: "false"
|
||||
xpack.security.transport.ssl.enabled: "false"
|
||||
cluster.routing.allocation.disk.watermark.low: 5gb
|
||||
cluster.routing.allocation.disk.watermark.high: 3gb
|
||||
cluster.routing.allocation.disk.watermark.flood_stage: 2gb
|
||||
TZ: {{ .Values.env.TIMEZONE }}
|
||||
{{- end -}}
|
||||
|
||||
@ -43,6 +43,11 @@ stringData:
|
||||
ELASTIC_PASSWORD: {{ .Values.env.ELASTIC_PASSWORD | required "ELASTIC_PASSWORD is required" }}
|
||||
{{- else if eq .Values.env.DOC_ENGINE "infinity" }}
|
||||
INFINITY_HOST: {{ printf "%s-infinity.%s.svc" (include "ragflow.fullname" .) .Release.Namespace }}
|
||||
{{- else if eq .Values.env.DOC_ENGINE "opensearch" }}
|
||||
OS_HOST: {{ printf "%s-opensearch.%s.svc" (include "ragflow.fullname" .) .Release.Namespace }}
|
||||
OS_PORT: "9201"
|
||||
OPENSEARCH_PASSWORD: {{ .Values.env.OPENSEARCH_PASSWORD | required "OPENSEARCH_PASSWORD is required" }}
|
||||
OPENSEARCH_INITIAL_ADMIN_PASSWORD: {{ .Values.env.OPENSEARCH_PASSWORD | required "OPENSEARCH_PASSWORD is required" }}
|
||||
{{- else }}
|
||||
{{ fail "env.DOC_ENGINE must be either 'elasticsearch' or 'infinity'" }}
|
||||
{{ fail "env.DOC_ENGINE must be either 'elasticsearch', 'opensearch' or 'infinity'" }}
|
||||
{{- end }}
|
||||
|
||||
18
helm/templates/opensearch-config.yaml
Normal file
18
helm/templates/opensearch-config.yaml
Normal file
@ -0,0 +1,18 @@
|
||||
{{- if eq .Values.env.DOC_ENGINE "opensearch" -}}
|
||||
apiVersion: v1
|
||||
kind: ConfigMap
|
||||
metadata:
|
||||
name: {{ include "ragflow.fullname" . }}-opensearch-config
|
||||
data:
|
||||
node.name: opensearch01
|
||||
bootstrap.memory_lock: "false"
|
||||
discovery.type: single-node
|
||||
plugins.security.disabled: "false"
|
||||
plugins.security.ssl.http.enabled: "false"
|
||||
plugins.security.ssl.transport.enabled: "true"
|
||||
cluster.routing.allocation.disk.watermark.low: 5gb
|
||||
cluster.routing.allocation.disk.watermark.high: 3gb
|
||||
cluster.routing.allocation.disk.watermark.flood_stage: 2gb
|
||||
TZ: {{ .Values.env.TIMEZONE }}
|
||||
http.port: "9201"
|
||||
{{- end -}}
|
||||
116
helm/templates/opensearch.yaml
Normal file
116
helm/templates/opensearch.yaml
Normal file
@ -0,0 +1,116 @@
|
||||
{{- if eq .Values.env.DOC_ENGINE "opensearch" -}}
|
||||
apiVersion: v1
|
||||
kind: PersistentVolumeClaim
|
||||
metadata:
|
||||
name: {{ include "ragflow.fullname" . }}-opensearch-data
|
||||
annotations:
|
||||
"helm.sh/resource-policy": keep
|
||||
labels:
|
||||
{{- include "ragflow.labels" . | nindent 4 }}
|
||||
app.kubernetes.io/component: opensearch
|
||||
spec:
|
||||
{{- with .Values.opensearch.storage.className }}
|
||||
storageClassName: {{ . }}
|
||||
{{- end }}
|
||||
accessModes:
|
||||
- ReadWriteOnce
|
||||
resources:
|
||||
requests:
|
||||
storage: {{ .Values.opensearch.storage.capacity }}
|
||||
---
|
||||
apiVersion: apps/v1
|
||||
kind: Deployment
|
||||
metadata:
|
||||
name: {{ include "ragflow.fullname" . }}-opensearch
|
||||
labels:
|
||||
{{- include "ragflow.labels" . | nindent 4 }}
|
||||
app.kubernetes.io/component: opensearch
|
||||
spec:
|
||||
replicas: 1
|
||||
selector:
|
||||
matchLabels:
|
||||
{{- include "ragflow.selectorLabels" . | nindent 6 }}
|
||||
app.kubernetes.io/component: opensearch
|
||||
{{- with .Values.opensearch.deployment.strategy }}
|
||||
strategy:
|
||||
{{- . | toYaml | nindent 4 }}
|
||||
{{- end }}
|
||||
template:
|
||||
metadata:
|
||||
labels:
|
||||
{{- include "ragflow.labels" . | nindent 8 }}
|
||||
app.kubernetes.io/component: opensearch
|
||||
annotations:
|
||||
checksum/config-opensearch: {{ include (print $.Template.BasePath "/opensearch-config.yaml") . | sha256sum }}
|
||||
checksum/config-env: {{ include (print $.Template.BasePath "/env.yaml") . | sha256sum }}
|
||||
spec:
|
||||
initContainers:
|
||||
- name: fix-data-volume-permissions
|
||||
image: alpine
|
||||
command:
|
||||
- sh
|
||||
- -c
|
||||
- "chown -R 1000:0 /usr/share/opensearch/data"
|
||||
volumeMounts:
|
||||
- mountPath: /usr/share/opensearch/data
|
||||
name: opensearch-data
|
||||
- name: sysctl
|
||||
image: busybox
|
||||
securityContext:
|
||||
privileged: true
|
||||
runAsUser: 0
|
||||
command: ["sysctl", "-w", "vm.max_map_count=262144"]
|
||||
containers:
|
||||
- name: opensearch
|
||||
image: {{ .Values.opensearch.image.repository }}:{{ .Values.opensearch.image.tag }}
|
||||
envFrom:
|
||||
- secretRef:
|
||||
name: {{ include "ragflow.fullname" . }}-env-config
|
||||
- configMapRef:
|
||||
name: {{ include "ragflow.fullname" . }}-opensearch-config
|
||||
ports:
|
||||
- containerPort: 9201
|
||||
name: http
|
||||
volumeMounts:
|
||||
- mountPath: /usr/share/opensearch/data
|
||||
name: opensearch-data
|
||||
{{- with .Values.opensearch.deployment.resources }}
|
||||
resources:
|
||||
{{- . | toYaml | nindent 10 }}
|
||||
{{- end }}
|
||||
securityContext:
|
||||
capabilities:
|
||||
add:
|
||||
- "IPC_LOCK"
|
||||
runAsUser: 1000
|
||||
allowPrivilegeEscalation: false
|
||||
livenessProbe:
|
||||
httpGet:
|
||||
path: /
|
||||
port: 9201
|
||||
initialDelaySeconds: 30
|
||||
periodSeconds: 10
|
||||
timeoutSeconds: 10
|
||||
failureThreshold: 120
|
||||
volumes:
|
||||
- name: opensearch-data
|
||||
persistentVolumeClaim:
|
||||
claimName: {{ include "ragflow.fullname" . }}-opensearch-data
|
||||
---
|
||||
apiVersion: v1
|
||||
kind: Service
|
||||
metadata:
|
||||
name: {{ include "ragflow.fullname" . }}-opensearch
|
||||
labels:
|
||||
{{- include "ragflow.labels" . | nindent 4 }}
|
||||
app.kubernetes.io/component: opensearch
|
||||
spec:
|
||||
selector:
|
||||
{{- include "ragflow.selectorLabels" . | nindent 4 }}
|
||||
app.kubernetes.io/component: opensearch
|
||||
ports:
|
||||
- protocol: TCP
|
||||
port: 9201
|
||||
targetPort: http
|
||||
type: {{ .Values.opensearch.service.type }}
|
||||
{{- end -}}
|
||||
@ -4,8 +4,10 @@ env:
|
||||
# Available options:
|
||||
# - `elasticsearch` (default)
|
||||
# - `infinity` (https://github.com/infiniflow/infinity)
|
||||
# - `opensearch` (https://github.com/opensearch-project/OpenSearch)
|
||||
# DOC_ENGINE: elasticsearch
|
||||
DOC_ENGINE: infinity
|
||||
# DOC_ENGINE: opensearch
|
||||
|
||||
# The version of Elasticsearch.
|
||||
STACK_VERSION: "8.11.3"
|
||||
@ -13,6 +15,10 @@ env:
|
||||
# The password for Elasticsearch
|
||||
ELASTIC_PASSWORD: infini_rag_flow_helm
|
||||
|
||||
# The password for OpenSearch.
|
||||
# At least one uppercase letter, one lowercase letter, one digit, and one special character
|
||||
OPENSEARCH_PASSWORD: infini_rag_flow_OS_01
|
||||
|
||||
# The password for MySQL
|
||||
MYSQL_PASSWORD: infini_rag_flow_helm
|
||||
# The database of the MySQL service to use
|
||||
@ -130,6 +136,22 @@ elasticsearch:
|
||||
service:
|
||||
type: ClusterIP
|
||||
|
||||
opensearch:
|
||||
image:
|
||||
repository: opensearchproject/opensearch
|
||||
tag: 2.19.1
|
||||
storage:
|
||||
className:
|
||||
capacity: 20Gi
|
||||
deployment:
|
||||
strategy:
|
||||
resources:
|
||||
requests:
|
||||
cpu: "4"
|
||||
memory: "16Gi"
|
||||
service:
|
||||
type: ClusterIP
|
||||
|
||||
minio:
|
||||
image:
|
||||
repository: quay.io/minio/minio
|
||||
|
||||
Reference in New Issue
Block a user