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

参考链接

相关推荐
木雷坞21 小时前
csdn-enterpriseGitLab Runner docker pull 慢:并行流水线镜像拉取排查
运维·docker·容器·gitlab
一只大袋鼠21 小时前
Git (三):Tag 标签管理、图形工具、IDEA 集成与 GitLab 私有化部署
开发语言·git·gitlab
小林学AI3 天前
掌握这 5 个 Skills 高级玩法,Claude Code 效率翻倍少走 90% 弯路
自动化运维
Lyra_Infra4 天前
故障排查报告:GitLab 18.11.3 后台 Settings 500
gitlab
Mike_6666 天前
git@gitlab-rdc.xxxxx.com: Permission denied (publickey).fatal: 无法读取远程仓库。
git·elasticsearch·gitlab
o_insist7 天前
Docker 入门:从镜像、容器到项目部署
docker·自动化运维·devops
雨声不在8 天前
gitlab ci Runner 配置
gitlab·cicd
PanShanShan9 天前
从 EOTP 到 E404:一次 npm 自动发布踩坑全记录
自动化运维
曾庆睿10 天前
【基于 RHEL 9.3 的 K8s + GitLab 全自动化部署环境搭建第一篇】
kubernetes·自动化·gitlab
曾庆睿10 天前
【基于 RHEL 9.3 的 K8s + GitLab 全自动化部署环境搭建第二篇】
kubernetes·自动化·gitlab