Настройка уведомлений ArgoCD Slack

Jan 12 2023
Получайте уведомления обо всех ваших перемещениях в Argo :) 1- Создайте приложение Slack, используя указанный ниже URL. Затем выберите «С нуля». Введите имя приложения, например «argocd», и выберите рабочее пространство Slack, как показано ниже.

Получайте уведомления обо всех ваших перемещениях в Argo :)

ArgoCD отправляет уведомление в Slack

1- Создайте приложение Slack, используя указанный ниже URL-адрес.

https://api.slack.com/apps?new_app=1

Затем выберите «С нуля».

Введите имя приложения, например «argocd», и выберите рабочее пространство Slack, как показано ниже.

После создания приложения перейдите кEnter OAuth & Permissions & Choose Permissions

Теперь добавьте область для этого бота (приложение argocd), поэтому пока выберите Две области .

Разрешение бота

После настройки Scope прокрутите вверх, нажмите кнопку «Установить приложение в рабочую область» и подтвердите установку.

После завершения установки скопируйте токен OAuth.

Скопируйте токен авторизации и сохраните его в безопасном месте.

2- Теперь создайте Slack-канал — например, argocd

Важно. Просмотрите свой канал argocd и добавьте бота, созданного на предыдущем шаге, в данном случае имя бота — «argocd».

### Если вы забудете добавить это, вы НЕ будете получать уведомления. ###

Добавьте своего бота в свой канал Slack, если хотите получать уведомления

После добавления бота в канал Slack. Нам нужно внести некоторые изменения в файлы конфигурации ArgoCD .

3- Изменения конфигурации ArgoCD.

Предполагая, что ваш слабый токен — xoxp-12345678912345–5467834251-jGQASEDJGNCDHTIv9ZcY

В конфигурации argocd найдите файл Secret argocd-notifications-secret.

apiVersion: v1
kind: Secret
metadata:
  name: argocd-notifications-secret
stringData:
  slack-token: "xoxp-12345678912345–5467834251-jGQASEDJGNCDHTIv9ZcY"

Теперь применить—

kubectl apply -f argocd-notifications-secret.yaml

apiVersion: v1
kind: ConfigMap
metadata:
  name: argocd-notifications-cm
data:
  service.slack: |
    token: $slack-token  # use as it is 
  defaultTriggers: |
    - on-deployed
  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' and app.status.sync.status == 'Synced'
  template.app-deployed: |
    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}}
          ]
        }]

Теперь подайте заявку —

kubectl apply -f argocd-notifications-cm.yaml

Откройте файл приложения службы, например приведенный ниже, и добавьте аннотацию Slack.

annotations:
   notifications.argoproj.io/subscribe.on-deployed.slack: argocd  #Slack Channel name
apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
  name: ms-echoserver-application  
  namespace: argocd
  annotations:
    notifications.argoproj.io/subscribe.on-deployed.slack: argocd  #Slack Channel name
    
    argocd-image-updater.argoproj.io/image-list: myalias=gcr.io/project01/ms-echoserver:dev     #Write repository name
    argocd-image-updater.argoproj.io/myalias.pull-secret: pullsecret:argocd/argocd-gcr-secret  # You can remove this annotation if you have already configured the gcr secret and are using the same secret to retrieve all GCR images in your deployments.
    argocd-image-updater.argoproj.io/myalias.update-strategy: digest #There are several ways to update the image, but I'm using digest.
    argocd-image-updater.argoproj.io/write-back-method: git  # We don't need the secret as mentioned in argocd doc because we already set it up via argocd console if you're using the same git repo.
    argocd-image-updater.argoproj.io/git-branch: main 
    argocd-image-updater.argoproj.io/myalias.force-update: "true"

Тестирование -

Теперь разверните свой сервис и протестируйте уведомление. Я развертываю ms-echoserver-application.

слабое уведомление

Нажми на меня-

Полное руководство по установке ArgoCD.

ArgoCD High Availability (HA) [готов к производству].

Настройка входа ArgoCD

Настройка ArgoCD Окта.

Средство обновления изображений ArgoCD

Ресурсные хуки ArgoCD.

Надеюсь, этот пост будет информативным и полезным для вас :)

От меня Кофе ← — — — Если вам нравится блог, пожалуйста, хлопните мне в ладоши : ) и подпишитесь на меня, чтобы узнать больше такого контента.

Ваши аплодисменты мотивируют меня продолжать писать такие блоги.