알림 개요
알림 개요 (Notifications Overview)
Argo CD 알림(Notifications)은 Argo CD 애플리케이션을 지속적으로 모니터링하며 애플리케이션 상태의 중요한 변화를 사용자에게 알릴 수 있는 유연한 방법을 제공해요. 트리거(triggers)와 템플릿(templates)이라는 유연한 메커니즘으로 언제 알림을 보낼지, 그리고 알림 내용을 함께 구성할 수 있어요.
출처: 문서
본문
Argo CD 알림은 Argo CD 애플리케이션을 지속적으로 모니터링하며 애플리케이션 상태의 중요한 변화를 사용자에게 알릴 수 있는 유연한 방법을 제공해요. 트리거와 템플릿이라는 유연한 메커니즘을 사용해 언제 알림을 보낼지, 그리고 알림 내용을 구성할 수 있어요. Argo CD 알림에는 유용한 트리거와 템플릿의 카탈로그(catalog)가 포함되어 있어요. 그래서 새로 만들지 않고 그대로 사용할 수 있어요.
시작하기 (Getting Started)
-
카탈로그에서 트리거와 템플릿 설치
kubectl apply -n argocd --server-side --force-conflicts -f https://raw.githubusercontent.com/argoproj/argo-cd/stable/notifications_catalog/install.yaml -
argocd-notifications-secretsecret에 이메일 사용자 이름과 비밀번호 토큰 추가EMAIL_USER=<your-username> PASSWORD=<your-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 -
이메일 알림 서비스 등록
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 }" }}' -
Argo CD 애플리케이션 또는 프로젝트에
notifications.argoproj.io/subscribe.on-sync-succeeded.slack어노테이션을 추가해 알림을 구독:kubectl patch app <my-app> -n argocd -p '{"metadata": {"annotations": {"notifications.argoproj.io/subscribe.on-sync-succeeded.slack":"<my-channel>"}}}' --type merge
애플리케이션 하나를 동기화해 보고, 동기화가 완료되면 알림을 받는지 확인해 보세요.
네임스페이스 기반 구성 (Namespace based configuration)
Argo CD 알림을 설치하는 일반적인 방법 중 하나는 전체 클러스터를 관리하기 위해 전용 네임스페이스에 설치하는 거예요. 이 경우 관리자만 일반적으로 해당 네임스페이스에서 알림을 구성할 수 있어요. 하지만 어떤 경우에는 최종 사용자가 자신의 Argo CD 애플리케이션에 대한 알림을 구성할 수 있게 하는 것이 필요해요. 예를 들어 최종 사용자가 접근 권한이 있고 자신의 Argo CD 애플리케이션이 실행 중인 네임스페이스에서 알림을 구성할 수 있게 하는 거예요.
이 기능은 any 네임스페이스의 애플리케이션(applications in any namespace)을 기반으로 해요. 자세한 내용은 applications in any namespace 페이지를 참고하세요.
이 기능을 활성화하려면 Argo CD 관리자가 argocd-notification-controller 워크로드를 재구성해 컨테이너 시작 명령에 --application-namespaces와 --self-service-notification-enabled 파라미터를 추가해야 해요. --application-namespaces는 Argo CD 애플리케이션이 있는 네임스페이스 목록을 제어해요. --self-service-notification-enabled는 이 기능을 켜요.
두 시작 파라미터 모두 각 워크로드의 매니페스트를 변경하는 대신 argocd-cmd-params-cm ConfigMap에서 application.namespaces와 notificationscontroller.selfservice.enabled를 지정해 편리하게 설정하고 동기화 상태를 유지할 수 있어요. 예를 들어:
apiVersion: v1
kind: ConfigMap
metadata:
name: argocd-cmd-params-cm
data:
application.namespaces: app-team-one, app-team-two
notificationscontroller.selfservice.enabled: "true"
다른 알림 컨트롤러 시작 설정도 같은 방식으로 관리할 수 있어요. 알림이 많은 설치 환경에서는 notificationscontroller.processors.count가 워커 동시성을 구성하며 --processors-count 시작 플래그에 매핑돼요. 예를 들어:
apiVersion: v1
kind: ConfigMap
metadata:
name: argocd-cmd-params-cm
data:
notificationscontroller.processors.count: "4"
이 기능을 사용하려면 Argo CD 애플리케이션이 있는 네임스페이스에 argocd-notifications-cm이라는 configmap과 필요한 경우 argocd-notifications-secret secret을 배포할 수 있어요.
이렇게 구성하면 컨트롤러가 컨트롤러 수준 구성(컨트롤러와 같은 네임스페이스에 있는 configmap)과 Argo CD 애플리케이션이 있는 동일한 네임스페이스에 있는 구성을 모두 사용해 알림을 보내요.
예: 컨트롤러 수준 구성이 Slack만 지원할 때 애플리케이션 팀이 PagerDutyV2를 사용해 알림을 받으려고 해요.
Argo CD 애플리케이션이 있는 네임스페이스에 다음 두 리소스가 배포돼요.
apiVersion: v1
kind: ConfigMap
metadata:
name: argocd-notifications-cm
data:
service.pagerdutyv2: |
serviceKeys:
my-service: $pagerduty-key-my-service
...
apiVersion: v1
kind: Secret
metadata:
name: argocd-notifications-secret
type: Opaque
data:
pagerduty-key-my-service: <pd-integration-key>
Argo CD 애플리케이션에 다음 구독이 있으면 사용자는 PagerDuty에서 애플리케이션 동기화 실패 메시지를 받아요.
apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
annotations:
notifications.argoproj.io/subscribe.on-sync-failed.pagerdutyv2: "<serviceID for Pagerduty>"
참고
동일한 알림 서비스와 트리거가 컨트롤러 수준 구성과 애플리케이션 수준 구성에 모두 정의되어 있으면, 각자의 구성에 따라 두 알림이 모두 전송돼요.
--self-service-notification-enable 플래그가 켜져 있으면 알림 템플릿 내에서 secret 정의 및 사용 기능은 사용할 수 없어요.
더 알아보기 (Learn more)
- 사용 가능한 트리거와 템플릿 전체 목록은 알림 카탈로그(catalog) 문서를 참고하세요.
- 실제 구성 예제를 보고 싶다면 알림 예제(examples) 문서를 함께 보세요.