Files
ermnvldmr.com/services/docs/content/ru/apex/concepts/addressing.md
T

5.1 KiB
Raw Blame History

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.


См. также: