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

参考链接

相关推荐
krb___1 天前
python拉取gitlab项目以及拉取报错处理
gitlab
dami_king3 天前
新手怎么使用GitLab?
运维·git·svn·云原生·gitlab·github
linyb极客之路3 天前
聊聊gitlab ci如何构建以时间为版本号的docker镜像
ci/cd·docker·gitlab
大海里的番茄4 天前
公网环境使用Potplayer远程访问家中群晖NAS搭建的WebDAV听歌看电影
gitlab·ruby
奇遇少年5 天前
代码托管服务:GitHub、GitLab、Gitee
gitee·gitlab·github
白如意i5 天前
在Ubuntu 16.04上安装和配置GitLab的方法
linux·ubuntu·gitlab
kuuuugua6 天前
2024广东省职业技能大赛云计算赛项实战——集群部署GitLab Runner
ci/cd·容器·云计算·k8s·gitlab
kuuuugua6 天前
2024广东省职业技能大赛云计算赛项实战——集群部署GitLab Agent
运维·ci/cd·容器·云计算·k8s·gitlab
桃花源小王子6 天前
【Linux】部署 GitLab 服务
linux·运维·gitlab
vivo互联网技术7 天前
vivo 互联网自研代码评审 VCR 落地实践
git·gitlab·intellij idea