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

参考链接

相关推荐
世事如云有卷舒2 小时前
Ubunt20.04搭建GitLab服务器,并借助cpolar实现公网访问
linux·服务器·gitlab
HalukiSan1 天前
如何提交PR
git·gitlab·github
东林牧之1 天前
CICD[软件安装]:docker安装gitlab
docker·容器·gitlab
东林牧之1 天前
CICD[导航]、docker+gitlab+harbor+jenkins从安装到部署
docker·gitlab·jenkins
一世一生命2 天前
Windows下Gitlab多账号(3个及以上)SSH配置
运维·ssh·gitlab
裁二尺秋风3 天前
CI/CD — Pipeline的使用以及Blue Ocean多分支流水线的使用方法
ci/cd·gitlab·jenkins
知识浅谈3 天前
n8n完全指南:从入门到精通的工作流自动化实践
自动化运维
北海之灵3 天前
docker desktop部署本地gitlab服务
docker·容器·gitlab
兔老大RabbitMQ3 天前
GitHub vs GitLab 全面对比报告(2025版)
gitlab·github
半方白4 天前
通过 ks.cfg 文件实现 openEuler 系统自动部署
运维·自动化运维