Rocket.Chat 알림 서비스

Rocket.Chat 알림 서비스 (Rocket.Chat)

Rocket.Chat으로 알림을 보내려면 bot 역할의 사용자를 만들고 그 자격 증명을 Secret에 저장한 뒤 설정 맵에서 Rocket.Chat 연동을 구성하면 돼요. 구독할 때는 채널/팀/사용자 앞에 #@를 붙여야 해요.

출처: 문서

본문

파라미터 (Parameters)

Rocket.Chat 알림 서비스 구성에는 다음 설정이 포함돼요:

  • email - Rocket.Chat 사용자의 SAMAccountName
  • password - Rocket.Chat 사용자의 비밀번호
  • alias - 메시지를 게시할 때 사용할 선택적 별칭
  • icon - 선택적 메시지 아이콘
  • avatar - 선택적 메시지 아바타
  • serverUrl - 선택적 Rocket.Chat 서버 URL

구성 (Configuration)

  1. RocketChat 인스턴스에 로그인해요
  2. 사용자 관리로 이동해요

2

  1. bot 역할로 새 사용자를 추가해요. Require password change 체크박스는 체크되지 않아야 한다는 점도 유의하세요

3

  1. bot 사용자로 생성한 사용자 이름과 비밀번호를 복사해요
  2. 이 예시에서는 my_channel이라는 공개 또는 비공개 채널, 또는 팀을 만들어요
  3. 봇을 이 채널에 추가해요. 그렇지 않으면 동작하지 않아요
  4. 이메일과 비밀번호를 argocd-notifications-secret Secret에 저장해요
apiVersion: v1
kind: Secret
metadata:
  name: <secret-name>
stringData:
  rocketchat-email: <email>
  rocketchat-password: <password>
  1. 마지막으로 이 자격 증명을 사용해 argocd-configmap 설정 맵에서 RocketChat 연동을 구성해요:
apiVersion: v1
kind: ConfigMap
metadata:
  name: argocd-notifications-cm
data:
  service.rocketchat: |
    email: $rocketchat-email
    password: $rocketchat-password
  1. Rocket.Chat 연동을 위한 구독을 만들어요:

참고: 채널, 팀 또는 사용자 앞에는 #@를 붙여야 해요. 그렇지 않으면 대상을 방 ID로 해석해요

apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
  annotations:
    notifications.argoproj.io/subscribe.on-sync-succeeded.rocketchat: #my_channel

템플릿 (Templates)

알림 템플릿은 RocketChat 첨부(attachments)로 커스터마이즈할 수 있어요.

참고: Rocketchat의 Attachments 구조는 Slack attachments 기능과 동일해요.

TODO: @sergeyshevch Need to add screenshot with RocketChat attachments 메시지 첨부는 rocketchat 필드 아래 attachments 문자열 필드에 지정할 수 있어요:

template.app-sync-status: |
  message: |
    Application {{.app.metadata.name}} sync is {{.app.status.sync.status}}.
    Application details: {{.context.argocdUrl}}/applications/{{.app.metadata.name}}.
  rocketchat:
    attachments: |
      [{
        "title": "{{.app.metadata.name}}",
        "title_link": "{{.context.argocdUrl}}/applications/{{.app.metadata.name}}",
        "color": "#18be52",
        "fields": [{
          "title": "Sync Status",
          "value": "{{.app.status.sync.status}}",
          "short": true
        }, {
          "title": "Repository",
          "value": "{{.app.spec.source.repoURL}}",
          "short": true
        }]
      }]

더 알아보기 (Learn more)