文章目录
本文我们将介绍 Argo CD 通过
webhook
来优化应用检测
webhook 配置
**Argo CD 可以自动检测到应用程序配置的变化。
**这是通过每隔三分钟轮询一次 Git 存储库来实现的,以检查清单是否发生变化。为了消除轮询延迟,API 服务端可以配置为接收 webhook 事件,从而实时获取 Git 存储库中的变化。Argo CD 支持来自 GitHub、GitLab、Bitbucket、Bitbucket Server 和 Gogs 的 Git webhook 事件。以 GitLab 为例,我们可以配置 webhook 来实现这一功能。
进入到 GitLab 存放 menifest 的项目仓库
配置 Webhooks
Webhook 的地址填写 Argo CD 的 API 接口地址 https://argocdtrain.shmao.net/api/webhook,下面的 Secret token 是可选的,建议添加上,任意定义即可。另外需要注意这里我们使用的是自签名的 https 证书,所以需要在下方去掉 启用SSL验证
。
然后需要将上面配置的 Secret token 添加到 Argo CD 的 Secret 配置中:
➜ ~ 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: gstrain-argocd-123
保存后,更改会自动生效,我们可以在 GitLab 这边测试配置的 Webhook,查看 Argo CD 的 API 服务 Pod 日志,正常就可以收到 Push 事件了:
➜ ~ kubectl logs -f argocd-server-5cc96b75b4-zws2c -n argocd
time="2023-04-23T02:50:26Z" level=info msg="finished unary call with code OK" grpc.code=OK grpc.method=List grpc.service=application.ApplicationService grpc.start_time="2023-04-23T02:50:26Z" grpc.time_ms=6.448 span.kind=server system=grpc
time="2023-04-23T02:51:07Z" level=info msg="Received push event repo: http://git.17usoft.com/gstrain/train-system-manifest, revision: master, touchedHead: true"
这里我们的问题就解决了,不会再等那漫长的三分钟了~