Инструменты Cilium Hubble#

Hubble export stdout#

Hubble Exporter - это функция Cilium-agent, которая позволяет записывать потоки данных Hubble в файл для последующего использования в виде журналов. Hubble Exporter поддерживает ротацию файлов, ограничения по размеру, фильтры и маски полей.

Hubble export stdout записывает события Hubble в стандартные потоки вывода данных - stdout.

Параметры конфигурации#

Параметры конфигурации включают в себя:

  • hubble.export.static.filePath: путь к целевому файлу журнала, по умолчанию /var/run/Cilium/hubble/events.log;

  • hubble.export.fileMaxSizeMb: размер чередуемого файла экспорта Hubble в МБ, по умолчанию 10;

  • hubble.export.fileMaxBackups: количество чередуемых сохраняемых файлов экспорта Hubble, по умолчанию 5.

Кроме того, в Cilium-config ConfigMap может быть установлено свойство hubble-export-file-compress - сжатие чередующихся файлов экспорта Hubble, по умолчанию false.

Настройка производительности#

  • hubble.export.static.allowList: укажите список разрешений в качестве потоковых фильтров в формате JSON для Hubble Exporter;

  • hubble.export.static.denyList: укажите список в качестве потоковых фильтров в формате JSON для Hubble Exporter;

  • hubble.export.static.fieldMask: укажите список полей, которые будут использоваться для маскировки полей в Hubble Exporter.

Фильтры#

Используйте интерфейс командной строки hubble для создания необходимых фильтров.

Hubble поддерживает широкий набор параметров фильтрации, которые могут быть заданы в виде комбинации allowlist и denylist.

Hubble применяет эти фильтры следующим образом:

for each flow:
  if flow does not match any of the allowlist filters:
    continue
  if flow matches any of the denylist filters:
    continue
  send flow to client

Маска поля#

Маска поля не может быть сгенерирована с помощью командной строки hubble. Маска поля - это список имен полей из определения flow proto.

Hubble UI#

Hubble UI - это пользовательский интерфейс для Hubble.

Пользовательский интерфейс Hubble позволяет автоматически находить график зависимостей сервисов для кластеров DropApp на уровнях L3/L4 и даже L7, обеспечивая удобную визуализацию и фильтрацию этих потоков данных в виде карты сервисов.

Развертывание#

Серверная часть#

Для перенаправления интерфейса на серверную часть, развернутую в DropApp, выполните следующую переадресацию порта: kubectl port-forward -n kube-system deployment/hubble-ui 8081.

Для изменения в серверной части Go, выполните дополнительные шаги:

  1. Перейдите в каталог серверной части cd ./backend, выполните ./ctl.sh run, дождитесь сборки и запуска сервера.

  2. В другом терминале перейдите в каталог сервера с помощью конфигурации Envoy cd ./server и запустите Envoy -c ./envoy.yaml (должен быть установлен Envoy).

  3. В другом терминале выполните переадресацию порта на kubectl port-forward -n kube-system deployment/hubble-relay 50051:4245.

Для создания docker-образа для серверной части запустите:

make hubble-ui-backendА

Внешний интерфейс#

Для запуска внешнего интерфейса Hubble выполните шаги:

  1. Установите deps npm install.

  2. Запустите сервер разработки npm run watch.

  3. Откройте http://localhost:8080.

Для создания docker-образа внешнего интерфейса запустите:

make hubble-ui

Включение Hubble UI#

Для включения пользовательского интерфейса Hubble выполните команду:

Cilium hubble enable --ui
🔑 Found existing CA in secret Cilium-ca
✨ Patching ConfigMap Cilium-config to enable Hubble...
♻️ Restarted Cilium pods
✅ Relay is already deployed
✅ Hubble UI is already deployed

Открытие Hubble UI#

Откройте пользовательский интерфейс Hubble в веб-браузере, запустив Cilium Hubble UI. Программа автоматически настроит порт для подключения к сервису Hubble UI в кластере DropApp и сделает его доступным через локальный порт на компьютере.

Cilium hubble ui
Forwarding from 0.0.0.0:12000 -> 8081
Forwarding from [::]:12000 -> 8081

Проверка Hubble UI#

Чтобы сгенерировать тестовый сетевой трафик, запустите циклический тест подключения:

while true; do Cilium connectivity test; done

Чтобы просмотреть трафик в Hubble, откройте http://localhost:12000/Cilium-test в браузере.