Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/argoproj/notifications-engine
Affordable notifications for Kubernetes
https://github.com/argoproj/notifications-engine
hacktoberfest kubernetes ms-teams notifications slack
Last synced: 3 months ago
JSON representation
Affordable notifications for Kubernetes
- Host: GitHub
- URL: https://github.com/argoproj/notifications-engine
- Owner: argoproj
- License: apache-2.0
- Created: 2021-02-17T00:31:34.000Z (over 3 years ago)
- Default Branch: master
- Last Pushed: 2024-06-17T18:39:08.000Z (5 months ago)
- Last Synced: 2024-06-18T12:43:12.434Z (5 months ago)
- Topics: hacktoberfest, kubernetes, ms-teams, notifications, slack
- Language: Go
- Homepage:
- Size: 538 KB
- Stars: 261
- Watchers: 16
- Forks: 132
- Open Issues: 69
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
- awesome-argo - Notifications Engine - driven Golang library that provides notifications for cloud-native applications. (Ecosystem Projects)
README
# Notifications Engine
Notifications Engine is a configuration-driven Golang library that provides notifications for cloud-native applications.
The project provides integration with dozen of services like Slack, MS Teams, Mattermost, SMTP, Telegram, Netgenie, and the list keeps growing.
## Why Use It?
The first class notifications support is often eschewed feature in Kubernetes controllers. This is challenging because
notifications are very opinionated by nature. It is hard to predict what kind of events end-users want to be notified
about and especially how the notification should look like. Additionally, there are lots of notification services so it
is hard to decide which one to support first.The Notifications Engine is trying to tackle both challenges:* provides a flexible configuration-driven mechanism of triggers and templates and allows CRD controller
administrators to accommodate end-user requirements without making any code changes;
* out of the box integrates with dozen of notifications services (Slack, SMTP, Telegram etc) with many integrations yet to come;## Features
Using the engine CRD controller administrators can configure a set of [triggers](./docs/triggers.md) and [templates](./docs/templates.md)
and enable end-users to subscribe to the required triggers by just annotating custom resources they care about.The example below demonstrates the [Argo CD](https://github.com/argoproj/argo-cd) specific configuration:
```yaml
apiVersion: v1
kind: ConfigMap
metadata:
name: argocd-notifications-cm
data:
trigger.on-sync-status-unknown: |
- when: app.status.sync.status == 'Unknown'
send: [app-sync-status]template.app-sync-status: |
message: |
Application {{.app.metadata.name}} sync is {{.app.status.sync.status}}.
Application details: {{.context.argocdUrl}}/applications/{{.app.metadata.name}}.service.slack: |
token: $slack-token
---
apiVersion: v1
kind: Secret
metadata:
name: argocd-notifications-secret
stringData:
slack-token:
```The end-user can subscribe to the triggers they are interested in by adding `notifications.argoproj.io/subscribe//: ` annotation:
```yaml
apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
annotations:
notifications.argoproj.io/subscribe.on-sync-succeeded.slack: my-channel1;my-channel2
```If there is more than one trigger and multiple destinations you can configure the annotation as given below.
```yaml
notifications.argoproj.io/subscriptions: |
- trigger: [on-scaling-replica-set, on-rollout-updated, on-rollout-step-completed]
destinations:
- service: slack
recipients: [my-channel-1, my-channel-2]
- service: email
recipients: [recipient-1, recipient-2, recipient-3 ]
- trigger: [on-rollout-aborted, on-analysis-run-failed, on-analysis-run-error]
destinations:
- service: slack
recipients: [my-channel-21, my-channel-22]
```
## Getting StartedReady to add notifications to your project? Check out sample notifications for [cert-manager](./examples/certmanager/README.md)
## Users
* [Argo CD](https://github.com/argoproj/argo-cd) (implemented by [argocd-notifications](https://github.com/argoproj-labs/argocd-notifications))
* [Argo Rollouts](https://github.com/argoproj/argo-rollouts)# Additional Resources
* [Proposal document](https://docs.google.com/document/d/1nw0i7EAehNnjEkbpx-I3BVjfZvRgetUFUZby4iMUSWU/edit)
* [Argoproj notifications blog post](https://blog.argoproj.io/notifications-for-argo-bb7338231604)