11.6. 配置内部客户端以信任集群 CA
此流程描述了如何配置驻留在 OpenShift 集群中 - 连接到 TLS 侦听器 - 信任集群 CA 证书的 Kafka 客户端。
对于内部客户端而言,最简单的方法是使用卷挂载来访问包含所需证书和密钥的 Secret
。
按照步骤配置集群 CA 为基于 Java 的 Kafka Producer、Consumer 和 Streams API 签名的信任证书。
根据集群 CA 的证书格式选择要执行的步骤:PKCS #12(.p12
)或 PEM(.crt
)。
步骤描述了如何将 Cluster Secret 挂载来验证 Kafka 集群的身份到客户端 pod。
先决条件
- Cluster Operator 必须正在运行。
-
OpenShift 集群中需要有
Kafka
资源。 - 您需要在 OpenShift 集群内有一个 Kafka 客户端应用,它将使用 TLS 进行连接,需要信任集群 CA 证书。
-
客户端应用程序必须与
Kafka
资源在同一命名空间中运行。
使用 PKCS #12 格式(.p12)
在定义客户端 Pod 时,将集群 Secret 挂载为卷。
例如:
kind: Pod apiVersion: v1 metadata: name: client-pod spec: containers: - name: client-name image: client-name volumeMounts: - name: secret-volume mountPath: /data/p12 env: - name: SECRET_PASSWORD valueFrom: secretKeyRef: name: my-secret key: my-password volumes: - name: secret-volume secret: secretName: my-cluster-cluster-ca-cert
在这里,我们要挂载:
- PKCS #12 文件到一个精确的路径,该路径可以被配置
- 密码到环境变量中,可在其中用于 Java 配置
使用以下属性配置 Kafka 客户端:
安全协议选项:
-
security.protocol:使用 TLS 加密(带有或不使用 TLS 身份验证)时,SSL
-
security.protocol:在通过 TLS 使用 SCRAM-SHA 身份验证时,SASL_SSL
-
-
导入证书的信任存储位置的 SSL.truststore.location
。 -
SSL.truststore.password
,密码为用于访问信任存储的密码。 -
SSL.truststore.type=PKCS12
标识信任存储类型。
使用 PEM 格式(.crt)
在定义客户端 Pod 时,将集群 Secret 挂载为卷。
例如:
kind: Pod apiVersion: v1 metadata: name: client-pod spec: containers: - name: client-name image: client-name volumeMounts: - name: secret-volume mountPath: /data/crt volumes: - name: secret-volume secret: secretName: my-cluster-cluster-ca-cert
- 将证书与使用 X.509 格式的客户端一起使用。