Установка Dify
В этом документе описывается, как развернуть Dify в кластере Kubernetes с использованием Helm chart и типовой конфигурации. Для обзора Dify и его компонентов смотрите Introduction. Chart разворачивает только компоненты Dify; PostgreSQL, Redis и векторное хранилище должны быть предоставлены извне и настроены в values.
Содержание
ОбзорТребованияЗагрузкаРазвертываниеПодготовка базы данныхПодготовка RedisПодготовка векторного хранилища (для RAG)Подготовка хранилища (опционально)Создание приложенияОбязательная конфигурацияМинимальные обязательные значенияОпциональная конфигурацияБаза данных (SSL)Векторное хранилище (отключение)Ingress (хост и TLS)Хранилище (S3 и PVC)Зеркало PIP install (прокси)Marketplace (внутренняя сеть)ДоступУправление пользователямиОбзор
Chart запускает следующие компоненты как отдельные рабочие нагрузки:
- API – Backend API и бизнес-логика
- Worker – Celery workers для асинхронных задач
- Worker Beat – Celery beat для планируемых задач
- Web – Frontend UI
- Plugin Daemon – Плагин runtime
- Sandbox – Изолированное выполнение кода
- SSRF 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 для публикации в репозиторий платформы:
Развертывание
Подготовка базы данных
Используйте PostgreSQL 12+. Chart поддерживает только PostgreSQL. Вы можете создать кластер PostgreSQL через оператор PostgreSQL в Data Services и получить хост и учетные данные из деталей инстанса.
Подготовка Redis
Используйте Redis 6.0+ только в режиме standalone (Sentinel и Cluster не поддерживаются). Вы можете создать инстанс Redis через Data Services. Чтобы использовать standalone режим:
- При создании инстанса выберите Redis Sentinel для Architecture.
- Переключитесь в режим YAML, установите
spec.archвstandalone, затем создайте. - После создания в Alauda Container Platform найдите Service с именем
rfr-<имя инстанса Redis>-read-writeдля хоста Redis.
Подготовка векторного хранилища (для RAG)
Этот chart поддерживает только pgvector. Используйте инстанс PostgreSQL с расширением pgvector (может быть тот же хост, что и основная база, но с другим именем базы, или выделенный хост). Если вы не используете RAG, установите vectorStore.type: "" и пропустите pgvector.
Подготовка хранилища (опционально)
В кластере должен быть CSI или заранее созданные PersistentVolumes, если вы используете PVC для API и плагинов. По умолчанию chart использует PVC; вы можете переопределить storageClass, size и accessMode в values или использовать S3/MinIO (см. Storage (S3 and PVC)).
Создание приложения
- В Alauda Container Platform выберите namespace, в котором будет развернут Dify.
- Перейдите в Applications / Applications, нажмите Create.
- Выберите Create from Catalog и перейдите в представление Catalog.
- Найдите 3rdparty/chart-dify и нажмите Create.
- Введите Name (например,
dify) и настройте Custom значения, как указано ниже, затем создайте. Значения можно изменить позже через Update приложения.
Обязательная конфигурация
Необходимо настроить как минимум:
- URLs –
urls.consoleUrlиurls.appUrl(базовые URL для доступа через браузер, без суффикса пути; обязательны для корректного открытия приложения) - База данных – PostgreSQL 12+ (хост и учетные данные через Secret)
- Redis – Redis 6.0+ standalone (хост и учетные данные через Secret)
- Векторное хранилище – pgvector (хост и учетные данные через Secret), или установите
vectorStore.type: ""для отключения
Минимальные обязательные значения
Создайте секреты (замените плейсхолдеры на ваши значения):
Минимальные Custom Values (заполните ваши хосты и имена секретов):
Опциональная конфигурация
База данных (SSL)
Если PostgreSQL требует SSL-соединения, включите его:
Векторное хранилище (отключение)
Если не используете RAG/векторный поиск:
Ingress (хост и TLS)
По умолчанию ingress.enabled равно true, а ingress.hosts[].host может быть пустым (совпадение со всеми доменами). Установите hostname и TLS при необходимости:
Хранилище (S3 и PVC)
PVC (по умолчанию): API и плагин daemon используют PVC при включении. Переопределите класс хранилища и размер по необходимости.
Если в вашем кластере нет StorageClass по умолчанию, storageClass обязателен для каждого PVC:
S3 (объектное хранилище): Используйте S3 или совместимое с MinIO хранилище для API и/или плагина. Создайте Secret с ACCESS_KEY и SECRET_KEY (или настройте кастомные ключи в values):
Зеркало PIP install (прокси)
Если кластер не имеет доступа к PyPI (например, офлайн или ограниченная сеть), задайте URL индекса PIP для Plugin Daemon (зависимости плагинов) и/или Sandbox (выполнение кода):
Для простого собственного PyPI прокси можно использовать devpi; затем установите pipMirrorUrl на URL этого прокси (например http://<host>:3141/root/pypi/+simple/).
Marketplace (внутренняя сеть)
Если кластер не может достучаться до публичного marketplace (https://marketplace.dify.ai):
Вариант 1 – Отключить marketplace: Устанавливайте плагины через "Install via Local Package File" в консоли. Смотрите Dify: Installing the Plugin.
Вариант 2 – Внутренний прокси marketplace: Разверните обратный прокси к https://marketplace.dify.ai (upstream требует Host: marketplace.dify.ai) и установите:
Доступ
- Через Ingress: Если Ingress включен и задан хост, используйте
https://<host>(или настроенныеurls.consoleUrl/urls.appUrl) для открытия консоли и приложения. - Через Service: В противном случае используйте API и Web Services (например, NodePort или LoadBalancer), как их экспонирует chart; убедитесь, что
urls.consoleUrlиurls.appUrlсоответствуют способу доступа пользователей к приложению для корректной загрузки frontend.
Управление пользователями
В Dify нет пароля администратора по умолчанию. Завершите начальную настройку и создайте пользователей (например, email/пароль) на странице входа или регистрации после запуска приложения.