如何在 Github Action 中访问 Kafka 服务?

4
在使用Kafka客户端运行最基本的测试时,会出现NoBrokersAvailable错误。 我在Github工作流程设置如下:
  test:
    runs-on: ubuntu-latest
    services:
      zoo_keeper:
        image: bitnami/zookeeper
        ports:
          - 2181:2181
        env:
          ALLOW_ANONYMOUS_LOGIN: yes
        options: >-
          --health-cmd "echo mntr | nc -w 2 -q 2 localhost 2181"
          --health-interval 10s
          --health-timeout 5s
          --health-retries 5
      kafka:
        image: bitnami/kafka
        ports:
          - 9092:9092
        options: >-
          --health-cmd "kafka-broker-api-versions.sh --version"
          --health-interval 10s
          --health-timeout 5s
          --health-retries 5
        env:
          KAFKA_CFG_KAFKA_ZOOKEEPER_CONNECT: "zookeeper:2181"
          ALLOW_PLAINTEXT_LISTENER: yes
          KAFKA_CFG_LISTENERS: "CLIENT://:9092,INTERNAL://:9093"
          KAFKA_CFG_ADVERTISED_LISTENERS: "CLIENT://localhost:9092,INTERNAL://kafka:9093"
          KAFKA_CFG_LISTENER_SECURITY_PROTOCOL_MAP: "CLIENT:PLAINTEXT,INTERNAL:PLAINTEXT"
          KAFKA_CFG_INTER_BROKER_LISTENER_NAME: INTERNAL
    ...
    steps:
      - name: test
        ...
        run: pytest

在本地运行相同的设置(使用 docker-windows ),并在本地运行测试(而不是从容器中运行)可以成功连接到Kafka。

我的测试使用 KAFKA_URL=localhost:9092 并在 Github runner 主机上运行(而不是在容器中)。 在另一个测试中,我成功连接到了 postgres (使用 localhost 作为主机名)。 我确定这是一些配置错误,我缺少什么?

1个回答

1
你的设置无法正常工作的主要原因可能是因为你的zookeeper服务名称中有下划线zoo_keeper,而你配置kafka连接到zookeeper:2181
如果我将你的zookeeper服务名称更改为zookeeper并使用以下环境变量来配置kafka服务,那么它对我来说就可以工作了:
KAFKA_CFG_ZOOKEEPER_CONNECT: zookeeper:2181
ALLOW_PLAINTEXT_LISTENER: yes
KAFKA_CFG_LISTENERS: PLAINTEXT://:9092
KAFKA_CFG_ADVERTISED_LISTENERS: PLAINTEXT://127.0.0.1:9092

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接