4.4. 使用 OpenShift 路由访问 Kafka
此流程描述了如何使用路由从 OpenShift 外部的外部客户端访问 AMQ Streams Kafka 集群。
要连接到代理,您需要一个路由 bootstrap 地址 的主机名,以及用于 TLS 加密的证书。
对于使用路由访问,端口始终为 443。
先决条件
- OpenShift 集群
 - 正在运行的 Cluster Operator
 
流程
配置
Kafka资源,将外部监听程序设置为route类型。例如:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 警告OpenShift Route 地址由 Kafka 集群的名称、侦听器的名称以及在其中创建的命名空间的名称组成。例如,
my-cluster-kafka-listener1-bootstrap-myproject(CLUSTER-NAME-kafka-LISTENER-NAME-bootstrap-NAMESPACE)。请注意,地址的整个长度不超过 63 个字符的最大值。创建或更新资源。
oc apply -f <kafka_configuration_file>
oc apply -f <kafka_configuration_file>Copy to Clipboard Copied! Toggle word wrap Toggle overflow ClusterIP类型服务为每个 Kafka 代理和外部 bootstrap 服务创建。服务将 OpenShift 路由的流量路由到 Kafka 代理。还为每个服务创建一个 OpenShiftRoute资源,以使用 HAProxy 负载均衡器来公开它们。用于连接的 DNS 地址会传播到每个服务的状态。在 secret <cluster
_name> -cluster-ca-cert 中也创建了用于验证 kafka 代理身份的集群CA 证书。检索可用于从
Kafka资源状态访问 Kafka 集群的 bootstrap 服务地址。oc get kafka <kafka_cluster_name> -o=jsonpath='{.status.listeners[?(@.name=="<listener_name>")].bootstrapServers}{"\n"}'oc get kafka <kafka_cluster_name> -o=jsonpath='{.status.listeners[?(@.name=="<listener_name>")].bootstrapServers}{"\n"}'Copy to Clipboard Copied! Toggle word wrap Toggle overflow 例如:
oc get kafka my-cluster -o=jsonpath='{.status.listeners[?(@.name=="listener1")].bootstrapServers}{"\n"}'oc get kafka my-cluster -o=jsonpath='{.status.listeners[?(@.name=="listener1")].bootstrapServers}{"\n"}'Copy to Clipboard Copied! Toggle word wrap Toggle overflow 提取代理证书颁发机构的公共证书。
oc get secret KAFKA-CLUSTER-NAME-cluster-ca-cert -o jsonpath='{.data.ca\.crt}' | base64 -d > ca.crtoc get secret KAFKA-CLUSTER-NAME-cluster-ca-cert -o jsonpath='{.data.ca\.crt}' | base64 -d > ca.crtCopy to Clipboard Copied! Toggle word wrap Toggle overflow 使用 Kafka 客户端中提取的证书配置 TLS 连接。如果您启用了任何身份验证,您也需要配置 SASL 或 TLS 身份验证。