С помощью этого руководства вы развернете сервис Kafbat UI на виртуальной машине Ubuntu 22.04, создадите Managed Kafka® и свяжете Kafka с Kafbat UI. Вы будете использовать виртуальную сеть VPC и подсети для связи виртуальной машины и сервиса Managed Kafka®.
Kafbat UI — это бесплатный и легковесный веб-интерфейс с открытым исходным кодом для мониторинга и управления кластерами Kafka, поддерживающий просмотр брокеров, топиков, групп потребителей, браузинг сообщений и работу со схемами Avro/JSON Schema/Protobuf через Schema Registry. Инструмент упрощает наблюдаемость потоков данных и ускоряет устранение неполадок, предоставляя мультикластерное управление, создание и конфигурацию топиков, а также дополнительные функции вроде RBAC и маскирования данных.
Вы будете использовать следующие сервисы:
Виртуальные машины — сервис, в рамках которого предоставляется виртуальная машина.
Managed Kafka® — сервис для развертывания и управления кластерами Kafka®.
Публичный IP-адрес — для доступа к сервису через интернет.
VPC — изолированная виртуальная сеть для создания безопасной инфраструктуры.
Docker — система контейнеризации.
Docker Compose — инструмент для запуска и управления Docker-контейнерами.
Бесплатный сервис nip.io для получения публичного доменного имени и сертификата. Вы также можете использовать собственное зарегистрированное доменное имя и SSL-сертификат для организации доступа.
Nginx — веб-сервер для проксирования запросов и организации защищeнного HTTPS-доступа к приложению.
Let’s Encrypt — сервис для автоматического получения бесплатного SSL-сертификата.
Kafbat UI — веб-интерфейс с открытым исходным кодом для мониторинга и управления кластерами Kafka.
Шаги:
Перед началом работы
-
Если вы уже зарегистрированы, войдите под своей учетной записью.
1. Разверните необходимые ресурсы в облаке
Создайте виртуальную сеть с названием kafka-ui-VPC.
-
Название: kafka-ui-subnet.
Адрес: 10.10.1.0/24.
VPC: kafka-ui-VPC.
DNS-серверы: 8.8.8.8
Убедитесь, что в личном кабинете на странице сервиса VPC:
отображается сеть kafka-ui-VPC;
количество подсетей — 1;
подсеть kafka-ui-subnet доступна.
Создайте новую группу безопасности со следующими параметрами:
Укажите Название группы безопасности, например kafka-ui.
Добавьте правила входящего и исходящего трафика.
Правило входящего трафика:
Протокол: TCP;
Порт: 443;
Тип источника: IP-адрес;
Источник: 0.0.0.0/0.
Правило входящего трафика:
Протокол: TCP;
Порт: 80;
Тип источника: IP-адрес;
Источник: 0.0.0.0/0.
Правило исходящего трафика:
Протокол: Любой;
Тип адресата: IP-адрес;
Адресат: 0.0.0.0/0.
Убедитесь, что на странице Сети → Группы безопасности отображается группа безопасности kafka-ui со статусом «Создана».
Создайте виртуальную машину со следующими параметрами:
Название: kafka-ui.
Образ: Публичные → Ubuntu 22.04.
Метод аутентификации: SSH-ключ и пароль.
SSH-ключ: ваш SSH-ключ.
Пароль: ваш пароль.
Имя хоста: kafka-ui.
Подключить публичный IP: включено.
Тип IP-адреса: Прямой.
Группы безопасности: SSH-access_ru.AZ-1, kafka-ui.
Подсеть: kafka-ui-subnet.
Гарантированная доля vCPU: 10%.
vCPU: 1.
RAM: 1.
Убедитесь, что в личном кабинете на странице сервиса «Виртуальные машины» отображается виртуальная машина kafka-ui в статуса «Запущена».
Создайте кластер Managed Kafka® со следующими параметрами:
Название: kafka-ui.
Версия Kafka: 3.9.0.
Брокеры: 1.
vCPU: 4.
RAM: 16.
Подсеть: kafka-ui-subnet.
Убедитесь, что в личном кабинете на странице сервиса «Managed Kafka®» отображается кластер kafka-ui в статусе «Доступен».
2. Настройте окружение на виртуальной машине
Настройте систему и установите необходимые пакеты на виртуальной машине.
Подключитесь к виртуальной машине через серийную консоль или по SSH.
Обновите систему и установите необходимые зависимости:
sudo apt update && sudo apt upgrade -ysudo apt install unzip gnupg software-properties-common apt-transport-https ca-certificates nginx snapd -ysudo snap install core; sudo snap refresh coresudo snap install --classic certbotsudo ln -s /snap/bin/certbot /usr/bin/certbotУстановите Docker и Docker Compose:
# Add Docker's GPG keycurl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg# Add Docker repositoryecho "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null# Install Dockersudo apt update && sudo apt install -y docker-ce docker-ce-cli containerd.io docker-compose-plugin docker-compose# Add user to docker groupsudo usermod -aG docker $USERnewgrp dockerПроверьте, что Docker установлен корректно:
docker --versiondocker compose version
3. Настройте nginx и HTTPS
Настройте службу nginx и обеспечьте доступ по HTTPS.
Подключитесь к виртуальной машине через серийную консоль или по SSH.
Сконфигурируйте межсетевой экран:
sudo ufw allow OpenSSHsudo ufw allow 'Nginx Full'sudo ufw enableСоздайте конфигурационный файл:
sudo nano /etc/nginx/sites-available/kafkaui.confВставьте конфигурацию, заменив <IP-адрес> на IP-адрес вашей виртуальной машины.
server {listen 80;server_name kafkaui.<IP-адрес>.nip.io www.kafkaui.<IP-адрес>.nip.io;location / {proxy_pass http://localhost:8080;proxy_http_version 1.1;# WebSocket headersproxy_set_header Upgrade $http_upgrade;proxy_set_header Connection "upgrade";# Preserve original host / IPproxy_set_header Host $host;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;proxy_set_header X-Forwarded-Proto $scheme;# Timeouts suitable for long-lived Kafbat UI streamsproxy_read_timeout 600s;proxy_send_timeout 600s;}}Примените конфигурацию и перезапустите nginx:
sudo ln -sf /etc/nginx/sites-available/kafkaui.conf /etc/nginx/sites-enabled/kafkaui.confsudo rm -f /etc/nginx/sites-enabled/defaultsudo nginx -tsudo systemctl reload nginxПроверьте, что nginx работает:
sudo systemctl status nginxСервис nginx должен быть в статусе «active (running)».
Перейдите по адресу http://kafkaui.<IP-адрес>.nip.io.
Откроется страница с текстом 502 Bad Gateway.
Запустите команду для выпуска SSL-сертификата.
sudo certbot --nginx -d kafkaui.<IP-адрес>.nip.io --redirect --agree-tos -m <EMAIL>Где:
<IP-адрес> — IP-адрес вашей виртуальной машины.
<EMAIL> — ваш email.
После успешного выпуска сертификата перейдите по адресу https://kafkaui.<IP-адрес>.nip.io.
Откроется страница с текстом 502 Bad Gateway. В свойствах сайта браузер отметит соединение как безопасное.
4. Разверните и настройте сервис Kafbat UI
Создайте директорию для приложения и перейдите в нее:
mkdir kafkauicd kafkauiСоздайте файл docker-compose.yml:
nano docker-compose.ymlВставьте содержимое файла:
services:kafbat-ui:image: kafbat/kafka-ui:47838bdcontainer_name: kafbat-uiports:- "8080:8080"restart: always# Load credentials from .envenv_file:- .envenvironment:# ---- cluster basics ----KAFKA_CLUSTERS_0_NAME: kafka-uiKAFKA_CLUSTERS_0_BOOTSTRAPSERVERS: ${KAFKA_BROKERS}# ---- SASL_PLAINTEXT + SCRAM-SHA-512 ----KAFKA_CLUSTERS_0_PROPERTIES_SECURITY_PROTOCOL: SASL_PLAINTEXTKAFKA_CLUSTERS_0_PROPERTIES_SASL_MECHANISM: SCRAM-SHA-512KAFKA_CLUSTERS_0_PROPERTIES_SASL_JAAS_CONFIG: >org.apache.kafka.common.security.scram.ScramLoginModule requiredusername="${KAFKA_USERNAME}" password="${KAFKA_PASSWORD}";DYNAMIC_CONFIG_ENABLED: "true"AUTH_TYPE: LOGIN_FORMSPRING_SECURITY_USER_NAME: "${KAFKA_UI_USER}"SPRING_SECURITY_USER_PASSWORD: "${KAFKA_UI_PASSWORD}"healthcheck:test: ["CMD", "wget", "--no-verbose", "--tries=1", "--spider", "http://localhost:8080/actuator/health"]interval: 30stimeout: 10sretries: 3start_period: 40sСоздайте файл .env:
nano .envВставьте содержимое файла:
KAFKA_BROKERS=<KAFKA_BROKER_IP>:9094KAFKA_USERNAME=<KAFKA_USERNAME>KAFKA_PASSWORD=<KAFKA_PASSWORD>KAFKA_UI_USER=<KAFKA_UI_USER>KAFKA_UI_PASSWORD=<KAFKA_UI_PASSWORD>Где:
<KAFKA_BROKER_IP> — IP-адрес сервиса Managed Kafka®.
<KAFKA_USERNAME> — логин от кластера Managed Kafka® с ролью Admin.
<KAFKA_PASSWORD> — пароль от кластера Managed Kafka® с ролью Admin.
<KAFKA_UI_USER> — логин для доступа к сервису Kafbat UI.
<KAFKA_UI_PASSWORD> — пароль для доступа к сервису Kafbat UI.
IP-адрес, логины и пароли можно найти на странице информации о кластере в блоке Данные для подключения.
Запустите сервис:
docker compose up -dПерейдите по адресу https://kafkaui.<IP-адрес>.nip.io в браузере. Откроется страница Kafbat UI, и вы будете перенаправлены на страницу авторизации.
Зайдите в приложение с логином и паролем, заданными в .env (KAFKA_UI_USER/KAFKA_UI_PASSWORD).
5. Удалите доступ по SSH для виртуальной машины
Так как для настроенного сервиса больше не требуется доступ по SSH, удалите доступ для повышения безопасности.
В личном кабинете перейдите в сервис «Виртуальные машины» и выберите машину kafka-ui, созданную на первом шаге.
Перейдите в раздел Сетевые параметры.
Нажмите на Изменить группы безопасности для публичного IP-адреса.
Удалите группу «SSH-access_ru».
Нажмите Сохранить.
Попробуйте подключиться к виртуальной машине по SSH по инструкции и убедитесь, что доступ отсутствует.
Результат
Вы развернули Kafbat UI на виртуальной машине Ubuntu 22.04, связали его с сервисом Managed Kafka® через виртуальную сеть VPC и подсети. Вы получили опыт управления и мониторинга Kafka-кластера через удобный веб-интерфейс, включая просмотр топиков, групп потребителей и сообщений.
- Перед началом работы
- 1. Разверните необходимые ресурсы в облаке
- 2. Настройте окружение на виртуальной машине
- 3. Настройте nginx и HTTPS
- 4. Разверните и настройте сервис Kafbat UI
- 5. Удалите доступ по SSH для виртуальной машины
- Результат