如何修改Bitnami Kafka(KRaft) Helm Chart实现多控制器同IP异端口暴露
解决Bitnami Kafka Helm Chart同IP多端口暴露KRaft控制器与Broker的问题
核心问题分析
Bitnami Kafka Chart默认的控制器/Broker Service模板仅支持单外部端口配置(ports.external为int32类型),无法直接实现同一公网IP下多端口映射。要满足需求,需自定义Chart的Service模板并调整values配置。
自定义Chart步骤
1. 修改控制器Service模板
找到Chart目录下的templates/controller/service.yaml,将原有的单端口配置替换为多端口循环渲染逻辑:
原端口配置片段:
ports: - name: external port: {{ .Values.controller.service.ports.external }} targetPort: external protocol: TCP
替换为:
ports: {{- range $index, $port := .Values.controller.service.ports.external }} - name: external-controller-{{ add $index 1 }} port: {{ $port }} targetPort: external protocol: TCP {{- end }}
2. 修改Broker Service模板(如需Broker也用同一IP)
同理,修改templates/service.yaml中的端口配置:
原端口配置片段:
ports: - name: external port: {{ .Values.service.ports.external }} targetPort: external protocol: TCP
替换为:
ports: {{- range $index, $port := .Values.service.ports.external }} - name: external-broker-{{ add $index 1 }} port: {{ $port }} targetPort: external protocol: TCP {{- end }}
3. 调整values配置
更新values.yaml(或自定义values文件),将ports.external改为数组,并指定统一的公网静态IP:
控制器部分配置:
controller: forceExpose: true service: type: LoadBalancer ports: external: [29092, 29093, 29094] # 3个控制器对应3个不同外部端口 loadBalancerIP: "34.59.137.112" # 统一的公网静态IP loadBalancerClass: ""
Broker部分配置(示例):
service: type: LoadBalancer ports: external: [39091, 39092, 39093, 39094, 39095] # 5个Broker对应5个不同外部端口 loadBalancerIP: "34.59.137.112" # 与控制器共用同一公网IP loadBalancerClass: ""
部署验证
- 使用修改后的Chart部署:
helm upgrade --install kafka ./path/to/modified-chart -f your-custom-values.yaml
- 检查LoadBalancer服务状态,确认所有端口已映射到指定IP:
kubectl get svc kafka-controller-external kafka-external
- 使用Kafka客户端测试各端口的连通性,确保控制器和Broker能正常对外提供服务。
内容的提问来源于stack exchange,提问作者Sujit Tah
相关产品推荐
相关产品推荐

