Данный документ описывает последовательность действий и требования для развёртывания компонентов Timetta в кластере Kubernetes или OKD. Рекомендуется выполнять все шаги последовательно, соблюдая описанные зависимости и требования.
Перед развёртыванием приложения необходимо установить внешние сервисы, которые являются обязательными для работы Timetta:
Подробные требования приведены в разделе: Требования к инфраструктурному ПО
Примечание
Для повышения отказоустойчивости используйте кластерные развёртывания (HA), а также настройте резервное копирование (backup) PostgreSQL и RabbitMQ.
Подготовьте файл конфигурации app-settings, содержащий параметры подключения и основные настройки приложения. Затем опубликуйте его в Kubernetes в виде секрета:
kubectl create secret generic app-settings --from-file=appsettings.json -n timetta
Подробнее: app-settings
Примечание
Приложение позволяет использовать в файле конфигурации переменные окружения в виде {{ENV_VARIABLE_NAME}}. Таким образом чувствительные данные можно вынести в сервисы подобные Yandex Lockbox.
Для удобства управления и изоляции ресурсов рекомендуется использовать выделенный namespace:
kubectl create namespace timetta
Это позволит разделять системные и пользовательские компоненты, организовать права доступа и упростить управление политиками безопасности.
Если для подключения к PostgreSQL, Redis, Kafka или другим внешним сервисам требуются TLS-сертификаты, разместите их в Kubernetes как секреты.
Пример:
kubectl create secret generic db-cert --from-file=ca.crt -n timetta
В дальнейшем сертификаты можно подключать к контейнерам через volumeMounts.
Опубликуйте секрет для авторизации в приватном Container Registry:
kubectl create secret docker-registry registry-auth \
--docker-server=<server> \
--docker-username=<username> \
--docker-password=<password> \
--docker-email=<email> \
-n timetta
Подробнее: container-registry
Заранее зарегистрируйте доменные имена, которые будут использоваться компонентами Timetta:
Это важно для корректной работы Ingress-контроллера, TLS-сертификатов и клиентских приложений.
В примерах используется CertManager с провайдером Let's Encrypt, обеспечивающий автоматическое управление SSL-сертификатами.
Примечание
Убедитесь, что DNS-записи указывают на IP-адрес балансировщика перед запуском CertManager, иначе выпуск сертификатов завершится ошибкой.
Дополнительная информация доступна в документации CertManager и Let's Encrypt.
Чтобы обеспечить стабильную работу, рекомендуется:
Разворачивайте компоненты в указанном порядке, так как некоторые сервисы зависимы от других:
API
api-deployment
Passport (Auth Service)
passport-deployment
Consumer
consumer-deployment
Scheduler
scheduler-deployment
WebSockets / Notification Hub
notification-hub-deployment
Reporting API
reporting-api-deployment
Client Host
client-host
Предоставьте доступ к сервисам
Ingress-контролер
Примечание
После развёртывания всех сервисов рекомендуется выполнить smoke-тестирование, убедиться в корректности сетевых маршрутов, работе авторизации и доступности API.
Перейти на русскую версию?