개요
ArgoCD Notification 기능을 활용하면 배포하는 애플리케이션에 대해 기본으로 작동할 트리거를 설정할 수 있습니다. 기본 트리거를 설정하면 모든 Application 객체나 Rollout 객체에 동일한 트리거를 한 번에 설정할 수 있어 설정 과정이 간소화됩니다.
default trigger 적용 전
1
2
3
4
5
6
7
8
9
10
11
# demo-hpa-rollout.yaml
apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
name: demo-hpa-rollout
namespace: argocd
annotations:
# 알림으로 받고자 하는 트리거 종류와 메세지 템플릿을 지정해야 한다.
notifications.argoproj.io/subscribe.on-hpa.slack-webhook: ""
notifications.argoproj.io/subscribe.on-rollout-completed.slack-webhook: ""
metadata.annotations
속성에 알림을 받고자 하는 트리거와 메세지 템플릿을 subscribe.[trigger].[webhook-name]
형식으로 작성해야 합니다.
default trigger 적용 후
1
2
3
4
5
6
7
8
9
10
# demo-hpa-rollout.yaml
apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
name: demo-hpa-rollout
namespace: argocd
annotations:
# 알림으로 받고자 하는 메세지 템플릿만 지정한다.
notifications.argoproj.io/subscribe.slack-webhook: ""
기본 트리거(default trigger)를 지정하면, 위와 같이 subscribe.[webhook-name]
형식으로 트리거 종류를 생략할 수 있습니다.
default trigger 적용하기
ArgoCD와 Argo Rollouts 모두 설정 방법은 동일하기 때문에 본문에서는 Argo Rollouts을 기준으로 작성했습니다.
Rollouts Notification ConfigMap 수정
notification-configmap
파일에서 data.defaultTriggers
속성에 기본적으로 알림을 받을 트리거를 입력합니다. 본문에서는 ConfigMap의 버전 관리를 위해 rollout-notifiaction-cm.yaml
파일을 별도로 생성해 설정합니다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
# rollout-notification-cm.yaml
apiVersion: v1
kind: ConfigMap
metadata:
name: argo-rollouts-notification-configmap
namespace: argo-rollouts
data:
# 기본으로 적용할 트리거 입력
defaultTriggers: |
- on-rollout-completed
# webhook 설정
service.webhook.slack-webhook: |
url: [webhook-url]
headers:
- name: Content-Type
value: application/json
# 메세지 템플릿 설정
template.rollout-completed: |
webhook:
slack-webhook:
method: POST
body: |
{
"username": "ArgoCD",
"icon_url": "https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcQAeUOKnPBZx5HFooCNRwRLeM_zgzLH_Sy7cQ&s",
"attachments": [{
"title": "Rollout has been completed.",
"color": "#18be52",
"fields": [
{
"title": "Strategy",
"value": "BlueGreenCanary",
"short": true
}
,
,
{
"title": "",
"value": "",
"short": true
}
]
}]
}
# 트리거가 보낼 메세지 템플릿 설정
trigger.on-rollout-completed: |
- send: [rollout-completed]
아래의 명령어를 실행해서 적용합니다.
1
kubectl apply -f rollout-notification-cm.yaml
Rollout 객체
Rollout 객체의 metadata.annotations
속성에 아래와 같이 알림 설정을 추가합니다. 여기서는 on-rollout-completed
트리거만 기본 트리거로 설정하고, on-hpa
트리거는 개별 적용하는 예시를 작성했습니다.
1
2
3
4
5
6
7
8
9
10
11
12
# demo-rollout.yaml
apiVersion: argoproj.io/v1alpha1
kind: Rollout
metadata:
annotations:
# on-rollout-completed 트리거만 default trigger로 적용
notifications.argoproj.io/subscribe.slack-webhook: ""
# on-hpa 트리거는 별도로 추가
notifications.argoproj.io/subscribe.on-hpa.slack-webhook: ""
...
마찬가지로 변경 사항을 적용한다.
1
kubectl apply -f demo-rollout.yaml
애플리케이션을 배포한 뒤 정상적으로 알림이 오는지 확인합니다.