argoproj/webhook-gatewayWebhook Gateway 是一个轻量级、高性能的webhook请求处理中间件,旨在简化跨服务间的webhook集成流程。该镜像提供统一的webhook接入点,支持请求验证、数据转换、规则路由等核心能力,解决多服务webhook管理中的安全验证复杂、格式不统一、转发规则分散等问题,降低跨服务事件通知的集成成本。
bashdocker run -d \ --name webhook-gateway \ -p 8080:8080 \ -e PORT=8080 \ -e VALIDATION_SECRET=your_webhook_secret \ -e TARGET_URL=[***] \ webhook-gateway:latest
yamlversion: '3' services: webhook-gateway: image: webhook-gateway:latest container_name: webhook-gateway ports: - "8080:8080" environment: - PORT=8080 # 监听端口,默认8080 - LOG_LEVEL=info # 日志级别:debug/info/warn/error,默认info - VALIDATION_TYPE=hmac # 验证类型:hmac/token/none,默认none - VALIDATION_SECRET=your_hmac_secret # 验证密钥,当VALIDATION_TYPE为hmac/token时必填 - TARGET_BASE_URL=[***] # 默认转发基础URL volumes: - ./routes.yaml:/app/routes.yaml # 路由规则配置文件(可选) restart: unless-stopped
| 环境变量名 | 描述 | 默认值 | 可选值 |
|---|---|---|---|
PORT | 网关监听端口 | 8080 | 1-65535 |
LOG_LEVEL | 日志输出级别 | info | debug, info, warn, error |
VALIDATION_TYPE | 请求验证方式 | none | hmac, token, none |
VALIDATION_SECRET | 验证密钥(HMAC密钥或Token值),VALIDATION_TYPE为hmac/token时必填 | - | 字符串 |
VALIDATION_HEADER | 验证信息所在请求头(如GitHub的X-Hub-Signature-256) | 自动匹配 | 自定义头名称 |
TARGET_BASE_URL | 默认转发目标服务基础URL,未匹配路由规则时使用 | - | HTTP/HTTPS URL |
RETRY_MAX | 请求转发失败后最大重试次数 | 3 | 0-10 |
RETRY_DELAY_MS | 重试间隔(毫秒) | 1000 | 100-5000 |
通过挂载路由配置文件(如routes.yaml)实现复杂路由逻辑,配置示例:
yamlroutes: - name: github-webhook # 路由名称 match: # 匹配规则 path: /github # 匹配请求路径 headers: X-GitHub-Event: push # 匹配请求头 validate: # 路由级验证配置(覆盖全局配置) type: hmac secret: github_webhook_secret header: X-Hub-Signature-256 transform: # 数据转换规则 type: json mapping: # 字段映射,将源字段映射到目标字段 event_type: $.action repo: $.repository.name sender: $.sender.login target: [***] # 转发目标URL - name: slack-notification match: path: /slack validate: type: token secret: slack_bot_token header: Authorization target: [***]
启动容器后,通过curl发送测试请求验证:
bashcurl -X POST http://localhost:8080/github \ -H "Content-Type: application/json" \ -H "X-GitHub-Event: push" \ -d '{"action":"published","repository":{"name":"my-app"},"sender":{"login":"user123"}}'
查看容器日志确认请求处理状态:
bashdocker logs -f webhook-gateway
routes.yaml)管理复杂规则,避免环境变量过多导致配置混乱

manifest unknown 错误
TLS 证书验证失败
DNS 解析超时
410 错误:版本过低
402 错误:流量耗尽
身份认证失败错误
429 限流错误
凭证保存错误
来自真实用户的反馈,见证轩辕镜像的优质服务