Argo CD + Server酱:应用同步状态推送到微信
效果:Argo CD 应用同步成功或失败时,自动推送消息到微信。
前置条件
- Server酱 SendKey(30 秒获取教程)
- 已安装 argocd-notifications 组件
- 对 argocd-notifications-cm ConfigMap 有编辑权限
配置步骤
1. 定义 webhook service
在 argocd-notifications-cm ConfigMap 中定义 webhook service,将 URL 指向 Server酱 API,方法为 POST,body 使用 form 格式传 title 和 desp(具体配置键名请参考 argocd-notifications 文档)。
如果你使用 Server酱³(SendKey 以 sctp 开头),URL 改为:
https://你的UID.push.ft07.com/send/你的SENDKEY.send
UID 是 sctp 与 t 之间的数字。
2. 定义消息模板
在同一个 ConfigMap 中添加消息模板,将应用名和同步状态拼入 title 和 desp(具体模板语法请参考 argocd-notifications 文档)。
3. 定义触发器
添加触发器,指定在同步成功或失败时发送通知(具体配置请参考 argocd-notifications 文档)。
4. 订阅应用
通过 ConfigMap 中的 subscriptions 全局订阅,或通过 Application annotation 订阅(具体方式请参考 argocd-notifications 文档)。
5. 应用配置
kubectl apply -f argocd-notifications-cm.yaml
应用配置后,根据 argocd-notifications 文档使配置生效。
完整示例
一个完整的 argocd-notifications-cm ConfigMap 需包含以下部分:
- webhook 服务定义:指向 Server酱 的 URL(
https://sctapi.ftqq.com/你的SENDKEY.send,Server酱³ 用户使用对应 URL),方法 POST,body 为 form 格式。 - 消息模板:将应用名、同步状态等信息拼入 title 和 desp。
- 触发器:指定在同步成功或失败等条件下发送通知。
- 订阅:全局订阅或按应用订阅。
具体配置键名和语法请参考 argocd-notifications 官方文档,将上述 Server酱 的 URL 和参数填入即可。
常见问题
免费额度够用吗?
Server酱免费版每天 5 条,每分钟上限 50 条。GitOps 部署频率不高时通常够用;高频部署可考虑订阅会员目前特价最低 3 元/月,一天最多可发 1000 条(价格详情)。
配置后没收到消息?
先检查 argocd-notifications-controller 日志确认 webhook 是否被触发;再确认 SendKey 正确、API 返回 JSON 的 code 为 0。也可参考常见问题与排查。
form body 中的特殊字符怎么处理?
body 使用 form 格式时,应用名通常符合 Kubernetes 命名规范(小写字母、数字、连字符),不会有问题。如 desp 中需包含换行等特殊字符,可改用 JSON body(Content-Type 设为 application/json,body 用 JSON 格式传 title/desp,换行用 \n\n)。
多个应用同时同步会超限吗?
Server酱每分钟最多 50 条消息。如果大量应用同时触发通知,可能超出限制。可考虑减少同时订阅的应用数量,避免超出频率限制。
相关集成
- /integrations/uptime-kuma/ —— Uptime Kuma 宕机告警
- /integrations/qinglong/ —— 青龙面板任务通知
- /integrations/python/ —— Python 脚本推送