如何使用不同的Kafka主题配置Kubernetes部署的微服务的每个pod/进程?

piztneat  于 2023-03-22  发布在  Apache
关注(0)|答案(1)|浏览(148)

在我们的应用程序中,有多个不同Kafka主题的消费者,如消费者C1、消费者C2、消费者C3、消费者C4、消费者C5,以及他们不同的Kafka主题,如主题1、主题2、主题3、主题4和主题5。这意味着他们是每个生产者和消费者的对。当我在Kubernetes的单个微服务的POD/进程上运行这些时,他们没有任何问题。
我的问题是,我想创建5个POD,每个POD由消费者组成-生产者从他们的主题如下:-
POD 1:-消费者1 -主题1
POD 2:-消费者2 -主题2
POD 3:-消费者3 -主题3
POD 4:-消费者4 -主题4
POD 5:-消费者5 -主题5
意味着每个POD/流程只有一个主题,它们不应该相互依赖。
他们的配置是否需要这个,请帮助我。谢谢

jv4diomz

jv4diomz1#

您可以在一个pod中运行5个容器,将每个主题名称作为环境变量传递给容器。
如果您希望所有容器都相同,除了主题名称,您可以编写一个Helm模板,在每个容器的主题上循环
例如,从这样的值文件开始

application:
  image: myapp
  tag: latest

topics: [1,2,3,4,5]

还有这样的东西

apiVersion: apps/v1
kind: Deployment
metadata:
  name: consumer-example
  labels:
    app: consumer
spec:
  replicas: 1
  selector:
    matchLabels:
      app: consumer
  template:
    metadata:
      labels:
        app: consumer
    spec:
      containers:
{{ for i, t := range .Values.topics }}
      - name: consumer-{{ i }}
        image: {{ .Values.application.image }}:{{ .Values.application.tag }}
        env:
        - name: KAFKA_TOPIC
          value:  {{ t }} 
{{ end }}

或者,您可以简单地使用多线程使一个应用程序订阅多个主题。

相关问题