乔克
乔克
Published on 2024-11-15 / 44 Visits
0
0

Argocd使用优化

配置 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 命令进行配置:

apiVersion: v1
kind: Secret
metadata:
  name: argocd-secret
  namespace: argocd
type: Opaque
data:
...

stringData:
  # gitlab webhook secret
  webhook.gitlab.secret: coolops

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

# kubectl describe secret argocd-secret -n argocd
Name:         argocd-secret
Namespace:    argocd
Labels:       app.kubernetes.io/name=argocd-secret
              app.kubernetes.io/part-of=argocd
Annotations:  
Type:         Opaque

Data
====
admin.passwordMtime:    20 bytes
server.secretkey:       44 bytes
tls.crt:                1237 bytes
tls.key:                1679 bytes
webhook.gitlab.secret:  7 bytes
admin.password:         60 bytes

(2)在 gitlab 的代码仓库配置 webhook,如下:
图片.png

由于集群内部证书是无效证书,所有要把 Enabled SSL 去掉,如下:
图片.png

然后点击保存,点击测试,看是否链接成功。如果有如下提示则表示 webhook 配置没问题了。
图片.png

现在可以进行修改 gitlab 仓库,观察是否一提交,argocd 那边就可以响应了。

配置监控

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

apiVersion: monitoring.coreos.com/v1
kind: ServiceMonitor
metadata:
  name: argocd-metrics
  namespace: monitoring
  labels:
    k8s-app: prometheus-operator
spec:
  selector:
    matchLabels:
      app.kubernetes.io/name: argocd-metrics
      app.kubernetes.io/component: metrics
  endpoints:
  - port: metrics
    interval: 30s
    scheme: http
  namespaceSelector:
    matchNames:
    - argocd
---
apiVersion: monitoring.coreos.com/v1
kind: ServiceMonitor
metadata:
  name: argocd-server-metrics
  namespace: monitoring
  labels:
    k8s-app: prometheus-operator
spec:
  selector:
    matchLabels:
      app.kubernetes.io/name: argocd-server-metrics
  endpoints:
  - port: metrics
    interval: 30s
    scheme: http
  namespaceSelector:
    matchNames:
    - argocd

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

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


Comment