Skip to content

BorisPolonsky/dify-helm

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

dify-helm

Github All Releases Release Charts Artifact Hub

Deploy langgenius/dify, an LLM-based chatbot app on Kubernetes with Helm chart.

Installation

TL;DR

helm repo add dify https://borispolonsky.github.io/dify-helm
helm repo update
helm install my-release dify/dify

For customized installation, please refer to the README.md file.

Network Architecture

The following diagram illustrates the complete network architecture and service topology of the Dify Helm deployment:

graph TB
    %% External Traffic Entry Points
    Internet[๐ŸŒ Internet] --> Ingress[๐Ÿšช Ingress Controller]
    Internet --> LB[โš–๏ธ LoadBalancer Service]

    %% Main Traffic Flow
    Ingress --> ProxyService[๐Ÿ”„ Proxy Service<br/>Port: 80]
    LB --> ProxyService

    %% Proxy Pod and Routing
    ProxyService --> ProxyPod[๐Ÿ“ฆ Proxy Pod<br/>nginx:latest<br/>Port: 80]

    %% Backend Services Routing
    ProxyPod -->|API Endpoints| APIService[๐Ÿ”ง API Service<br/>Port: 5001]
    ProxyPod -->|Web Pages| WebService[๐ŸŒ Web Service<br/>Port: 3000]
    ProxyPod -->|Plugin Routes| PluginService[๐Ÿ”Œ Plugin Daemon Service<br/>Port: 5002]
    ProxyPod -->|Marketplace| MarketplaceAPI[๐Ÿ›’ Marketplace API<br/>External]

    %% Backend Pods
    APIService --> APIPod[๐Ÿ“ฆ API Pod<br/>langgenius/dify-api:1.9.1<br/>Port: 5001]
    WebService --> WebPod[๐Ÿ“ฆ Web Pod<br/>langgenius/dify-web:1.9.1<br/>Port: 3000]
    PluginService --> PluginPod[๐Ÿ“ฆ Plugin Daemon Pod<br/>langgenius/dify-plugin-daemon:0.3.0-local<br/>Ports: 5002, 5003]

    %% Worker Pod (Background Processing)
    WorkerPod[๐Ÿ“ฆ Worker Pod<br/>langgenius/dify-api:1.9.1]

    %% Beat Pod (Periodic task scheduler)
    BeatPod[๐Ÿ“ฆ Beat Pod<br/>langgenius/dify-api:1.9.1]

    %% Sandbox Service
    SandboxService[๐Ÿ–๏ธ Sandbox Service<br/>Port: 8194] --> SandboxPod[๐Ÿ“ฆ Sandbox Pod<br/>langgenius/dify-sandbox:0.2.12<br/>Port: 8194]

    %% SSRF Proxy Service
    SSRFService[๐Ÿ›ก๏ธ SSRF Proxy Service<br/>Port: 3128] --> SSRFPod[๐Ÿ“ฆ SSRF Proxy Pod<br/>ubuntu/squid:latest<br/>Port: 3128]

    %% Internal Communications
    APIPod -.->|Code Execution| SandboxService
    APIPod -.->|SSRF Protection| SSRFService
    APIPod -.->|Plugin Management| PluginService
    WorkerPod -.->|Background Tasks| APIPod

    %% Data Layer - Databases
    subgraph DataLayer [๐Ÿ—„๏ธ Data Layer]
        PostgresService[๐Ÿ˜ PostgreSQL Service<br/>Port: 5432]
        RedisService[๐Ÿ”ด Redis Service<br/>Port: 6379]
        VectorDBService[๐Ÿงฎ Vector DB Service]
    end

    %% Database Connections
    APIPod -.->|Database Operations| PostgresService
    WorkerPod -.->|Database Operations| PostgresService
    PluginPod -.->|Database Operations| PostgresService

    APIPod -.->|Cache & Sessions| RedisService
    WorkerPod -.->|Task Processing| RedisService
    BeatPod -.->|Task Scheduling| RedisService

    APIPod -.->|Vector Storage| VectorDBService
    WorkerPod -.->|Vector Operations| VectorDBService

    %% Storage Layer
    subgraph StorageLayer [๐Ÿ’พ Storage Layer]
        StorageType{Storage Type}
        LocalPVC[๐Ÿ“ Local PVC]
        S3Storage[โ˜๏ธ AWS S3]
        AzureStorage[โ˜๏ธ Azure Blob]
        GCSStorage[โ˜๏ธ Google Cloud Storage]
    end

    %% Storage Connections
    APIPod -.->|File Storage| StorageType
    WorkerPod -.->|File Storage| StorageType
    PluginPod -.->|Plugin Storage| StorageType

    StorageType --> LocalPVC
    StorageType --> S3Storage
    StorageType --> AzureStorage
    StorageType --> GCSStorage

    %% Vector Database Options
    subgraph VectorOptions [๐Ÿงฎ Vector Database Options]
        WeaviateDB[๐ŸŒŠ Weaviate<br/>Port: 8080]
        QdrantDB[โšก Qdrant<br/>Port: 6333]
        MilvusDB[๐Ÿ” Milvus<br/>Port: 19530]
        PGVectorDB[๐Ÿ˜ PGVector<br/>Port: 5432]
    end

    VectorDBService -.-> WeaviateDB
    VectorDBService -.-> QdrantDB
    VectorDBService -.-> MilvusDB
    VectorDBService -.-> PGVectorDB

    %% External Dependencies
    subgraph ExternalServices [๐ŸŒ External Services]
        ExternalDB[(๐Ÿ”ง External PostgreSQL)]
        ExternalRedis[(๐Ÿ”ด External Redis)]
        ExternalVector[(๐Ÿงฎ External Vector DB)]
        ExternalStorage[(๐Ÿ’พ External Object Storage)]
    end

    %% External Service Connections (Alternative)
    APIPod -.->|Alternative| ExternalDB
    APIPod -.->|Alternative| ExternalRedis
    APIPod -.->|Alternative| ExternalVector
    APIPod -.->|Alternative| ExternalStorage

    %% Styling
    classDef podClass fill:#e1f5fe,stroke:#0277bd,stroke-width:2px
    classDef serviceClass fill:#f3e5f5,stroke:#7b1fa2,stroke-width:2px
    classDef storageClass fill:#e8f5e8,stroke:#2e7d32,stroke-width:2px
    classDef externalClass fill:#fff3e0,stroke:#ef6c00,stroke-width:2px

    class APIPod,WebPod,WorkerPod,BeatPod,SandboxPod,SSRFPod,PluginPod podClass
    class APIService,WebService,SandboxService,SSRFService,PluginService,ProxyService serviceClass
    class PostgresService,RedisService,VectorDBService,WeaviateDB,QdrantDB,MilvusDB,PGVectorDB storageClass
    class ExternalDB,ExternalRedis,ExternalVector,ExternalStorage,S3Storage,AzureStorage,GCSStorage externalClass
