5.1 KiB
title, description, weight
| title | description | weight |
|---|---|---|
| Схема адресации флота | Подсети /24 для каждого узла и статические якорные IP внутри пространства анклава (по умолчанию 198.18.0.0/16). | 17 |
Apex назначает каждому сервису фиксированный, предсказуемый IPv4-адрес внутри подсети узла. Каждый узел объявляет собственный /24, якоря сервисов — это статические адреса внутри него, а вся схема механически принудительно проверяется линтером якорных IP.
Адресное пространство
Пространство анклава по умолчанию равно 198.18.0.0/16 — диапазону для бенчмаркинга, выделенному RFC 2544: Benchmarking Methodology for Network Interconnect Devices. Этот диапазон никогда не маршрутизируется в публичном Интернете и не конфликтует с распространёнными частными диапазонами (10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16), которые уже используют облачные провайдеры и домашние сети. Оператор может переопределить его через APEX_ENCLAVE_SUBNET.
Подсети узлов
Каждый узел объявляет ровно один /24 как APEX_SUBNET в своём node.env, и эта подсеть является диапазоном IPAM сети direct. Оператор назначает её; по соглашению она располагается внутри пространства анклава (198.18.0.0/16 по умолчанию или того, что задано в APEX_ENCLAVE_SUBNET), но фреймворк не накладывает на этот выбор никакой арифметики.
Note
В качестве опционального соглашения оператора вы можете организовать
/24узлов в непрерывные блоки (например, группируя связанные узлы), чтобы сохранять читаемость распределений. Это вопрос учёта, а не правило фреймворка.
Распределение внутри /24 узла
Внутри /24 узла адреса хостов разделяются по ролям:
| Диапазон | Назначение |
|---|---|
.10–.19 |
Зарезервировано для якорей базовой композиции; traefik всегда .10 (через APEX_TRAEFIK_DIRECT_IP) |
.20 и выше |
Якоря сервисов, распределяемые по <project> |
Каждый якорь сервиса — это статический ipv4_address в сети direct — фиксированный якорный IP, а не динамически назначаемая аренда. Распределения записываются в compositions/ADDRESSING.md, который служит человекочитаемым реестром подсети узла.
Принудительная проверка
Линтер compose проверяет якорные IP по всем композициям на узле. Для каждого ipv4_address, найденного в compositions/*/docker-compose.yml, он проверяет, что адрес:
- Корректно сформирован — некорректный литерал сообщается как ошибка линтера, а не крах.
- Уникален — один и тот же якорный IP не может встречаться в двух проектах; дубликаты сообщаются с указанием обоих конфликтующих проектов.
- Внутри подсети узла — каждый якорь должен попадать в объявленный
/24узла.
Любое нарушение приводит к провалу линтера с кодом выхода 1 (общая ошибка). Успешное прохождение проверки логирует Anchor IP validation passed. Реализация находится в действии utils/lint-docker-compose; см. GitHub: apex.ermnvldmr.com.
См. также: