Шаг 4. Установка Corax UI (опциональный)#

Цель выполнения#

Роль для развертывания и настройки crxui (Corax UI).

Последовательность действий#

Подготовка конфигурации для использования#

Перед установкой выполните действия, приведенные в разделе Подготовка окружения.

Изменение параметров установки и параметров работы Schema Registry#

В созданном файле $HOME/corax-distrib/KFK-x.y.z-b/Corax-ansible-x.y.z-b/inv/stand-corax.yml, при необходимости можно переназначать параметры установки, добавляя в раздел all-vars структуру:

crxui:
  installdir: "/opt/Apache/kafka" # абсолютный путь на конечном сервере до приложения ( ОСТОРОЖНО ПРИ УСТАНОВКЕ В ДИРЕКТОРИЮ С РАБОЧЕЙ KAFKA )
  distr: "kafka-patched.zip"      # путь до приложения относительно /files
  port: 9090                      # порт на котором работает CRXUI
  xms: "256m"                     # начальный heap size
  xmx: "2G"                       # максимальный heap size

Дополнительные параметры для использования профилей с SSL#

Настройка протокола безопасности состоит из:

  1. Получения X509 сертификата для подключения к Corax.

  2. Подготовки ansible vars.

Подготовка X509 сертификата

Подготовка X509 сертификата

Могут применяться два вида X509 сертификатов:

  • самоподписанные (допускается для тестовых установок);

  • подписанные корпоративным CA (рекомендуется для промышленных установок).

Для подготовки X509 сертификата необходимо создать два JKS хранилища:

  • server.kafka.jks – хранилище ключей, содержащее сертификат и приватный ключ;

  • truststore.kafka.jks – хранилище доверенных сертификатов, содержащее только сертификат корневого CA без приватного ключа из server.kafka.jks.

Создание хранилищ с самоподписанным сертификатом

Для создания хранилищ с использованием самоподписанного сертификата выполните шаги:

  1. Создайте каталог командой:

    mkdir -p $HOME/corax/kfka-deploy-x.y.z-distrib/inv/ssl/
    

    и перейдите в него командой:

    cd $HOME/corax/kfka-deploy-x.y.z-distrib/inv/ssl
    
  2. Создайте JKS хранилище с сертификатом и приватным ключом командой:

    keytool -genkey -keyalg RSA -keysize 2048 -storetype JKS -alias kafka -keystore server.kafka.jks -validity 3650 -keypass <keyPassword> -storepass <keyStorePassword> -dname "CN=kafka, OU=kafka, O=kafka"
    
  3. Извлеките сертификат без приватного ключа из JKS во временный файл kafka.export командой:

    keytool -exportcert -keystore server.kafka.jks -alias kafka -file kafka.export -storepass <keyStorePassword>
    
  4. Импортируйте сертификат в truststore.kafka.jks командой:

    keytool -import -keystore truststore.kafka.jks -alias kafka -file kafka.export -storepass <trustStorePassword> -noprompt -storetype JKS
    
  5. Удалите временный файл kafka.export, созданный на шаге 3.

Создание хранилищ с сертификатом, подписанным корпоративным CA

Правила и алгоритм выпуска X509 сертификатов в различных организациях может отличаться. Далее описаны основные этапы подготовки конфигурации с использованием X509 сертификата, подписанного корпоративным CA:

  1. Создайте каталог командой:

    mkdir -p $HOME/corax/kfka-deploy-x.y.z-distrib/inv/ssl/
    

    и перейдите в него командой:

    cd $HOME/corax/kfka-deploy-x.y.z-distrib/inv/ssl
    
  2. Создайте JKS хранилище с сертификатом и приватным ключом командой:

    keytool -genkey -keyalg RSA -keysize 2048 -storetype JKS -alias kafka -keystore server.kafka.jks -validity 3650 -keypass <keyPassword> -storepass <keyStorePassword> -dname "CN=kafka, OU=kafka, O=kafka"
    
  3. Сгенерируйте запрос на сертификат (CSR) командой:

    keytool -certreq -keystore server.kafka.jks -alias kafka -file server.kafka.csr -storepass <keyStorePassword> -ext ExtendedKeyUsage=serverAuth,clientAuth
    
  4. Полученный файл server.kafka.csr подпишите в корпоративном CA. После подписания сертификата потребуются четыре файла:

    • server.kafka.cer — cертификат в формате cer, полученный в корпоративом CA;

    • server.kafka.jks — хранилище, созданное на шаге 2;

    • ca1.cer — сертификат корневого CA, полученный в корпоративом CA;

    • ca2.pem (опционально) — cертификат промежуточного CA (может отсутствовать), полученный в корпоративом CA.

  5. Добавьте сертификат server.kafka.cer, полученный в корпоративом удостоверяющем центре, в созданное на шаге 2 хранилище server.kafka.jks командой:

    keytool -import -keystore server.kafka.jks -alias kafka -file server.kafka.cer -storepass <keyStorePassword> -noprompt -storetype JKS
    
  6. Подготовьте truststore.kafka.jks с X509 сертификатом корневого CA командой:

    keytool -import -keystore truststore.kafka.jks -alias root -file ca1.cer -storepass <trustStorePassword> -noprompt -storetype JKS
    keytool -import -keystore truststore.kafka.jks -alias root -file ca2.cer -storepass <trustStorePassword> -noprompt -storetype JKS
    
  7. Опционально. Удалите все файлы из каталога $HOME/corax/kfka-deploy-x.y.z-distrib/inv/ssl/, кроме truststore.kafka.jks и server.kafka.jks, командой:

