Skip to content

Latest commit

 

History

History
232 lines (194 loc) · 9.57 KB

File metadata and controls

232 lines (194 loc) · 9.57 KB

dify-helm

Github All Releases Release Charts Artifact Hub

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

Prerequisites

  • Kubernetes: 1.23+
  • Helm: 3.12+

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
    subgraph ClusterIngress [Cluster Ingress]
        Ingress[🚪 Ingress]
        Gateway["🚪 Gateway API"]
        LB[⚖️ LoadBalancer]
    end
    Internet[🌐 Internet] --> ClusterIngress

    %% Main Traffic Flow
    ClusterIngress --> ProxyService[🔄 Proxy Service<br/>Port: 80]

    %% 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]
    ProxyPod -->|Agent Stub| AgentBackendService[🤖 Agent Backend Service<br/>Port: 5050]

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

    %% Worker Pod (Background Processing)
    WorkerPod[📦 Worker Pod<br/>langgenius/dify-api:1.17.0]

    %% Beat Pod (Periodic task scheduler)
    BeatPod[📦 Beat Pod<br/>langgenius/dify-api:1.17.0]

    %% Sandbox Service
    SandboxService[🏖️ Sandbox Service<br/>Port: 8194] --> SandboxPod[📦 Sandbox Pod<br/>langgenius/dify-sandbox:0.2.15<br/>Port: 8194]

    %% Agent Stack
    AgentBackendService[🤖 Agent Backend Service<br/>Port: 5050] --> AgentBackendPod[📦 Agent Backend Pod<br/>langgenius/dify-agent-backend:1.17.0<br/>Port: 5050]
    LocalSandboxService[🐚 Local Sandbox Service<br/>Port: 5004] --> LocalSandboxPod[📦 Local Sandbox Pod<br/>langgenius/dify-agent-local-sandbox:1.17.0<br/>Port: 5004]

    %% 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<br/>(non-streamed workflow, debugging)"| SandboxService
    WorkerPod -.->|"Code execution<br/>(streamed workflow, etc.)"| SandboxService
    SandboxPod -.->|API callbacks| APIService
    APIPod -.->|SSRF Protection| SSRFService
    WorkerPod -.->|SSRF Protection| SSRFService
    APIPod -.->|Plugin management| PluginService
    WorkerPod -.->|Plugin invoke| PluginService
    APIPod -.->|Agent runs| AgentBackendService
    WorkerPod -.->|Agent runs| AgentBackendService
    AgentBackendPod -.->|Shell execution| LocalSandboxService
    LocalSandboxPod -.->|Agent Stub| AgentBackendService
    LocalSandboxPod -.->|Signed file URLs| APIService
    AgentBackendPod -.->|Plugin invoke| PluginService
    AgentBackendPod -.->|Internal API| APIService
    PluginPod -.->|Plugin internal API| APIService

    %% 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, Celery, Pub/Sub| RedisService
    WorkerPod -.->|Celery, Pub/Sub| RedisService
    BeatPod -.->|Task Scheduling| RedisService
    AgentBackendPod -.->|Run state & streams| 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/MySQL)]
        ExternalRedis[(🔴 External Redis)]
        ExternalVector[(🧮 External Vector DB)]
        ExternalStorage[(💾 External Object Storage)]
        ExternalE2B[(☁️ External E2B Sandbox)]
    end

    %% External Service Connections (Alternative)
    APIPod -.->|Alternative| ExternalDB
    APIPod -.->|Alternative| ExternalRedis
    APIPod -.->|Alternative| ExternalVector
    APIPod -.->|Alternative| ExternalStorage
    AgentBackendPod -.->|Alternative| ExternalE2B
    ExternalE2B -.->|"Agent Stub, signed /files"| ClusterIngress
    ExternalE2B -.->|"Alternative (Agent Stub)"| AgentBackendService
    ExternalE2B -.->|"Alternative (signed /files)"| APIService

    %% 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,AgentBackendPod,LocalSandboxPod podClass
    class APIService,WebService,SandboxService,SSRFService,PluginService,ProxyService,AgentBackendService,LocalSandboxService serviceClass
    class PostgresService,RedisService,VectorDBService,WeaviateDB,QdrantDB,MilvusDB,PGVectorDB storageClass
    class ExternalDB,ExternalRedis,ExternalVector,ExternalStorage,ExternalE2B,S3Storage,AzureStorage,GCSStorage,MarketplaceAPI 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)
/openapi     → API Service (5001)
/explore     → Web Service (3000)
/e/          → Plugin Daemon (5002)
/marketplace → External Marketplace API
/mcp         → API Service (5001)
/triggers    → API Service (5001)
/socket.io/  → API WebSocket Service (5001)
/agent-stub  → Agent Backend Service (5050)
/            → Web Service (3000) [Default Route]

Core Components

Component Image Port Role
API langgenius/dify-api:1.17.0 5001 RESTful API server, business logic processing
API WebSocket langgenius/dify-api:1.17.0 5001 Socket.IO process for workflow collaboration
Web langgenius/dify-web:1.17.0 3000 Web UI frontend
Worker langgenius/dify-api:1.17.0 - Background task processing (Celery)
Beat langgenius/dify-api:1.17.0 - Periodic task scheduler (Celery Beat)
Sandbox langgenius/dify-sandbox:0.2.15 8194 Secure code execution environment
Agent Backend langgenius/dify-agent-backend:1.17.0 5050 Agent run orchestration
Local Sandbox langgenius/dify-agent-local-sandbox:1.17.0 5004 Agent shellctl execution environment
Plugin Daemon langgenius/dify-plugin-daemon:0.6.10-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)
  • External Database
    • PostgreSQL
    • MySQL
  • 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