Снова про Apache Kafka на Kubernetes: Strimzi в помощь

Автор Категория ,
Снова про Apache Kafka на Kubernetes: Strimzi в помощь

При том, что развертывание и эксплуатация Apache Kafka на Kubernetes требуют от администратора кластера много сил и времени, эта идея имеет массу достоинств, о чем мы писали здесь. Поэтому появляются новые инструменты, которые облегчают эти процессы, например, KubeMQ или Strimzi, который мы рассмотрим в этой статье.

Что такое Strimzi и при чем здесь K8s

Strimzi – это open-source проект в песочнице Cloud Native Computing Foundation (CNCF), где размещаются критически важные компоненты глобальной технологической инфраструктуры. CNCF объединяет ведущих мировых разработчиков, конечных пользователей и провайдеров, являясь частью некоммерческой организации Linux Foundation. Например, платформа контейнерной виртуализации Kubernetes и приложение мониторинга событий Prometheus, являются популярными CNCF-проектами, вокруг которых построены целые инфраструктуры. В частности, Strimzi, который использует шаблон оператора Kubernetes, чтобы упростить запуск кластера Apache Kafka в различных конфигурациях развертывания согласно IaC-концепции (Infrastructure as Code, инфраструктура как код).

Администрирование кластера Kafka

Код курса
KAFKA
Ближайшая дата курса
23 мая, 2022
Длительность обучения
24 ак.часов
Стоимость обучения
60 000 руб.

Strimzi предоставляет образы контейнеров и операторов для запуска Kafka в Kubernetes (K8s), облегчая администратору кластера следующие процессы:

  • развертывание, запуск и обновление кластеров Kafka, а также отдельных компонентов этой платформы потоковой передачи событий;
  • настройка и защита доступа к Kafka, включая управление пользователями;
  • управление брокерами Kafka;
  • создание топиков и управление ими.

В Kubernetes операторы обеспечивают упаковку, развертывание и управление контейнеризованными приложениями. Операторы Strimzi расширяют возможности Kubernetes, автоматизируя общие и сложные задачи, связанные с развертыванием Kafka, снижая долю ручного вмешательства администратора в процессы конфигурирования. Strimzi предоставляет следующих операторов для управления кластером Kafka в кластере Kubernetes:

  • оператор кластера (Cluster Operator), который развертывает и управляет кластерами Apache Kafka, Kafka Connect, MirrorMaker, Bridge, Exporter, Cruise Control и Entity Operator;
  • оператор сущности (Entity Operator) состоит из оператора топика и оператора пользователя;
  • оператор топика (Topic Operator), который управляет топиками;
  • оператор пользователя (User Operator) для управления пользователями.
Strimzi Kafka Kubernetes, администррование кластера Apache Kafka Kubernetes
Архитектура Strimzi для запуска Kafka на Kubernetes

Оператор кластера может развернуть операторов топика и пользователя как часть конфигурации оператора сущности одновременно с кластером Kafka. А сам процесс развертывания компонентов этой платформы в кластере Kubernetes с помощью Strimzi легко настраивается за счет применения пользовательских ресурсов. Пользовательские ресурсы создаются как экземпляры API, добавляемые определениями пользовательских ресурсов (CRD, Custom Resource Definition) для расширения ресурсов Kubernetes.

Как развернуть Apache Kafka Kubernetes с помощью операторов

Напомним, в API Kubernetes ресурс — это конечная точка, в которой хранится коллекция объектов API определенного типа. Например, встроенный ресурс pods содержит коллекцию объектов Pod. Пользовательский ресурс — это объект, который расширяет API Kubernetes или позволяет внедрить собственный API в проект или кластер. CRD определяет типы настраиваемых объектов и позволяет серверу API Kubernetes обрабатывать весь жизненный цикл ресурсов, выступая в качестве инструкции по настройке для описания пользовательских ресурсов в кластере Kubernetes. CRD предоставляются вместе со Strimzi для каждого компонента Kafka, используемого в развертывании, а также для пользователей и топиков. CRD и пользовательские ресурсы определяются как файлы YAML, примеры которых поставляются с дистрибутивом Strimzi. CRD также позволяют ресурсам Strimzi использовать собственные функции Kubernetes, такие как доступность CLI и проверка конфигурации.

Сперва следует загрузить CRD для Strimzi с Github через cURL – кроссплатформенную служебную программу командной строки, которая позволяет взаимодействовать с множеством различных серверов по разным протоколам с синтаксисом URL. Подробнее о том, как работать cURL мы писали здесь на примере быстрой записи ответа REST API или HTTP-запроса из JSON-файла в топики Apache Kafka. Например, для актуальной сегодня версии Strimzi 0.27.0 команда загрузки будет выглядеть так:

curl -L https://github.com/strimzi/strimzi-kafka-operator/releases/download/0.27.0/strimzi-crds-0.27.0.yaml -o strimzi-crds-0.27.0.yaml

CRD имеют область действия кластера, поэтому для их установки потребуются права администратора кластера. Чтобы зарегистрировать CRD на сервере Kubernetes, следует выполнить команду в kubectl – инструменте командной строки для управления кластерами K8s:

kubectl apply -f strimzi-crds-0.27.0.yaml

Далее следует создать несколько ролей кластера, чтобы операторы Strimzi могли управлять различными ресурсами Kafka в кластере. Разделить пространство имен для разных ролей поможет команда создания пространства имен для размещения всех ресурсов оператора:

kubectl create namespace strimzi

Чтобы каждый из кластеров Kafka имел свое пространство имен, поможет тонкий контроль доступа с помощью сервиса учетных записей Strimzi. Помимо Kubernetes-операторов, Strimzi также содержит HTTP-мост, который предоставляет REST API для интеграции клиентских приложений на основе HTTP с Кафка-кластером. Можно использовать этот API для создания потребителей и управления ими, а также для отправки и получения записей по HTTP, а не по собственному протоколу этой платформы. Это больше пригодится для разработчиков распределенных потоковых приложений, чем для администраторов кластера. Читайте в нашей новой статье, как обеспечить безопасный доступ к данных в топиках Apache Kafka, развернутой на Kubernetes с помощью Strimzi. А про использование Kafka в виде полностью управляемой службы от облачных провайдеров мы рассказываем здесь.

Узнайте все про администрирование и эксплуатацию Apache Kafka для потоковой аналитики больших данных на специализированных курсах в нашем лицензированном учебном центре обучения и повышения квалификации для разработчиков, менеджеров, архитекторов, инженеров, администраторов, Data Scientist’ов и аналитиков больших данных в Москве:

Источники

  1. https://blog.devgenius.io/apache-kafka-on-kubernetes-using-strimzi-27d47b6b13bc
  2. https://strimzi.io/docs/operators/latest/using.html