Первичная установка в Kubernetes
Требования к окружению
- Kubernetes 1.27+
- PostgreSQL 14+
- RabbitMQ 3.11+
- Redis 7+
- Meilisearch 1.8+
- Weaviate 1.25+
- MinIO 2023-10+
- SMTP-сервер
Опционально:
- Установленная на GPU-кластере LLM с API совместимым с OpenAI / ключ OpenAI / ключ Yandex Cloud Foundation Models (для суммаризации и других AI-функций)
- Установленный на GPU-кла стере Whisper / ключ Yandex Foundation Models (для speech-to-text)
Все компоненты окружения могут быть размещены как в кластере так и вне его.
Требования к инструментарию
- ArgoCD 2.10+
Подготовка
PostgreSQL:
Создайте базу данных yuchat_db
.
Создайте схемы yuchat
и yuchat_services
.
Создайте пользователя (ТУЗ) с правами read/write
на эту базу данных и схемы.
RabbitMQ:
Создайте пользователя (ТУЗ) с правами configure/read/write
на виртуальный хост /
.
MinIO:
Создайте пользователя (ТУЗ) с правами на создание бакетов.
Настройте amqp нотификации с параметрами:
MINIO_NOTIFY_AMQP_ENABLE_PRIMARY: "on"
MINIO_NOTIFY_AMQP_URL_PRIMARY: "amqp://username:password@rabbitmq_host:5672"
MINIO_NOTIFY_AMQP_EXCHANGE_PRIMARY: "yuchat.aws.file.events.ex"
MINIO_NOTIFY_AMQP_EXCHANGE_TYPE_PRIMARY: "fanout"
MINIO_NOTIFY_AMQP_ROUTING_KEY_PRIMARY: "#"
MINIO_NOTIFY_AMQP_DURABLE_PRIMARY: "true"
MINIO_NOTIFY_AMQP_AUTO_DELETED_PRIMARY: "false"
На Minio должен быть настроен https!
Redis:
Создайте пользователя (ТУЗ).
Для Redis можно использовать стандартного пользователя, поскольку Redis обычно не использует отдельных учетных записей пользователей.
SMTP сервер:
Установите и настройте SMTP сервер для отправки почты (например, для подтверждения регистрации пользователей).
Убедитесь, что SMTP сервер доступен и настроен с параметрами SMTP_HOST
, SMTP_PORT
, SMTP_USERNAME
, SMTP_PASSWORD
.
Публичный IP адрес:
Подготовьте публичный IP адрес с портом 3478
, на который будет создан gateway для обеспечения связи с STUN/TURN серверами.
Создание домена для Yuchat:
Зарегистрируйте домен, на котором будет развернут Yuchat yourdomain.com
.
Для корректной работы Yuchat внутри Kubernetes необходимо будет настроить subdomains - api.yourdomain.com
и web.yourdomain.com
.
Установка
1. Создайте namespace yuchat:
kubectl create namespace yuchat
2. Создайте секрет с TLS сертификатом для домена и субдоменов, которые зарезервировали ранее:
Генерация и установка секрета:
kubectl create secret tls yuchat-tls --cert=/path/to/tls.crt --key=/path/to/tls.key -n yuchat
3. Создайте секрет с типом docker-registry для доступа к репозиторию с образами:
kubectl create secret docker-registry yuchat-regcred \\
--docker-server=https://registry.unison.team \\
--docker-username= <обратитесь к поставщику за учетными данными> \\
--docker-password= <обратитесь к поставщику за учетными данными> \\
-n yuchat
4. Создайте StorageClass:
Пример YAML для StorageClass:
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: yuchat-storage
provisioner: kubernetes.io/aws-ebs
parameters:
type: gp2