这是一个可以让 kubewatch 推送 webhook 给 企业微信群机器人 的 Python3 脚本。
- 支持 kubewatch 接收到 POD 状态变更为
created
或updated
时,进行企业微信群机器人 markdown 消息发送 - 还会发一条世界经典格言
.
├── README.md # 本文件
├── Dockerfile # Kubernetes 服务部署配置脚本
├── deployment.yaml # 部署配置文件
├── requirements.txt # 所需资源文本
├── main.py # 主运行程序脚本
Kubernetes 的 namespaces 应该具有命名规范,例如一个叫做 趣味畅玩
的游戏项目,有验收环境 (staging) 和正式生产环境 (production),那么 namespaces 可以是 fun-game-staging
和 fun-game-production
。
识别环境字符串所使用的是
string.split('-')[-1]
这样做的好处是脚本能够识别出各个环境的演示网址,并拼接在 markdown 中进行企业微信机器人消息推送。
请修改 main.py 中的 projects
变量:
projects = {
# 结构是常规 (string) => dict
'projectA-namespace': {
# 企业微信群聊机器人 token
'token': 'AAAAAA-1234-7890-000-123456789000',
# 环境演示项目的地址
'staging_url': 'https://staging.exampleA.com',
'production_url': 'https://www.exampleA.com'
},
'projectB-namespace': {
'token': 'BBBBBB-1234-7890-000-123456789000',
'testing_url': 'https://testing.exampleB.com',
'other_url': 'https://other.exampleC.com'
}
}
修改 main.py 中的 tianApiKey
。
这里使用 天行数据 的名言警句接口,每天有 100 次免费 API 额度。
如果不需要格言功能,可以修改 getMotto()
方法返回你需要的文本内容。
docker build -t webhook/qyweapp-kubewatch:latest .
docker push webhook/qyweapp-kubewatch:latest # 建议推送到自己的私有镜像中心
vim deployment.yaml # 请先修改脚本中的镜像地址
kubectl apply -f deployment.yaml
M1 芯片必须使用 docker buildx build 和参数
--platforms linux/amd64
测试用 kube-watch 格式 JSON:
{"eventmeta": {"kind": "pod", "name": "project-example-com-staging/backend-xxxx-yyy", "namespace": "project-example-com-staging", "reason": "created"}, "text": "A `pod` in namespace `project-example-com-staging` has been `created`:\n`project-example-com-staging/backend-xxxx-yyy`", "time": "2021-02-26T08:12:08.758617965Z"}
使用 curl 发送:
curl -H "Content-Type: application/json" -X POST -d '{"eventmeta": {"kind": "pod", "name": "project-example-com-staging/backend-xxxx-yyy", "namespace": "project-example-com-staging", "reason": "created"}, "text": "A `pod` in namespace `project-example-com-staging` has been `created`:\n`project-example-com-staging/backend-xxxx-yyy`", "time": "2021-02-26T08:12:08.758617965Z"}' "http://wechat-webhook:8080"
参考 企业微信机器人配置说明
参考 Go webhook 和 代码
- Fork 本仓库
- 新建
Feat_xxx
分支 - 提交代码
- 新建 Pull Request