Argo CD 可以自动检测到应用程序配置的变化。这是通过每隔三分钟(默认的180s)轮询一次 Git 存储库来实现的,以检查清单是否发生变化。为了消除轮询延迟,API 服务端可以配置为接收 webhook 事件,从而实时获取 Git 存储库中的变化。
轮训日志(日志来源于argocd-server容器)
time="2023-05-24T21:19:07Z" level=info msg="Alloc=14465 TotalAlloc=9457911 Sys=53009 NumGC=5192 Goroutines=86"
time="2023-05-24T21:29:07Z" level=info msg="Alloc=15137 TotalAlloc=9465347 Sys=53009 NumGC=5197 Goroutines=86"
time="2023-05-24T21:39:07Z" level=info msg="Alloc=15196 TotalAlloc=9472265 Sys=53009 NumGC=5202 Goroutines=86"
time="2023-05-24T21:49:07Z" level=info msg="Alloc=14576 TotalAlloc=9479159 Sys=53009 NumGC=5207 Goroutines=86"
time="2023-05-24T21:59:07Z" level=info msg="Alloc=15216 TotalAlloc=9486439 Sys=53009 NumGC=5212 Goroutines=86"
time="2023-05-24T22:09:07Z" level=info msg="Alloc=15054 TotalAlloc=9493098 Sys=53009 NumGC=5217 Goroutines=86"
time="2023-05-24T22:19:07Z" level=info msg="Alloc=14574 TotalAlloc=9499758 Sys=53009 NumGC=5222 Goroutines=86"
方法一(不是很推荐,因为设置的间隔小,会一直轮训,没必要)
直接在config > configMap 中的argocd-cm 增加参数,时间看具体情况拟定
#应用程序协调超时是发现新清单版本是否得到所需的最长时间
#发布到存储库。如果超时设置为 0,则禁用按超时协调。
timeout.reconciliation: 180s
改完手动重启这个容器 argocd-repo-server
方法二,通过webhooks触动钩子来更新(推荐这个方法,虽然有点小复杂)
在argocd的secrets中增加参数,在最下面增加,使用Lens,k8s可视化工具更改更方便
stringData:
# gitlab webhook secret
webhook.gitlab.secret: 自定义的字符串(这个字符串会加密成为一个复杂的字符串)
在gitlab的项目yaml仓库中,进入该项目,点击左侧的设置,进入Webhooks菜单
Webhooks
webhooks允许您针对某个群组或项目中的事件发送通知到web应用程序。 如需使用webhook, 我们推荐优先使用已有的集成
使用现有的集成,右侧URL写入argocd的地址,后面加路径,例如
https://argocd.local/api/webhook
https://192.168.10.10:port/api/webhook
下方的Secret Token(这个地方也是可选的,建议用上)
关闭下方的 SSL verification不做安全校验,然后点击 Add webhook 添加就好了
写入完成后点击测试,使用 Push events 测试一下
因为默认的hooks增加的是push操作才会触发这个钩子
成功触发钩子上方会返回200的值
这个时候去看集群里面的argocd-server这个容器的日志
会有最新的数值返回
time="2023-05-24T08:28:07Z" level=info msg="Received push event repo: http://git.local/argocd/argocd-gitops, revision: master, touchedHead: true"
这个日志输出中所默认的触发的分支为 revision: master ,如果是别的分支别的环境项目,在添加hooks钩子的时候写入分支的名称即可