4.3. 使用 ingress 访问 Kafka
此流程演示了如何使用 Nginx Ingress 从 OpenShift 外部的外部客户端访问 AMQ Streams Kafka 集群。
要连接到代理,您需要一个主机名(验证地址)用于 Ingress bootstrap 地址,以及用于身份验证的证书。
对于使用 Ingress 的访问,端口始终为 443。
TLS 透传
Kafka 通过 TCP 使用二进制协议,但 Kubernetes 的 NGINX Ingress Controller 设计为用于 HTTP 协议。要通过 Ingress 传递 Kafka 连接,AMQ Streams 使用 NGINX Ingress Controller 的 TLS 透传功能。确保在 NGINX Ingress Controller for Kubernetes 部署中启用了 TLS 透传。
				由于它使用 TLS 透传功能,在使用 Ingress 公开 Kafka 时无法禁用 TLS 加密。
			
有关启用 TLS 透传的更多信息,请参阅 TLS 透传文档。
先决条件
- OpenShift cluster
 - 为启用了 TLS 透传 部署的 Kubernetes 的 NGINX Ingress Controller
 - 正在运行的 Cluster Operator
 
流程
配置
Kafka资源,并将外部监听程序设置为入口类型。为 bootstrap 服务和 Kafka 代理指定 Ingress 主机。
例如:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
 - bootstrap 服务和 Kafka 代理的 Ingress 主机。
 
创建或更新资源。
oc apply -f <kafka_configuration_file>
oc apply -f <kafka_configuration_file>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 为每个 Kafka 代理创建
ClusterIP类型服务,以及额外的 bootstrap 服务。Ingress 控制器使用这些服务将流量路由到 Kafka 代理。还为每个服务创建一个Ingress资源,以使用 Ingress 控制器公开它们。Ingress 主机被传播到每个服务的状态。在 secret <cluster
_name> -cluster-ca-cert 中也创建了用于验证 kafka 代理身份的集群CA 证书。将您在 Kafka 客户端中的
配置和端口 443 (BOOTSTRAP-HOST:443)中指定的 bootstrap 主机的地址作为 bootstrap 地址连接到 Kafka 集群。提取代理证书颁发机构的公共证书。
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 身份验证。