Loading

Traffic Routing Rules

The Nginx proxy handles traffic routing with the following rules:

/console/api โ†’ API Service (5001)
/api         โ†’ API Service (5001)
/v1          โ†’ API Service (5001)
/files       โ†’ API Service (5001)
/mcp         โ†’ API Service (5001)
/e/          โ†’ Plugin Daemon (5002)
/explore     โ†’ Web Service (3000)
/marketplace โ†’ External Marketplace API
/            โ†’ Web Service (3000) [Default Route]

Core Components

Component Image Port Role
API langgenius/dify-api:1.9.1 5001 RESTful API server, business logic processing
Web langgenius/dify-web:1.9.1 3000 Web UI frontend
Worker langgenius/dify-api:1.9.1 - Background task processing (Celery)
Beat langgenius/dify-api:1.9.1 - Periodic task scheduler (Celery Beat)
Sandbox langgenius/dify-sandbox:0.2.12 8194 Secure code execution environment
Plugin Daemon langgenius/dify-plugin-daemon:0.3.0-local 5002, 5003 Plugin management and execution
SSRF Proxy ubuntu/squid:latest 3128 External request security proxy
Nginx Proxy nginx:latest 80 Reverse proxy, load balancing

Supported External Components

  • Redis (Standalone and Sentinel)
  • PostgreSQL
  • Object Storage:
    • Amazon S3
    • Microsoft Azure Blob Storage
    • Alibaba Cloud OSS
    • Google Cloud Storage
    • Tencent Cloud COS
    • Huawei Cloud OBS
    • Volcengine TOS
  • External Vector DB:
    • Weaviate
    • Qdrant
    • Milvus
    • PGVector
    • Tencent Vector DB
    • MyScaleDB
    • TableStore
    • Elasticsearch

Contributors

About

Deploy langgenious/dify, an LLM based app on kubernetes with helm chart.

Topics

Resources

License

Stars

Watchers

Forks

Packages