ArgoCD可以自动检测到应用程序配置的变化,每隔三分钟(默认的180s)轮询一次Git存储库来实现的,以检查清单是否发生变化,为了消除轮询延迟,API服务端可以配置为接收 webhook事件,从而实时获取Git存储库中的变化

轮询日志(日志来源argocd-server容器)

[root@k8s-master-01 ~]# kubectl logs -n argocd argocd-server-6df59f5f5b-pgbdp argocd-server -f
time="2024-06-05T07:43:39Z" level=info msg="Alloc=13759 TotalAlloc=105562383 Sys=72037 NumGC=117792 Goroutines=112"
time="2024-06-05T07:53:39Z" level=info msg="Alloc=13752 TotalAlloc=105565933 Sys=72037 NumGC=117797 Goroutines=112"
time="2024-06-05T08:03:39Z" level=info msg="Alloc=13717 TotalAlloc=105569719 Sys=72037 NumGC=117802 Goroutines=112"

方法一:修改配置文件,增加参数(不推荐)

#应用程序协调超时是发现新清单版本是否得到所需的最长时间 
#发布到存储库,如果超时设置为0,则禁用按超时协调
timeout.reconciliation: 180s

改完手动重启这个容器 argocd-repo-server

方法二:通过webhooks触动钩子来更新(推荐)

在argocd的配置中中增加参数,如下:

[root@k8s-master-01 ~]# kubectl edit secret argocd-secret -n argocd
apiVersion: v1
kind: Secret
metadata:
  name: argocd-secret
  namespace: argocd
type: Opaque
data:
...
stringData:
  # gitlab webhook secret
  webhook.gitlab.secret: bf7d897fa47d55985848bb7192472909

在gitlab的项目yaml仓库中,进入该项目,点击左侧的设置,进入Webhooks菜单设置,Webhook 的地址填写Argo CD的API接口地址https://argocd.com/api/webhook,下面的Secret token是上文的webhook.gitlab.secret

https://argocd.com/api/webhook
或者
http://192.168.200.100:31103/api/webhook

argocd8.png写入完成后点击测试,使用 Push events 测试一下,因为默认的hooks增加的是push操作才会触发这个钩子,成功触发钩子上方会返回200的值

argocd9.png查看Argo CD的API服务Pod日志,正常就可以收到Push事件了

[root@k8s-master-01 ~]# kubectl logs -n argocd -f argocd-server-6df59f5f5b-pgbdp -f
time="2024-06-05T08:58:12Z" level=info msg="invalidated cache for resource in namespace: argocd with the name: argocd-notifications-secret"
time="2024-06-05T08:58:23Z" level=info msg="invalidated cache for resource in namespace: argocd with the name: argocd-notifications-cm"
time="2024-06-05T08:58:36Z" level=info msg="Received push event repo: http://192.168.200.213/opsdev/charts, revision: main, touchedHead: true"

文章作者: 鲜花的主人
版权声明: 本站所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 爱吃可爱多
Tools Kubernetes Kubernetes Tools
喜欢就支持一下吧
打赏
微信 微信
支付宝 支付宝