구독

구독 (Subscriptions)

Argo CD 애플리케이션 이벤트 알림을 받으려면 notifications.argoproj.io/subscribe.<트리거>.<서비스>: <수신자> 어노테이션으로 구독을 정의해요. 개별 애플리케이션뿐 아니라 특정 Argo CD 프로젝트의 모든 애플리케이션이 구독하게 만들 수도 있고, ConfigMap의 subscriptions 필드로 전역 기본 구독을 설정할 수도 있어요.

출처: 문서

본문

Argo CD 애플리케이션 이벤트에 대한 구독은 notifications.argoproj.io/subscribe.<트리거>.<서비스>: <수신자> 어노테이션으로 정의할 수 있어요. 예를 들어 다음 어노테이션은 Argo CD 애플리케이션의 모든 성공적인 동기화(sync) 알림을 두 개의 Slack 채널에 구독해요.

apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
  annotations:
    notifications.argoproj.io/subscribe.on-sync-succeeded.slack: my-channel1;my-channel2

어노테이션 키는 다음 부분으로 구성돼요.

  • on-sync-succeeded — 트리거 이름
  • slack — 알림 서비스 이름
  • my-channel1;my-channel2 — 세미콜론으로 구분된 수신자 목록

Argo CD 프로젝트의 모든 애플리케이션에 구독을 만들려면 AppProject 리소스에 같은 어노테이션을 추가하면 돼요.

apiVersion: argoproj.io/v1alpha1
kind: AppProject
metadata:
  annotations:
    notifications.argoproj.io/subscribe.on-sync-succeeded.slack: my-channel1;my-channel2

기본 구독 (Default Subscriptions)

구독을 argocd-notifications-cm ConfigMap의 subscriptions 필드로 전역 설정할 수도 있어요. 기본 구독은 모든 애플리케이션에 적용되며, 트리거와 애플리케이션은 triggersselector 필드로 설정할 수 있어요.

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:[email protected]
      triggers:
      - on-sync-status-unknown
    # subscription restricted to applications with matching labels only
    - recipients:
      - slack:test3
      selector: test=true
      triggers:
      - on-sync-status-unknown

구독에서 웹훅(webhook)을 사용하고 싶다면 구독의 recipients 필드에 커스텀 웹훅 이름을 저장해야 해요.

apiVersion: v1
kind: ConfigMap
metadata:
  name: argocd-notifications-cm
data:
  service.webhook.<webhook-name>: |
    (snip)
  subscriptions: |
    - recipients:
      - <webhook-name>
      triggers:
      - on-sync-status-unknown

recipients에는 slack:test2처럼 서비스:수신자 형식이나 웹훅 이름을 넣어요. selector를 쓰면 특정 라벨을 가진 애플리케이션으로만 구독을 한정할 수 있어요.

더 알아보기 (Learn more)

  • 트리거(triggers) 문서에서 구독에 쓸 이벤트 이름(예: on-sync-succeeded)을 확인해 보세요.
  • 템플릿(templates)과 서비스(services) 문서를 함께 보면 수신자·메시지 형식을 맞출 수 있어요.