У fluxcd есть
notification-controller, который собственно видит все, что происходит во flux. Рассмотрим пример получения алертов с ошибками в объектах - kustomization, helmrelease, gitrepository.Я в директории
flux-system конкретного кластера, создаю директорию alerts.Подключаю ее в основной kustomization. Внутри нам нужно
1. alert.yaml
apiVersion: notification.toolkit.fluxcd.io/v1beta3
kind: Alert
metadata:
name: fluxcd-alerts-errors
namespace: flux-system
spec:
providerRef:
name: fluxcd-mattermost
eventMetadata:
env: "test"
cluster: "<cluster_name>"
summary: "Flux reconciliation failed"
eventSeverity: error
eventSources:
- kind: Kustomization
name: "*"
- kind: HelmRelease
name: "*"
- kind: GitRepository
name: "*"
2. provider.yaml
apiVersion: notification.toolkit.fluxcd.io/v1beta3
kind: Provider
metadata:
name: fluxcd-mattermost
namespace: flux-system
spec:
type: slack
secretRef:
name: fluxcd-webhook
username: flux-alerts
Мы используем
slack, он совместим с маттермост API.3. secret.yaml
apiVersion: v1
kind: Secret
metadata:
name: fluxcd-webhook
namespace: flux-system
stringData:
address: "https://<domain>/hooks/<hook_id>"
4. kustomization.yaml
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
resources:
- secret.yaml
- provider.yaml
- alert.yaml
Теперь при ошибках в нашем GitOps мы будем получать алерты.
В маттермост у меня используется обычный входящий веб-хук.
#fluxcd