第 3 章 配置外部监听程序
使用外部监听程序向 OpenShift 环境外的客户端公开您的 AMQ Streams Kafka 集群。
在外部监听程序配置中指定要公开 Kafka 的连接 类型
。
-
NodePort 使用
NodePort服务
-
LoadBalancer 使用
Loadbalancer
类型服务
-
Ingress
使用 KubernetesIngress
和 Kubernetes 的 NGINX Ingress Controller -
路由
使用 OpenShift路由
和 HAProxy 路由器
有关监听器配置的更多信息,请参阅 GenericKafkaListener
模式参考。
路由
只在 OpenShift 中被支持
3.1. 使用节点端口访问 Kafka
此流程描述了如何使用节点端口从外部客户端访问 AMQ Streams Kafka 集群。
要连接到代理,您需要 Kafka bootstrap 地址 的主机名和端口号,以及用于身份验证的证书。
先决条件
- OpenShift 集群
- 一个正在运行的 Cluster Operator
步骤
配置
Kafka
资源,并将外部监听程序设置为nodeport
类型。例如:
apiVersion: kafka.strimzi.io/v1beta1 kind: Kafka spec: kafka: # ... listeners: - name: external port: 9094 type: nodeport tls: true authentication: type: tls # ... # ... zookeeper: # ...
创建或更新资源。
oc apply -f KAFKA-CONFIG-FILE
为每个 Kafka 代理和外部 bootstrap 服务 创建
NodePort
类型服务。bootstrap 服务将外部流量路由到 Kafka 代理。用于连接的节点地址被传播到 Kafka 自定义资源的状态
。也使用与
Kafka
资源相同的名称来创建用于验证 kafka 代理身份的集群 CA 证书。从 Kafka
资源
的状态检索您用来访问 Kafka 集群的 bootstrap 地址。oc get kafka KAFKA-CLUSTER-NAME -o=jsonpath='{.status.listeners[?(@.type=="external")].bootstrapServers}{"\n"}'
如果启用了 TLS 加密,请提取代理认证机构的公共证书。
oc get secret KAFKA-CLUSTER-NAME-cluster-ca-cert -o jsonpath='{.data.ca\.crt}' | base64 -d > ca.crt
使用 Kafka 客户端中提取的证书来配置 TLS 连接。如果启用了任何身份验证,您还需要配置 SASL 或 TLS 身份验证。