Модуль cilium-hubble обеспечивает визуализацию сетевого стека кластера, если включен Cilium CNI.

Подробнее с описанием настройки модуля можно ознакомиться в разделе документации модуля.

Архитектура модуля

Для упрощения схемы приняты следующие допущения:

  • На схеме показано, что контейнеры разных подов взаимодействуют друг с другом напрямую. Фактически они взаимодействуют через соответствующие сервисы Kubernetes (внутренние балансировщики). Названия сервисов не указываются, если они очевидны из контекста. В остальных случаях название сервиса указано над стрелкой.
  • Поды могут быть запущены в нескольких репликах, однако на схеме все поды изображены в одной реплике.

Архитектура модуля cilium-hubble на уровне 2 модели C4 и его взаимодействия с другими компонентами Deckhouse Kubernetes Platform (DKP) изображена на следующей диаграмме:

Архитектура модуля cilium-hubble

Номерами на схеме отмечен порядок прохождения запроса пользователя к компоненту hubble-ui:

  • на шагах 1, 2 и 3 запрос проходит через Ingress NGINX Controller, где выполняется обязательная аутентификация пользователя с использованием модуля user-authn;
  • на шагах 4 и 5 выполняется авторизация пользователя на основе Kubernetes RBAC для организации защищенного доступа.

Компоненты модуля

Модуль состоит из следующих компонентов:

  1. Hubble-relay — компонент, который агрегируeт события со всех узлов кластера в единое представление. Hubble-relay поддерживает постоянное соединение с каждым экземпляром Cilium Agent на узлах и через gRPC-поток принимает события, дедуплицирует их и предоставляет единый gRPC-эндпоинт для Hubble CLI и Hubble UI (веб-интерфейс). При этом, hubble-relay не хранит историю — он транслирует поток событий в реальном времени.

    Состоит из одного контейнера:

    • hubble-relay — основной контейнер. Является частью проекта Cilium.
  2. Hubble-ui — компонент, реализующий веб-интерфейс. Hubble-ui подключается к hubble-relay и предоставляет удобный доступ к данным, которые поступают с агентов Cilium. Hubble-ui строит интерактивную карту сервисов (Service Map) и таблицу потоков с фильтрами.

    Состоит из следующих контейнеров:

    • frontend — контейнер, представляющий собой прокси-сервер NGINX, раздающий статические файлы веб-интерфейса hubble-ui и пересылающий запросы к эндпоинту /api в контейнер backend компонента;
    • backend — контейнер, реализующий API hubble-ui, который отправляет запросы в компонент hubble-relay для получения данных, поступающих с агентов Cilium в реальном времени;
    • kube-rbac-proxy — сайдкар-контейнер с авторизующим прокси на основе Kubernetes RBAC для организации защищенного доступа к веб-интерфейсу Hubble UI. Является Open Source-проектом.

    Контейнеры frontend и backend собраны на основе Hubble-UI, являющегося Open Source-проектом.

Взаимодействия модуля

Модуль взаимодействует со следующими компонентами:

  1. Cilium-agent — принимает поток событий с агентов Cilium в реальном времени.
  2. Kube-apiserver — выполняет авторизацию запросов к веб-интерфейсу Hubble UI.

С модулем взаимодействуют следующие внешние компоненты:

  • Controller nginx — пересылает внешние запросы пользователя к веб-интерфейсу модуля.

Дополнительные ресурсы