values.yaml


Overview

The values.yaml file is a Helm chart values configuration file used to define customizable parameters for deploying a containerized application stack, likely related to a RAG (Retrieval-Augmented Generation) flow platform. This file specifies environment variables, container image details, resource configurations, storage options, service types, and ingress settings for multiple components such as RAGFlow, document engines (Elasticsearch, OpenSearch, Infinity), MinIO, MySQL, and Redis.

This configuration file acts as the primary source of deployment customization, enabling users or operators to control how the application and its dependent services are deployed in a Kubernetes environment. It supports setting passwords, image versions, resource requests, and service exposure types, among others, facilitating both local development and production-grade deployments.


Detailed Explanation

File Structure and Key Sections

The file is structured in YAML format with the following major sections:


1. Global Configuration

imagePullSecrets: []

Purpose:
Defines global image pull secrets for pulling container images from private registries. This is a list of references to Kubernetes secrets.

Usage:


2. Environment Variables (env)

This section defines environment variables that configure various services and their behavior.

Key Variables:

Variable

Description

Default / Example

DOC_ENGINE

Selects the document engine type. Options: elasticsearch, infinity, opensearch.

infinity

STACK_VERSION

Version of Elasticsearch to deploy.

"8.11.3"

ELASTIC_PASSWORD

Password for Elasticsearch authentication.

infini_rag_flow_helm

OPENSEARCH_PASSWORD

Password for OpenSearch with complexity requirements.

infini_rag_flow_OS_01

MYSQL_PASSWORD

Password for MySQL database.

infini_rag_flow_helm

MYSQL_DBNAME

Database name for MySQL service.

rag_flow

MINIO_ROOT_USER

Username for MinIO object storage.

rag_flow

MINIO_PASSWORD

Password for MinIO.

infini_rag_flow_helm

REDIS_PASSWORD

Password for Redis.

infini_rag_flow_helm

TIMEZONE

Local time zone setting.

"Asia/Shanghai"

HF_ENDPOINT

(Commented) Alternative HuggingFace mirror endpoint for restricted access environments.

N/A

MAX_CONTENT_LENGTH

(Commented) Max file size for uploads in bytes. Requires corresponding nginx config update.

134217728 (128MB)

DOC_BULK_SIZE

Number of document chunks processed per batch during parsing.

4

EMBEDDING_BATCH_SIZE

Number of text chunks processed per batch during embedding vectorization.

16


3. Component-Specific Configuration

Each service/component has its own nested configuration specifying container images, storage, deployment, and service details.

3.1 ragflow

ragflow:
  image:
    repository: infiniflow/ragflow
    tag: v0.20.5-slim
    pullPolicy: IfNotPresent
    pullSecrets: []
  service_conf: 
  llm_factories:
  deployment:
    strategy:
    resources:
  service:
    type: ClusterIP
  api:
    service:
      enabled: true
      type: ClusterIP

Usage example:

To expose the RAGFlow API externally, set ragflow.api.service.enabled: true and change type to LoadBalancer.


3.2 infinity

infinity:
  image:
    repository: infiniflow/infinity
    tag: v0.6.0-dev5
    pullPolicy: IfNotPresent
    pullSecrets: []
  storage:
    className:
    capacity: 5Gi
  deployment:
    strategy:
    resources:
  service:
    type: ClusterIP

3.3 elasticsearch

elasticsearch:
  image:
    repository: elasticsearch
    tag: "8.11.3"
    pullPolicy: IfNotPresent
    pullSecrets: []
  initContainers:
    alpine:
      repository: alpine
      tag: latest
      pullPolicy: IfNotPresent
    busybox:
      repository: busybox
      tag: latest
      pullPolicy: IfNotPresent
  storage:
    className:
    capacity: 20Gi
  deployment:
    strategy:
    resources:
      requests:
        cpu: "4"
        memory: "16Gi"
  service:
    type: ClusterIP

3.4 opensearch

Similar to Elasticsearch, but for OpenSearch service with version 2.19.1.


3.5 minio

Configuration for MinIO object storage with a default 5Gi storage.


3.6 mysql

MySQL database configuration with 5Gi storage and MySQL image version 8.0.39.


3.7 redis

Redis cache configuration with 5Gi storage, persistence enabled, and retention policy commented out.


4. Ingress Configuration

ingress:
  enabled: false
  className: ""
  annotations: {}
  hosts:
    - host: chart-example.local
      paths:
        - path: /
          pathType: ImplementationSpecific
  tls: []

Important Implementation Details


Interaction With Other System Components


Usage Example

To deploy with Elasticsearch as the document engine and expose the RAGFlow service externally with LoadBalancer:

env:
  DOC_ENGINE: elasticsearch

ragflow:
  service:
    type: LoadBalancer

elasticsearch:
  service:
    type: LoadBalancer

Visual Diagram: Flowchart of Main Configuration Sections and Relationships

flowchart TD
    A[values.yaml] --> B[Global Config]
    A --> C[Environment Variables (env)]
    A --> D[RAGFlow Config]
    A --> E[Document Engines Config]
    A --> F[Storage Services Config]
    A --> G[Ingress Config]

    E --> E1[Elasticsearch]
    E --> E2[OpenSearch]
    E --> E3[Infinity]

    F --> F1[MinIO]
    F --> F2[MySQL]
    F --> F3[Redis]

    D --> D1[Image & Tag]
    D --> D2[Service Type]
    D --> D3[Deployment Resources]

    G --> G1[Enabled]
    G --> G2[Hosts & Paths]
    G --> G3[TLS Settings]

Summary

The values.yaml file is a comprehensive Helm chart configuration for deploying a RAGFlow-based application stack on Kubernetes. It centralizes configuration for multiple services including document engines, storage, database, caching, and ingress, enabling flexible customization of deployment parameters like image versions, passwords, resource requests, and service exposure. It plays a critical role in defining the behavior and security of the deployed application components.