본문 바로가기
kubenetes

Argocd mail notification 설정: Multiple Sources

by kyeongseo.oh 2024. 9. 8.

argocd mail notification 설정을 적용한다.

 

1. ArgoCD Notifications 템플릿 적용

아래 커맨드를 통해 argocd-notifications-cm에 메일 템플릿을 적용한다.

kubectl apply -n argocd -f https://raw.githubusercontent.com/argoproj-labs/argocd-notifications/stable/catalog/install.yaml

 

※ 주의

기본 제공되는 yaml 파일은 단일 소스 설정만 지원하기에, 멀티소스에서 사용하기 위해서는 argocd-notifications-cm ConfigMap을 수정해야 한다. 수정 없이 멀티 소스 설정에서 사용하면 다음과 같은 오류가 발생한다.

time="2024-09-07T15:50:12Z" level=error msg="Failed to notify recipient {gmail kyeongseo96@gmail.com} defined in resource argocd/mlflow-application: template: app-sync-running:14:40: executing \"app-sync-running\" at <call .repo.RepoURLToHTTPS>: error calling call: arg 0: value is nil; should be of type string using the configuration in namespace argocd" resource=argocd/mlflow-application

 

2. Multi-Sources 사용을 위한 argocd-notifications-cm ConfigMap 수정

멀티 소스 설정을 사용하는 경우, 다음 단계를 따라 ConfigMap을 수정한다.

 

2-1. 아래 커맨드를 사용해 ConfigMap 편집 모드에 진입한다.

kubectl edit -n argocd cm argocd-notifications-cm

 

2-2. 모든 템플릿에서 다음 부분을 찾아 삭제한다.

"uri":"{{.app.spec.source.repoURL | call .repo.RepoURLToHTTPS}}"

 

3. argocd-notifications-cm에 SMTP 정보를 추가한다.

3-1. 아래 커맨드를 사용해 ConfigMap 편집 모드에 진입한다.

kubectl edit -n argocd cm argocd-notifications-cm

 

3-2. Gmail SMTP 설정

service.email.gmail에서 gmail은 SMTP 서비스의 식별자로 임의로 이름을 지정할 수 있다. 여러 SMTP 설정을 사용할 경우 이 식별자를 통해 각 설정을 구분한다.

apiVersion: v1
data:
  service.email.gmail: |
    host: smtp.gmail.com
    port: 587
    username: kyeongseo96@gmail.com
    password: 앱비밀번호 입력
    from: kyeongseo96@gmail.com

 

3-3. 커스텀 SMTP 서버 설정

service.email.mysmtp에서 mysmtp는 SMTP 서비스의 식별자로 임의로 이름을 지정할 수 있다. 여러 SMTP 설정을 사용할 경우 이 식별자를 통해 각 설정을 구분한다.

apiVersion: v1
data:
  service.email.mysmtp: |
    host: 10.0.1.118
    port: 1025
    from: kyeongseo.oh@data-dynamics.io

 

4. argocd application에서 notification 설정을 진행한다.

4-1. UI에서 notification 설정

1. Application 탭 클릭 후 notification을 설정하려는 Application을 클릭한다.

2. DETAILS 버튼을 클릭한 후 SUMMARY 탭에서 EDIT 버튼을 클릭한다.

 

3. NOTIFICATION SUBSCRIPTIONS에서 각 이벤트에 따라 알람을 설정한다.

 

4-2. yaml에서 notification 설정

Application yaml 파일에 metadata.annotations에 notification 설정을 추가한다. on-sync-running.gmail의 gmail은 3-2에서 설정한 gmail smtp 식별자이다.

apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
  annotations:
    notifications.argoproj.io/subscribe.on-sync-running.gmail: kyeongseo96@gmail.com
    notifications.argoproj.io/subscribe.on-sync-succeeded.gmail: kyeongseo96@gmail.com

 

5. Mail Notification 확인

메일로 notification이 오는 것을 확인한다.

댓글