解决ArgoCD自动同步延迟,同步镜像延迟
背景
同事在使用ArgoCD进行K8s集群的自动化部署时,遇到了自动同步延迟和同步镜像延迟的问题。
问题分析
Argo CD 可以自动检测到应用程序配置的变化。这是通过每隔三分钟(默认的180s)轮询一次 Git 存储库来实现的,以检查清单是否发生变化。
解决思路
为了消除轮询延迟,可以采取以下两种方法:
- 减少轮询间隔时间,例如设置为60s。
- API 服务端可以配置为接收 webhook 事件,从而实时获取 Git 存储库中的变化。
减少轮询间隔时间
- 编辑 Argo CD 的配置文件,找到
configmap
部分。 - 在该部分中添加或修改以下行:
#应用程序协调超时是发现新清单版本是否得到所需的最长时间 #发布到存储库。如果超时设置为 0,则禁用按超时协调。 timeout.reconciliation: 60s
- 应用更改并重启 Argo CD 服务。
- 这种方法好像没啥用,貌似还是会延迟。
设置webhook触发
-
在argocd的secrets中增加参数。
stringData: # gitlab webhook secret webhook.gitlab.secret: 自定义的字符串(这个字符串会加密成为一个复杂的字符串)
重启argocd服务端。 -
gitlab配置webhook
webhook的URL是argocd服务端的地址+/api/webhook
。http://argocd-server/api/webhook http://192.168.1.6:32417/api/webhook
下方的Secret Token(这个地方也是可选的,建议用上)
关闭下方的 SSL verification不做安全校验,然后点击 Add webhook 添加就好了
写入完成后点击测试,使用 Push events 测试一下,因为默认的hooks增加的是push操作才会触发这个钩子,成功触发钩子上方会返回200的值
这个时候去看集群里面的argocd-server这个容器的日志
评论区