我是这样使用的kafka-console-producer.sh:
kafka-console-producer.sh --bootstrap-server $BTSTRP --topic test --producer.config client.properties
Run Code Online (Sandbox Code Playgroud)
它运行良好,没有警告或错误。在client.properties我有一些属性。示例文件的一部分:
security.protocol=SASL_SSL
sasl.mechanism=SCRAM-SHA-512
ssl.endpoint.identification.algorithm=
Run Code Online (Sandbox Code Playgroud)
然后我想使用下面的命令来列出使用相同的 SCRAM 用户,client.properties因为它匹配这里的所有内容:
kafka-configs.sh --bootstrap-server $BTSTRP --command-config client.properties --describe --entity-type users
Run Code Online (Sandbox Code Playgroud)
但它打印低于警告(不是完整输出)并且最终不起作用(只打印这些警告):
[2020-09-24 10:30:27,823] WARN The configuration 'ssl.keystore.location' was supplied but isn't a known config. (org.apache.kafka.clients.admin.AdminClientConfig)
[2020-09-24 10:30:27,823] WARN The configuration 'ssl.keystore.location' was supplied but isn't a known config. (org.apache.kafka.clients.admin.AdminClientConfig)
[2020-09-24 10:30:27,823] WARN The configuration 'ssl.truststore.password' was supplied but isn't a known config. (org.apache.kafka.clients.admin.AdminClientConfig)
[2020-09-24 10:30:27,823] WARN The configuration 'ssl.truststore.password' …Run Code Online (Sandbox Code Playgroud) 我有一个 Golang 项目,已构建并放入scratch镜像中:
# Build binary
FROM golang:1.17-alpine AS build-env
ADD . /app
WORKDIR /app
RUN env CGO_ENABLED=0 go build -ldflags="-s -w" -o myapp ./cmd/myapp/main.go
# Create image
FROM scratch
COPY --from=build-env /app/myapp /
ENTRYPOINT ["/myapp"]
Run Code Online (Sandbox Code Playgroud)
由于 Golang 允许针对多种架构进行交叉编译(并且比在模拟环境中构建要快得多),所以我想做这样的事情:
# Build binary
FROM golang:1.17-alpine AS build-env
ADD . /app
WORKDIR /app
RUN env CGO_ENABLED=0 GOOS=linux GOARCH=386 go build -ldflags="-s -w" -o myapp_linux_i386 ./cmd/myapp/main.go # Linux 32bit
RUN env CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -ldflags="-s -w" -o myapp_linux_x86_64 ./cmd/myapp/main.go …Run Code Online (Sandbox Code Playgroud) 首先,我已经看过这个线程,但它不相关并且有不同的问题。
我的 Kafka 属性文件中有以下设置片段:
ssl.keystore.type=PEM
ssl.keystore.key=/path/to/private.key
ssl.keystore.certificate.chain=/path/to/certificate.pem
ssl.truststore.type=PEM
ssl.truststore.certificates=/path/to/ca.pem
ssl.endpoint.identification.algorithm=
Run Code Online (Sandbox Code Playgroud)
请注意,ssl.endpoint.identification.algorithm使用 是因为集群中的每个服务器都使用单服务器证书,因此我必须通过这种方式绕过 SSL 主机名验证。
启动 Kafka 时,我收到以下信息:
org.apache.kafka.common.KafkaException: org.apache.kafka.common.errors.InvalidConfigurationException: Invalid PEM keystore configs
at org.apache.kafka.common.network.SaslChannelBuilder.configure(SaslChannelBuilder.java:184)
at org.apache.kafka.common.network.ChannelBuilders.create(ChannelBuilders.java:192)
at org.apache.kafka.common.network.ChannelBuilders.serverChannelBuilder(ChannelBuilders.java:107)
at kafka.network.Processor.<init>(SocketServer.scala:853)
at kafka.network.SocketServer.newProcessor(SocketServer.scala:442)
at kafka.network.SocketServer.$anonfun$addDataPlaneProcessors$1(SocketServer.scala:299)
at scala.collection.immutable.Range.foreach$mVc$sp(Range.scala:190)
at kafka.network.SocketServer.addDataPlaneProcessors(SocketServer.scala:297)
at kafka.network.SocketServer.$anonfun$createDataPlaneAcceptorsAndProcessors$1(SocketServer.scala:262)
at kafka.network.SocketServer.$anonfun$createDataPlaneAcceptorsAndProcessors$1$adapted(SocketServer.scala:259)
at scala.collection.IterableOnceOps.foreach(IterableOnce.scala:563)
at scala.collection.IterableOnceOps.foreach$(IterableOnce.scala:561)
at scala.collection.AbstractIterable.foreach(Iterable.scala:919)
at kafka.network.SocketServer.createDataPlaneAcceptorsAndProcessors(SocketServer.scala:259)
at kafka.network.SocketServer.startup(SocketServer.scala:131)
at kafka.server.KafkaServer.startup(KafkaServer.scala:285)
at kafka.Kafka$.main(Kafka.scala:109)
at kafka.Kafka.main(Kafka.scala)
Caused by: org.apache.kafka.common.errors.InvalidConfigurationException: Invalid PEM keystore configs
Caused by: org.apache.kafka.common.errors.InvalidConfigurationException: No matching PRIVATE KEY entries in PEM …Run Code Online (Sandbox Code Playgroud)