Установка Dify
В этом документе описывается, как развернуть Dify в Kubernetes cluster с помощью Helm chart и стандартной конфигурации. Обзор Dify и его компонентов см. в Introduction. Этот chart разворачивает только компоненты Dify; PostgreSQL, Redis и vector store должны предоставляться извне и настраиваться в values.
Содержание
ОбзорПредварительные требованияЗагрузкаРазвертываниеПодготовка DatabaseПодготовка RedisПодготовка Vector Store (для RAG)Подготовка Storage (необязательно)Создание ApplicationОбязательная конфигурацияМинимально необходимые значенияДополнительная конфигурацияDatabase (SSL)Vector store (отключение)Ingress (host и TLS)Storage (S3 and PVC)PIP install mirror (proxy)Marketplace (внутренняя сеть)ДоступУправление пользователямиОбзор
Этот chart запускает следующие компоненты как отдельные workloads:
- API – Backend API и бизнес-логика
- Worker – Celery workers для асинхронных задач
- Worker Beat – Celery beat для задач по расписанию
- Web – Frontend UI
- Plugin Daemon – среда выполнения plugin
- Sandbox – изолированное выполнение кода
- SSRF Proxy – proxy на базе Squid для исходящих запросов
Предварительные требования
- Kubernetes 1.19+
- Ingress controller (например, nginx-ingress-controller) при публикации через Ingress
- Внешний PostgreSQL 12+ (этот chart поддерживает только PostgreSQL)
- Внешний Redis 6.0+ (только standalone; Sentinel и Cluster не поддерживаются)
- Для RAG: PostgreSQL с расширением pgvector, либо установите
vectorStore.type: "", чтобы отключить
Загрузка
Скачайте файл установки Dify: dify.ALL.xxxx.tgz
Используйте команду violet для публикации в platform repository:
Развертывание
Подготовка Database
Используйте PostgreSQL 12+. Этот chart поддерживает только PostgreSQL. Вы можете создать PostgreSQL cluster через PostgreSQL operator в Data Services и получить host и учетные данные из сведений об instance.
Подготовка Redis
Используйте Redis 6.0+ только в режиме standalone (Sentinel и Cluster не поддерживаются). Вы можете создать Redis instance через Data Services. Чтобы использовать standalone mode:
- При создании instance выберите Redis Sentinel для Architecture.
- Переключитесь в режим YAML, задайте
spec.archзначениеstandalone, затем создайте instance. - После создания в Alauda Container Platform найдите Service с именем
rfr-<Redis instance name>-read-write— он используется как Redis host.
Подготовка Vector Store (для RAG)
Этот chart поддерживает только pgvector. Используйте PostgreSQL instance с расширением pgvector (это может быть тот же host, что и у основной database, но с другим именем database, либо отдельный host). Если вы не используете RAG, установите vectorStore.type: "" и не используйте pgvector.
Подготовка Storage (необязательно)
В cluster должны быть CSI или заранее созданные PersistentVolumes, если вы используете PVC для API и plugin storage. По умолчанию chart использует PVC; вы можете переопределить storageClass, size и accessMode в values либо вместо этого использовать S3-compatible object storage (см. Storage (S3 and PVC)).
Создание Application
- В Alauda Container Platform выберите namespace, в котором будет развернут Dify.
- Перейдите в Applications / Applications и нажмите Create.
- Выберите Create from Catalog и откройте представление Catalog.
- Найдите 3rdparty/chart-dify и нажмите Create.
- Введите Name (например,
dify) и настройте Custom values, как показано ниже, затем создайте application. Позже вы можете изменить values через Update в application.
Обязательная конфигурация
Необходимо настроить как минимум:
- URLs –
urls.consoleUrlиurls.appUrl(base URLs для доступа через browser, без suffix пути; требуется для корректного открытия app) - Database – PostgreSQL 12+ (host и учетные данные через Secret)
- Redis – Redis 6.0+ standalone (host и учетные данные через Secret)
- Vector store – pgvector (host и учетные данные через Secret), либо установите
vectorStore.type: "", чтобы отключить
Минимально необходимые значения
Создайте secrets (замените placeholders на ваши значения):
Минимальные Custom Values (заполните ваши hosts и имена secrets):
Дополнительная конфигурация
Database (SSL)
Если PostgreSQL требует SSL connection, включите его:
Vector store (отключение)
Если вы не используете RAG/vector search:
Ingress (host и TLS)
По умолчанию ingress.enabled имеет значение true, а ingress.hosts[].host может быть пустым (совпадение со всеми доменами). При необходимости задайте hostname и TLS:
Storage (S3 and PVC)
PVC (по умолчанию): API и plugin daemon используют PVC, если это включено. При необходимости переопределите storage class и размер.
Если в cluster нет default StorageClass, storageClass обязателен для каждого PVC:
S3 (object storage): Используйте Amazon S3 или другой S3-compatible object store для API и/или plugin. Создайте Secret с ACCESS_KEY и SECRET_KEY (или настройте пользовательские keys в values):
PIP install mirror (proxy)
Если cluster не может получить доступ к PyPI (например, из-за offline или ограниченной сети), задайте PIP index URL для Plugin Daemon (plugin dependencies) и/или Sandbox (code execution):
Для простого self-hosted PyPI proxy можно использовать devpi; затем задайте pipMirrorUrl на URL этого proxy (например, http://<host>:3141/root/pypi/+simple/).
Marketplace (внутренняя сеть)
Если cluster не может получить доступ к public marketplace (https://marketplace.dify.ai):
Option 1 – Disable marketplace: Устанавливайте plugins через "Install via Local Package File" в console. См. Dify: Installing the Plugin.
Option 2 – Internal marketplace proxy: Разверните reverse proxy на https://marketplace.dify.ai (upstream требует Host: marketplace.dify.ai) и задайте:
Доступ
- Через Ingress: Если Ingress включен и host задан, используйте
https://<host>(или настроенныеurls.consoleUrl/urls.appUrl) для открытия console и app. - Через Service: В противном случае используйте API и Web Services (например, NodePort или LoadBalancer), опубликованные chart; убедитесь, что
urls.consoleUrlиurls.appUrlсоответствуют тому, как пользователи получают доступ к app, чтобы frontend загружался корректно.
Управление пользователями
В Dify нет пароля администратора по умолчанию. Завершите initial setup и создайте users (например, по email/password) на странице входа или регистрации после запуска application.