4.5.4.3. 为 CLI Kafka 客户端会话准备 TLS 连接
为交互式 CLI 会话创建新 pod。使用红帽单点登录证书为 TLS 连接设置信任存储。truststore 是连接到 Red Hat Single Sign-On 和 Kafka 代理。
先决条件
红帽单点登录授权服务器部署到 OpenShift 集群,并加载了示例域。
在 Red Hat Single Sign-On Admin 控制台中,检查分配给客户端的角色是否显示在 Clients > Service Account Roles 中。
- 配置为连接到 Red Hat Single Sign-On 的 Kafka 集群已部署到 OpenShift 集群。
流程
使用 AMQ Streams Kafka 镜像运行一个新的交互式 pod 容器,以连接到正在运行的 Kafka 代理。
NS=sso oc run -ti --restart=Never --image=registry.redhat.io/amq7/amq-streams-kafka-28-rhel7:1.8.0 kafka-cli -n $NS -- /bin/sh
注意如果
oc
超时等待镜像下载,后续尝试可能会导致 AlreadyExists 错误。附加到 pod 容器。
oc attach -ti kafka-cli -n $NS
使用红帽单点登录实例的主机名,使用 TLS 为客户端连接准备证书。
SSO_HOST=SSO-HOSTNAME SSO_HOST_PORT=$SSO_HOST:443 STOREPASS=storepass echo "Q" | openssl s_client -showcerts -connect $SSO_HOST_PORT 2>/dev/null | awk ' /BEGIN CERTIFICATE/,/END CERTIFICATE/ { print $0 } ' > /tmp/sso.crt
为 TLS 连接到 Kafka 代理创建信任存储。
keytool -keystore /tmp/truststore.p12 -storetype pkcs12 -alias sso -storepass $STOREPASS -import -file /tmp/sso.crt -noprompt
使用 Kafka bootstrap 地址作为 Kafka 代理的主机名,使用
tls
侦听器端口(9093)为 Kafka 代理准备证书。KAFKA_HOST_PORT=my-cluster-kafka-bootstrap:9093 STOREPASS=storepass echo "Q" | openssl s_client -showcerts -connect $KAFKA_HOST_PORT 2>/dev/null | awk ' /BEGIN CERTIFICATE/,/END CERTIFICATE/ { print $0 } ' > /tmp/my-cluster-kafka.crt
将 Kafka 代理的证书添加到信任存储中。
keytool -keystore /tmp/truststore.p12 -storetype pkcs12 -alias my-cluster-kafka -storepass $STOREPASS -import -file /tmp/my-cluster-kafka.crt -noprompt
保持 会话处于打开状态,以检查授权访问权限。