helm/README.md
A Helm chart to deploy RAGFlow and its dependencies on Kubernetes.
helm upgrade --install ragflow ./ \
--namespace ragflow --create-namespace
Uninstall:
helm uninstall ragflow -n ragflow
global.repo: Prepend a global image registry prefix for all images.
quay.io/minio/minio -> registry.example.com/myproj/minio/minio).global.repo: "registry.example.com/myproj"global.imagePullSecrets: List of image pull secrets applied to all Pods.
global:
imagePullSecrets:
- name: regcred
The chart can deploy in-cluster services or connect to external ones. Toggle with *.enabled. When disabled, provide host/port via env.*.
mysql.enabled: default truefalse, set:
env.MYSQL_HOST (required), env.MYSQL_PORT (default 3306)env.MYSQL_DBNAME (default rag_flow), env.MYSQL_PASSWORD (required)env.MYSQL_USER (default root if omitted)minio.enabled: default trueenv.MINIO_HOST (optional external host), env.MINIO_PORT (default 9000)env.MINIO_ROOT_USER (default rag_flow), env.MINIO_PASSWORD (optional)redis.enabled: default truefalse, set:
env.REDIS_HOST (required), env.REDIS_PORT (default 6379)env.REDIS_PASSWORD (optional; empty disables auth if server allows)Notes:
*.enabled=true, the chart renders in-cluster resources and injects corresponding *_HOST/*_PORT automatically.MYSQL_PASSWORD are required; MINIO_PASSWORD and REDIS_PASSWORD are optional. All secrets are stored in a Secret.# values.override.yaml
mysql:
enabled: false # use external MySQL
minio:
enabled: false # use external MinIO (S3 compatible)
redis:
enabled: false # use external Redis/Valkey
env:
# MySQL
MYSQL_HOST: mydb.example.com
MYSQL_PORT: "3306"
MYSQL_USER: root
MYSQL_DBNAME: rag_flow
MYSQL_PASSWORD: "<your-mysql-password>"
# MinIO
MINIO_HOST: s3.example.com
MINIO_PORT: "9000"
MINIO_ROOT_USER: rag_flow
MINIO_PASSWORD: "<your-minio-secret>"
# Redis
REDIS_HOST: redis.example.com
REDIS_PORT: "6379"
REDIS_PASSWORD: "<your-redis-pass>"
Apply:
helm upgrade --install ragflow ./helm -n ragflow -f values.override.yaml
Choose one of infinity (default), elasticsearch, or opensearch via env.DOC_ENGINE. The chart renders only the selected engine and sets the appropriate host variables.
env:
DOC_ENGINE: infinity # or: elasticsearch | opensearch
# For elasticsearch
ELASTIC_PASSWORD: "<es-pass>"
# For opensearch
OPENSEARCH_PASSWORD: "<os-pass>"
Expose the web UI via Ingress:
ingress:
enabled: true
className: nginx
hosts:
- host: ragflow.example.com
paths:
- path: /
pathType: Prefix
helm lint ./helm
helm template ragflow ./helm > rendered.yaml
DOC_ENGINE: infinity and deploys in-cluster MySQL, MinIO, and Redis.*_HOST/*_PORT and required secrets into a single Secret (<release>-ragflow-env-config).global.repo and global.imagePullSecrets apply to all Pods; per-component *.image.pullSecrets still work and are merged with global settings.