LoginSignup
0
0

More than 1 year has passed since last update.

ArgoCD Notificationsを利用する

Last updated at Posted at 2022-10-24

はじめに

Amazon EKSでArgoCD Notificationsを利用する方法をまとめます。

Mac環境を想定しています。
今回はSlackに通知をするようにします。

実行環境の準備

  1. AWS CLIの設定
    AWS CloudFormationを動かすためのAWS CLIの設定を参考にしてください。

  2. EKSクラスタの構築
    Macでeksctlを利用してAmazon EKSのクラスターを構築するを参考にしてください。

  3. EKSのコンテキストの設定
    MacにてAmazon EKSの設定をするを参考にしてください。

  4. Helmの設定
    Amazon EKSでHelmを利用するを参考にしてください。

  5. ArgoCDの設定
    Amazon EKSでArgoCDを利用するを参考にしてください。

Slack Appの作成

  1. Slack Appを作成する
    Slack apiにアクセスし、Slack Appを作成し、ワークスペーにインストールする。
    また、OAuthトークンを発行する。

    ※作成方法Slack Configurationを参考にしてください。
    ※OAuthトークン例: xoxb-0000000000000-0000000000000-XXXXXXXXXXXXXXXXXXXXXXXX

  2. インストールしたアプリを利用するSlackチェンネルに登録する

  3. Slack通知のテスト
    OAuthトークンSlackチェンネル名を設定する
    chat.postMessageを参考にしてください。

    curl -X POST 'https://slack.com/api/chat.postMessage' \
      -d 'token=xoxb-0000000000000-0000000000000-XXXXXXXXXXXXXXXXXXXXXXXX' \
      -d 'channel=#${Slackチャンネル名}' \
      -d 'text=*Test*'
    

環境設定

※事前にKubernetesクラスターのコンテキストの設定をします。
※ArgoCDのインストールが必要です。

  1. トリガーとテンプレートをクラスターに適用する

    kubectl apply -n argocd -f https://raw.githubusercontent.com/argoproj/argo-cd/stable/notifications_catalog/install.yaml
    
  2. argocd-notifications-secret.yamlを作成する
    ※SlackのOAuthトークンを設定する

    argocd-notifications-secret.yaml
    apiVersion: v1
    kind: Secret
    metadata:
      name: argocd-notifications-secret
      namespace: argocd
    stringData:
      notifiers.yaml: |
        slack:
          token: xoxb-0000000000000-0000000000000-XXXXXXXXXXXXXXXXXXXXXXXX
    type: Opaque
    
  3. クラスターに適用する

    kubectl apply -f argocd-notifications-secret.yaml
    

[サンプル] guestbook-goのマニフェスト

guestbook-goを構築する。

  1. guestbook-go.yaml を作成する
    Slackチェンネル名を設定する

    guestbook-go.yaml
    apiVersion: argoproj.io/v1alpha1
    kind: Application
    metadata:
      name: guestbook
      namespace: argocd
      finalizers:
        - resources-finalizer.argocd.argoproj.io
      annotations:
        notifications.argoproj.io/subscribe.on-sync-succeeded.slack: ${Slackのチャンネル名}
    spec:
      project: default
      source:
        repoURL: https://github.com/kubernetes/examples.git
        path: guestbook-go
      destination:
        server: 'https://kubernetes.default.svc'
        namespace: guestbook
      syncPolicy:
        syncOptions:
        - CreateNamespace=true
        automated:
          prune: true
          selfHeal: true
    
  2. クラスターに適用する

    kubectl apply -f guestbook-go.yaml
    

クリーンアップ

  1. クラスターから削除する

    kubectl delete -f guestbook-go.yaml
    
    kubectl delete -f argocd-notifications-secret.yaml
    
    kubectl delete -n argocd -f https://raw.githubusercontent.com/argoproj/argo-cd/stable/notifications_catalog/install.yaml
    

デフォルトトリガーを利用する

Default Triggersを参考にしてください。

  1. ConfigMapのdefaultTriggersにトリガーをまとめる。

    argocd-notifications-cm.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
        - on-sync-running
        - on-sync-failed
        - on-sync-succeeded
        - on-deployed
    
  2. ArgoCDのApplicationマニフェストのアノテーションにはトリガーを記載しなくてすみます。

    argocd.yaml
    apiVersion: argoproj.io/v1alpha1
    kind: Application
    metadata:
      annotations:
        notifications.argoproj.io/subscribe.slack: ${Slackのチャンネル名}
    
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0