0

我有两个集群,

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

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

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

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

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

4

1 回答 1

2

我有类似的情况以及我是如何解决的。

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

Strimzi 支持外部化引导服务。

例子:

...
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"

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

于 2021-09-13T07:50:16.157 回答