Strimzi kafka 在 GKE 中私下访问它

Strimzi kafka accessing it privately with in GKE

我有两个集群,

一个集群安装了我的应用程序微服务,另一个集群安装了 strimzi kafka。都是私有GKE集群。

我的挑战恰恰是如何从我的应用程序连接到这个卡夫卡。大约有 10 个微服务 运行 每个都必须连接到 kafka。

我现在有一个方法,将 Strimzi kafka 作为 Nodeport 服务,并在应用程序代码中提供 Ip 和 nodeIp。

这种方法的问题在于,如果 GKE 节点自动更新,我将不得不重新配置代码。

还有一个更关键的条件是,Kafka 应该只能由我们的应用程序访问。它不应该可用于 public Internet。

我也遇到过类似的情况,我是怎么解决的。

创建一个可从另一个 AKS 群集访问的内部负载均衡器。还允许访问特定子网。

Strimzi 支持外部化 bootstrap 服务。

示例:

...
spec:
  kafka:
    replicas: 3
    listeners:
      plain: {}
      tls: {}
      external:
        type: loadbalancer
        tls: false
    ...
    template:
      externalBootstrapService:
          metadata:
            annotations:
              service.beta.kubernetes.io/azure-load-balancer-internal: "true"
              service.beta.kubernetes.io/azure-load-balancer-internal-subnet: "apps-subnet"
      perPodService:
        metadata:
          annotations:
            service.beta.kubernetes.io/azure-load-balancer-internal: "true"
            service.beta.kubernetes.io/azure-load-balancer-internal-subnet: "apps-subnet"

有关详细信息,您可以查看此 link 中的 内部负载平衡器 部分: https://strimzi.io/blog/2019/05/13/accessing-kafka-part-4/