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 연동부터 실습 시작 추천 |
마지막 수정일자