You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

ArgoCD配置Teams通知失败:按文档操作后无通知求助

ArgoCD通知无法发送至Microsoft Teams频道排查方案

问题描述

尝试将ArgoCD通知集成至Microsoft Teams频道,但执行CI/CD后未收到任何通知。已完成以下配置:

  1. 在Teams中创建Incoming Webhook并获取URL;
  2. 配置argocd-notifications-secret Secret:
apiVersion: v1  
kind: Secret
metadata:   
  name: argocd-notifications-secret
stringData:
  channel-teams-url: mywebhookurl
type: Opaque
  1. 配置argocd-notifications-cm ConfigMap(包含触发器、Teams服务配置及消息模板);
  2. 在ArgoCD应用中添加订阅注解:
apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
  name: dreambook-argo-application
  namespace: argocd
  annotations:
    notifications.argoproj.io/subscribe.on-sync-running.teams: ArgoCD
    notifications.argoproj.io/subscribe.on-deployed.teams: ArgoCD
    notifications.argoproj.io/subscribe.on-health-degraded: ArgoCD
spec:
  project: default
  source:
    repoURL: myrepo url
    targetRevision: HEAD
    path: dev/deployment
  destination:
    server: https://kubernetes.default.svc
    namespace: myns
  syncPolicy:
    automated:
      prune: true
      selfHeal: true
    syncOptions:
      - Validate=false
      - Prune=true
      - SelfHeal=true

排查与修复步骤

1. 修正订阅注解格式错误

应用注解中notifications.argoproj.io/subscribe.on-health-degraded: ArgoCD缺少.teams后缀,正确格式应为:

notifications.argoproj.io/subscribe.on-health-degraded.teams: ArgoCD

缺少后缀会导致该触发器无法关联Teams服务,直接跳过通知发送。

2. 修复Teams模板的JSON语法问题

你的消息模板中,facts和potentialAction字段的JSON存在语法错误:

  • 循环生成的条件对象末尾多了冗余逗号,例如:
    {
      "name": "{{$c.type}}",
      "value": "{{$c.message}}",
    }
    
    需去掉末尾逗号,修正为:
    {
      "name": "{{$c.type}}",
      "value": "{{$c.message}}"
    }
    

JSON语法错误会导致ArgoCD无法生成有效的Teams消息,直接丢弃发送请求。

3. 查看通知控制器日志定位问题

检查argocd-notifications-controller的Pod日志,获取具体错误信息:

kubectl logs -n argocd deployment/argocd-notifications-controller

常见错误包括:Webhook URL无效、JSON格式错误、集群无法访问Teams网络、触发器条件不匹配等。

4. 验证触发器条件是否满足

  • 确认on-deployed触发器的条件app.status.operationState.phase in ['Succeeded'] and app.status.health.status == 'Healthy'是否符合应用实际状态;
  • 执行命令查看应用状态细节:
kubectl get application dreambook-argo-application -n argocd -o yaml

如果应用同步后未处于Healthy状态,或operationState.phase不是Succeeded,触发器不会触发。

5. 测试Teams Webhook有效性

直接用curl测试Secret中配置的Webhook URL是否能正常发送消息:

curl -H "Content-Type: application/json" -d '{"text": "Test message from curl"}' <你的Teams Webhook URL>

如果curl测试失败,说明Webhook URL本身无效,需重新在Teams中生成。

内容的提问来源于stack exchange,提问作者Dilshod K

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.25 17:23:18