配置webhook加速CD过程

Argo CD每三分钟轮询一次Git存储库,以检测清单的变化。为了消除轮询带来的延迟,可以将API服务器配置为接收Webhook事件。Argo CD支持来自GitHub,GitLab,Bitbucket,Bitbucket Server和Gogs的Git Webhook通知,更多点击官网

这里使用Gitlab作为仓库地址。

(1)在argocd中配置webhook token
使用kubectl edit secret argocd-secret -n argocd命令进行配置:

  1. apiVersion: v1
  2. kind: Secret
  3. metadata:
  4. name: argocd-secret
  5. namespace: argocd
  6. type: Opaque
  7. data:
  8. ...
  9. stringData:
  10. # gitlab webhook secret
  11. webhook.gitlab.secret: coolops

配置完点击保存会自动生成一个secret,如下:

  1. # kubectl describe secret argocd-secret -n argocd
  2. Name: argocd-secret
  3. Namespace: argocd
  4. Labels: app.kubernetes.io/name=argocd-secret
  5. app.kubernetes.io/part-of=argocd
  6. Annotations:
  7. Type: Opaque
  8. Data
  9. ====
  10. admin.passwordMtime: 20 bytes
  11. server.secretkey: 44 bytes
  12. tls.crt: 1237 bytes
  13. tls.key: 1679 bytes
  14. webhook.gitlab.secret: 7 bytes
  15. admin.password: 60 bytes

(2)在gitlab的代码仓库配置webhook,如下:
image.png
由于集群内部证书是无效证书,所有要把Enabled SSL去掉,如下:
image.png
然后点击保存,点击测试,看是否链接成功。如果有如下提示则表示webhook配置没问题了。
image.png
现在可以进行修改gitlab仓库,观察是否一提交,argocd那边就可以响应了。

配置监控

集群监控Prometheus是通过Prometheus-operator部署的,所以直接创建两个serviceMonitor即可,如下:

  1. apiVersion: monitoring.coreos.com/v1
  2. kind: ServiceMonitor
  3. metadata:
  4. name: argocd-metrics
  5. namespace: monitoring
  6. labels:
  7. k8s-app: prometheus-operator
  8. spec:
  9. selector:
  10. matchLabels:
  11. app.kubernetes.io/name: argocd-metrics
  12. app.kubernetes.io/component: metrics
  13. endpoints:
  14. - port: metrics
  15. interval: 30s
  16. scheme: http
  17. namespaceSelector:
  18. matchNames:
  19. - argocd
  20. ---
  21. apiVersion: monitoring.coreos.com/v1
  22. kind: ServiceMonitor
  23. metadata:
  24. name: argocd-server-metrics
  25. namespace: monitoring
  26. labels:
  27. k8s-app: prometheus-operator
  28. spec:
  29. selector:
  30. matchLabels:
  31. app.kubernetes.io/name: argocd-server-metrics
  32. endpoints:
  33. - port: metrics
  34. interval: 30s
  35. scheme: http
  36. namespaceSelector:
  37. matchNames:
  38. - argocd

然后可以在Prometheus的UI界面查看是否监控成功,如下即为成功。
image.png

然后在Grafana上导入以下json内容,即可在面板查看信息:
image.png