argoproj/kafka-gatewayKafka Gateway是一款轻量级中间件,作为Kafka集群的统一入口网关,旨在简化外部应用与Kafka的集成过程。通过提供标准化接入点,该镜像实现了协议转换、请求路由、负载均衡及安全管控等核心能力,有效降低直接访问Kafka集群的复杂性,同时增强系统的可管理性、安全性和扩展性。
通过docker run快速启动单节点Kafka Gateway:
bashdocker run -d \ --name kafka-gateway \ -p 8080:8080 \ # HTTP协议端口 -p 1883:1883 \ # MQTT协议端口(如启用) -e KAFKA_BROKERS=kafka1:9092,kafka2:9092 \ # Kafka集群broker列表(必填) -e PROTOCOL_TYPE=HTTP,MQTT \ # 启用的协议类型,多协议用逗号分隔 -e AUTH_ENABLED=true \ # 启用Basic Auth认证 -e AUTH_USERNAME=admin \ # 认证用户名 -e AUTH_PASSWORD=secure-pass \ # 认证密码 -e TLS_ENABLED=true \ # 启用TLS加密 -e TLS_CERT_PATH=/etc/certs/server.crt \ # 挂载的TLS证书路径 -e TLS_KEY_PATH=/etc/certs/server.key \ # 挂载的TLS私钥路径 -v ./local-certs:/etc/certs \ # 挂载本地证书目录至容器 kafka-gateway:latest
通过docker-compose部署包含Kafka集群与网关的完整环境(示例):
yamlversion: '3.8' services: # Kafka集群(示例) zookeeper: image: confluentinc/cp-zookeeper:latest environment: ZOOKEEPER_CLIENT_PORT: 2181 ZOOKEEPER_TICK_TIME: 2000 ports: - "2181:2181" kafka1: image: confluentinc/cp-kafka:latest depends_on: - zookeeper environment: KAFKA_BROKER_ID: 1 KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181 KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://kafka1:9092 KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: 1 kafka2: image: confluentinc/cp-kafka:latest depends_on: - zookeeper environment: KAFKA_BROKER_ID: 2 KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181 KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://kafka2:9092 KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: 1 # Kafka Gateway服务 kafka-gateway: image: kafka-gateway:latest depends_on: - kafka1 - kafka2 ports: - "8080:8080" # HTTP API端口 - "9090:9090" # Prometheus metrics端口 environment: KAFKA_BROKERS: kafka1:9092,kafka2:9092 # Kafka集群地址 PROTOCOL_TYPE: HTTP # 启用HTTP协议 AUTH_ENABLED: true # 启用Basic Auth AUTH_USERNAME: admin AUTH_PASSWORD: secure-pass LOG_LEVEL: INFO # 日志级别 METRICS_PORT: 9090 # metrics暴露端口 restart: unless-stopped
| 参数名 | 描述 | 类型 | 默认值 | 必填项 | 示例值 |
|---|---|---|---|---|---|
| KAFKA_BROKERS | Kafka broker地址列表 | 字符串 | - | 是 | kafka1:9092,kafka2:9092 |
| PROTOCOL_TYPE | 支持的协议类型(逗号分隔) | 字符串 | HTTP | 否 | HTTP,MQTT |
| AUTH_ENABLED | 是否启用Basic Auth认证 | 布尔值 | false | 否 | true |
| AUTH_USERNAME | 认证用户名(AUTH_ENABLED=true时) | 字符串 | - | 条件 | admin |
| AUTH_PASSWORD | 认证密码(AUTH_ENABLED=true时) | 字符串 | - | 条件 | secure-pass |
| TLS_ENABLED | 是否启用TLS加密 | 布尔值 | false | 否 | true |
| TLS_CERT_PATH | TLS证书路径(TLS_ENABLED=true时) | 字符串 | - | 条件 | /etc/certs/server.crt |
| TLS_KEY_PATH | TLS私钥路径(TLS_ENABLED=true时) | 字符串 | - | 条件 | /etc/certs/server.key |
| LOG_LEVEL | 日志级别 | 字符串 | INFO | 否 | DEBUG |
| METRICS_PORT | Prometheus metrics暴露端口 | 整数 | 9090 | 否 | 9090 |
| CACHE_TTL | 路由规则缓存有效期 | 字符串 | 60s | 否 | 30s |
使用Basic Auth认证发送消息到指定Kafka主题:
bashcurl -X POST http://localhost:8080/api/v1/messages \ -H "Content-Type: application/json" \ -u admin:secure-pass \ -d '{ "topic": "user-tracking", "message": "{\"user_id\": 123, \"action\": \"login\"}", "partition": 0 # 可选,指定分区 }'
从指定主题消费消息(支持批量拉取):
bashcurl -X GET "http://localhost:8080/api/v1/messages/user-tracking?limit=10" \ -u admin:secure-pass
响应示例:
json{ "topic": "user-tracking", "messages": [ {"offset": 0, "partition": 0, "timestamp": 1690000000000, "value": "{\"user_id\": 123, \"action\": \"login\"}"}, {"offset": 1, "partition": 0, "timestamp": 1690000001000, "value": "{\"user_id\": 456, \"action\": \"logout\"}"} ] }
通过Prometheus metrics端口获取网关运行指标:
bashcurl http://localhost:9090/metrics
关键指标包括:请求吞吐量、消息转发延迟、Kafka连接状态等。
探索更多轩辕镜像的使用方法,找到最适合您系统的配置方式
通过 Docker 登录认证访问私有仓库
无需登录使用专属域名
Kubernetes 集群配置 Containerd
K3s 轻量级 Kubernetes 镜像加速
VS Code Dev Containers 配置
Podman 容器引擎配置
HPC 科学计算容器配置
ghcr、Quay、nvcr 等镜像仓库
Harbor Proxy Repository 对接专属域名
Portainer Registries 加速拉取
Nexus3 Docker Proxy 内网缓存
需要其他帮助?请查看我们的 常见问题Docker 镜像访问常见问题解答 或 提交工单
manifest unknown
no matching manifest(架构)
invalid tar header(解压)
TLS 证书失败
DNS 超时
410 Gone 排查
402 与流量用尽
401 认证失败
429 限流
D-Bus 凭证提示
413 与超大单层
来自真实用户的反馈,见证轩辕镜像的优质服务