3.4. 使用 OpenShift 路由访问 Kafka
此流程描述了如何使用路由从 OpenShift 外部的外部客户端访问 AMQ Streams Kafka 集群。
要连接到代理,您需要路由 bootstrap 地址 的主机名以及用于 TLS 加密的证书。
对于使用路由的访问,端口始终为 443。
先决条件
- OpenShift 集群
- 一个正在运行的 Cluster Operator
流程
配置
Kafka资源,并将外部监听程序设置为路由类型。例如:
apiVersion: kafka.strimzi.io/v1beta2 kind: Kafka metadata: labels: app: my-cluster name: my-cluster namespace: myproject spec: kafka: # ... listeners: - name: listener1 port: 9094 type: route tls: true # ... # ... zookeeper: # ...警告OpenShift Route 地址包含 Kafka 集群的名称、侦听器的名称以及在其中创建的命名空间的名称。例如,my
-cluster-kafka-listener1-bootstrap-myproject(CLUSTER-NAME-kafka-LISTENER-NAME-bootstrap-NAMESPACE)。请注意,地址的长度不超过 63 个字符的最大限制。创建或更新资源。
oc apply -f KAFKA-CONFIG-FILE为每个 Kafka 代理和外部 bootstrap 服务 创建
ClusterIP类型服务。服务将流量从 OpenShift 路由路由到 Kafka 代理。同时也为每个服务创建一个 OpenShiftRoute资源,以利用 HAProxy 负载平衡器公开它们。用于连接的 DNS 地址会传播到每个服务的状态。也使用与
Kafka资源相同的名称来创建用于验证 kafka 代理身份的集群 CA 证书。从 Kafka
资源的状态检索可用于访问 Kafka 集群的 bootstrap 服务地址。oc get kafka KAFKA-CLUSTER-NAME -o=jsonpath='{.status.listeners[?(@.type=="external")].bootstrapServers}{"\n"}'提取代理认证机构的公共证书。
oc get secret KAFKA-CLUSTER-NAME-cluster-ca-cert -o jsonpath='{.data.ca\.crt}' | base64 -d > ca.crt使用 Kafka 客户端中提取的证书来配置 TLS 连接。如果启用了任何身份验证,您还需要配置 SASL 或 TLS 身份验证。