Обзор деплоя
Наша модель деплоя следует стратегии продвижения по веткам: каждая долгоживущая ветка Git напрямую соответствует окружению. GitLab CI обеспечивает сборку и деплой автоматически (или вручную, в случае продакшна), а HashiCorp Nomad оркестрирует работающие сервисы на KVM-хостах, доступных по SSH.
Соответствие веток и окружений
| Ветка | Окружение | Шаблон домена | Триггер |
|---|---|---|---|
dev | Development | *.dev.amzhub.ai | Автоматический |
stage | Staging | *.stage.amzhub.ai | Автоматический |
main | Production | *.amzhub.ai | Ручной |
Примеры доменов
| Окружение | Домен приложения | Домен документации |
|---|---|---|
| Dev | dev.amzhub.ai | docs-dev.amzhub.ai |
| Stage | stage.amzhub.ai | docs-stage.amzhub.ai |
| Prod | amzhub.ai | docs.amzhub.ai |
Процесс деплоя
flowchart LR
A[Feature Branch] -->|merge| B[dev]
B -->|auto deploy| C[Dev Environment]
B -->|merge| D[stage]
D -->|auto deploy| E[Stage Environment]
D -->|merge| F[main]
F -->|manual trigger| G[Production]
style C fill:#4ade80,color:#000
style E fill:#facc15,color:#000
style G fill:#f87171,color:#000Ключевые концепции
Общие шаблоны GitLab CI
Все проекты используют общие CI-шаблоны, определяющие стандартные этапы сборки и деплоя. Эти шаблоны обеспечивают единообразие между сервисами и сводят конфигурацию отдельных проектов к минимуму. Типичные этапы пайплайна:
- Build — собирает контейнерный образ и отправляет его в реестр.
- Deploy — подключается к целевому KVM-хосту по SSH и отправляет Nomad-задачу.
Nomad на KVM
Сервисы работают как Nomad-задачи на KVM-инфраструктуре. Каждое окружение имеет собственный кластер Nomad (или namespace), а деплои отправляются по SSH с GitLab-раннера.
Модель продвижения
Код движется в одном направлении через окружения:
feature branch --> dev --> stage --> main (prod)TIP
Никогда не мержьте напрямую в main, минуя stage. Путь продвижения существует для того, чтобы выявлять проблемы до их попадания в продакшн.
WARNING
Деплой в продакшн требует ручного запуска в пайплайне GitLab CI. Одного мержа в main недостаточно для деплоя.
Далее
- Деплой на dev — быстрая итерация в процессе разработки
- Деплой на stage — предпродакшн-валидация
- Деплой на prod — процесс релиза в продакшн
- Решение проблем — типичные проблемы и отладка