Инструменты 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, выполните дополнительные шаги:
Перейдите в каталог серверной части
cd ./backend, выполните./ctl.sh run, дождитесь сборки и запуска сервера.В другом терминале перейдите в каталог сервера с помощью конфигурации Envoy
cd ./serverи запустите Envoy-c ./envoy.yaml(должен быть установлен Envoy).В другом терминале выполните переадресацию порта на
kubectl port-forward -n kube-system deployment/hubble-relay 50051:4245.
Для создания docker-образа для серверной части запустите:
make hubble-ui-backendА
Внешний интерфейс#
Для запуска внешнего интерфейса Hubble выполните шаги:
Установите deps
npm install.Запустите сервер разработки
npm run watch.Откройте
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 в браузере.