argocd 同步 部署 状态集成钉钉通知
在使用gitop 过程中需要明确知道 每个环节的具体情况,此文在argocd 环节进行了 钉钉集成具体方法如下
1、在 argocd 安装文件 install.yaml 文件里的 argocd-notifications-cm 部分进行相关配置
首先在在PC端安装部署 钉钉PC版 创建群聊 添加自定义机器人 然后获取机器的webhook地址
往下拉找到机器人部分
添加机器人
这里 可以设置安装方式 有三种方式 我这里使用的是关键字
也可以选择使用标签,如果使用标签的方式 请参考这篇文章 https://www.cnblogs.com/nb-blog/p/18071093
在群聊里添加机器人后就可以配置 argocd 的 install.yaml 文件了
修改 install.yaml 文件的argocd-notifications-cm 相关配置信息
由于文件比较大我整理到gitee 了
https://gitee.com/stud_1/install_argocd/blob/master/new_install.yaml
apiVersion: v1 kind: ConfigMap metadata: name: argocd-notifications-cm data: service.webhook.dingtalk: | url: https://oapi.dingtalk.com/robot/send?access_token=9a632a742960d1dd0943ebf21948140340354b4a2d06eb4399cab72984475de8 headers: - name: Content-Type value: application/json context: | argocdUrl: https://101.43.196.155:32329 template.app-sync-change: | webhook: dingtalk: method: POST body: | { "msgtype": "markdown", "markdown": { "title":"ArgoCD应用状态", "text": "### ArgoCD应用状态\n> - 应用名称111111: {{.app.metadata.name}}\n> - 同步状态: {{ .app.status.operationState.phase}}\n> - 时间:{{.app.status.operationState.finishedAt}}\n> - 应用URL: [点击跳转]({{.context.argocdUrl}}/applications/{{.app.metadata.name}}?operation=true) \n" } } template.app-sync-status-unknown: | webhook: dingtalk: method: POST body: | { "msgtype": "markdown", "markdown": { "title":"ArgoCD应用Unknown", "text": "### ArgoCD应用Unknown\n> - <font color=\"warning\">应用名称</font>: {{.app.metadata.name}}\n> - <font color=\"warning\">应用同步状态</font>: {{.app.status.sync.status}}\n> - <font color=\"warning\">应用健康状态</font>: {{.app.status.health.status}}\n> - <font color=\"warning\">时间</font>: {{.app.status.operationState.startedAt}}\n> - <font color=\"warning\">应用URL</font>: [点击跳转ArgoCD UI]({{.context.argocdUrl}}/applications/{{.app.metadata.name}}?operation=true)" } } template.app-sync-failed: | webhook: dingtalk: method: POST body: | { "msgtype": "markdown", "markdown": { "title":"ArgoCD应用发布失败", "text": "### ArgoCD应用发布失败\n> - <font color=\"danger\">应用名称</font>: {{.app.metadata.name}}\n> - <font color=\"danger\">应用同步状态</font>: {{.app.status.operationState.phase}}\n> - <font color=\"danger\">应用健康状态</font>: {{.app.status.health.status}}\n> - <font color=\"danger\">时间</font>: {{.app.status.operationState.startedAt}}\n> - <font color=\"danger\">应用URL</font>: [点击跳转ArgoCD UI]({{.context.argocdUrl}}/applications/{{.app.metadata.name}}?operation=true)" } } trigger.on-deployed: | - description: Application is synced and healthy. Triggered once per commit. oncePer: app.status.sync.revision send: [app-sync-change] # trigger condition when: app.status.operationState.phase in ['Succeeded'] and app.status.health.status == 'Healthy' trigger.on-health-degraded: | - description: Application has degraded send: [app-sync-change] when: app.status.health.status == 'Degraded' trigger.on-sync-failed: | - description: Application syncing has failed send: [app-sync-failed] when: app.status.operationState != nil and app.status.operationState.phase in ['Error','Failed'] trigger.on-sync-status-unknown: | - description: Application status is 'Unknown' send: [app-sync-status-unknown] when: app.status.sync.status == 'Unknown' trigger.on-sync-running: | - description: Application is being synced send: [app-sync-change] when: app.status.operationState != nil and app.status.operationState.phase in ['Running'] trigger.on-sync-succeeded: | - description: Application syncing has succeeded send: [app-sync-change] when: app.status.operationState != nil and app.status.operationState.phase in ['Succeeded'] subscriptions: | - recipients: [dingtalk] triggers: [on-sync-failed, on-sync-succeeded, on-sync-status-unknown,on-deployed,on-health-degraded] --- apiVersion: v1 data: policy.csv: | g, admin@example.com, role:admin policy.default: role:readonly scopes: '[email, group]' kind: ConfigMap metadata: labels: app.kubernetes.io/name: argocd-rbac-cm app.kubernetes.io/part-of: argocd name: argocd-rbac-cm
本文来自博客园,作者:IT老登,转载请注明原文链接:https://www.cnblogs.com/nb-blog/p/18075779