ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

Argo CD 通知集成 Webex Teams 服务配置指南:从 Bot 令牌到订阅投递全流程

Argo CD 通知集成 Webex Teams 服务配置指南:从 Bot 令牌到订阅投递全流程 Argo CD 通知集成 Webex Teams 服务配置指南从 Bot 令牌到订阅投递全流程【免费下载链接】argo-cdDeclarative Continuous Deployment for Kubernetes项目地址: https://gitcode.com/GitHub_Trending/ar/argo-cdArgo CD 的通知系统Argo CD Notifications通过触发器 模板 服务三层机制把应用状态变化实时推送到各类协作平台。本文将聚焦其中 Webex Teams 这一通知服务完整讲解其参数含义、Bot 令牌的存储与引用方式、服务注册方法以及如何通过订阅注解把 Webex 消息投递到指定邮箱或房间同时结合仓库内通知控制器与配置解析源码说明service.webex配置从 ConfigMap 到消息发送的底层工作方式帮助读者一步到位完成从零配置到真实收信的全过程。Webex Teams 通知服务在 Argo CD 通知体系中的位置在 Argo CD 中通知服务Notification Service代表与 Slack、Email、Webhook 等外部平台的集成是消息投递的最终出口。所有通知服务统一在argocd-notifications-cmConfigMap 中注册键名格式为service.type.custom-name其中type即服务类型标识。对于 Webex Teams该标识就是webex因此注册键为service.webex若需配置多个 Webex 实例可命名为service.webex.custom-name。关于服务体系的整体介绍可参考 通知服务总览。Webex Teams 服务只要求一个参数参数说明tokenWebex Bot 的访问令牌access token用于向 Webex 平台认证并代表 Bot 发送消息前置准备创建 Webex Bot 并获取访问令牌在配置 Argo CD 之前需要先在 Webex 开发者平台完成两件事创建一个 Bot在 Webex 开发者站点的 Bot 创建入口填写 Bot 名称、用户名和图标创建完成后平台会生成一个专属的 Bot 访问令牌。Bot 是消息的发送主体它会被添加到目标房间或被目标用户授权后才有权限投递消息。复制令牌进入我的应用My Apps页面复制该 Bot 的 access token。该令牌是敏感凭据严禁直接明文写入 ConfigMap必须存放在 Kubernetes Secret 中。第一步将令牌存入 Secret令牌通过argocd-notifications-secretSecret 保存Webex 服务的推荐键名为webex-token。参照 通知服务总览 中的敏感数据处理约定服务配置中可以使用$secret-key格式引用 Secret 中的键值例如$webex-token即引用键webex-token的值。apiVersion: v1 kind: Secret metadata: name: secret-name stringData: webex-token: bot access token提示secret-name默认为argocd-notifications-secret可通过通知控制器启动参数--secret-name覆盖使用stringData时以明文形式书写Kubernetes 会负责编码存储也可改用data字段预先 base64 编码。第二步在 ConfigMap 中注册 Webex 服务在argocd-notifications-cmConfigMap 中新增service.webex配置项通过$webex-token引用上一步 Secret 中的令牌apiVersion: v1 kind: ConfigMap metadata: name: argocd-notifications-cm data: service.webex: | token: $webex-token注册完成后通知控制器即可识别webex这一服务类型并依据订阅注解把消息路由到 Webex 投递。完整的 ConfigMap 结构含触发器、模板、服务、全局订阅等字段的排布可参考仓库中的示例文件 argocd-notifications-cm.yaml。若需要同时对接多个 Webex Bot例如按团队拆分可注册多个命名实例并分别引用不同的 Secret 键data: service.webex.team1: | token: $webex-token-team1 service.webex.team2: | token: $webex-token-team2第三步创建订阅指定投递目标订阅决定了什么事件发生、通知发给谁。通过在 Application 资源上添加notifications.argoproj.io/subscribe.trigger-name.webex注解即可把指定触发器产生的通知投递到 Webex。注解的值是收件人可以是个人邮箱或房间 IDapiVersion: argoproj.io/v1alpha1 kind: Application metadata: annotations: notifications.argoproj.io/subscribe.trigger-name.webex: personal email or room id例如订阅同步成功触发器、投递到某个房间apiVersion: argoproj.io/v1alpha1 kind: Application metadata: annotations: notifications.argoproj.io/subscribe.on-sync-succeeded.webex: my-room-id订阅注解的键由三部分组成subscribe前缀、trigger-name触发器名和webex服务名值支持用分号分隔的多个收件人如aliceexample.com;room-id-2。订阅机制的完整说明见 subscriptions.md。面向整个项目的订阅不需要为每个 Application 重复添加注解时可以把同样的注解加到 AppProject 资源上该项目的全部应用即自动继承此订阅apiVersion: argoproj.io/v1alpha1 kind: AppProject metadata: annotations: notifications.argoproj.io/subscribe.on-sync-succeeded.webex: personal email or room id全局默认订阅管理员还可以在 ConfigMap 的subscriptions字段中集中配置对所有应用生效的全局订阅使用recipients收件人列表格式为webex:recipient、triggers和可选selector按标签筛选应用字段apiVersion: v1 kind: ConfigMap metadata: name: argocd-notifications-cm data: subscriptions: | - recipients: - webex:aliceexample.com triggers: - on-sync-succeeded底层机制service.webex 配置如何被解析与消费Webex 服务的注册与解析遵循 Argo CD 通知系统统一的配置加载路径其入口位于 util/notification/settings/settings.go。从源码结构可以梳理出以下关键链路通知控制器notification_controller模块启动时通过GetFactorySettings/GetFactorySettingsForCLI构造api.Settings其中指定了SecretName与ConfigMapName即argocd-notifications-secret与argocd-notifications-cm控制器读取 ConfigMap 中以service.为前缀的键识别出webex类型的服务定义并在渲染消息时解析$webex-token这类占位符从 Secret 的data中取出真实令牌注入配置消息内容由模板template根据触发条件生成最终通过服务类型对应的发送器投递到 Webex。具体的 Webex 发送器实现位于外部依赖库github.com/argoproj/notifications-engine/pkg/services见 settings.go 的导入本仓库负责服务注册与订阅路由二者共同完成触发 → 渲染 → 发送的完整闭环。同时注意initGetVars会把 Secret 数据以secrets变量暴露给模板渲染见 settings.go若管理员启用了--self-service-notification-enabled应用级自服务通知则会走initGetVarsWithoutSecret分支模板中不再可用 Secret 数据但service.webex的令牌引用机制不受影响详见 通知总览 中基于命名空间的配置一节。验证与排障要点令牌引用失败确认 Secret 的键名与$占位符完全一致区分大小写并确认 Secret 与 ConfigMap 位于通知控制器监听的同名命名空间收件人无效Webex 的收件人必须是 Bot 可投递的地址——若为邮箱需确保该用户允许来自 Bot 的消息若为房间 ID需确保 Bot 已被加入该房间订阅未生效检查注解键中的触发器名是否为 Catalog 中已定义或自建的触发器可参考 触发器与模板目录触发器与模板也可从notifications_catalog目录的 install.yaml 安装配置热加载ConfigMap 与 Secret 变更后通知控制器会自动感知并刷新配置无需重启控制器。完成以上三步配置后只需触发一次应用同步例如kubectl apply后等待 sync 完成即可在 Webex 邮箱或房间中收到 Argo CD 推送的通知消息。【免费下载链接】argo-cdDeclarative Continuous Deployment for Kubernetes项目地址: https://gitcode.com/GitHub_Trending/ar/argo-cd创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表