You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Strimzi Kafka Bridge用户名密码认证配置异常及访问失败求助

解决Strimzi Kafka Bridge PLAIN认证失败问题

看起来你遇到的核心问题是Kafka Broker没有启用任何SASL认证机制,而你的Bridge尝试使用PLAIN方式进行认证,导致握手失败。下面一步步帮你排查和解决:

1. 先给Kafka集群启用SASL PLAIN认证

报错里的enabled mechanisms are []直接说明Broker侧完全没开启SASL认证,这是根本原因。你需要修改Kafka集群配置,添加SASL PLAIN的支持:

修改你的Kafka集群配置文件(比如my-cluster.yaml),在spec.kafka下补充认证和对应的listener配置:

apiVersion: kafka.strimzi.io/v1beta2
kind: Kafka
metadata:
  name: my-cluster
spec:
  kafka:
    # 保留你原有的其他配置...
    listeners:
      - name: plain
        port: 9092
        type: internal
        tls: false
      - name: sasl_plain
        port: 9093
        type: internal
        tls: false
        authentication:
          type: plain
    authentication:
      type: plain
      users:
        - user  # 这里要包含你想用于Bridge的用户名
  zookeeper:
    # 保留你原有的ZooKeeper配置...

执行命令应用配置:kubectl apply -f my-cluster.yaml,等待Kafka集群重启生效。

2. 用Strimzi KafkaUser资源创建合法认证用户

你手动创建的Secret不符合Strimzi的用户管理规范,Strimzi需要通过KafkaUser资源来注册用户并生成合法凭证。创建kafka-user.yaml:

apiVersion: kafka.strimzi.io/v1beta2
kind: KafkaUser
metadata:
  name: user
  labels:
    strimzi.io/cluster: my-cluster
spec:
  authentication:
    type: plain
    passwordSecret:
      secretName: bridgeuser  # 可以复用你之前创建的Secret
      password: my-password   # 指定你原有的密码字段
  authorization:
    type: simple
    acls:
      - resource:
          type: topic
          name: "*"
          patternType: literal
        operation: All
      - resource:
          type: group
          name: "*"
          patternType: literal
        operation: All

执行命令应用配置:kubectl apply -f kafka-user.yaml,这会确保用户user在Kafka集群中被正确注册,并且拥有访问主题的权限。

3. 修改KafkaBridge配置,连接到SASL端口

你的Bridge配置里用的是无认证的9092端口,需要改成SASL PLAIN对应的9093端口,同时确保认证配置正确:

apiVersion: kafka.strimzi.io/v1alpha1
kind: KafkaBridge
metadata:
  name: my-bridge
spec:
  replicas: 1
  bootstrapServers: my-cluster-kafka-bootstrap:9093  # 替换为SASL端口
  http:
    port: 8080
  authentication:
    type: plain
    username: user
    passwordSecret:
      secretName: bridgeuser
      password: my-password

执行命令应用配置:kubectl apply -f bridge.yaml,等待Bridge Pod重启。

4. 修正curl命令的协议

你的Bridge配置启用的是HTTP(不是HTTPS),所以需要把curl里的https://改成http://:

curl -X POST -u user:rghGFDL*%167 http://localhost:8080/topics/topic -H 'content-type: application/vnd.kafka.json.v2+json' -d '{"records": [{"key": "key-1","value": "welcome !!"},{"key": "key-2","value": "welcome !!"}]}'

额外检查点

  • 可以进入Bridge Pod执行nc -zv my-cluster-kafka-bootstrap 9093,测试是否能连通Kafka的SASL端口。
  • 查看Kafka和Bridge的Pod日志,确认有没有其他认证相关的错误提示。

内容的提问来源于stack exchange,提问作者Ahmed Nageh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.29 12:07:27