ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • K3S로 프로젝트 구성하기 - 6
    DevOps/K8s 2023. 6. 8. 22:40
    빌드,이미지 생성, 배포시 슬랙 메시지 적용

    1. 젠킨스 적용

    1-1 슬랙 접속

    아래 앱에서 앱추가를 클릭하여 Jenkins를 입력한다.

     

     

    앱을 추가해준다.

     

     

    원하는 채널에 추가한다.

     

     

    이후 페이지에서 Integration Token Credential ID 를 복사한다.

     

    1-2 젠킨스에 슬랙 플러그인 설치

     

    slack 플러그인

     

    1-3 젠킨스에 슬랙토큰 입력

     

    이전에 복사한 토큰 정보 입력

     

    slack토큰 입력

     

    1-4 젠킨스 설정에 슬랙 정보 설정

     

     

    1-5 프로젝트에 슬랙알림 설정

     

     

    advance를 눌러서 커밋 내용과 추가 정보를 설정할 수 있다. 

     

     

    프로젝트가 현재 두개로 생성 되었기때문에 둘다 설정해준다.

    빌드시 다음과같이 메시지 알림이 오는지 확인해본다.

     

     

    2. argoCD 적용

     

    2-1 슬랙에 새로운 앱 만들기

    https://api.slack.com/apps?new_app=1 

    Create New App -> From scratch클릭

     

    https://api.slack.com/apps/

    위 링크 클릭후 방금 생성한 앱을 클릭 -> OAuth & Permissions 클릭

    토큰 복사 해두기

     

     

    아래로 스크롤 후 Scope에서 add an OAuth Scope에 chat:write 를 추가한다.

     

     

    2-2 슬랙토큰 입력

     

    입력전 확인 해봐야할 것.

    // argocd 네임스페이스로 이동
    k ns argocd
    
    // notification-controller가 있는지 확인
    // 전에 helm으로 설치하니 이미 같이 install 되어있었다.
    k get deployments.apps

     

    // 이미 생성되어있는경우 수정한다.
    // 아닌경우 새로운 yaml을 생성해서 적용해야한다.
    k edit secret argocd-notifications-secret
    
    apiVersion: v1
    kind: Secret
    metadata:
      name: argocd-notifications-secret
    // 수정할 부분 start
    stringData:
      slack-token: 위에서 복사한 슬랙 토큰
    // 수정할 부분 end

     

    2-2  configmap 수정

    템플릿에 메시지 커스텀, 기본 트리거로만 슬랙알림 설정

     

    k edit configmap argocd-notifications-cm
    
    apiVersion: v1
    data:
      context: |
        argocdUrl:
    // 수정할 부분 start
      defaultTriggers: |
        - on-deployed
      service.slack: |
        token: $slack-token
      template.app-deployed: |
        message: |
          Application {{.app.metadata.name}} is now running new version of deployments manifests.
        slack:
          attachments: |
            [{
              "title": "{{ .app.metadata.name}}",
              "title_link":"{{.context.argocdUrl}}/applications/{{.app.metadata.name}}",
              "color": "#18be52",
              "fields": [
              {
                "title": "Sync Status",
                "value": "{{.app.status.operationState.phase}}",
                "short": true
              },
              {
                "title": "Repository",
                "value": "{{.app.spec.source.repoURL}}",
                "short": true
              },
              {
                "title": "Revision",
                "value": "{{.app.status.sync.revision}}",
                "short": true
              }
              {{range $index, $c := .app.status.conditions}}
              {{if not $index}},{{end}}
              {{if $index}},{{end}}
              {
                "title": "{{$c.type}}",
                "value": "{{$c.message}}",
                "short": true
              }
              {{end}}
              ]
            }]
      trigger.on-deployed: |
        - description: Application is synced and healthy. Triggered once per commit.
          send:
          - app-deployed
          when: app.status.operationState.phase in ['Succeeded'] and app.status.health.status == 'Healthy'
     // 수정할 부분 end
    kind: ConfigMap

     

    2-3 슬랙알림 보낼 어플 설정

     

    // slack 알림을 보낼 어플에 설정
    kubectl patch app ecommerce-dev -n argocd -p '{"metadata": {"annotations": {"notifications.argoproj.io/subscribe.on-deployed.slack":"cd-pods"}}}' --type merge

     

    argoCD에서 Sync수동시 sync버튼 클릭 or 자동 이면 슬랙에 알림 전달 된다.

     

    'DevOps > K8s' 카테고리의 다른 글

    K8S HA(멀티 마스터 노드) 구성하기  (0) 2023.10.16
    K3S로 프로젝트 구성하기 - 7  (0) 2023.06.20
    K3S로 프로젝트 구성하기 - 5  (0) 2023.06.08
    K3S로 프로젝트 구성하기 - 4  (0) 2023.06.08

    댓글

Designed by Tistory.