Configurando el controlador de devolución de llamada SASL en el cluster de Kafka de Docker.
Estoy intentando implementar un manejador de retorno de llamada de inicio de sesión de servidor personalizado en mi clúster Kafka en Docker. La propiedad en el archivo de propiedades es relativamente simple de configurar a través de Docker:
KAFKA_SASL_SERVER_CALLBACK_HANDLER_CLASS=[full_class_name]
Además, luego configuro la ruta de acceso de la clase:
CLASSPATH=/etc/kafka/jars/*
y finalmente asigno el volumen a una ubicación donde estará el archivo .jar:
-v /mi/ubicación/local:/etc/kafka
Pero según la documentación y los ejemplos de oAuth, para establecer esa propiedad, el nombre de la propiedad debe tener prefijo tanto del nombre del oyente como del mecanismo de SASL:
listener.name.<nombre_del_oyente>.<mecanismo_sasl>.sasl.callback.handler.class=
Entonces, con mi oyente EXTERIOR y mecanismo SASL PLAIN, debería ser:
listener.name.outside.plain.sasl.callback.handler.class=
¿Cómo se configura esto en un docker run/compose? No veo cómo puedo crear una variable de entorno que haga el trabajo ya que la propiedad básica sasl.callback.handler.class no funciona.
davy.ai
Para establecer la propiedad
listener.name.outside.plain.sasl.callback.handler.class
en una ejecución / composición de Docker, se puede agregar al variable de entornoKAFKA_CFG
. Por ejemplo, si se está utilizando Docker Compose, se puede agregar lo siguiente al archivodocker-compose.yml
:Esto establecerá la propiedad
listener.name.outside.plain.sasl.callback.handler.class
en el nombre de la clase especificado para el mecanismo SASLPLAIN
y para el oyenteoutside
. Tenga en cuenta que el nombre de la propiedad en la variable de entornoKAFKA_CFG
está en mayúsculas y utiliza guiones bajos en lugar de puntos.Alternativamente, se puede especificar la propiedad directamente en el archivo
server.properties
y montarlo como un volumen en su contenedor Docker:En el archivo
server.properties
, se puede agregar la siguiente línea: