From 24052d73aaf0aa8678dd41dd2e7a2493f4a53cde Mon Sep 17 00:00:00 2001 From: Alexander Matyushentsev Date: Sat, 19 Oct 2024 13:39:56 -0700 Subject: [PATCH] add redirect to argocd documentation Signed-off-by: Alexander Matyushentsev --- docs/argocd-notifications-cm.yaml | 95 ----- docs/argocd-notifications-secret.yaml | 10 - docs/assets/argo.png | Bin 71731 -> 0 bytes docs/assets/logo.png | Bin 27971 -> 0 bytes docs/assets/versions.css | 172 --------- docs/assets/versions.js | 43 --- docs/bots/opsgenie-bot.md | 12 - docs/bots/overview.md | 20 - docs/bots/slack-bot.md | 38 -- docs/bots/telegram-bot.md | 12 - docs/catalog.md | 525 -------------------------- docs/demo.gif | Bin 191027 -> 0 bytes docs/functions.md | 88 ----- docs/grafana-dashboard.json | 305 --------------- docs/index.md | 117 ------ docs/monitoring.md | 35 -- docs/requirements.txt | 4 - docs/services/alertmanager.md | 164 -------- docs/services/email.md | 63 ---- docs/services/github.md | 72 ---- docs/services/googlechat.md | 81 ---- docs/services/grafana.md | 45 --- docs/services/mattermost.md | 78 ---- docs/services/opsgenie.md | 28 -- docs/services/overview.md | 53 --- docs/services/pushover.md | 33 -- docs/services/rocketchat.md | 96 ----- docs/services/slack.md | 147 -------- docs/services/teams.md | 126 ------- docs/services/telegram.md | 35 -- docs/services/webhook.md | 177 --------- docs/subscriptions.md | 76 ---- docs/templates.md | 98 ----- docs/triggers.md | 130 ------- docs/troubleshooting-commands.md | 213 ----------- docs/troubleshooting-errors.md | 46 --- docs/troubleshooting.md | 84 ----- docs/upgrading/0.x-1.0.md | 225 ----------- mkdocs.yml | 50 +-- 39 files changed, 1 insertion(+), 3595 deletions(-) delete mode 100644 docs/argocd-notifications-cm.yaml delete mode 100644 docs/argocd-notifications-secret.yaml delete mode 100644 docs/assets/argo.png delete mode 100644 docs/assets/logo.png delete mode 100644 docs/assets/versions.css delete mode 100644 docs/assets/versions.js delete mode 100644 docs/bots/opsgenie-bot.md delete mode 100644 docs/bots/overview.md delete mode 100644 docs/bots/slack-bot.md delete mode 100644 docs/bots/telegram-bot.md delete mode 100644 docs/catalog.md delete mode 100644 docs/demo.gif delete mode 100644 docs/functions.md delete mode 100644 docs/grafana-dashboard.json delete mode 100644 docs/monitoring.md delete mode 100644 docs/requirements.txt delete mode 100644 docs/services/alertmanager.md delete mode 100644 docs/services/email.md delete mode 100644 docs/services/github.md delete mode 100644 docs/services/googlechat.md delete mode 100644 docs/services/grafana.md delete mode 100644 docs/services/mattermost.md delete mode 100644 docs/services/opsgenie.md delete mode 100644 docs/services/overview.md delete mode 100644 docs/services/pushover.md delete mode 100644 docs/services/rocketchat.md delete mode 100644 docs/services/slack.md delete mode 100644 docs/services/teams.md delete mode 100644 docs/services/telegram.md delete mode 100644 docs/services/webhook.md delete mode 100644 docs/subscriptions.md delete mode 100644 docs/templates.md delete mode 100644 docs/triggers.md delete mode 100644 docs/troubleshooting-commands.md delete mode 100644 docs/troubleshooting-errors.md delete mode 100644 docs/troubleshooting.md delete mode 100644 docs/upgrading/0.x-1.0.md diff --git a/docs/argocd-notifications-cm.yaml b/docs/argocd-notifications-cm.yaml deleted file mode 100644 index 5c6b95a4..00000000 --- a/docs/argocd-notifications-cm.yaml +++ /dev/null @@ -1,95 +0,0 @@ -apiVersion: v1 -kind: ConfigMap -metadata: - name: argocd-notifications-cm -data: - # Triggers define the condition when the notification should be sent and list of templates required to generate the message - # Recipients can subscribe to the trigger and specify the required message template and destination notification service. - trigger.on-sync-status-unknown: | - - when: app.status.sync.status == 'Unknown' - send: [my-custom-template] - - # Optional 'oncePer' property ensure that notification is sent only once per specified field value - # E.g. following is triggered once per sync revision - trigger.on-deployed: | - - when: app.status.operationState.phase in ['Succeeded'] and app.status.health.status == 'Healthy' - oncePer: app.status.sync.revision - send: [app-sync-succeeded] - - # Templates are used to generate the notification template message - template.my-custom-template: | - message: | - Application details: {{.context.argocdUrl}}/applications/{{.app.metadata.name}}. - - # Templates might have notification service specific fields. E.g. slack message might include annotations - template.my-custom-template-slack-template: | - message: | - Application {{.app.metadata.name}} sync is {{.app.status.sync.status}}. - Application details: {{.context.argocdUrl}}/applications/{{.app.metadata.name}}. - email: - subject: Application {{.app.metadata.name}} sync status is {{.app.status.sync.status}} - slack: - attachments: | - [{ - "title": "{{.app.metadata.name}}", - "title_link": "{{.context.argocdUrl}}/applications/{{.app.metadata.name}}", - "color": "#18be52" - }] - - # Holds list of triggers that are used by default if trigger is not specified explicitly in the subscription - defaultTriggers: | - - on-sync-status-unknown - - # Notification services are used to deliver message. - # Service definition might reference values from argocd-notifications-secret Secret using $my-key format - # Service format key is: service.. - # Slack - service.slack: | - token: $slack-token - username: # optional username - icon: # optional icon for the message (supports both emoij and url notation) - - # Slack based notifier with name mattermost - service.slack.mattermost: | - apiURL: https://my-mattermost-url.com/api - token: $slack-token - username: # optional username - icon: # optional icon for the message (supports both emoij and url notation) - - # Email - service.email: | - host: smtp.gmail.com - port: 587 - from: @gmail.com - username: $email-username - password: $email-password - - # Opsgenie - service.opsgenie: | - apiUrl: api.opsgenie.com - apiKeys: - $opsgenie-team-id: $opsgenie-team-api-key - ... - - # Telegram - service.telegram: | - token: $telegram-token - - # Context holds list of variables that can be referenced in templates - context: | - argocdUrl: https://cd.apps.argoproj.io/ - - # Contains centrally managed global application subscriptions - subscriptions: | - # subscription for on-sync-status-unknown trigger notifications - - recipients: - - slack:test2 - - email:test@gmail.com - triggers: - - on-sync-status-unknown - # subscription restricted to applications with matching labels only - - recipients: - - slack:test3 - selector: test=true - triggers: - - on-sync-status-unknown \ No newline at end of file diff --git a/docs/argocd-notifications-secret.yaml b/docs/argocd-notifications-secret.yaml deleted file mode 100644 index 72ed67c5..00000000 --- a/docs/argocd-notifications-secret.yaml +++ /dev/null @@ -1,10 +0,0 @@ -apiVersion: v1 -kind: Secret -metadata: - name: argocd-notifications-secret -stringData: - slack-token: - email-username: @gmail.com - email-password: - -type: Opaque diff --git a/docs/assets/argo.png b/docs/assets/argo.png deleted file mode 100644 index ff6c3a1e69686d2f946247d72d8d091b3a888e42..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 71731 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 diff --git a/docs/assets/versions.css b/docs/assets/versions.css deleted file mode 100644 index 03ae8a0c..00000000 --- a/docs/assets/versions.css +++ /dev/null @@ -1,172 +0,0 @@ -.md-header__title { - display: flex; -} - -.dropdown-caret { - display: inline-block !important; - position: absolute; - right: 4px; -} - -.fa .fa-caret-down { - display: none !important; -} - -.rst-other-versions { - text-align: right; -} - -.rst-other-versions > dl, .rst-other-versions dt, .rst-other-versions small { - display: none; -} - -.rst-other-versions > dl:first-child { - display: flex !important; - flex-direction: column; - line-height: 0px !important; -} - -.rst-versions.shift-up .rst-other-versions { - display: flex !important; -} - -.rst-versions .rst-other-versions { - display: none; -} - -/* Version Warning */ -div[data-md-component=announce] { - background-color: rgba(255,145,0,.1); -} -div[data-md-component=announce]>div#announce-msg{ - color: var(--md-admonition-fg-color); - font-size: .8rem; - text-align: center; - margin: 15px; -} -div[data-md-component=announce]>div#announce-msg>a{ - color: var(--md-typeset-a-color); - text-decoration: underline; -} - -/* from https://assets.readthedocs.org/static/css/badge_only.css, -most styles have to be overriden here */ -.rst-versions{ - position: relative !important; - bottom: 0; - left: 0; - width: 100px !important; - background: hsla(173, 100%, 24%, 1) !important; - font-family: inherit !important; - z-index: 0 !important; -} -.rst-versions a{ - color:#2980B9; - text-decoration:none -} -.rst-versions .rst-badge-small{ - display:none -} -.rst-versions .rst-current-version{ - padding:12px; - background: hsla(173, 100%, 24%, 1) !important; - display:block; - text-align:right; - font-size:90%; - cursor:pointer; - color: white !important; - *zoom:1 -} -.rst-versions .rst-current-version:before,.rst-versions .rst-current-version:after{ - display:table;content:"" -} -.rst-versions .rst-current-version:after{ - clear:both -} -.rst-versions .rst-current-version .fa{ - color:#fcfcfc -} -.rst-versions .rst-current-version .fa-caret-down{ - display: none; -} -.rst-versions.shift-up .rst-other-versions{ - display:block -} -.rst-versions .rst-other-versions{ - font-size:90%; - padding:12px; - color:gray; - display:none -} -.rst-versions .rst-other-versions hr{ - display: none !important; - height: 0px !important; - border: 0px; - margin: 0px !important; - padding: 0px; - border-top: none !important; -} -.rst-versions .rst-other-versions dd{ - display:inline-block; - margin:0 -} -.rst-versions .rst-other-versions dd a{ - display:inline-block; - padding: 1em 0em !important; - color:#fcfcfc; - font-size: .6rem !important; - white-space: nowrap; - text-overflow: ellipsis; - overflow: hidden; - width: 80px; -} -.rst-versions .rst-other-versions dd a:hover{ - font-size: .7rem !important; - font-weight: bold; -} -.rst-versions.rst-badge{ - display: block !important; - width: 100px !important; - bottom: 0px !important; - right: 0px !important; - left:auto; - border:none; - text-align: center !important; - line-height: 0; -} -.rst-versions.rst-badge .icon-book{ - display: none; -} -.rst-versions.rst-badge .fa-book{ - display: none !important; -} -.rst-versions.rst-badge.shift-up .rst-current-version{ - text-align: left !important; -} -.rst-versions.rst-badge.shift-up .rst-current-version .fa-book{ - display: none !important; -} -.rst-versions.rst-badge.shift-up .rst-current-version .icon-book{ - display: none !important; -} -.rst-versions.rst-badge .rst-current-version{ - width: 70px !important; - height: 2.4rem !important; - line-height:2.4rem !important; - padding: 0px 5px !important; - display: inline-block !important; - font-size: .6rem !important; - overflow: hidden !important; - text-overflow: ellipsis !important; - white-space: nowrap !important; - text-align: left !important; -} -@media screen and (max-width: 768px){ - .rst-versions{ - width:85%; - display:none - } - .rst-versions.shift{ - display:block - } -} diff --git a/docs/assets/versions.js b/docs/assets/versions.js deleted file mode 100644 index 255307bd..00000000 --- a/docs/assets/versions.js +++ /dev/null @@ -1,43 +0,0 @@ -setTimeout(function() { - const callbackName = 'callback_' + new Date().getTime(); - window[callbackName] = function (response) { - const div = document.createElement('div'); - div.innerHTML = response.html; - document.querySelector(".md-header__inner > .md-header__title").appendChild(div); - const container = div.querySelector('.rst-versions'); - var caret = document.createElement('div'); - caret.innerHTML = "" - caret.classList.add('dropdown-caret') - div.querySelector('.rst-current-version').appendChild(caret); - div.querySelector('.rst-current-version').addEventListener('click', function() { - const classes = container.className.split(' '); - const index = classes.indexOf('shift-up'); - if (index === -1) { - classes.push('shift-up'); - } else { - classes.splice(index, 1); - } - container.className = classes.join(' '); - }); - } - - var CSSLink = document.createElement('link'); - CSSLink.rel='stylesheet'; - CSSLink.href = '/assets/versions.css'; - document.getElementsByTagName('head')[0].appendChild(CSSLink); - - var script = document.createElement('script'); - script.src = 'https://argocd-notifications.readthedocs.io/_/api/v2/footer_html/?'+ - 'callback=' + callbackName + '&project=argocd-notifications&page=&theme=mkdocs&format=jsonp&docroot=docs&source_suffix=.md&version=' + (window['READTHEDOCS_DATA'] || { version: 'latest' }).version; - document.getElementsByTagName('head')[0].appendChild(script); - }, 0); - - // VERSION WARNINGS -window.addEventListener("DOMContentLoaded", function() { - if ((window['READTHEDOCS_DATA']).version === "latest") { - document.querySelector("div[data-md-component=announce]").innerHTML = "" - } - else if ((window['READTHEDOCS_DATA']).version !== "stable") { - document.querySelector("div[data-md-component=announce]").innerHTML = "
You are viewing the docs for a previous version of Argo CD, click here to go to the latest stable version.
" - } - }); diff --git a/docs/bots/opsgenie-bot.md b/docs/bots/opsgenie-bot.md deleted file mode 100644 index 6ae36c84..00000000 --- a/docs/bots/opsgenie-bot.md +++ /dev/null @@ -1,12 +0,0 @@ - - -!!! important "This page has moved" - This page has moved to [https://argo-cd.readthedocs.io/en/latest/operator-manual/notifications/](https://argo-cd.readthedocs.io/en/latest/operator-manual/notifications/). Redirecting to the new page. - -# Opsgenie bot - -!!! note "Do you need Opsgenie bot? Please consider contributing or create [feature request](https://github.com/argoproj-labs/argocd-notifications/issues/new)!" - - -
- \ No newline at end of file diff --git a/docs/bots/overview.md b/docs/bots/overview.md deleted file mode 100644 index 45eb4898..00000000 --- a/docs/bots/overview.md +++ /dev/null @@ -1,20 +0,0 @@ - - -!!! important "This page has moved" - This page has moved to [https://argo-cd.readthedocs.io/en/latest/operator-manual/notifications/](https://argo-cd.readthedocs.io/en/latest/operator-manual/notifications/). Redirecting to the new page. - -The optional bot component simplifies managing subscriptions. The end users can use bot commands to manage subscriptions -even if they don't have access to the Kubernetes API and cannot modify annotations. - -The bot is not installed by default. Use the `install-bot.yaml` to intall it: - -``` -kubectl apply -n argocd -f https://raw.githubusercontent.com/argoproj-labs/argocd-notifications/stable/manifests/install-bot.yaml -``` - -!!! note - You can edit deployment and change some arguments such as `--port`, `--namespace` or `slack-path`flag in `argocd-notifications-controller` deployment. - -* [Slack bot](./slack-bot.md) -* [Opsgenie bot](./opsgenie-bot.md) -* [Telegram bot](./telegram-bot.md) \ No newline at end of file diff --git a/docs/bots/slack-bot.md b/docs/bots/slack-bot.md deleted file mode 100644 index c0ad127d..00000000 --- a/docs/bots/slack-bot.md +++ /dev/null @@ -1,38 +0,0 @@ - - -!!! important "This page has moved" - This page has moved to [https://argo-cd.readthedocs.io/en/latest/operator-manual/notifications/](https://argo-cd.readthedocs.io/en/latest/operator-manual/notifications/). Redirecting to the new page. - -# Slack bot - -The Slack bot leverages [slash commands](https://api.slack.com/interactivity/slash-commands). The bot allows slack users -to view existing channel subscriptions and subscribe or unsubscribe channels. - -1. Make sure bot component is [installed](./overview.md). -1. Configure slack [integration](../services/slack.md). -1. In the slack application settings page navigate to the 'Slash Commands' section and click 'Create New Command' button. -1. Fill in new slack command details -![image](https://user-images.githubusercontent.com/426437/75645798-2e022480-5bfc-11ea-8682-5ce362bdcc9a.png) -1. In the slack application settings page navigate to the 'Basic Information' section and copy 'Signing Secret' from the 'App Credentials' section. -1. Add `signingSecret` to the slack configuration. - -```yaml -apiVersion: v1 -kind: ConfigMap -metadata: - name: argocd-notifications-cm -data: - service.slack: - token: $slack-token - signingSecret: $slack-signing-secret -``` - -## Commands - -The bot supports following commands: - -* `list-subscriptions` - list channel subscriptions -* `subscribe ` - subscribes channel to the app notifications -* `subscribe proj: ` - subscribes channel to the app project notifications -* `unsubscribe ` - unsubscribes channel from the app notifications -* `unsubscribe proj: ` - unsubscribes channel from the app project notifications \ No newline at end of file diff --git a/docs/bots/telegram-bot.md b/docs/bots/telegram-bot.md deleted file mode 100644 index 832aa1cc..00000000 --- a/docs/bots/telegram-bot.md +++ /dev/null @@ -1,12 +0,0 @@ - - -!!! important "This page has moved" - This page has moved to [https://argo-cd.readthedocs.io/en/latest/operator-manual/notifications/](https://argo-cd.readthedocs.io/en/latest/operator-manual/notifications/). Redirecting to the new page. - -# Telegram bot - -!!! note "Do you need Telegram bot? Please consider contributing or create [feature request](https://github.com/argoproj-labs/argocd-notifications/issues/new)!" - - -
- \ No newline at end of file diff --git a/docs/catalog.md b/docs/catalog.md deleted file mode 100644 index 2a663224..00000000 --- a/docs/catalog.md +++ /dev/null @@ -1,525 +0,0 @@ -# Triggers and Templates Catalog -## Triggers -| NAME | DESCRIPTION | TEMPLATE | -|------------------------|---------------------------------------------------------------|-----------------------------------------------------| -| on-created | Application is created. | [app-created](#app-created) | -| on-deleted | Application is deleted. | [app-deleted](#app-deleted) | -| on-deployed | Application is synced and healthy. Triggered once per commit. | [app-deployed](#app-deployed) | -| on-health-degraded | Application has degraded | [app-health-degraded](#app-health-degraded) | -| on-sync-failed | Application syncing has failed | [app-sync-failed](#app-sync-failed) | -| on-sync-running | Application is being synced | [app-sync-running](#app-sync-running) | -| on-sync-status-unknown | Application status is 'Unknown' | [app-sync-status-unknown](#app-sync-status-unknown) | -| on-sync-succeeded | Application syncing has succeeded | [app-sync-succeeded](#app-sync-succeeded) | - -## Templates -### app-created -**definition**: -```yaml -email: - subject: Application {{.app.metadata.name}} has been created. -message: Application {{.app.metadata.name}} has been created. -teams: - title: Application {{.app.metadata.name}} has been created. - -``` -### app-deleted -**definition**: -```yaml -email: - subject: Application {{.app.metadata.name}} has been deleted. -message: Application {{.app.metadata.name}} has been deleted. -teams: - title: Application {{.app.metadata.name}} has been deleted. - -``` -### app-deployed -**definition**: -```yaml -email: - subject: New version of an application {{.app.metadata.name}} is up and running. -message: | - {{if eq .serviceType "slack"}}:white_check_mark:{{end}} Application {{.app.metadata.name}} is now running new version of deployments manifests. -slack: - attachments: | - [{ - "title": "{{ .app.metadata.name}}", - "title_link":"{{.context.argocdUrl}}/applications/{{.app.metadata.name}}", - "color": "#18be52", - "fields": [ - { - "title": "Sync Status", - "value": "{{.app.status.sync.status}}", - "short": true - }, - { - "title": "Repository", - "value": "{{.app.spec.source.repoURL}}", - "short": true - }, - { - "title": "Revision", - "value": "{{.app.status.sync.revision}}", - "short": true - } - {{range $index, $c := .app.status.conditions}} - {{if not $index}},{{end}} - {{if $index}},{{end}} - { - "title": "{{$c.type}}", - "value": "{{$c.message}}", - "short": true - } - {{end}} - ] - }] - groupingKey: "" - notifyBroadcast: false -teams: - facts: | - [{ - "name": "Sync Status", - "value": "{{.app.status.sync.status}}" - }, - { - "name": "Repository", - "value": "{{.app.spec.source.repoURL}}" - }, - { - "name": "Revision", - "value": "{{.app.status.sync.revision}}" - } - {{range $index, $c := .app.status.conditions}} - {{if not $index}},{{end}} - {{if $index}},{{end}} - { - "name": "{{$c.type}}", - "value": "{{$c.message}}" - } - {{end}} - ] - potentialAction: |- - [{ - "@type":"OpenUri", - "name":"Operation Application", - "targets":[{ - "os":"default", - "uri":"{{.context.argocdUrl}}/applications/{{.app.metadata.name}}" - }] - }, - { - "@type":"OpenUri", - "name":"Open Repository", - "targets":[{ - "os":"default", - "uri":"{{.app.spec.source.repoURL | call .repo.RepoURLToHTTPS}}" - }] - }] - themeColor: '#000080' - title: New version of an application {{.app.metadata.name}} is up and running. - -``` -### app-health-degraded -**definition**: -```yaml -email: - subject: Application {{.app.metadata.name}} has degraded. -message: | - {{if eq .serviceType "slack"}}:exclamation:{{end}} Application {{.app.metadata.name}} has degraded. - Application details: {{.context.argocdUrl}}/applications/{{.app.metadata.name}}. -slack: - attachments: | - [{ - "title": "{{ .app.metadata.name}}", - "title_link": "{{.context.argocdUrl}}/applications/{{.app.metadata.name}}", - "color": "#f4c030", - "fields": [ - { - "title": "Health Status", - "value": "{{.app.status.health.status}}", - "short": true - }, - { - "title": "Repository", - "value": "{{.app.spec.source.repoURL}}", - "short": true - } - {{range $index, $c := .app.status.conditions}} - {{if not $index}},{{end}} - {{if $index}},{{end}} - { - "title": "{{$c.type}}", - "value": "{{$c.message}}", - "short": true - } - {{end}} - ] - }] - groupingKey: "" - notifyBroadcast: false -teams: - facts: | - [{ - "name": "Health Status", - "value": "{{.app.status.health.status}}" - }, - { - "name": "Repository", - "value": "{{.app.spec.source.repoURL}}" - } - {{range $index, $c := .app.status.conditions}} - {{if not $index}},{{end}} - {{if $index}},{{end}} - { - "name": "{{$c.type}}", - "value": "{{$c.message}}" - } - {{end}} - ] - potentialAction: | - [{ - "@type":"OpenUri", - "name":"Open Application", - "targets":[{ - "os":"default", - "uri":"{{.context.argocdUrl}}/applications/{{.app.metadata.name}}" - }] - }, - { - "@type":"OpenUri", - "name":"Open Repository", - "targets":[{ - "os":"default", - "uri":"{{.app.spec.source.repoURL | call .repo.RepoURLToHTTPS}}" - }] - }] - themeColor: '#FF0000' - title: Application {{.app.metadata.name}} has degraded. - -``` -### app-sync-failed -**definition**: -```yaml -email: - subject: Failed to sync application {{.app.metadata.name}}. -message: | - {{if eq .serviceType "slack"}}:exclamation:{{end}} 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 . -slack: - attachments: | - [{ - "title": "{{ .app.metadata.name}}", - "title_link":"{{.context.argocdUrl}}/applications/{{.app.metadata.name}}", - "color": "#E96D76", - "fields": [ - { - "title": "Sync Status", - "value": "{{.app.status.sync.status}}", - "short": true - }, - { - "title": "Repository", - "value": "{{.app.spec.source.repoURL}}", - "short": true - } - {{range $index, $c := .app.status.conditions}} - {{if not $index}},{{end}} - {{if $index}},{{end}} - { - "title": "{{$c.type}}", - "value": "{{$c.message}}", - "short": true - } - {{end}} - ] - }] - groupingKey: "" - notifyBroadcast: false -teams: - facts: | - [{ - "name": "Sync Status", - "value": "{{.app.status.sync.status}}" - }, - { - "name": "Failed at", - "value": "{{.app.status.operationState.finishedAt}}" - }, - { - "name": "Repository", - "value": "{{.app.spec.source.repoURL}}" - } - {{range $index, $c := .app.status.conditions}} - {{if not $index}},{{end}} - {{if $index}},{{end}} - { - "name": "{{$c.type}}", - "value": "{{$c.message}}" - } - {{end}} - ] - potentialAction: |- - [{ - "@type":"OpenUri", - "name":"Open Operation", - "targets":[{ - "os":"default", - "uri":"{{.context.argocdUrl}}/applications/{{.app.metadata.name}}?operation=true" - }] - }, - { - "@type":"OpenUri", - "name":"Open Repository", - "targets":[{ - "os":"default", - "uri":"{{.app.spec.source.repoURL | call .repo.RepoURLToHTTPS}}" - }] - }] - themeColor: '#FF0000' - title: Failed to sync application {{.app.metadata.name}}. - -``` -### app-sync-running -**definition**: -```yaml -email: - subject: Start syncing application {{.app.metadata.name}}. -message: | - 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 . -slack: - attachments: | - [{ - "title": "{{ .app.metadata.name}}", - "title_link":"{{.context.argocdUrl}}/applications/{{.app.metadata.name}}", - "color": "#0DADEA", - "fields": [ - { - "title": "Sync Status", - "value": "{{.app.status.sync.status}}", - "short": true - }, - { - "title": "Repository", - "value": "{{.app.spec.source.repoURL}}", - "short": true - } - {{range $index, $c := .app.status.conditions}} - {{if not $index}},{{end}} - {{if $index}},{{end}} - { - "title": "{{$c.type}}", - "value": "{{$c.message}}", - "short": true - } - {{end}} - ] - }] - groupingKey: "" - notifyBroadcast: false -teams: - facts: | - [{ - "name": "Sync Status", - "value": "{{.app.status.sync.status}}" - }, - { - "name": "Started at", - "value": "{{.app.status.operationState.startedAt}}" - }, - { - "name": "Repository", - "value": "{{.app.spec.source.repoURL}}" - } - {{range $index, $c := .app.status.conditions}} - {{if not $index}},{{end}} - {{if $index}},{{end}} - { - "name": "{{$c.type}}", - "value": "{{$c.message}}" - } - {{end}} - ] - potentialAction: |- - [{ - "@type":"OpenUri", - "name":"Open Operation", - "targets":[{ - "os":"default", - "uri":"{{.context.argocdUrl}}/applications/{{.app.metadata.name}}?operation=true" - }] - }, - { - "@type":"OpenUri", - "name":"Open Repository", - "targets":[{ - "os":"default", - "uri":"{{.app.spec.source.repoURL | call .repo.RepoURLToHTTPS}}" - }] - }] - title: Start syncing application {{.app.metadata.name}}. - -``` -### app-sync-status-unknown -**definition**: -```yaml -email: - subject: Application {{.app.metadata.name}} sync status is 'Unknown' -message: | - {{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}} -slack: - attachments: | - [{ - "title": "{{ .app.metadata.name}}", - "title_link":"{{.context.argocdUrl}}/applications/{{.app.metadata.name}}", - "color": "#E96D76", - "fields": [ - { - "title": "Sync Status", - "value": "{{.app.status.sync.status}}", - "short": true - }, - { - "title": "Repository", - "value": "{{.app.spec.source.repoURL}}", - "short": true - } - {{range $index, $c := .app.status.conditions}} - {{if not $index}},{{end}} - {{if $index}},{{end}} - { - "title": "{{$c.type}}", - "value": "{{$c.message}}", - "short": true - } - {{end}} - ] - }] - groupingKey: "" - notifyBroadcast: false -teams: - facts: | - [{ - "name": "Sync Status", - "value": "{{.app.status.sync.status}}" - }, - { - "name": "Repository", - "value": "{{.app.spec.source.repoURL}}" - } - {{range $index, $c := .app.status.conditions}} - {{if not $index}},{{end}} - {{if $index}},{{end}} - { - "name": "{{$c.type}}", - "value": "{{$c.message}}" - } - {{end}} - ] - potentialAction: |- - [{ - "@type":"OpenUri", - "name":"Open Application", - "targets":[{ - "os":"default", - "uri":"{{.context.argocdUrl}}/applications/{{.app.metadata.name}}" - }] - }, - { - "@type":"OpenUri", - "name":"Open Repository", - "targets":[{ - "os":"default", - "uri":"{{.app.spec.source.repoURL | call .repo.RepoURLToHTTPS}}" - }] - }] - title: Application {{.app.metadata.name}} sync status is 'Unknown' - -``` -### app-sync-succeeded -**definition**: -```yaml -email: - subject: Application {{.app.metadata.name}} has been successfully synced. -message: | - {{if eq .serviceType "slack"}}:white_check_mark:{{end}} 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 . -slack: - attachments: | - [{ - "title": "{{ .app.metadata.name}}", - "title_link":"{{.context.argocdUrl}}/applications/{{.app.metadata.name}}", - "color": "#18be52", - "fields": [ - { - "title": "Sync Status", - "value": "{{.app.status.sync.status}}", - "short": true - }, - { - "title": "Repository", - "value": "{{.app.spec.source.repoURL}}", - "short": true - } - {{range $index, $c := .app.status.conditions}} - {{if not $index}},{{end}} - {{if $index}},{{end}} - { - "title": "{{$c.type}}", - "value": "{{$c.message}}", - "short": true - } - {{end}} - ] - }] - groupingKey: "" - notifyBroadcast: false -teams: - facts: | - [{ - "name": "Sync Status", - "value": "{{.app.status.sync.status}}" - }, - { - "name": "Synced at", - "value": "{{.app.status.operationState.finishedAt}}" - }, - { - "name": "Repository", - "value": "{{.app.spec.source.repoURL}}" - } - {{range $index, $c := .app.status.conditions}} - {{if not $index}},{{end}} - {{if $index}},{{end}} - { - "name": "{{$c.type}}", - "value": "{{$c.message}}" - } - {{end}} - ] - potentialAction: |- - [{ - "@type":"OpenUri", - "name":"Operation Details", - "targets":[{ - "os":"default", - "uri":"{{.context.argocdUrl}}/applications/{{.app.metadata.name}}?operation=true" - }] - }, - { - "@type":"OpenUri", - "name":"Open Repository", - "targets":[{ - "os":"default", - "uri":"{{.app.spec.source.repoURL | call .repo.RepoURLToHTTPS}}" - }] - }] - themeColor: '#000080' - title: Application {{.app.metadata.name}} has been successfully synced - -``` diff --git a/docs/demo.gif b/docs/demo.gif deleted file mode 100644 index 345b8eb49d09c5df27a2bc8540523abd66afa4ce..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 191027 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 diff --git a/docs/functions.md b/docs/functions.md deleted file mode 100644 index 468a33d8..00000000 --- a/docs/functions.md +++ /dev/null @@ -1,88 +0,0 @@ - - -!!! important "This page has moved" - This page has moved to [https://argo-cd.readthedocs.io/en/latest/operator-manual/notifications/functions//](https://argo-cd.readthedocs.io/en/latest/operator-manual/notifications/functions//). Redirecting to the new page. - -### **time** - -Time related functions. - -
-**`time.Now() Time`** - -Executes function built-in Golang [time.Now](https://golang.org/pkg/time/#Now) function. Returns an instance of -Golang [Time](https://golang.org/pkg/time/#Time). - -
-**`time.Parse(val string) Time`** - -Parses specified string using RFC3339 layout. Returns an instance of Golang [Time](https://golang.org/pkg/time/#Time). - -### **strings** - -String related functions. - -
-**`strings.ReplaceAll() string`** - -Executes function built-in Golang [strings.ReplaceAll](https://pkg.go.dev/strings#ReplaceAll) function. - -
-**`strings.ToUpper() string`** - -Executes function built-in Golang [strings.ToUpper](https://pkg.go.dev/strings#ToUpper) function. - -
-**`strings.ToLower() string`** - -Executes function built-in Golang [strings.ToLower](https://pkg.go.dev/strings#ToLower) function. - -### **sync** - -
-**`sync.GetInfoItem(app map, name string) string`** - -Returns the `info` item value by given name stored in the Argo CD App sync operation. - -### **repo** - -Functions that provide additional information about Application source repository. -
-**`repo.RepoURLToHTTPS(url string) string`** - -Transforms given GIT URL into HTTPs format. - -
-**`repo.FullNameByRepoURL(url string) string`** - -Returns repository URL full name `(/)`. Currently supports only Github, Gitlab and Bitbucket. - -
-**`repo.GetCommitMetadata(sha string) CommitMetadata`** - -Returns commit metadata. The commit must belong to the application source repository. `CommitMetadata` fields: - -* `Message string` commit message -* `Author string` - commit author -* `Date time.Time` - commit creation date -* `Tags []string` - Associated tags - -
-**`repo.GetAppDetails() AppDetail`** - -Returns application details. `AppDetail` fields: - -* `Type string` - AppDetail type -* `Helm HelmAppSpec` - Helm details - * Fields : - * `Name string` - * `ValueFiles []string` - * `Parameters []*v1alpha1.HelmParameter` - * `Values string` - * `FileParameters []*v1alpha1.HelmFileParameter` - * Methods : - * `GetParameterValueByName(Name string)` Retrieve value by name in Parameters field - * `GetFileParameterPathByName(Name string)` Retrieve path by name in FileParameters field -* `Ksonnet *apiclient.KsonnetAppSpec` - Ksonnet details -* `Kustomize *apiclient.KustomizeAppSpec` - Kustomize details -* `Directory *apiclient.DirectoryAppSpec` - Directory details diff --git a/docs/grafana-dashboard.json b/docs/grafana-dashboard.json deleted file mode 100644 index 5d04f911..00000000 --- a/docs/grafana-dashboard.json +++ /dev/null @@ -1,305 +0,0 @@ -{ - "annotations": { - "list": [ - { - "builtIn": 1, - "datasource": "-- Grafana --", - "enable": true, - "hide": true, - "iconColor": "rgba(0, 211, 255, 1)", - "name": "Annotations & Alerts", - "type": "dashboard" - } - ] - }, - "editable": true, - "gnetId": null, - "graphTooltip": 0, - "id": 4, - "iteration": 1589141097815, - "links": [], - "panels": [ - { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "$datasource", - "fill": 1, - "fillGradient": 0, - "gridPos": { - "h": 8, - "w": 12, - "x": 0, - "y": 0 - }, - "hiddenSeries": false, - "id": 4, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "nullPointMode": "null", - "options": { - "dataLinks": [] - }, - "percentage": false, - "pointradius": 2, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "sum(increase(argocd_notifications_trigger_eval_total[$interval])) by (notifier)", - "refId": "A" - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Trigger Evaluations", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } - }, - { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "$datasource", - "fill": 1, - "fillGradient": 0, - "gridPos": { - "h": 8, - "w": 12, - "x": 12, - "y": 0 - }, - "hiddenSeries": false, - "id": 2, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "nullPointMode": "null", - "options": { - "dataLinks": [] - }, - "percentage": false, - "pointradius": 2, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "sum(increase(argocd_notifications_deliveries_total[$interval])) by (notifier)", - "refId": "A" - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Notification deliveries", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } - } - ], - "schemaVersion": 21, - "style": "dark", - "tags": [], - "templating": { - "list": [ - { - "current": { - "text": "Prometheus", - "value": "Prometheus" - }, - "hide": 0, - "includeAll": false, - "label": null, - "multi": false, - "name": "datasource", - "options": [], - "query": "prometheus", - "refresh": 1, - "regex": "", - "skipUrlSync": false, - "type": "datasource" - }, - { - "auto": true, - "auto_count": 30, - "auto_min": "10s", - "current": { - "selected": false, - "text": "1m", - "value": "1m" - }, - "hide": 0, - "label": null, - "name": "interval", - "options": [ - { - "selected": false, - "text": "auto", - "value": "$__auto_interval_interval" - }, - { - "selected": true, - "text": "1m", - "value": "1m" - }, - { - "selected": false, - "text": "5m", - "value": "5m" - }, - { - "selected": false, - "text": "10m", - "value": "10m" - }, - { - "selected": false, - "text": "30m", - "value": "30m" - }, - { - "selected": false, - "text": "1h", - "value": "1h" - }, - { - "selected": false, - "text": "2h", - "value": "2h" - }, - { - "selected": false, - "text": "4h", - "value": "4h" - }, - { - "selected": false, - "text": "8h", - "value": "8h" - } - ], - "query": "1m,5m,10m,30m,1h,2h,4h,8h", - "refresh": 2, - "skipUrlSync": false, - "type": "interval" - } - ] - }, - "time": { - "from": "now-15m", - "to": "now" - }, - "timepicker": { - "refresh_intervals": [ - "5s", - "10s", - "30s", - "1m", - "5m", - "15m", - "30m", - "1h", - "2h", - "1d" - ] - }, - "timezone": "", - "title": "Argo CD Notifications", - "uid": "3qXvXigMz", - "version": 1 -} \ No newline at end of file diff --git a/docs/index.md b/docs/index.md index 7e9ca233..10e15d33 100644 --- a/docs/index.md +++ b/docs/index.md @@ -1,118 +1 @@ - -!!! important "This page has moved" - Warning. Argo notifications has been merged with the Argo CD project. You do not need to install it separately anymore. It is now part of the main Argo CD installation See https://argo-cd.readthedocs.io/en/stable/operator-manual/notifications/ for latest docs. - - -# Overview - -Argo CD Notifications continuously monitors Argo CD applications and provides a flexible way to notify -users about important changes in the application state. Using a flexible mechanism of -[triggers](./triggers.md) and [templates](./templates.md) you can configure when the notification should be sent as -well as notification content. Argo CD Notifications includes the [catalog](./catalog.md) of useful triggers and templates. -So you can just use them instead of reinventing new ones. - -## Getting Started - -* Install Argo CD Notifications - -``` -kubectl apply -n argocd -f https://raw.githubusercontent.com/argoproj-labs/argocd-notifications/v1.1.0/manifests/install.yaml -``` - -* Install Triggers and Templates from the catalog - -``` -kubectl apply -n argocd -f https://raw.githubusercontent.com/argoproj-labs/argocd-notifications/v1.1.0/catalog/install.yaml -``` - -* Add Email username and password token to `argocd-notifications-secret` secret - -```bash -export EMAIL_USER= -export PASSWORD= -kubectl apply -n argocd -f - << EOF -apiVersion: v1 -kind: Secret -metadata: - name: argocd-notifications-secret -stringData: - email-username: $EMAIL_USER - email-password: $PASSWORD -type: Opaque -EOF -``` - -* Register Email notification service - -```bash -kubectl patch cm argocd-notifications-cm -n argocd --type merge -p '{"data": {"service.email.gmail": "{ username: $email-username, password: $email-password, host: smtp.gmail.com, port: 465, from: $email-username }" }}' -``` - -* Subscribe to notifications by adding the `notifications.argoproj.io/subscribe.on-sync-succeeded.slack` annotation to the Argo CD application or project: - -```bash -kubectl patch app -n argocd -p '{"metadata": {"annotations": {"notifications.argoproj.io/subscribe.on-sync-succeeded.slack":""}}}' --type merge -``` - -Try syncing and application and get the notification once sync is completed. - -## Kustomize Getting Started - -The argocd-notification manifests can also be installed using [Kustomize](https://kustomize.io/). To install -argocd-notifications, we recommend using the remote kustomize resource: - -```yaml -apiVersion: kustomize.config.k8s.io/v1beta1 -kind: Kustomization - -namespace: argocd -resources: -- https://raw.githubusercontent.com/argoproj-labs/argocd-notifications/stable/manifests/install.yaml - -patchesStrategicMerge: -- https://raw.githubusercontent.com/argoproj-labs/argocd-notifications/stable/catalog/install.yaml -``` - -## Helm v3 Getting Started - -argocd-notifications is now on [Helm Hub](https://hub.helm.sh/charts/argo/argocd-notifications) as a Helm v3 chart, making it even easier to get started as -installing and configuring happen together: - -```shell -helm repo add argo https://argoproj.github.io/argo-helm -helm install argo/argocd-notifications --generate-name -n argocd -f values.yaml -``` - -```yaml -argocdUrl: https://argocd.example.com - -notifiers: - service.email.gmail: | - username: $email-username - password: $email-password - host: smtp.gmail.com - port: 465 - from: $email-username - -secret: - items: - email-username: - email-password: - -templates: - template.app-deployed: | - email: - subject: New version of an application {{.app.metadata.name}} is up and running. - message: | - {{if eq .serviceType "slack"}}:white_check_mark:{{end}} Application {{.app.metadata.name}} is now running new version of deployments manifests. -triggers: - 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' -``` - -For more information or to contribute, check out the [argoproj/argo-helm repository](https://github.com/argoproj/argo-helm/tree/master/charts/argocd-notifications). diff --git a/docs/monitoring.md b/docs/monitoring.md deleted file mode 100644 index e6172132..00000000 --- a/docs/monitoring.md +++ /dev/null @@ -1,35 +0,0 @@ - - -!!! important "This page has moved" - This page has moved to [https://argo-cd.readthedocs.io/en/latest/operator-manual/notifications/monitoring//](https://argo-cd.readthedocs.io/en/latest/operator-manual/notifications/monitoring//). Redirecting to the new page. - -# Monitoring - -The Argo CD Notification controller serves Prometheus metrics on port 9001. - -!!! note - Metrics port might be changed using the `--metrics-port` flag in `argocd-notifications-controller` deployment. - -## Metrics -The following metrics are available: - -### `argocd_notifications_deliveries_total` - - Number of delivered notifications. - Labels: - -* `template` - notification template name -* `notifier` - notification service name -* `succeeded` - flag that indicates if notification was successfully sent or failed. - -### `argocd_notifications_trigger_eval_total` - - Number of trigger evaluations. - Labels: - -* `name` - trigger name -* `triggered` - flag that indicates if trigger condition returned true of false. - -# Examples: - -* Grafana Dashboard: [grafana-dashboard.json](grafana-dashboard.json) \ No newline at end of file diff --git a/docs/requirements.txt b/docs/requirements.txt deleted file mode 100644 index 0c06bf58..00000000 --- a/docs/requirements.txt +++ /dev/null @@ -1,4 +0,0 @@ -mkdocs==1.1.2 -mkdocs-material==7.1.7 -markdown_include==0.6.0 -pygments==2.7.4 diff --git a/docs/services/alertmanager.md b/docs/services/alertmanager.md deleted file mode 100644 index e0f9d7e4..00000000 --- a/docs/services/alertmanager.md +++ /dev/null @@ -1,164 +0,0 @@ -# Alertmanager - -## Parameters - -The notification service is used to push events to [Alertmanager](https://github.com/prometheus/alertmanager), and the following settings need to be specified: - -* `targets` - the alertmanager service address, array type -* `scheme` - optional, default is "http", e.g. http or https -* `apiPath` - optional, default is "/api/v2/alerts" -* `insecureSkipVerify` - optional, default is "false", when scheme is https whether to skip the verification of ca -* `basicAuth` - optional, server auth -* `bearerToken` - optional, server auth -* `timeout` - optional, the timeout in seconds used when sending alerts, default is "3 seconds" - -`basicAuth` or `bearerToken` is used for authentication, you can choose one. If the two are set at the same time, `basicAuth` takes precedence over `bearerToken`. - -## Example - -### Prometheus Alertmanager config - -```yaml -global: - resolve_timeout: 5m - -route: - group_by: ['alertname'] - group_wait: 10s - group_interval: 10s - repeat_interval: 1h - receiver: 'default' -receivers: -- name: 'default' - webhook_configs: - - send_resolved: false - url: 'http://10.5.39.39:10080/api/alerts/webhook' -``` - -You should turn off "send_resolved" or you will receive unnecessary recovery notifications after "resolve_timeout". - -### Send one alertmanager without auth - -```yaml -apiVersion: v1 -kind: ConfigMap -metadata: - name: -data: - service.alertmanager: | - targets: - - 10.5.39.39:9093 -``` - -### Send alertmanager cluster with custom api path - -If your alertmanager has changed the default api, you can customize "apiPath". - -```yaml -apiVersion: v1 -kind: ConfigMap -metadata: - name: -data: - service.alertmanager: | - targets: - - 10.5.39.39:443 - scheme: https - apiPath: /api/events - insecureSkipVerify: true -``` - -### Send high availability alertmanager with auth - -Store auth token in `argocd-notifications-secret` Secret and use configure in `argocd-notifications-cm` ConfigMap. - -```yaml -apiVersion: v1 -kind: Secret -metadata: - name: -stringData: - alertmanager-username: - alertmanager-password: - alertmanager-bearer-token: -``` - -- with basicAuth - -```yaml -apiVersion: v1 -kind: ConfigMap -metadata: - name: -data: - service.alertmanager: | - targets: - - 10.5.39.39:19093 - - 10.5.39.39:29093 - - 10.5.39.39:39093 - scheme: https - apiPath: /api/v2/alerts - insecureSkipVerify: true - basicAuth: - username: $alertmanager-username - password: $alertmanager-password -``` - -- with bearerToken - -```yaml -apiVersion: v1 -kind: ConfigMap -metadata: - name: -data: - service.alertmanager: | - targets: - - 10.5.39.39:19093 - - 10.5.39.39:29093 - - 10.5.39.39:39093 - scheme: https - apiPath: /api/v2/alerts - insecureSkipVerify: true - bearerToken: $alertmanager-bearer-token -``` - -## Templates - -* `labels` - at least one label pair required, implement different notification strategies according to alertmanager routing -* `annotations` - optional, specifies a set of information labels, which can be used to store longer additional information, but only for display -* `generatorURL` - optional, default is '{{.app.spec.source.repoURL}}', backlink used to identify the entity that caused this alert in the client - -the `label` or `annotations` or `generatorURL` values can be templated. - -```yaml -context: | - argocdUrl: https://example.com/argocd - -template.app-deployed: | - message: Application {{.app.metadata.name}} has been healthy. - alertmanager: - labels: - fault_priority: "P5" - event_bucket: "deploy" - event_status: "succeed" - recipient: "{{.recipient}}" - annotations: - application: '
{{.app.metadata.name}}' - author: "{{(call .repo.GetCommitMetadata .app.status.sync.revision).Author}}" - message: "{{(call .repo.GetCommitMetadata .app.status.sync.revision).Message}}" -``` - -You can do targeted push on [Alertmanager](https://github.com/prometheus/alertmanager) according to labels. - -```yaml -template.app-deployed: | - message: Application {{.app.metadata.name}} has been healthy. - alertmanager: - labels: - alertname: app-deployed - fault_priority: "P5" - event_bucket: "deploy" -``` - -There is a special label `alertname`. If you don’t set its value, it will be equal to the template name by default. \ No newline at end of file diff --git a/docs/services/email.md b/docs/services/email.md deleted file mode 100644 index e3c4b7d9..00000000 --- a/docs/services/email.md +++ /dev/null @@ -1,63 +0,0 @@ -# Email - -## Parameters - -The Email notification service sends email notifications using SMTP protocol and requires specifying the following settings: - -* `host` - the SMTP server host name -* `port` - the SMTP server port -* `username` - username -* `password` - password -* `from` - from email address -* `html` - optional bool, true or false -* `insecure_skip_verify` - optional bool, true or false - -## Example - -The following snippet contains sample Gmail service configuration: - -```yaml -apiVersion: v1 -kind: ConfigMap -metadata: - name: -data: - service.email.gmail: | - username: $email-username - password: $email-password - host: smtp.gmail.com - port: 465 - from: $email-username -``` - -Without authentication: - -```yaml -apiVersion: v1 -kind: ConfigMap -metadata: - name: -data: - service.email.example: | - host: smtp.example.com - port: 587 - from: $email-username -``` - -## Template - -Notification templates support specifying subject for email notifications: - -```yaml -apiVersion: v1 -kind: ConfigMap -metadata: - name: -data: - template.app-sync-succeeded: | - email: - subject: Application {{.app.metadata.name}} has been successfully synced. - message: | - {{if eq .serviceType "slack"}}:white_check_mark:{{end}} 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 . -``` diff --git a/docs/services/github.md b/docs/services/github.md deleted file mode 100644 index 953e55bd..00000000 --- a/docs/services/github.md +++ /dev/null @@ -1,72 +0,0 @@ -# GitHub - -## Parameters - -The GitHub notification service changes commit status using [GitHub Apps](https://docs.github.com/en/developers/apps) and requires specifying the following settings: - -* `appID` - the app id -* `installationID` - the app installation id -* `privateKey` - the app private key -* `enterpriseBaseURL` - optional URL, e.g. https://git.example.com/ - -## Configuration - -1. Create a GitHub Apps using https://github.com/settings/apps/new -2. Change repository permissions to enable write commit statuses -![2](https://user-images.githubusercontent.com/18019529/108397381-3ca57980-725b-11eb-8d17-5b8992dc009e.png) -3. Generate a private key, and download it automatically -![3](https://user-images.githubusercontent.com/18019529/108397926-d4a36300-725b-11eb-83fe-74795c8c3e03.png) -4. Install app to account -5. Store privateKey in `argocd-notifications-secret` Secret and configure GitHub integration -in `argocd-notifications-cm` ConfigMap - -```yaml -apiVersion: v1 -kind: ConfigMap -metadata: - name: -data: - service.github: | - appID: - installationID: - privateKey: $github-privateKey -``` - -```yaml -apiVersion: v1 -kind: Secret -metadata: - name: -stringData: - github-privateKey: | - -----BEGIN RSA PRIVATE KEY----- - (snip) - -----END RSA PRIVATE KEY----- -``` - -6. Create subscription for your GitHub integration - -```yaml -apiVersion: argoproj.io/v1alpha1 -kind: Application -metadata: - annotations: - notifications.argoproj.io/subscribe..github: "" -``` - -## Templates - -![](https://user-images.githubusercontent.com/18019529/108520497-168ce180-730e-11eb-93cb-b0b91f99bdc5.png) - -If the message is set to 140 characters or more, it will be truncate. - -```yaml -template.app-deployed: | - message: | - Application {{.app.metadata.name}} is now running new version of deployments manifests. - github: - status: - state: success - label: "continuous-delivery/{{.app.metadata.name}}" - targetURL: "{{.context.argocdUrl}}/applications/{{.app.metadata.name}}?operation=true" -``` diff --git a/docs/services/googlechat.md b/docs/services/googlechat.md deleted file mode 100644 index 04484691..00000000 --- a/docs/services/googlechat.md +++ /dev/null @@ -1,81 +0,0 @@ -# Google Chat - -## Parameters - -The Google Chat notification service send message notifications to a google chat webhook. This service uses the following settings: - -* `webhooks` - a map of the form `webhookName: webhookUrl` - -## Configuration - -1. Open `Google chat` and go to the space to which you want to send messages -2. From the menu at the top of the page, select **Configure Webhooks** -3. Under **Incoming Webhooks**, click **Add Webhook** -4. Give a name to the webhook, optionally add an image and click **Save** -5. Copy the URL next to your webhook -6. Store the URL in `argocd-notification-secret` and declare it in `argocd-notifications-cm` - -```yaml -apiVersion: v1 -kind: ConfigMap -metadata: - name: -data: - service.googlechat: | - webhooks: - spaceName: $space-webhook-url -``` - -```yaml -apiVersion: v1 -kind: Secret -metadata: - name: -stringData: - space-webhook-url: https://chat.googleapis.com/v1/spaces//messages?key=&token= -``` - -6. Create a subscription for your space - -```yaml -apiVersion: argoproj.io/v1alpha1 -kind: Application -metadata: - annotations: - notifications.argoproj.io/subscribe.on-sync-succeeded.googlechat: spaceName -``` - -## Templates - -You can send [simple text](https://developers.google.com/chat/reference/message-formats/basic) or [card messages](https://developers.google.com/chat/reference/message-formats/cards) to a Google Chat space. A simple text message template can be defined as follows: - -```yaml -template.app-sync-succeeded: | - message: The app {{ .app.metadata.name }} has succesfully synced! -``` - -A card message can be defined as follows: - -```yaml -template.app-sync-succeeded: | - googlechat: - cards: | - - header: - title: ArgoCD Bot Notification - sections: - - widgets: - - textParagraph: - text: The app {{ .app.metadata.name }} has succesfully synced! - - widgets: - - keyValue: - topLabel: Repository - content: {{ call .repo.RepoURLToHTTPS .app.spec.source.repoURL }} - - keyValue: - topLabel: Revision - content: {{ .app.spec.source.targetRevision }} - - keyValue: - topLabel: Author - content: {{ (call .repo.GetCommitMetadata .app.status.sync.revision).Author }} -``` - -The card message can be written in JSON too. diff --git a/docs/services/grafana.md b/docs/services/grafana.md deleted file mode 100644 index ff567b71..00000000 --- a/docs/services/grafana.md +++ /dev/null @@ -1,45 +0,0 @@ -# Grafana - -To be able to create Grafana annotation with argocd-notifications you have to create an [API Key](https://grafana.com/docs/grafana/latest/http_api/auth/#create-api-key) inside your [Grafana](https://grafana.com). - -![sample](https://user-images.githubusercontent.com/18019529/112024976-0f106080-8b78-11eb-9658-7663305899be.png) - -1. Login to your Grafana instance as `admin` -2. On the left menu, go to Configuration / API Keys -3. Click "Add API Key" -4. Fill the Key with name `ArgoCD Notification`, role `Editor` and Time to Live `10y` (for example) -5. Click on Add button -6. Store apiKey in `argocd-notifications-secret` Secret and Copy your API Key and define it in `argocd-notifications-cm` ConfigMap - -```yaml -apiVersion: v1 -kind: ConfigMap -metadata: - name: -data: - service.grafana: | - apiUrl: https://grafana.example.com/api - apiKey: $grafana-api-key -``` - -```yaml -apiVersion: v1 -kind: Secret -metadata: - name: -stringData: - grafana-api-key: api-key -``` - -7. Create subscription for your Grafana integration - -```yaml -apiVersion: argoproj.io/v1alpha1 -kind: Application -metadata: - annotations: - notifications.argoproj.io/subscribe..grafana: tag1|tag2 # list of tags separated with | -``` - -8. Change the annotations settings -![8](https://user-images.githubusercontent.com/18019529/112022083-47fb0600-8b75-11eb-849b-d25d41925909.png) diff --git a/docs/services/mattermost.md b/docs/services/mattermost.md deleted file mode 100644 index 98e0d0fd..00000000 --- a/docs/services/mattermost.md +++ /dev/null @@ -1,78 +0,0 @@ -# Mattermost - -## Parameters - -* `apiURL` - the server url, e.g. https://mattermost.example.com -* `token` - the bot token -* `insecureSkipVerify` - optional bool, true or false - -## Configuration - -1. Create a bot account and copy token after creating it -![1](https://user-images.githubusercontent.com/18019529/111499520-62ed0500-8786-11eb-88b0-d0aade61fed4.png) -2. Invite team -![2](https://user-images.githubusercontent.com/18019529/111500197-1229dc00-8787-11eb-98e5-587ee36c94a9.png) -3. Store token in `argocd-notifications-secret` Secret and configure Mattermost integration -in `argocd-notifications-cm` ConfigMap - -```yaml -apiVersion: v1 -kind: ConfigMap -metadata: - name: -data: - service.mattermost: | - apiURL: - token: $mattermost-token -``` - -```yaml -apiVersion: v1 -kind: Secret -metadata: - name: -stringData: - mattermost-token: token -``` - -4. Copy channel id -![4](https://user-images.githubusercontent.com/18019529/111501289-333efc80-8788-11eb-9731-8353170cd73a.png) - -5. Create subscription for your Mattermost integration - -```yaml -apiVersion: argoproj.io/v1alpha1 -kind: Application -metadata: - annotations: - notifications.argoproj.io/subscribe..mattermost: -``` - -## Templates - -![](https://user-images.githubusercontent.com/18019529/111502636-5fa74880-8789-11eb-97c5-5eac22c00a37.png) - -You can reuse the template of slack. -Mattermost is compatible with attachments of Slack. See [Mattermost Integration Guide](https://docs.mattermost.com/developer/message-attachments.html). - -```yaml -template.app-deployed: | - message: | - Application {{.app.metadata.name}} is now running new version of deployments manifests. - mattermost: - attachments: | - [{ - "title": "{{.app.metadata.name}}", - "title_link": "{{.context.argocdUrl}}/applications/{{.app.metadata.name}}", - "color": "#18be52", - "fields": [{ - "title": "Sync Status", - "value": "{{.app.status.sync.status}}", - "short": true - }, { - "title": "Repository", - "value": "{{.app.spec.source.repoURL}}", - "short": true - }] - }] -``` diff --git a/docs/services/opsgenie.md b/docs/services/opsgenie.md deleted file mode 100644 index 665d0081..00000000 --- a/docs/services/opsgenie.md +++ /dev/null @@ -1,28 +0,0 @@ -# Opsgenie - -To be able to send notifications with argocd-notifications you have to create an [API Integration](https://docs.opsgenie.com/docs/integrations-overview) inside your [Opsgenie Team](https://docs.opsgenie.com/docs/teams). - -1. Login to Opsgenie at https://app.opsgenie.com or https://app.eu.opsgenie.com (if you have an account in the european union) -2. Make sure you already have a team, if not follow this guide https://docs.opsgenie.com/docs/teams -3. Click "Teams" in the Menu on the left -4. Select the team that you want to notify -5. In the teams configuration menu select "Integrations" -6. click "Add Integration" in the top right corner -7. Select "API" integration -8. Give your integration a name, copy the "API key" and safe it somewhere for later -9. Make sure the checkboxes for "Create and Update Access" and "enable" are selected, disable the other checkboxes to remove unnecessary permissions -10. Click "Safe Integration" at the bottom -11. Check your browser for the correct server apiURL. If it is "app.opsgenie.com" then use the us/international api url `api.opsgenie.com` in the next step, otherwise use `api.eu.opsgenie.com` (european api). -12. You are finished with configuring opsgenie. Now you need to configure argocd-notifications. Use the apiUrl, the team name and the apiKey to configure the opsgenie integration in the `argocd-notifications-secret` secret. - -```yaml -apiVersion: v1 -kind: ConfigMap -metadata: - name: -data: - service.opsgenie: | - apiUrl: - apiKeys: - : -``` \ No newline at end of file diff --git a/docs/services/overview.md b/docs/services/overview.md deleted file mode 100644 index 15e674f6..00000000 --- a/docs/services/overview.md +++ /dev/null @@ -1,53 +0,0 @@ -The notification services represent integration with services such as slack, email or custom webhook. Services are configured in `argocd-notifications-cm` ConfigMap -using `service..()` keys and might reference sensitive data from `argocd-notifications-secret` Secret. Following example demonstrates slack -service configuration: - -```yaml - service.slack: | - token: $slack-token -``` - - -The `slack` indicates that service sends slack notification; name is missing and defaults to `slack`. - -## Sensitive Data - -Sensitive data like authentication tokens should be stored in `` Secret and can be referenced in -service configuration using `$` format. For example `$slack-token` referencing value of key `slack-token` in -`` Secret. - -## Custom Names - -Service custom names allow configuring two instances of the same service type. - -```yaml - service.slack.workspace1: | - token: $slack-token-workspace1 - service.slack.workspace2: | - token: $slack-token-workspace2 -``` - -```yaml -apiVersion: argoproj.io/v1alpha1 -kind: Application -metadata: - annotations: - notifications.argoproj.io/subscribe.on-sync-succeeded.workspace1: my-channel - notifications.argoproj.io/subscribe.on-sync-succeeded.workspace2: my-channel -``` - -## Service Types - -* [Email](./email.md) -* [GitHub](./github.md) -* [Slack](./slack.md) -* [Mattermost](./mattermost.md) -* [Opsgenie](./opsgenie.md) -* [Grafana](./grafana.md) -* [Webhook](./webhook.md) -* [Telegram](./telegram.md) -* [Teams](./teams.md) -* [Google Chat](./googlechat.md) -* [Rocket.Chat](./rocketchat.md) -* [Pushover](./pushover.md) -* [Alertmanager](./alertmanager.md) \ No newline at end of file diff --git a/docs/services/pushover.md b/docs/services/pushover.md deleted file mode 100644 index 37cb20b2..00000000 --- a/docs/services/pushover.md +++ /dev/null @@ -1,33 +0,0 @@ -# Pushover - -1. Create an app at [pushover.net](https://pushover.net/apps/build). -2. Store the API key in `` Secret and define the secret name in `` ConfigMap: - -```yaml -apiVersion: v1 -kind: ConfigMap -metadata: - name: -data: - service.pushover: | - token: $pushover-token -``` - -```yaml -apiVersion: v1 -kind: Secret -metadata: - name: -stringData: - pushover-token: avtc41pn13asmra6zaiyf7dh6cgx97 -``` - -3. Add your user key to your Application resource: - -```yaml -apiVersion: argoproj.io/v1alpha1 -kind: Application -metadata: - annotations: - notifications.argoproj.io/subscribe.on-sync-succeeded.pushover: uumy8u4owy7bgkapp6mc5mvhfsvpcd -``` \ No newline at end of file diff --git a/docs/services/rocketchat.md b/docs/services/rocketchat.md deleted file mode 100644 index 554f42a8..00000000 --- a/docs/services/rocketchat.md +++ /dev/null @@ -1,96 +0,0 @@ -# Rocket.Chat - -## Parameters - -The Rocket.Chat notification service configuration includes following settings: - -* `email` - the Rocker.Chat user's email -* `password` - the Rocker.Chat user's password -* `alias` - optional alias that should be used to post message -* `icon` - optional message icon -* `avatar` - optional message avatar -* `serverUrl` - optional Rocket.Chat server url - -## Configuration - -1. Login to your RocketChat instance -2. Go to user management - -![2](https://user-images.githubusercontent.com/15252187/115824993-7ccad900-a411-11eb-89de-6a0c4438ffdf.png) - -3. Add new user with `bot` role. Also note that `Require password change` checkbox mus be not checked - -![3](https://user-images.githubusercontent.com/15252187/115825174-b4d21c00-a411-11eb-8f20-cda48cea9fad.png) - -4. Copy username and password that you was created for bot user -5. Create a public or private channel, or a team, for this example `my_channel` -6. Add your bot to this channel **otherwise it won't work** -7. Store email and password in argocd_notifications-secret Secret - -```yaml -apiVersion: v1 -kind: Secret -metadata: - name: -stringData: - rocketchat-email: - rocketchat-password: -``` - -8. Finally, use these credentials to configure the RocketChat integration in the `argocd-configmap` config map: - -```yaml -apiVersion: v1 -kind: ConfigMap -metadata: - name: -data: - service.rocketchat: | - email: $rocketchat-email - password: $rocketchat-password -``` - -9. Create a subscription for your Rocket.Chat integration: - -*Note: channel, team or user must be prefixed with # or @ elsewhere we will be interpretative destination as a room ID* - -```yaml -apiVersion: argoproj.io/v1alpha1 -kind: Application -metadata: - annotations: - notifications.argoproj.io/subscribe.on-sync-succeeded.rocketchat: #my_channel -``` - -## Templates - -Notification templates can be customized with RocketChat [attachments](https://developer.rocket.chat/api/rest-api/methods/chat/postmessage#attachments-detail). - -*Note: Attachments structure in Rocketchat is same with Slack attachments [feature](https://api.slack.com/messaging/composing/layouts).* - - - -The message attachments can be specified in `attachments` string fields under `rocketchat` field: - -```yaml -template.app-sync-status: | - message: | - Application {{.app.metadata.name}} sync is {{.app.status.sync.status}}. - Application details: {{.context.argocdUrl}}/applications/{{.app.metadata.name}}. - rocketchat: - attachments: | - [{ - "title": "{{.app.metadata.name}}", - "title_link": "{{.context.argocdUrl}}/applications/{{.app.metadata.name}}", - "color": "#18be52", - "fields": [{ - "title": "Sync Status", - "value": "{{.app.status.sync.status}}", - "short": true - }, { - "title": "Repository", - "value": "{{.app.spec.source.repoURL}}", - "short": true - }] - }] -``` diff --git a/docs/services/slack.md b/docs/services/slack.md deleted file mode 100644 index 6119a32a..00000000 --- a/docs/services/slack.md +++ /dev/null @@ -1,147 +0,0 @@ -# Slack - -If you want to send message using incoming webhook, you can use [webhook](./webhook.md#send-slack). - -## Parameters - -The Slack notification service configuration includes following settings: - -* `token` - the app token -* `apiURL` - optional, the server url, e.g. https://example.com/api -* `username` - optional, the app username -* `icon` - optional, the app icon, e.g. :robot_face: or https://example.com/image.png -* `insecureSkipVerify` - optional bool, true or false - -## Configuration - -1. Create Slack Application using https://api.slack.com/apps?new_app=1 -![1](https://user-images.githubusercontent.com/426437/73604308-4cb0c500-4543-11ea-9092-6ca6bae21cbb.png) -1. Once application is created navigate to `Enter OAuth & Permissions` -![2](https://user-images.githubusercontent.com/426437/73604309-4d495b80-4543-11ea-9908-4dea403d3399.png) -1. Click `Permissions` under `Add features and functionality` section and add `chat:write` scope. To use the optional username and icon overrides in the Slack notification service also add the `chat:write.customize` scope. -![3](https://user-images.githubusercontent.com/426437/73604310-4d495b80-4543-11ea-8576-09cd91aea0e5.png) -1. Scroll back to the top, click 'Install App to Workspace' button and confirm the installation. -![4](https://user-images.githubusercontent.com/426437/73604311-4d495b80-4543-11ea-9155-9d216b20ec86.png) -1. Once installation is completed copy the OAuth token. -![5](https://user-images.githubusercontent.com/426437/73604312-4d495b80-4543-11ea-832b-a9d9d5e4bc29.png) - -1. Create a public or private channel, for this example `my_channel` -1. Invite your slack bot to this channel **otherwise slack bot won't be able to deliver notifications to this channel** -1. Store Oauth access token in `argocd-notifications-secret` secret - - ```yaml - apiVersion: v1 - kind: Secret - metadata: - name: - stringData: - slack-token: - ``` - -1. Define service type slack in data section of `argocd-notifications-cm` configmap: -service - ```yaml - apiVersion: v1 - kind: ConfigMap - metadata: - name: - data: - service.slack: | - token: $slack-token - ``` - -1. Add annotation in application yaml file to enable notifications for specific argocd app - - ```yaml - apiVersion: argoproj.io/v1alpha1 - kind: Application - metadata: - annotations: - notifications.argoproj.io/subscribe.on-sync-succeeded.slack: my_channel - ``` - -## Templates - -Notification templates can be customized to leverage slack message blocks and attachments -[feature](https://api.slack.com/messaging/composing/layouts). - -![](https://user-images.githubusercontent.com/426437/72776856-6dcef880-3bc8-11ea-8e3b-c72df16ee8e6.png) - -The message blocks and attachments can be specified in `blocks` and `attachments` string fields under `slack` field: - -```yaml -template.app-sync-status: | - message: | - Application {{.app.metadata.name}} sync is {{.app.status.sync.status}}. - Application details: {{.context.argocdUrl}}/applications/{{.app.metadata.name}}. - slack: - attachments: | - [{ - "title": "{{.app.metadata.name}}", - "title_link": "{{.context.argocdUrl}}/applications/{{.app.metadata.name}}", - "color": "#18be52", - "fields": [{ - "title": "Sync Status", - "value": "{{.app.status.sync.status}}", - "short": true - }, { - "title": "Repository", - "value": "{{.app.spec.source.repoURL}}", - "short": true - }] - }] -``` - -The messages can be aggregated to the slack threads by grouping key which can be specified in a `groupingKey` string field under `slack` field. -`groupingKey` is used across each template and works independently on each slack channel. -When multiple applications will be updated at the same time or frequently, the messages in slack channel can be easily read by aggregating with git commit hash, application name, etc. -Furthermore, the messages can be broadcast to the channel at the specific template by `notifyBroadcast` field. - -```yaml -template.app-sync-status: | - message: | - Application {{.app.metadata.name}} sync is {{.app.status.sync.status}}. - Application details: {{.context.argocdUrl}}/applications/{{.app.metadata.name}}. - slack: - attachments: | - [{ - "title": "{{.app.metadata.name}}", - "title_link": "{{.context.argocdUrl}}/applications/{{.app.metadata.name}}", - "color": "#18be52", - "fields": [{ - "title": "Sync Status", - "value": "{{.app.status.sync.status}}", - "short": true - }, { - "title": "Repository", - "value": "{{.app.spec.source.repoURL}}", - "short": true - }] - }] - # Aggregate the messages to the thread by git commit hash - groupingKey: "{{.app.status.sync.revision}}" - notifyBroadcast: false -template.app-sync-failed: | - message: | - Application {{.app.metadata.name}} sync is {{.app.status.sync.status}}. - Application details: {{.context.argocdUrl}}/applications/{{.app.metadata.name}}. - slack: - attachments: | - [{ - "title": "{{.app.metadata.name}}", - "title_link": "{{.context.argocdUrl}}/applications/{{.app.metadata.name}}", - "color": "#ff0000", - "fields": [{ - "title": "Sync Status", - "value": "{{.app.status.sync.status}}", - "short": true - }, { - "title": "Repository", - "value": "{{.app.spec.source.repoURL}}", - "short": true - }] - }] - # Aggregate the messages to the thread by git commit hash - groupingKey: "{{.app.status.sync.revision}}" - notifyBroadcast: true -``` diff --git a/docs/services/teams.md b/docs/services/teams.md deleted file mode 100644 index eb50f553..00000000 --- a/docs/services/teams.md +++ /dev/null @@ -1,126 +0,0 @@ -# Teams - -## Parameters - -The Teams notification service send message notifications using Teams bot and requires specifying the following settings: - -* `recipientUrls` - the webhook url map, e.g. `channelName: https://example.com` - -## Configuration - -1. Open `Teams` and goto `Apps` -2. Find `Incoming Webhook` microsoft app and click on it -3. Press `Add to a team` -> select team and channel -> press `Set up a connector` -4. Enter webhook name and upload image (optional) -5. Press `Create` then copy webhook url and store it in `argocd-notifications-secret` and define it in `argocd-notifications-cm` - -```yaml -apiVersion: v1 -kind: ConfigMap -metadata: - name: -data: - service.teams: | - recipientUrls: - channelName: $channel-teams-url -``` - -```yaml -apiVersion: v1 -kind: Secret -metadata: - name: -stringData: - channel-teams-url: https://example.com -``` - -6. Create subscription for your Teams integration: - -```yaml -apiVersion: argoproj.io/v1alpha1 -kind: Application -metadata: - annotations: - notifications.argoproj.io/subscribe.on-sync-succeeded.teams: channelName -``` - -## Templates - -![](https://user-images.githubusercontent.com/18019529/114271500-9d2b8880-9a4c-11eb-85c1-f6935f0431d5.png) - -Notification templates can be customized to leverage teams message sections, facts, themeColor, summary and potentialAction [feature](https://docs.microsoft.com/en-us/microsoftteams/platform/webhooks-and-connectors/how-to/connectors-using). - -```yaml -template.app-sync-succeeded: | - teams: - themeColor: "#000080" - sections: | - [{ - "facts": [ - { - "name": "Sync Status", - "value": "{{.app.status.sync.status}}" - }, - { - "name": "Repository", - "value": "{{.app.spec.source.repoURL}}" - } - ] - }] - potentialAction: |- - [{ - "@type":"OpenUri", - "name":"Operation Details", - "targets":[{ - "os":"default", - "uri":"{{.context.argocdUrl}}/applications/{{.app.metadata.name}}?operation=true" - }] - }] - title: Application {{.app.metadata.name}} has been successfully synced - text: Application {{.app.metadata.name}} has been successfully synced at {{.app.status.operationState.finishedAt}}. - summary: "{{.app.metadata.name}} sync succeeded" -``` - -### facts field - -You can use `facts` field instead of `sections` field. - -```yaml -template.app-sync-succeeded: | - teams: - facts: | - [{ - "name": "Sync Status", - "value": "{{.app.status.sync.status}}" - }, - { - "name": "Repository", - "value": "{{.app.spec.source.repoURL}}" - }] -``` - -### theme color field - -You can set theme color as hex string for the message. - -![](https://user-images.githubusercontent.com/1164159/114864810-0718a900-9e24-11eb-8127-8d95da9544c1.png) - -```yaml -template.app-sync-succeeded: | - teams: - themeColor: "#000080" -``` - -### summary field - -You can set a summary of the message that will be shown on Notifcation & Activity Feed - -![](https://user-images.githubusercontent.com/6957724/116587921-84c4d480-a94d-11eb-9da4-f365151a12e7.jpg) - -![](https://user-images.githubusercontent.com/6957724/116588002-99a16800-a94d-11eb-807f-8626eb53b980.jpg) - -```yaml -template.app-sync-succeeded: | - teams: - summary: "Sync Succeeded" -``` \ No newline at end of file diff --git a/docs/services/telegram.md b/docs/services/telegram.md deleted file mode 100644 index 953c2a9f..00000000 --- a/docs/services/telegram.md +++ /dev/null @@ -1,35 +0,0 @@ -# Telegram - -1. Get an API token using [@Botfather](https://t.me/Botfather). -2. Store token in `` Secret and configure telegram integration -in `` ConfigMap: - -```yaml -apiVersion: v1 -kind: ConfigMap -metadata: - name: -data: - service.telegram: | - token: $telegram-token -``` - -3. Create new Telegram [channel](https://telegram.org/blog/channels). -4. Add your bot as an administrator. -5. Use this channel `username` (public channel) or `chatID` (private channel) in the subscription for your Telegram integration: - -```yaml -apiVersion: argoproj.io/v1alpha1 -kind: Application -metadata: - annotations: - notifications.argoproj.io/subscribe.on-sync-succeeded.telegram: username -``` - -```yaml -apiVersion: argoproj.io/v1alpha1 -kind: Application -metadata: - annotations: - notifications.argoproj.io/subscribe.on-sync-succeeded.telegram: -1000000000000 -``` diff --git a/docs/services/webhook.md b/docs/services/webhook.md deleted file mode 100644 index b6aee1ea..00000000 --- a/docs/services/webhook.md +++ /dev/null @@ -1,177 +0,0 @@ -## Configuration - -The webhook notification service allows sending a generic HTTP request using the templatized request body and URL. -Using Webhook you might trigger a Jenkins job, update Github commit status. - -Use the following steps to configure webhook: - -1 Register webhook in `argocd-notifications-cm` ConfigMap: - -```yaml -apiVersion: v1 -kind: ConfigMap -metadata: - name: -data: - service.webhook.: | - url: https:/// - headers: #optional headers - - name: - value: - basicAuth: #optional username password - username: - password: -``` - -2 Define template that customizes webhook request method, path and body: - -```yaml -apiVersion: v1 -kind: ConfigMap -metadata: - name: -data: - template.github-commit-status: | - webhook: - : - method: POST # one of: GET, POST, PUT, PATCH. Default value: GET - path: - body: | - - trigger.: | - - when: app.status.operationState.phase in ['Succeeded'] - send: [github-commit-status] -``` - -3 Create subscription for webhook integration: - -```yaml -apiVersion: argoproj.io/v1alpha1 -kind: Application -metadata: - annotations: - notifications.argoproj.io/subscribe..: "" -``` - -## Examples - -### Set Github commit status - -```yaml -apiVersion: v1 -kind: ConfigMap -metadata: - name: -data: - service.webhook.github: | - url: https://api.github.com - headers: #optional headers - - name: Authorization - value: token $github-token -``` - -2 Define template that customizes webhook request method, path and body: - -```yaml -apiVersion: v1 -kind: ConfigMap -metadata: - name: -data: - service.webhook.github: | - url: https://api.github.com - headers: #optional headers - - name: Authorization - value: token $github-token - - template.github-commit-status: | - webhook: - github: - method: POST - path: /repos/{{call .repo.FullNameByRepoURL .app.spec.source.repoURL}}/statuses/{{.app.status.operationState.operation.sync.revision}} - body: | - { - {{if eq .app.status.operationState.phase "Running"}} "state": "pending"{{end}} - {{if eq .app.status.operationState.phase "Succeeded"}} "state": "success"{{end}} - {{if eq .app.status.operationState.phase "Error"}} "state": "error"{{end}} - {{if eq .app.status.operationState.phase "Failed"}} "state": "error"{{end}}, - "description": "ArgoCD", - "target_url": "{{.context.argocdUrl}}/applications/{{.app.metadata.name}}", - "context": "continuous-delivery/{{.app.metadata.name}}" - } -``` - -### Start Jenkins Job - -```yaml -apiVersion: v1 -kind: ConfigMap -metadata: - name: -data: - service.webhook.jenkins: | - url: http:///job//build?token= - basicAuth: - username: - password: - -type: Opaque -``` - -### Send form-data - -```yaml -apiVersion: v1 -kind: ConfigMap -metadata: - name: -data: - service.webhook.form: | - url: https://form.example.com - headers: - - name: Content-Type - value: application/x-www-form-urlencoded - - template.form-data: | - webhook: - form: - method: POST - body: key1=value1&key2=value2 -``` - -### Send Slack - -```yaml -apiVersion: v1 -kind: ConfigMap -metadata: - name: -data: - service.webhook.slack_webhook: | - url: https://hooks.slack.com/services/xxxxx - headers: - - name: Content-Type - value: application/json - - template.send-slack: | - webhook: - slack_webhook: - method: POST - body: | - { - "attachments": [{ - "title": "{{.app.metadata.name}}", - "title_link": "{{.context.argocdUrl}}/applications/{{.app.metadata.name}}", - "color": "#18be52", - "fields": [{ - "title": "Sync Status", - "value": "{{.app.status.sync.status}}", - "short": true - }, { - "title": "Repository", - "value": "{{.app.spec.source.repoURL}}", - "short": true - }] - }] - } -``` diff --git a/docs/subscriptions.md b/docs/subscriptions.md deleted file mode 100644 index 5da0ccf2..00000000 --- a/docs/subscriptions.md +++ /dev/null @@ -1,76 +0,0 @@ - - -!!! important "This page has moved" - This page has moved to [https://argo-cd.readthedocs.io/en/latest/operator-manual/notifications/subscriptions//](https://argo-cd.readthedocs.io/en/latest/operator-manual/notifications/subscriptions//). Redirecting to the new page. - -The subscription to Argo CD application events can be defined using `notifications.argoproj.io/subscribe..: ` annotation. -For example, the following annotation subscribes two Slack channels to notifications about every successful synchronization of the Argo CD application: - -```yaml -apiVersion: argoproj.io/v1alpha1 -kind: Application -metadata: - annotations: - notifications.argoproj.io/subscribe.on-sync-succeeded.slack: my-channel1;my-channel2 -``` - -Annotation key consists of following parts: - -* `on-sync-succeeded` - trigger name -* `slack` - notification service name -* `my-channel1;my-channel2` - a semicolon separated list of recipients - -You can create subscriptions for all applications of the Argo CD project by adding the same annotation to AppProject CRD: - -```yaml -apiVersion: argoproj.io/v1alpha1 -kind: AppProject -metadata: - annotations: - notifications.argoproj.io/subscribe.on-sync-succeeded.slack: my-channel1;my-channel2 -``` - -## Default Subscriptions - -The subscriptions might be configured globally in the `argocd-notifications-cm` ConfigMap using `subscriptions` field. The default subscriptions -are applied to all applications. The trigger and applications might be configured using the -`triggers` and `selector` fields: - -```yaml -apiVersion: v1 -kind: ConfigMap -metadata: - name: argocd-notifications-cm -data: - # Contains centrally managed global application subscriptions - subscriptions: | - # subscription for on-sync-status-unknown trigger notifications - - recipients: - - slack:test2 - - email:test@gmail.com - triggers: - - on-sync-status-unknown - # subscription restricted to applications with matching labels only - - recipients: - - slack:test3 - selector: test=true - triggers: - - on-sync-status-unknown -``` - -If you want to use webhook in subscriptions, you need to store the custom name to recipients. - -```yaml -apiVersion: v1 -kind: ConfigMap -metadata: - name: argocd-notifications-cm -data: - service.webhook.: | - (snip) - subscriptions: | - - recipients: - - - triggers: - - on-sync-status-unknown -``` diff --git a/docs/templates.md b/docs/templates.md deleted file mode 100644 index 2981b7bc..00000000 --- a/docs/templates.md +++ /dev/null @@ -1,98 +0,0 @@ - - -!!! important "This page has moved" - This page has moved to [https://argo-cd.readthedocs.io/en/latest/operator-manual/notifications/templates//](https://argo-cd.readthedocs.io/en/latest/operator-manual/notifications/templates//). Redirecting to the new page. - -The notification template is used to generate the notification content and configured in `argocd-notifications-cm` ConfigMap. The template is leveraging -[html/template](https://golang.org/pkg/html/template/) golang package and allow to customize notification message. -Templates are meant to be reusable and can be referenced by multiple triggers. - -The following template is used to notify the user about application sync status. - -```yaml -apiVersion: v1 -kind: ConfigMap -metadata: - name: argocd-notifications-cm -data: - template.my-custom-template-slack-template: | - message: | - Application {{.app.metadata.name}} sync is {{.app.status.sync.status}}. - Application details: {{.context.argocdUrl}}/applications/{{.app.metadata.name}}. -``` - -Each template has access to the following fields: - -- `app` holds the application object. -- `context` is user defined string map and might include any string keys and values. -- `serviceType` holds the notification service type name. The field can be used to conditionally -render service specific fields. -- `recipient` holds the recipient name. - -## Defining user-defined `context` - -It is possible to define some shared context between all notification templates by setting a top-level -YAML document of key-value pairs, which can then be used within templates, like so: - -```yaml -apiVersion: v1 -kind: ConfigMap -metadata: - name: argocd-notifications-cm -data: - context: | - region: east - environmentName: staging - - template.a-slack-template-with-context: | - message: "Something happened in {{ .context.environmentName }} in the {{ .context.region }} data center!" -``` - -## Notification Service Specific Fields - -The `message` field of the template definition allows creating a basic notification for any notification service. You can leverage notification service-specific -fields to create complex notifications. For example using service-specific you can add blocks and attachments for Slack, subject for Email or URL path, and body for Webhook. -See corresponding service [documentation](./services/overview.md) for more information. - -## Change the timezone - -You can change the timezone to show it as follows. - -1. Call time functions. - -``` -{{ (call .time.Parse .app.status.operationState.startedAt).Local.Format "2006-01-02T15:04:05Z07:00" }} -``` - -2. Set environment to container. - -```yaml -apiVersion: apps/v1 -kind: Deployment -metadata: - name: argocd-notifications-controller -spec: -(snip) - spec: - containers: - - name: argocd-notifications-controller - env: - - name: TZ - value: Asia/Tokyo -``` - -## Functions - -Templates have access to the set of built-in functions: - -```yaml -apiVersion: v1 -kind: ConfigMap -metadata: - name: argocd-notifications-cm -data: - template.my-custom-template-slack-template: | - message: "Author: {{(call .repo.GetCommitMetadata .app.status.sync.revision).Author}}" -``` - -{!functions.md!} diff --git a/docs/triggers.md b/docs/triggers.md deleted file mode 100644 index e687b9ba..00000000 --- a/docs/triggers.md +++ /dev/null @@ -1,130 +0,0 @@ - - -!!! important "This page has moved" - This page has moved to [https://argo-cd.readthedocs.io/en/latest/operator-manual/notifications/triggers//](https://argo-cd.readthedocs.io/en/latest/operator-manual/notifications/triggers//). Redirecting to the new page. - -The trigger defines the condition when the notification should be sent. The definition includes name, condition -and notification templates reference. The condition is a predicate expression that returns true if the notification -should be sent. The trigger condition evaluation is powered by [antonmedv/expr](https://github.com/antonmedv/expr). -The condition language syntax is described at [Language-Definition.md](https://github.com/antonmedv/expr/blob/master/docs/Language-Definition.md). - -The trigger is configured in `argocd-notifications-cm` ConfigMap. For example the following trigger sends a notification -when application sync status changes to `Unknown` using the `app-sync-status` template: - -```yaml -apiVersion: v1 -kind: ConfigMap -metadata: - name: argocd-notifications-cm -data: - trigger.on-sync-status-unknown: | - - when: app.status.sync.status == 'Unknown' # trigger condition - send: [app-sync-status, github-commit-status] # template names -``` - -Each condition might use several templates. Typically each template is responsible for generating a service-specific notification part. -In the example above `app-sync-status` template "knows" how to create email and slack notification and `github-commit-status` knows how to -generate payload for Github webhook. - -## Conditions Bundles - -Triggers are typically managed by administrators and encapsulate information about when and which notification should be sent. -The end users just need to subscribe to the trigger and specify the notification destination. In order to improve user experience -triggers might include multiple conditions with a different set of templates for each condition. For example, the following trigger -covers all stages of sync status operation and use a different template for different cases: - - -```yaml -apiVersion: v1 -kind: ConfigMap -metadata: - name: argocd-notifications-cm -data: - trigger.sync-operation-change: | - - when: app.status.operationState.phase in ['Succeeded'] - send: [github-commit-status] - - when: app.status.operationState.phase in ['Running'] - send: [github-commit-status] - - when: app.status.operationState.phase in ['Error', 'Failed'] - send: [app-sync-failed, github-commit-status] -``` - -## Avoid Sending Same Notification Too Often - -In some cases, the trigger condition might be "flapping". The example below illustrates the problem. -The trigger is supposed to generate a notification once when Argo CD application is successfully synchronized and healthy. -However, the application health status might intermittently switch to `Progressing` and then back to `Healthy` so the trigger might unnecessarily generate -multiple notifications. The `oncePer` field configures triggers to generate the notification only when the corresponding application field changes. -The `on-deployed` trigger from the example below sends the notification only once per observed Git revision of the deployment repository. - -```yaml -apiVersion: v1 -kind: ConfigMap -metadata: - name: argocd-notifications-cm -data: - # Optional 'oncePer' property ensure that notification is sent only once per specified field value - # E.g. following is triggered once per sync revision - trigger.on-deployed: | - when: app.status.operationState.phase in ['Succeeded'] and app.status.health.status == 'Healthy' - oncePer: app.status.sync.revision - send: [app-sync-succeeded] -``` - -### oncePer - -The `oncePer` filed is supported like as follows. - -```yaml -apiVersion: argoproj.io/v1alpha1 -kind: Application -metadata: - annotations: - example.com/version: v0.1 -``` - -```yaml -oncePer: app.metadata.annotations["example.com/version"] -``` - -## Default Triggers - -You can use `defaultTriggers` field instead of specifying individual triggers to the annotations. - -```yaml -apiVersion: v1 -kind: ConfigMap -metadata: - name: argocd-notifications-cm -data: - # Holds list of triggers that are used by default if trigger is not specified explicitly in the subscription - defaultTriggers: | - - on-sync-status-unknown - - defaultTriggers.mattermost: | - - on-sync-running - - on-sync-succeeded -``` - -Specify the annotations as follows to use `defaultTriggers`. In this example, `slack` sends when `on-sync-status-unknown`, and `mattermost` sends when `on-sync-running` and `on-sync-succeeded`. - -```yaml -apiVersion: argoproj.io/v1alpha1 -kind: Application -metadata: - annotations: - notifications.argoproj.io/subscribe.slack: my-channel - notifications.argoproj.io/subscribe.mattermost: my-mattermost-channel -``` - -## Functions - -Triggers have access to the set of built-in functions. - -Example: - -```yaml -when: time.Now().Sub(time.Parse(app.status.operationState.startedAt)).Minutes() >= 5 -``` - -{!functions.md!} diff --git a/docs/troubleshooting-commands.md b/docs/troubleshooting-commands.md deleted file mode 100644 index 42b89c7e..00000000 --- a/docs/troubleshooting-commands.md +++ /dev/null @@ -1,213 +0,0 @@ -## argocd-notifications template get - -Prints information about configured templates - -``` -argocd-notifications template get [flags] -``` - -### Examples - -``` - -# prints all templates -argocd-notifications template get -# print YAML formatted app-sync-succeeded template definition -argocd-notifications template get app-sync-succeeded -o=yaml - -``` - -### Options - -``` - -h, --help help for get - -o, --output string Output format. One of:json|yaml|wide|name (default "wide") -``` - -### Options inherited from parent commands - -``` - --argocd-repo-server string Argo CD repo server address (default "argocd-repo-server:8081") - --argocd-repo-server-plaintext Use a plaintext client (non-TLS) to connect to repository server - --argocd-repo-server-strict-tls Perform strict validation of TLS certificates when connecting to repo server - --as string Username to impersonate for the operation - --as-group stringArray Group to impersonate for the operation, this flag can be repeated to specify multiple groups. - --certificate-authority string Path to a cert file for the certificate authority - --client-certificate string Path to a client certificate file for TLS - --client-key string Path to a client key file for TLS - --cluster string The name of the kubeconfig cluster to use - --config-map string argocd-notifications-cm.yaml file path - --context string The name of the kubeconfig context to use - --insecure-skip-tls-verify If true, the server's certificate will not be checked for validity. This will make your HTTPS connections insecure - --kubeconfig string Path to a kube config. Only required if out-of-cluster - -n, --namespace string If present, the namespace scope for this CLI request - --password string Password for basic authentication to the API server - --request-timeout string The length of time to wait before giving up on a single server request. Non-zero values should contain a corresponding time unit (e.g. 1s, 2m, 3h). A value of zero means don't timeout requests. (default "0") - --secret string argocd-notifications-secret.yaml file path. Use empty secret if provided value is ':empty' - --server string The address and port of the Kubernetes API server - --tls-server-name string If provided, this name will be used to validate server certificate. If this is not provided, hostname used to contact the server is used. - --token string Bearer token for authentication to the API server - --user string The name of the kubeconfig user to use - --username string Username for basic authentication to the API server -``` - -## argocd-notifications template notify - -Generates notification using the specified template and send it to specified recipients - -``` -argocd-notifications template notify NAME RESOURCE_NAME [flags] -``` - -### Examples - -``` - -# Trigger notification using in-cluster config map and secret -argocd-notifications template notify app-sync-succeeded guestbook --recipient slack:my-slack-channel - -# Render notification render generated notification in console -argocd-notifications template notify app-sync-succeeded guestbook - -``` - -### Options - -``` - -h, --help help for notify - --recipient stringArray List of recipients (default [console:stdout]) -``` - -### Options inherited from parent commands - -``` - --argocd-repo-server string Argo CD repo server address (default "argocd-repo-server:8081") - --argocd-repo-server-plaintext Use a plaintext client (non-TLS) to connect to repository server - --argocd-repo-server-strict-tls Perform strict validation of TLS certificates when connecting to repo server - --as string Username to impersonate for the operation - --as-group stringArray Group to impersonate for the operation, this flag can be repeated to specify multiple groups. - --certificate-authority string Path to a cert file for the certificate authority - --client-certificate string Path to a client certificate file for TLS - --client-key string Path to a client key file for TLS - --cluster string The name of the kubeconfig cluster to use - --config-map string argocd-notifications-cm.yaml file path - --context string The name of the kubeconfig context to use - --insecure-skip-tls-verify If true, the server's certificate will not be checked for validity. This will make your HTTPS connections insecure - --kubeconfig string Path to a kube config. Only required if out-of-cluster - -n, --namespace string If present, the namespace scope for this CLI request - --password string Password for basic authentication to the API server - --request-timeout string The length of time to wait before giving up on a single server request. Non-zero values should contain a corresponding time unit (e.g. 1s, 2m, 3h). A value of zero means don't timeout requests. (default "0") - --secret string argocd-notifications-secret.yaml file path. Use empty secret if provided value is ':empty' - --server string The address and port of the Kubernetes API server - --tls-server-name string If provided, this name will be used to validate server certificate. If this is not provided, hostname used to contact the server is used. - --token string Bearer token for authentication to the API server - --user string The name of the kubeconfig user to use - --username string Username for basic authentication to the API server -``` - -## argocd-notifications trigger get - -Prints information about configured triggers - -``` -argocd-notifications trigger get [flags] -``` - -### Examples - -``` - -# prints all triggers -argocd-notifications trigger get -# print YAML formatted on-sync-failed trigger definition -argocd-notifications trigger get on-sync-failed -o=yaml - -``` - -### Options - -``` - -h, --help help for get - -o, --output string Output format. One of:json|yaml|wide|name (default "wide") -``` - -### Options inherited from parent commands - -``` - --argocd-repo-server string Argo CD repo server address (default "argocd-repo-server:8081") - --argocd-repo-server-plaintext Use a plaintext client (non-TLS) to connect to repository server - --argocd-repo-server-strict-tls Perform strict validation of TLS certificates when connecting to repo server - --as string Username to impersonate for the operation - --as-group stringArray Group to impersonate for the operation, this flag can be repeated to specify multiple groups. - --certificate-authority string Path to a cert file for the certificate authority - --client-certificate string Path to a client certificate file for TLS - --client-key string Path to a client key file for TLS - --cluster string The name of the kubeconfig cluster to use - --config-map string argocd-notifications-cm.yaml file path - --context string The name of the kubeconfig context to use - --insecure-skip-tls-verify If true, the server's certificate will not be checked for validity. This will make your HTTPS connections insecure - --kubeconfig string Path to a kube config. Only required if out-of-cluster - -n, --namespace string If present, the namespace scope for this CLI request - --password string Password for basic authentication to the API server - --request-timeout string The length of time to wait before giving up on a single server request. Non-zero values should contain a corresponding time unit (e.g. 1s, 2m, 3h). A value of zero means don't timeout requests. (default "0") - --secret string argocd-notifications-secret.yaml file path. Use empty secret if provided value is ':empty' - --server string The address and port of the Kubernetes API server - --tls-server-name string If provided, this name will be used to validate server certificate. If this is not provided, hostname used to contact the server is used. - --token string Bearer token for authentication to the API server - --user string The name of the kubeconfig user to use - --username string Username for basic authentication to the API server -``` - -## argocd-notifications trigger run - -Evaluates specified trigger condition and prints the result - -``` -argocd-notifications trigger run NAME RESOURCE_NAME [flags] -``` - -### Examples - -``` - -# Execute trigger configured in 'argocd-notification-cm' ConfigMap -argocd-notifications trigger run on-sync-status-unknown ./sample-app.yaml - -# Execute trigger using my-config-map.yaml instead of 'argocd-notifications-cm' ConfigMap -argocd-notifications trigger run on-sync-status-unknown ./sample-app.yaml \ - --config-map ./my-config-map.yaml -``` - -### Options - -``` - -h, --help help for run -``` - -### Options inherited from parent commands - -``` - --argocd-repo-server string Argo CD repo server address (default "argocd-repo-server:8081") - --argocd-repo-server-plaintext Use a plaintext client (non-TLS) to connect to repository server - --argocd-repo-server-strict-tls Perform strict validation of TLS certificates when connecting to repo server - --as string Username to impersonate for the operation - --as-group stringArray Group to impersonate for the operation, this flag can be repeated to specify multiple groups. - --certificate-authority string Path to a cert file for the certificate authority - --client-certificate string Path to a client certificate file for TLS - --client-key string Path to a client key file for TLS - --cluster string The name of the kubeconfig cluster to use - --config-map string argocd-notifications-cm.yaml file path - --context string The name of the kubeconfig context to use - --insecure-skip-tls-verify If true, the server's certificate will not be checked for validity. This will make your HTTPS connections insecure - --kubeconfig string Path to a kube config. Only required if out-of-cluster - -n, --namespace string If present, the namespace scope for this CLI request - --password string Password for basic authentication to the API server - --request-timeout string The length of time to wait before giving up on a single server request. Non-zero values should contain a corresponding time unit (e.g. 1s, 2m, 3h). A value of zero means don't timeout requests. (default "0") - --secret string argocd-notifications-secret.yaml file path. Use empty secret if provided value is ':empty' - --server string The address and port of the Kubernetes API server - --tls-server-name string If provided, this name will be used to validate server certificate. If this is not provided, hostname used to contact the server is used. - --token string Bearer token for authentication to the API server - --user string The name of the kubeconfig user to use - --username string Username for basic authentication to the API server -``` - diff --git a/docs/troubleshooting-errors.md b/docs/troubleshooting-errors.md deleted file mode 100644 index 4861694b..00000000 --- a/docs/troubleshooting-errors.md +++ /dev/null @@ -1,46 +0,0 @@ - - -!!! important "This page has moved" - This page has moved to [https://argo-cd.readthedocs.io/en/latest/operator-manual/notifications/troubleshooting-errors//](https://argo-cd.readthedocs.io/en/latest/operator-manual/notifications/troubleshooting-errors//). Redirecting to the new page. - -## Failed to parse new settings - -### error converting YAML to JSON - -YAML syntax is incorrect. - -**incorrect:** - -```yaml -apiVersion: v1 -kind: ConfigMap -metadata: - name: argocd-notifications-cm -data: - service.slack: | - token: $slack-token - icon: :rocket: -``` - -**correct:** - -```yaml -apiVersion: v1 -kind: ConfigMap -metadata: - name: argocd-notifications-cm -data: - service.slack: | - token: $slack-token - icon: ":rocket:" -``` - -### service type 'xxxx' is not supported - -You need to check your argocd-notifications controller version. For instance, the teams integration is to support `v1.1.0` and more. - -## Failed to notify recipient - -### notification service 'xxxx' is not supported" - -You have not defined `xxxx` in `argocd-notifications-cm` or to fail to parse settings. diff --git a/docs/troubleshooting.md b/docs/troubleshooting.md deleted file mode 100644 index cd6d7f0f..00000000 --- a/docs/troubleshooting.md +++ /dev/null @@ -1,84 +0,0 @@ - - -!!! important "This page has moved" - This page has moved to [https://argo-cd.readthedocs.io/en/latest/operator-manual/notifications/troubleshooting//](https://argo-cd.readthedocs.io/en/latest/operator-manual/notifications/troubleshooting//). Redirecting to the new page. - -## Troubleshooting - -The `argocd-notifications` binary includes a set of CLI commands that helps to configure the controller -settings and troubleshoot issues. - -## Global flags -Following global flags are available for all sub-commands: - -* `config-map` - path to the file containing `argocd-notifications-cm` ConfigMap. If not specified -then the command loads `argocd-notification-cm` ConfigMap using the local Kubernetes config file. -* `secret` - path to the file containing `argocd-notifications-secret` ConfigMap. If not -specified then the command loads `argocd-notification-secret` Secret using the local Kubernetes config file. -Additionally, you can specify `:empty` value to use empty secret with no notification service settings. - -**Examples:** - -* Get list of triggers configured in the local config map: - -```bash -argocd-notifications trigger get \ - --config-map ./argocd-notifications-cm.yaml --secret :empty -``` - -* Trigger notification using in-cluster config map and secret: - -```bash -argocd-notifications template notify \ - app-sync-succeeded guestbook --recipient slack:argocd-notifications -``` - -## Kustomize - -If you are managing `argocd-notifications` config using Kustomize you can pipe whole `kustomize build` output -into stdin using `--config-map -` flag: - -```bash -kustomize build ./argocd-notifications | \ - argocd-notifications \ - template notify app-sync-succeeded guestbook --recipient grafana:argocd \ - --config-map - -``` - -## How to get it - -### On your laptop - -You can download `argocd-notifications` from the github [release](https://github.com/argoproj-labs/argocd-notifications/releases) -attachments. - -The binary is available in `argoprojlabs/argocd-notifications` image. Use the `docker run` and volume mount -to execute binary on any platform. - -**Example:** - -```bash -docker run --rm -it -w /src -v $(pwd):/src \ - argoprojlabs/argocd-notifications: \ - /app/argocd-notifications trigger get \ - --config-map ./argocd-notifications-cm.yaml --secret :empty -``` - -### In your cluster - -SSH into the running `argocd-notifications-controller` pod and use `kubectl exec` command to validate in-cluster -configuration. - -**Example** -```bash -kubectl exec -it argocd-notifications-controller- \ - /app/argocd-notifications trigger get -``` - -## Commands - -{!troubleshooting-commands.md!} - -## Errors - -{!troubleshooting-errors.md!} diff --git a/docs/upgrading/0.x-1.0.md b/docs/upgrading/0.x-1.0.md deleted file mode 100644 index 81aadb6b..00000000 --- a/docs/upgrading/0.x-1.0.md +++ /dev/null @@ -1,225 +0,0 @@ - - -!!! important "This page has moved" - This page has moved to [https://argo-cd.readthedocs.io/en/latest/operator-manual/notifications/](https://argo-cd.readthedocs.io/en/latest/operator-manual/notifications/). Redirecting to the new page. - -# v0.x to v1.0 - -The v1.0 release introduces a lot of new features and changes the format of configuration settings to improve usability. -However, most of the pre-v1.0 settings and annotations are still supported. So you can upgrade with a minimal set of manual changes -and migrate to new settings gradually. - -## Breaking Changes - -This section lists breaking changes that could not be done in a backward compatible way and corresponding upgrade steps: - -### Built-in triggers and templates are removed - -Built-in (hard-coded) triggers and template were replaced with [catalog](../catalog.md). - -**Why was it changed?** - -The built-in triggers and templates were meant to simplify onboarding. Instead of configuring everything from scratch user -could just use triggers and templates developed by the community. However one set of triggers and templates don't work for everyone. -So instead of baking it into binary triggers and templates now can be distributed as a simple YAML file. All built-in triggers -and templates were moved into [catalog/install.yaml](https://raw.githubusercontent.com/argoproj-labs/argocd-notifications/release-1.0/catalog/install.yaml) - -After upgrading make sure to either kubectl apply it: - -``` -kubectl apply -n argocd -f https://raw.githubusercontent.com/argoproj-labs/argocd-notifications/release-1.0/catalog/install.yaml -``` - -or include as a patch into your `kustomization.yaml` file: - -```yaml -apiVersion: kustomize.config.k8s.io/v1beta1 -kind: Kustomization - -resources: -- https://github.com/argoproj-labs/argocd-notifications/manifests/bot?ref=release-1.0 - -patchesStrategicMerge: -- https://raw.githubusercontent.com/argoproj-labs/argocd-notifications/release-1.0/catalog/install.yaml -``` - -### Webhook Subscriptions - -The webhook recipient annotation value had special format: `webhook:` (e.g. `on-app-synced.recipients.argocd-notifications.argoproj.io: webhook:github`). -In v1.0 the annotation value has to change to just `github` and `webhook:` prefix should be removed. - -**Why was it changed?** - -Previous way to configure notification services did not allow to give a custom service name, so you could configure only one Slack or email integation. -The webhook was an exception and relied on `webhook:` format to support multiple webhook types. The v1.0 allows giving a custom name to any service -and exception for webhook no longer required. - -## Upgrading To New Settings and Annotations - -### Notification Services - -The `notifiers.yaml` key of `argocd-notifications-secret` is replaced with `service.(.)` keys in `argocd-notifications-cm` ConfigMap. - -**Why was it changed?** - -The change allows to provide custom name to any service and enables support for more than one Slack/Email etc integation. - -**Before** - -```yaml -apiVersion: v1 -kind: Secret -metadata: - name: argocd-notifications-secret -stringData: - notifiers.yaml: | - email: - host: smtp.gmail.com - port: 587 - from: @gmail.com - username: @gmail.com - password: -``` - -**After** - -```yaml -apiVersion: v1 -kind: ConfigMap -metadata: - name: argocd-notifications-cm -data: - service.email: | - host: smtp.gmail.com - port: 587 - from: @gmail.com - username: $email-username - password: $email-password -``` - -Sensitive values like tokens and password are still stored in `argocd-notifications-secret` Secret and can be referenced as `$`. - -### Custom Triggers and Templates - -**Why was it changed?** - -The change allows to distribute templates and triggers as ConfigMap merge patch and enables templates/triggers catalogs. - -The custom triggers and templates are no longer stored in `config.yaml` format. Instead you can use `trigger.` and `template.` -keys. - -**Before** - -```yaml -apiVersion: v1 -kind: ConfigMap -metadata: - name: argocd-notifications-cm -data: - config.yaml: | - triggers: - - name: on-sync-status-unknown - condition: app.status.sync.status == 'Unknown' - template: app-sync-status - enabled: true - templates: - - name: app-sync-status - title: Application {{.app.metadata.name}} sync status is {{.app.status.sync.status}} - body: | - Application {{.app.metadata.name}} sync is {{.app.status.sync.status}}. - Application details: {{.context.argocdUrl}}/applications/{{.app.metadata.name}}. -``` - - -**After** - -```yaml -apiVersion: v1 -kind: ConfigMap -metadata: - name: argocd-notifications-cm -data: - # Triggers define the condition when the notification should be sent and list of templates required to generate the message - # Recipients can subscribe to the trigger and specify the required message template and destination notification service. - trigger.on-sync-status-unknown: | - - when: app.status.sync.status == 'Unknown' - send: [my-custom-template] - # Templates are used to generate the notification template message - template.app-sync-status: | - message: | - Application {{.app.metadata.name}} sync is {{.app.status.sync.status}}. - Application details: {{.context.argocdUrl}}/applications/{{.app.metadata.name}}. - email: - subject: Application {{.app.metadata.name}} sync status is {{.app.status.sync.status}} -``` - -### Trigger Definition - -Trigger fields has changed. The v1.0 trigger might include multiple conditions and multiple templates in each condition. - -**Why was it changed?** - -Multiple conditions allows to create condition [bundles](../triggers.md#conditions-bundles) that improves user experience. - -**Before** - -```yaml -name: on-sync-status-unknown -condition: app.status.sync.status == 'Unknown' -template: app-sync-status -enabled: true -``` - -**After** - -```yaml -- when: app.status.sync.status == 'Unknown' - send: [my-custom-template] -``` - -### Template Definition - -Template `title` and `body` fields have been replaced with `message` field. - - -**Before** - -```yaml -title: Application {{.app.metadata.name}} sync status is {{.app.status.sync.status}} -body: | - Application {{.app.metadata.name}} sync is {{.app.status.sync.status}}. - Application details: {{.context.argocdUrl}}/applications/{{.app.metadata.name}}. -``` - -**After** - -```yaml -message: | - Application {{.app.metadata.name}} sync is {{.app.status.sync.status}}. - Application details: {{.context.argocdUrl}}/applications/{{.app.metadata.name}}. -email: - subject: Application {{.app.metadata.name}} sync status is {{.app.status.sync.status}} -``` - -**Why was it changed?** - -The only service that uses `title` is Email/SMTP notification service. So that field was causing confusion. To remove the confusion `body` field was renamed to -`message` and `title` became Email specific field `email.subject`. - -### Recipient/Subscription Annotation - -The `.recipients.argocd-notifications.argoproj.io: :` annotation has been replaced -with `notifications.argoproj.io/subscribe..: ` annotation. - -**Why was it changed?** - -The goal is to generalize Argo CD Notifications settings and reuse the same format in other Argo projects. So we've reworked the annotation -and removed `argocd-notifications` part. - -**Before** - -`on-app-synced.recipients.argocd-notifications.argoproj.io: slack:my-channel` - -**After** - -`notifications.argoproj.io/subscribe.on-app-synced.slack: my-channel` diff --git a/mkdocs.yml b/mkdocs.yml index 5f202f7c..99c5b535 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -1,53 +1,5 @@ site_name: Argo CD Notifications repo_url: https://github.com/argoproj-labs/argocd-notifications strict: true -google_analytics: -- 'UA-105170809-5' -- 'auto' -theme: - name: material - palette: - primary: teal - font: - text: 'Work Sans' - logo: 'assets/logo.png' -extra_javascript: -- assets/versions.js -extra_css: -- assets/versions.css -markdown_extensions: -- codehilite -- admonition -- pymdownx.highlight -- pymdownx.superfences -- markdown_include.include: - base_path: docs -- toc: - permalink: true nav: - - Overview: index.md - - triggers.md - - templates.md - - subscriptions.md - - Notification Services: - - services/overview.md - - services/email.md - - services/github.md - - services/slack.md - - services/mattermost.md - - services/opsgenie.md - - services/grafana.md - - services/teams.md - - services/telegram.md - - services/webhook.md - - services/rocketchat.md - - catalog.md - - troubleshooting.md - - Bots: - - bots/overview.md - - bots/slack-bot.md - - bots/opsgenie-bot.md - - bots/telegram-bot.md - - monitoring.md - - Upgrading: - - upgrading/0.x-1.0.md + - Overview: index.md \ No newline at end of file