Перейти к содержанию

Управляющий кластер

·2 минуты·
Управляющий кластер — центр управления сетью. Не участвует в передаче пользовательского трафика. Выполняет роль единственного удостоверяющего центра, хранит оперативное состояние сети и управляет входным слоем через Kubernetes.

Роль в архитектуре #

Управляющий кластер находится вне плоскости данных — пользовательский трафик через него не проходит. Он работает исключительно в плоскости управления.

graph TD Mgmt["Управляющий кластер\n(3 сервера)"] Entry["Входной слой\n(K8s workers)"] Core["Core-ноды\n(участники)"] Mgmt -->|"K8s управление"| Entry Core -->|"phone-home регистрация"| Mgmt Mgmt -.->|"сертификаты"| Core Mgmt -.->|"сертификаты"| Entry style Mgmt fill:#7c3aed,color:#fff,stroke:#6d28d9 style Entry fill:#0891b2,color:#fff,stroke:#0e7490 style Core fill:#1d4ed8,color:#fff,stroke:#1e40af

Физическая структура #

Кластер состоит из трёх серверов, принадлежащих администратору сети. Три узла обеспечивают отказоустойчивость: кластер продолжает работать при выходе из строя одного сервера.

КомпонентНазначение
K8s control planeОркестрация входного слоя (Entry-подов)
HA etcdОперативное хранилище данных сети
Root CAВыпуск сертификатов для всех узлов сети
Сервисная инфраструктураTelegram-бот, резервное копирование, subscription-сервис

Функции #

1. Единственный удостоверяющий центр (CA) #

Управляющий кластер хранит корневой приватный ключ PKI и выпускает сертификаты для всех участников сети:

  • Entry-узлы — сертификат, позволяющий подключаться к Core-нодам по mTLS.
  • Core-ноды — сертификат, позволяющий принимать трафик от Entry-узлов по mTLS.

Никакого другого источника доверия в сети нет. Узел без действующего сертификата от этого CA не может участвовать в передаче трафика.

2. Оперативное хранилище (etcd) #

В etcd хранится актуальное состояние сети: маршрутизация клиентов, параметры соединений, статусы узлов, конфигурации. Entry-поды запрашивают etcd при каждом новом клиентском подключении, чтобы определить целевую Core-ноду.

Подробнее: система хранения данных

3. Оркестрация входного слоя #

K8s control plane управляет Entry-подами: следит за их состоянием, распределяет нагрузку через LoadBalancer, выполняет rolling updates при обновлении конфигурации.

4. Регистрация Core-нод #

Core-ноды самостоятельно инициируют подключение к управляющему кластеру (phone-home). Через этот канал:

  • Core-нода получает конфигурацию и обновления.
  • Управляющий кластер знает, что нода жива и готова принимать трафик.
  • Адрес Core-ноды и её параметры фиксируются в etcd.

5. Сервисная инфраструктура #

На управляющем кластере размещается сервисная инфраструктура, не связанная напрямую с трафиком:

СервисНазначение
Telegram-ботАдминистративный интерфейс: управление участниками, алерты, выдача join-токенов
Резервное копированиеПериодическая фиксация состояния сети в Git-репозиторий
Subscription-сервисВыдача клиентам актуальных конфигураций подключения

Отличие от старой Root-ноды #

АспектRoot-нода (старая)Управляющий кластер
Физическая структураОдин серверТри сервера, HA
ОтказоустойчивостьЕдиная точка отказаВыдерживает потерю одного узла
SSH-доступ к нодамДа, ко всемНет — только через K8s API и phone-home
etcdНа Core-нодахТолько на управляющем кластере
ДоступностьПериодическаяПостоянная (сервисная инфраструктура)
Управляющий кластер — наиболее критичный компонент сети. Его компрометация означает потенциальную компрометацию всей PKI. Серверы кластера не должны иметь публичных сервисов, кроме K8s API и phone-home эндпоинта для Core-нод.