Gitlab+ArgoCD webhook配置自动触发

一 背景

Argo CD 每三分钟会轮询一次 Git 存储库,以检测清单的更改。为了消除这种轮询延迟,可以将 API 服务器配置为接收 webhook 事件的方式,这样就能实时获取到 Git 存储库中的变化了。 Argo CD 支持来自 GitHub、GitLab、Bitbucket、Bitbucket Server 和 Gogs 的 Git webhook 通知。下面以 GitLab 为例配置 webhook。

二 原理

通过Git仓库的tag/brach实践,Git仓库调用配置的ArgoCD webhook地址,实现自动触发,

实现目标:

  1. 消除轮询延迟:Argo CD 默认通过轮询 Git 存储库来检测清单的更改,但这可能会导致一些延迟。通过配置 webhook,Git 存储库可以直接通知 Argo CD 有关代码变更,从而消除轮询延迟,实现即时获取变更的效果。
  2. 实时获取代码变更:通过 webhook,Git 存储库将即时发送事件通知给 Argo CD 的 API 服务器,包含了代码变更的详细信息。这使得 Argo CD 能够立即获知代码的改变,而无需等待下一次轮询周期。
  3. 支持多种 Git 存储库:Argo CD 支持来自 GitHub、GitLab、Bitbucket、Bitbucket Server 和 Gogs 的 Git webhook 通知。这意味着您可以在这些平台上配置 webhook,并与 Argo CD 集成,无论您选择的是哪种 Git 存储库,都能够实现即时获取代码变更的目的。

三 实战

3.1 获取Argocd webhook地址

在 GitLab 中配置的 URL 应该使用您的 Argo CD 实例的 /api/webhook 接口(例如 argocd.xxx.com/api/webhook... Secret Token 是可选的,建议添加上,可输入任意值。在下一步配置 webhook 时将使用此值。

shell 复制代码
https://124.156.169.236:8080/api/webhook

3.2 Git源码仓库配置

Gitlab 配置webhook 的Merge request events事件触发

secret token 可选,但建议填写:argocdgitlab123

3.3 使用WebHook Secret配置Argo CD

在 kubernetes secret argocd-secret 中添加上面配置的 Secret Token:

ruby 复制代码
$ kubectl edit secret argocd-secret -n argocd

**TIP:**为了方便输入secret,kubernetes支持在stringData字段中输入secret,这样就省去了base64编码后复制到data字段的麻烦。只需将步骤 1 中创建的共享 webhook 秘密复制到 stringData 字段下相应的 GitLab 键:

yaml 复制代码
apiVersion: v1
kind: Secret
metadata:
  name: argocd-secret
  namespace: argocd
type: Opaque
data:
...

stringData:
  # gitlab webhook secret
  webhook.gitlab.secret: argocdgitlab123

3.4 创建ArgoCD应用测试

  • 创建argocd应用
  • 并快速提交代码触发测试

可以查看argocd 应用不用等待3分钟,直接触发更新。

四 注意事项

  • 由于是Git仓库主动去调用ArgoCD地址,需要Git仓库能与ArgoCD地址能正常通讯。
  • 如果Git链接不到ArgoCD,可以配置ArgoCD 通过pull方式,三分钟触发,或手动触发拉取配置,进行部署。

五 总结

为了实时获取Git存储库中的变化,可以配置GitLab与Argo CD的Webhook。通过配置Webhook,当Git存储库中的清单发生更改时,GitLab会向Argo CD的API服务器发送通知,从而消除了轮询延迟。配置的步骤包括在GitLab中创建项目并关联存储库,以及获取Argo CD的API服务器URL用于接收来自GitLab的Webhook事件。

参考链接

相关推荐
_可乐无糖7 小时前
GitLab CI 脚本之 dependencies 和 needs
ci/cd·gitlab
Ikalus198816 小时前
告警不是变绿,是「不再是 active」——rules/alerting.go 里 0 次 IsStaleNaN
自动化运维
Fan_5582 天前
4核8G云服务器部署GitLab内存耗尽解决方案
gitlab
迪康软件zz2 天前
终端审批体系怎么搭?从模板配置到业务连续性
运维·安全·自动化运维
洋就在江州2 天前
gitlab-cicd 离线集成——springboot-cicd (非docker形式,shell形式)
java·spring boot·后端·ci/cd·gitlab·gitlab-runner
东莞市云毅网络有限公司2 天前
结构化标注缺失怎么查:JSON-LD抽取与每日巡检脚本实现
python·sqlite·自动化运维·geo·数据监测
成为你的宁宁3 天前
【Ubuntu 18.04安装Gitlab】
ubuntu·gitlab
长春的KAKA3 天前
GitLab 项目页面报 500 错误的完整修复记录:PostgreSQL 数据库损坏、统计表缺失及数据库迁移
数据库·postgresql·gitlab
蓝胖的四次元口袋3 天前
GitLab知识梳理
gitlab
Vex2une4 天前
Windows PowerShell 发展史:从命令行工具到自动化核心
windows·自动化运维·命令行·powershell·cmd·脚本语言·对象管道