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事件。

参考链接

相关推荐
Irene19911 天前
什么是 DevOps
gitlab·devops
殷紫川1 天前
告别手动部署噩梦:CI/CD 持续交付全链路实战
运维·架构·自动化运维
蓝天星空2 天前
GitLab上传项目到新的分支
gitlab
1candobetter4 天前
GitLab 项目创建与分支管理全流程
gitlab
林鸿群6 天前
Ubuntu 26.04 本地安装 GitLab CE 完整教程(非 Docker 方式)
linux·ubuntu·gitlab·私有部署·代码托管·ubuntu 26.04·omnibus
竹林8187 天前
用Python脚本批量发布Markdown文章,我踩了三个坑才搞定
python·markdown·自动化运维
ascarl20107 天前
IDEA 一直弹 GitLab 登录,VS Code 却能正常 `git push`?问题排查记录
git·gitlab·intellij-idea
AustinXu7 天前
AI时代,运维工程师如何不被淘汰?从 Ops 到 Platform Engineer 的思维跃迁
自动化运维
企鹅郁金香9 天前
Gitlab和Confluence和Svn的备份
svn·gitlab·confluence·gitlab备份·svn备份·confluence备份
barbyQAQ9 天前
GitLab CI/CD 基本用法指南
java·ci/cd·gitlab