首页 > 解决方案 > 如何为 sasl 普通 kafka 集群运行模式注册表容器

问题描述

我想在 AWS ECS 上运行 cp-schema-registry 映像,所以我试图让它在本地的 docker 上运行。我有这样的命令:

docker run -e SCHEMA_REGISTRY_HOST_NAME=schema-registry \
-e SCHEMA_REGISTRY_KAFKASTORE_BOOTSTRAP_SERVERS="1.kafka.address:9092,2.kafka.address:9092,3.kafka.address:9092" \
-e SCHEMA_REGISTRY_KAFKASTORE_SECURITY_PROTOCOL=SASL_PLAINTEXT \
confluentinc/cp-schema-registry:5.5.3

(我已经替换了 kafka 网址)。

我的消费者/生产者使用参数连接到集群:

["sasl.mechanism"] = "PLAIN"
["sasl.username"] = <username>
["sasl.password"] = <password>

文档似乎表明我可以使用这些参数创建一个文件,但我不知道如何将其传递给 docker run 命令。这可以做到吗?

标签: apache-kafkaconfluent-schema-registry

解决方案


感谢 OneCricketeer 对 var 的上述帮助SCHEMA_REGISTRY_KAFKASTORE_SASL_JAAS_CONFIG。该命令最终是这样的(我添加了端口 8081:8081 以便我可以使用 curl 进行测试):

docker run -p 8081:8081 -e SCHEMA_REGISTRY_HOST_NAME=schema-registry \
-e SCHEMA_REGISTRY_KAFKASTORE_BOOTSTRAP_SERVERS="1.kafka.broker:9092,2.kafka.broker:9092,3.kafka.broker:9092" \
-e SCHEMA_REGISTRY_KAFKASTORE_SECURITY_PROTOCOL=SASL_SSL \
-e SCHEMA_REGISTRY_KAFKASTORE_SASL_MECHANISM=PLAIN \
-e SCHEMA_REGISTRY_KAFKASTORE_SASL_JAAS_CONFIG='org.apache.kafka.common.security.plain.PlainLoginModule required username="user" password="pass";' confluentinc/cp-schema-registry:5.5.3

然后测试curl localhost:8081/subjects并获得[]作为响应。


推荐阅读