add notifications

This commit is contained in:
2025-06-02 17:45:40 -05:00
parent c748e82258
commit 4169ebc73c
2 changed files with 178 additions and 0 deletions

View File

@@ -27,6 +27,29 @@ spec:
metadataPolicy: None
property: client
---
apiVersion: external-secrets.io/v1
kind: ExternalSecret
metadata:
name: argocd-ntfy-secret
namespace: {{ .Release.Namespace }}
labels:
app.kubernetes.io/name: argocd-ntfy-secret
app.kubernetes.io/instance: {{ .Release.Name }}
app.kubernetes.io/part-of: {{ .Release.Name }}
spec:
secretStoreRef:
kind: ClusterSecretStore
name: vault
data:
- secretKey: token
remoteRef:
conversionStrategy: Default
decodingStrategy: None
key: /ntfy/user/cl01tl
metadataPolicy: None
property: token
# ---
# apiVersion: external-secrets.io/v1
# kind: ExternalSecret

View File

@@ -115,7 +115,162 @@ argo-cd:
enabled: true
serviceMonitor:
enabled: true
notifiers:
service.webhook.ntfy-5: |
url: http://ntfy.ntfy/
headers:
- name: Title
value: ArgoCD
- name: Authorization
value: Bearer $argocd-ntfy-secret:token
livenessProbe:
enabled: true
readinessProbe:
enabled: true
subscriptions:
- recipients:
- ntfy
triggers:
- app-created
- app-deleted
- app-deployed
- app-health-degraded
- app-sync-failed
- app-sync-running
- app-sync-status-unknown
- app-sync-succeeded
templates:
template.app-created: |
webhook:
ntfy:
method: POST
path: argocd
headers:
- name: Priority
value: 4
body: |
Application {{.app.metadata.name}} has been created.
template.app-deleted: |
webhook:
ntfy:
method: POST
path: argocd
headers:
- name: Priority
value: 4
body: |
Application {{.app.metadata.name}} has been deleted.
template.app-deployed: |
webhook:
ntfy:
method: POST
path: argocd
headers:
- name: Priority
value: 4
body: |
Application {{.app.metadata.name}} is now running new version of deployments manifests.
template.app-health-degraded: |
webhook:
ntfy:
method: POST
path: argocd
headers:
- name: Priority
value: 5
body: |
Application {{.app.metadata.name}} has degraded.
Application details: {{.context.argocdUrl}}/applications/{{.app.metadata.name}}.
template.app-sync-failed: |
webhook:
ntfy:
method: POST
path: argocd
headers:
- name: Priority
value: 5
body: |
The sync operation of application {{.app.metadata.name}} has failed at {{.app.status.operationState.finishedAt}} with the following error: {{.app.status.operationState.message}}
Sync operation details are available at: {{.context.argocdUrl}}/applications/{{.app.metadata.name}}?operation=true .
template.app-sync-running: |
webhook:
ntfy:
method: POST
path: argocd
headers:
- name: Priority
value: 3
body: |
The sync operation of application {{.app.metadata.name}} has started at {{.app.status.operationState.startedAt}}.
Sync operation details are available at: {{.context.argocdUrl}}/applications/{{.app.metadata.name}}?operation=true .
template.app-sync-status-unknown: |
webhook:
ntfy:
method: POST
path: argocd
headers:
- name: Priority
value: 4
body: |
{{if eq .serviceType "slack"}}:exclamation:{{end}} Application {{.app.metadata.name}} sync is 'Unknown'.
Application details: {{.context.argocdUrl}}/applications/{{.app.metadata.name}}.
{{if ne .serviceType "slack"}}
{{range $c := .app.status.conditions}}
* {{$c.message}}
{{end}}
{{end}}
template.app-sync-succeeded: |
webhook:
ntfy:
method: POST
path: argocd
headers:
- name: Priority
value: 3
body: |
Application {{.app.metadata.name}} has been successfully synced at {{.app.status.operationState.finishedAt}}.
Sync operation details are available at: {{.context.argocdUrl}}/applications/{{.app.metadata.name}}?operation=true .
triggers:
trigger.on-created: |
- description: Application {{.app.metadata.name}} has been created.
oncePer: app.metadata.name
send:
- app-created
when: "true"
trigger.on-deleted: |
- description: Application {{.app.metadata.name}} has been deleted.
oncePer: app.metadata.name
send:
- app-deleted
when: app.metadata.deletionTimestamp != nil
trigger.on-deployed: |
- description: Application is synced and healthy. Triggered once per commit.
oncePer: app.status.operationState.syncResult.revision
send:
- app-deployed
when: app.status.operationState.phase in ['Succeeded'] and app.status.health.status == 'Healthy'
trigger.on-health-degraded: |
- description: Application has degraded
send:
- app-health-degraded
when: app.status.health.status == 'Degraded'
trigger.on-sync-failed: |
- description: Application syncing has failed
send:
- app-sync-failed
when: app.status.operationState.phase in ['Error', 'Failed']
trigger.on-sync-running: |
- description: Application is being synced
send:
- app-sync-running
when: app.status.operationState.phase in ['Running']
trigger.on-sync-status-unknown: |
- description: Application status is 'Unknown'
send:
- app-sync-status-unknown
when: app.status.sync.status == 'Unknown'
trigger.on-sync-succeeded: |
- description: Application syncing has succeeded
send:
- app-sync-succeeded
when: app.status.operationState.phase in ['Succeeded']