Webhook 및 이벤트 트리거

Webhook 및 이벤트 트리거

1️⃣ + Harbor 이벤트 구조 이해

Harbor는 다양한 **이벤트(Event)**가 발생했을 때 외부 시스템에 알릴 수 있도록 Webhook 기능을 제공합니다.

이 기능을 활용하면 이미지가 업로드되거나 삭제될 때 자동으로 CI/CD 파이프라인, 감시 시스템, Slack 알림, Argo CD 배포 트리거 등 다양한 자동화가 가능합니다.


1. 지원하는 주요 이벤트

이벤트 종류 설명
PUSH_ARTIFACT 이미지가 Harbor에 Push됨
PULL_ARTIFACT 이미지가 Harbor에서 Pull됨
DELETE_ARTIFACT 이미지가 삭제됨
SCAN_COMPLETED 보안 스캔이 완료됨
TAG_RETENTION 이미지 삭제 정책 실행됨
REPLICATION 복제 작업 수행됨

2. Harbor의 이벤트 처리 흐름

이미지 Push
Harbor 내부 이벤트 감지
Webhook URL로 HTTP POST 요청 전송
CI/CD 혹은 알림 시스템에서 후속 작업 수행

✅ 아키텍처 다이어그램

         [User]
           ↓
    docker push myapp:1.0
           ↓
      ┌────────────┐
      │  Harbor    │
      │ Webhook    │─────▶ POST JSON Payload ─────▶ [GitLab CI, Jenkins, Argo CD 등]
      └────────────┘

2️⃣ + Webhook 등록 → CI/CD 트리거

Harbor에서는 프로젝트 단위로 Webhook을 설정할 수 있습니다.


1. Webhook 등록 방법

Projects → [프로젝트명] → Webhooks → NEW WEBHOOK

항목 설명
Name 식별 가능한 Webhook 이름
Endpoint URL 이벤트를 받을 외부 서비스의 HTTP URL
Auth Header 선택적으로 인증 토큰 설정 가능
Event Filter 트리거할 이벤트 선택 가능

2. Webhook Payload 예시 (PUSH_ARTIFACT)

{
  "type": "PUSH_ARTIFACT",
  "occur_at": 1712970000,
  "operator": "developer1",
  "event_data": {
    "repository": {
      "name": "myapp",
      "namespace": "dev-team",
      "repo_full_name": "dev-team/myapp"
    },
    "resources": [
      {
        "digest": "sha256:abcd1234...",
        "tag": "v1.0",
        "resource_url": "harbor.example.com/dev-team/myapp:v1.0"
      }
    ]
  }
}

3. GitLab CI와 연동 예시

# .gitlab-ci.yml (WebHook를 통해 트리거될 파이프라인)
stages:
  - deploy

deploy-job:
  stage: deploy
  script:
    - echo "New image pushed: $CI_COMMIT_REF_NAME"
    - kubectl rollout restart deployment myapp

3️⃣ + GitLab / Jenkins / Argo CD 연동 예시


✅ 1. GitLab CI 연동

  • GitLab 프로젝트의 CI/CD 설정에서 Trigger Token 발급
  • Harbor Webhook에 GitLab Trigger URL 등록
https://gitlab.example.com/api/v4/projects/1234/trigger/pipeline?token=XXXXXX

✅ 2. Jenkins 연동

  • Jenkins Job에서 Generic Webhook Trigger Plugin 설치
  • URL 등록 후 Harbor에서 Webhook으로 연결
http://jenkins.local/job/my-deploy/buildWithParameters?token=abcdef

✅ 3. Argo CD 연동

  • Argo CD는 이미지 Push 이벤트를 기반으로 자동 배포가 가능
  • Harbor Webhook이 Argo CD의 Image Updater 또는 Kustomize Controller를 트리거
image:
  repository: harbor.example.com/dev/myapp
  tag: v1.0
  • Argo CD Image Updater는 Harbor 레지스트리를 주기적으로 감시하거나 Webhook으로 수신 가능

🧠 정리 요약

항목 내용
이벤트 기반 자동화 이미지 Push, 삭제, 스캔 완료 등 다양한 이벤트 제공
외부 시스템 연동 GitLab, Jenkins, Argo CD, Slack 등 Webhook 통해 연동 가능
실시간 자동 배포 CI/CD 파이프라인 트리거 또는 Kubernetes 롤링 배포 가능
실습 추천 Harbor + GitLab 또는 Harbor + Jenkins 연동부터 실습 시작 추천

RSS Feed
마지막 수정일자