Я бы хотел настроить брокера Kafka в Kubernetes. Я использую образ докера confluentinc/cp-kafka:latest
. Требуется переменная окружения KAFKA_ADVERTISED_LISTENERS
, которая позволяет клиенту Kafka взаимодействовать с брокером.
Проблема заключается в трудности назначения IP конечных точек службы для KAFKA_ADVERTISED_LISTENERS
. Если я использую localhost
в качестве этого значения, оно работает только в локальном модуле брокера Kafka, но не будет работать для некоторых клиентских модулей Kafka в кластере kubernetes для связи с ним. Если я использую IP-адрес конечной точки службы, полученный из kubectl get endpoints -l app=kafka
, это работает, но это немного затратно - использовать какой-либо сценарий аудита, чтобы каждый раз устанавливать это динамическое значение.
Интересно, есть ли лучший способ, которым я могу динамически установить это значение в yaml-файле Kubernetes, поэтому мне не нужно каждый раз устанавливать этот IP-адрес программно.
Вот файл yaml:
---
apiVersion: v1
kind: Service
metadata:
name: kafka-broker
labels:
app: kafka
spec:
type: NodePort
ports:
- port: 9092
targetPort: 9092
selector:
app: kafka
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: kafka-broker
spec:
replicas: 1
selector:
matchLabels:
app: kafka
template:
metadata:
labels:
app: kafka
spec:
hostname: broker
containers:
- name: kafka
image: confluentinc/cp-kafka:latest
ports:
- containerPort: 9092
env:
- name: KAFKA_ADVERTISED_LISTENERS
value: "PLAINTEXT://DYNAMIC_ENDPOINT_IP:9092"
- name: KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR
value: "1"
- name: KAFKA_ZOOKEEPER_CONNECT
value: zoo1:2181
Заранее спасибо.
Редактировать: Я пытался использовать имя сервера, переменную среды хоста службы, IP-адрес источника службы и IP-адрес модуля. К сожалению, я все еще получаю ошибку в журнале kafka:
java.lang.IllegalArgumentException: Error creating broker listeners from 'PLAINTEXT://$KAFKA_BROKER_SERVICE_HOST:9092': Unable to parse PLAINTEXT://$KAFKA_BROKER_SERVICE_HOST:9092 to a broker endpoint
Если я использую kubectl exec -it kafa-broker-ssfjks env
, эти переменные окружения фактически установлены правильно в этом модуле. Я думаю, это может быть связано с проблемой конфигурации брокера Kafka?