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/
我有两个集群,
一个集群安装了我的应用程序微服务,另一个集群安装了 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/