Skip to content
страница целиком, в Markdown — вставьте в чат с моделью

Обзор инфраструктуры ​

Платформа работает на кластере из трёх виртуальных машин — по одной на окружение. Она опирается на три ключевых компонента: Nomad для оркестрации рабочих нагрузок, Traefik для обратного проксирования и терминации TLS, и Consul для управления конфигурацией через хранилище ключей-значений.

Компоненты стека ​

КомпонентРольПорт
NomadОркестрация контейнеров, планирование задач, проверки здоровья4646
TraefikОбратный прокси, терминация TLS, автоматический HTTPS через Let's Encrypt80, 443
ConsulKV-хранилище для конфигурации приложений8500

Как они взаимодействуют ​

Три компонента образуют тесно интегрированный цикл:

  1. Nomad планирует и запускает контейнеризированные сервисы (задачи). Каждая задача определяет блоки сервисов с метаданными-тегами.
  2. Traefik отслеживает каталог сервисов Nomad и автоматически обнаруживает сервисы, аннотированные тегами traefik.*. Он формирует правила маршрутизации и выпускает TLS-сертификаты через Let's Encrypt на основе этих тегов.
  3. Consul хранит конфигурацию приложений в виде JSON-объектов в KV-хранилище. Nomad-задачи используют блоки template для чтения значений из Consul при деплое и инжекта их как переменных окружения в работающие контейнеры.
mermaid
flowchart TB
    Internet["Internet (HTTPS :443)"]

    subgraph Нода окружения
        Traefik["Traefik\nReverse Proxy + TLS"]
        Nomad["Nomad\nOrchestrator"]
        Consul["Consul\nKV Config Store"]

        subgraph Nomad Jobs
            FE["Frontend Container"]
            BE["Backend Container"]
        end
    end

    Internet -->|"incoming request"| Traefik
    Traefik -->|"route by Host header"| FE
    FE -->|"API calls"| BE

    Nomad -->|"schedules & health-checks"| FE
    Nomad -->|"schedules & health-checks"| BE
    Nomad -->|"reads service tags"| Traefik

    Consul -->|"template: KV config → env vars"| BE
    Consul -->|"template: KV config → env vars"| FE
    Nomad -->|"resolves template blocks"| Consul

Поток запросов ​

Типичный запрос проходит через стек следующим образом:

mermaid
sequenceDiagram
    participant Client
    participant Traefik
    participant Frontend
    participant Backend
    participant Consul

    Client->>Traefik: HTTPS request to my-tool.amzhub.ai
    Traefik->>Traefik: Match Host() rule, terminate TLS
    Traefik->>Frontend: Forward to healthy upstream
    Frontend->>Backend: API request (dynamic port)
    Backend->>Consul: (at deploy time) Config loaded via template
    Backend-->>Frontend: JSON response
    Frontend-->>Traefik: HTML / assets
    Traefik-->>Client: HTTPS response

Окружения ​

Каждое окружение живёт на своей виртуальной машине и в своём namespace Nomad. Consul и его KV — общие на весь кластер, разделение идёт по префиксу ключа:

ОкружениеNamespaceНодаПрефикс Consul KV
prodprod192.168.100.40hub/prod/config
stagestage192.168.100.30hub/stage/config
devdev192.168.100.20hub/dev/config

TIP

Все три окружения используют один и тот же файл Nomad-задачи (hub.nomad.hcl). Переменная env определяет, какой путь Consul читается, на какую ноду попадёт задача (constraint по meta.env) и на какой домен Traefik маршрутизирует трафик.

Consul общий на весь кластер

Traefik каждой ноды видит сервисы всех окружений, поэтому в теги сервиса первым ставится env=${var.env} — по нему traefik фильтрует чужое. Без этого тега прод попытается выпустить сертификат для dev-домена, и проверка Let's Encrypt уйдёт не на ту машину.

Доступ ​

Управляющие интерфейсы наружу не опубликованы — нужен WireGuard. Конфиг туннеля и токены выдаются отдельным именным пакетом.

  • Nomad UI — http://192.168.100.1:4646/ui (вход: Sign In → Token)
  • Consul UI — http://192.168.100.1:8500/ui (вход: Log in → Token)
  • Traefik Dashboard — http://<нода>:8080, через SSH-туннель на нужную ноду

WARNING

Эти порты закрыты снаружи намеренно. Не публикуйте их и не проксируйте через traefik — доступ только через VPN.

Дополнительное чтение ​

  • Nomad — определения задач, группы, задачи, сеть и проверки здоровья
  • Traefik — обнаружение сервисов, правила маршрутизации и настройка TLS
  • Consul — паттерны KV-хранилища и управление конфигурацией

Документация по инфраструктуре