gpt4 book ai didi

azure - Strimzi Kafka 监听器自定义证书配置

转载 作者:行者123 更新时间:2023-12-02 06:53:53 25 4
gpt4 key购买 nike

我正在尝试按照文档配置 Strimzi Kafka 监听器自定义证书:https://strimzi.io/docs/operators/latest/full/configuring.html#ref-alternative-subjects-certs-for-listeners-str我想在私有(private)虚拟网络内的 Azure Kubernetes 服务之外公开这些监听器。

我提供了一个带有内部 CA 生成的私钥的自定义证书,并在 Kafka 配置中指向该 secret :

kubectl create secret generic kafka-tls --from-literal=listener.cer=$cert --from-literal=listener.key=$skey -n kafka

`

listeners:
- name: external
port: 9094
type: loadbalancer
tls: true
authentication:
type: tls
#Listener TLS config
configuration:
brokerCertChainAndKey:
secretName: kafka-tls
certificate: listener.cer
key: listener.key
bootstrap:
loadBalancerIP: 10.67.249.253
annotations:
service.beta.kubernetes.io/azure-load-balancer-internal: "true"
brokers:
- broker: 0
loadBalancerIP: 10.67.249.251
annotations:
service.beta.kubernetes.io/azure-load-balancer-internal: "true"
- broker: 1
loadBalancerIP: 10.67.249.252
annotations:
service.beta.kubernetes.io/azure-load-balancer-internal: "true"
- broker: 2
loadBalancerIP: 10.67.249.250
annotations:
service.beta.kubernetes.io/azure-load-balancer-internal: "true"
authorization:
type: simple

`

证书有以下记录:

SAN:*.kafka-datalake-prod-kafka-brokers *.kafka-datalake-prod-kafka-brokers.kafka.svc kafka-datalake-prod-kafka-bootstrap kafka-datalake-prod-kafka-bootstrap.kafka.svc kafka- datalake-prod-kafka-external-bootstrap kafka-datalake-prod-kafka-external-bootstrap.kafka.svc kafka-datalake-prod-azure.custom.domain

CN=kafka-datalake-produkty-prod-azure.custom.domain

我还在自定义 DNS 中为给定地址创建了一条 A 记录:kafka-datalake-produkty-prod-azure.custom.domain 10.67.249.253

然后,我创建了一个 KafkaUser 对象:

apiVersion: kafka.strimzi.io/v1beta2
kind: KafkaUser
metadata:
name: customuser
namespace: kafka
labels:
strimzi.io/cluster: kafka-datalake-prod
spec:
authentication:
type: tls
authorization:
type: simple
acls:
- resource:
type: topic
name: notify.somecustomapp.prod.topic_name
patternType: literal
operations:
- Create
- Describe
- Write
# host: "*"

当我从 AKS 上的 Kafka 集群检索 secret 时:

kubectl get secret kafka-datalake-prod-cluster-ca-cert -n kafka -o jsonpath='{.data.ca\.crt}' | base64 -d > broker.crt kubectl get secret customuser -n kafka -o jsonpath='{.data.user\.key}' | base64 -d > customuser.key kubectl get secret customuser -n kafka -o jsonpath='{.data.user\.crt}' | base64 -d > customuser.crt

通信失败,当我尝试使用这 3 个文件进行身份验证/授权与生产者连接并发送一些消息时,出现以下问题:

INFO:kafka.conn:<BrokerConnection node_id=bootstrap-0 host=10.67.249.253:9094 <connecting> [IPv4 ('10.67.249.253', 9094)]>: connecting to 10.67.249.253:9094 [('10.67.249.253', 9094) IPv4] INFO:kafka.conn:Probing node bootstrap-0 broker version INFO:kafka.conn:<BrokerConnection node_id=bootstrap-0 host=10.67.249.253:9094 <handshake> [IPv4 ('10.67.249.253', 9094)]>: Loading SSL CA from certs/prod/broker.crt INFO:kafka.conn:<BrokerConnection node_id=bootstrap-0 host=10.67.249.253:9094 <handshake> [IPv4 ('10.67.249.253', 9094)]>: Loading SSL Cert from certs/prod/customuser.crt INFO:kafka.conn:<BrokerConnection node_id=bootstrap-0 host=10.67.249.253:9094 <handshake> [IPv4 ('10.67.249.253', 9094)]>: Loading SSL Key from certs/prod/customuser.key [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:997)

我做错了什么?

当我使用相同的连接方法时,通信工作得非常好,但集群本身和监听器正在使用 Strimzi 集群生成的默认证书。

祝一切顺利,克日什托夫

最佳答案

@Turing85 @Jakub

非常感谢您的评论 - 尤其是那些批评性的评论

感谢 Jakub 指导我使用自定义证书的 CA。为了解决这个问题需要做的是:

  1. 将从 kafka-datalake-prod-cluster-ca-cert key 获取的值与根 CA、中间签名证书和证书本身的完整链进行交换。
  2. 添加代理的 LoadBalancer IP - 这在文档中有所说明,但其制定方式误导了我,让我认为将主机名/服务名称添加到 SAN 就足够了( https://strimzi.io/docs/operators/latest/full/configuring.html#tls_listener_san_examples ,以及后来的 https://strimzi.io/docs/operators/latest/full/configuring.html#external_listener_san_examples )。<

这些更改之后,一切都开始正常工作。

感谢您的帮助。

关于azure - Strimzi Kafka 监听器自定义证书配置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/74950104/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com