ls | grep -v "*.jks" | xargs rm -f
Подготовка ansible vars#

В созданном файле $HOME/corax-distrib/KFK-x.y.z-b/Corax-ansible-x.y.z-b/inv/stand-corax.yml, добавить параметры для работы с SSL:

crxui:
  keyStorePath:       "ssl/keystore.jks"   # путь от inventories/_стенд_/
  keyStorePassword:   "changeit"    # пароль от keyStore
  keyPassword:        "changeit"    # пароль от ключа в хранилище
  trustStorePath:     "ssl/truststore.jks" # путь от inventories/_стенд_/
  trustStorePassword: "changeit"    # пароль от trustStore
kafka:
  trustStorePath: "ssl/truststore.kafka.jks" # путь от inv/_стенд_/ до файла хранилища доверенных сертификатов (или абсолютный на сервере при needUploadJks: false)
  trustStorePassword: "<truststore-password>" # пароль от хранилища доверенных сертификатов
  keyStorePath: "ssl/server.kafka.jks" # путь от inv/_стенд_/ до файла хранилища ключей (или абсолютный на сервере при needUploadJks: false)
  keyStorePassword: "<keystore-password>" # пароль от хранилища ключей
  keyPassword: "<key-password>" # пароль от ключа в хранилище
Запуск ansible-playbook#
  1. Перейдите в каталог со сценариями ansible командой cd $HOME/corax-distrib/KFK-x.y.z-b/Corax-ansible-x.y.z-b/.

  2. Выполните команду ansible-playbook -i inv/stand-corax.yml playbooks/crxui.yml и дождитесь завершения выполнения.

В случае успешного выполнения в stdout, в разделе PLAY RECAP, должно появиться unreachable=0 failed=0 напротив каждого хоста.

Проверка результата#

Проверка работоспособности на хостах группы crxui:

  1. Подключитесь по ssh к хосту из ansible группы crxui.

  2. Выполните команду ps axu | grep -v 'grep' | grep java.*kafka-ui.properties. Должен отобразиться 1 запущенный процесс.

Проверка работоспособности подключением через браузер:

  1. Замените в адресе http://ххх.ххх.ххх.хххх:pppp:

    1. Вместо xxx.xxx.xxx.xxx укажите IP хоста из ansible группы crxui.

    2. Вместо pppp укажите порт, установленный в параметре server.port в файле $HOME/corax/kfka-deploy-x.y.z-distrib/inv/group_vars/all/vars.yaml.

  2. С помощью браузера перейдите по полученному адресу.

Справочная информация#

Переменные роли#

Описания и значения по умолчанию для переменных можно найти в defaults/main:

Файл

Описание

main.yml

Переменные для установки crxui

Описание задач#

Файл

Описание

tasks/main.yml

Основной playbook, который включает все остальные в зависимости

tasks/start.yml

Запускает crxsr

tasks/stop.yml

Останавливает crxsr

tasks/clean.yml

Очищает crxsr

tasks/uninstall.yml

Удаляет crxsr

Описание тегов для применения при установке#

Имя тега

Описание

root

Устанавливает Java и создает: пользователя-группы ОС, сервис crx-ui, каталог

install

Останавливает crxui, загружает дистрибутив на хосты, распаковывает дистрибутив, конфигурирует, запускает

configure

Добавляет или исправляет свойства в файле параметров в зависимости от профиля (Security)

start

Запускает crxui, проверяет доступность порта и ищет в логе строку Started KafkaUiApplication

stop

Останавливает crxui

status

Проверяет доступность по порту crxui