
📘 Harbor Native Replication 3.5단계
온프레미스에서 도메인·인증서·IP는 어떻게 구성할까?
Harbor를 온프레미스 Kubernetes에 구축할 때 많이 헷갈리는 부분이 있습니다.
- Harbor 도메인은 어디에 등록할까?
- HTTPS 인증서는 어디에 적용할까?
- Worker Node가 바뀌면 IP도 계속 바뀌지 않을까?
결론부터 말하면 Harbor를 특정 Worker Node IP에 직접 연결하지 않고, 고정된 VIP 또는 LoadBalancer IP를 앞단에 두는 방식이 일반적입니다.
🌐 1. Harbor 도메인은 어디에 등록할까?
사내에서만 사용하는 Harbor라면 보통 사내 DNS에 등록합니다.
예를 들어:
harbor-prod.company.com → 10.10.10.100
harbor-dr.company.com → 10.20.10.100
여기서 10.10.10.100은 Worker Node IP가 아니라 Harbor 서비스용 고정 VIP입니다.
전체 흐름은 다음과 같습니다.
harbor-prod.company.com
↓
사내 DNS
↓
VIP 10.10.10.100
↓
LoadBalancer
↓
Ingress
↓
Harbor
개발자나 Kubernetes에서는 항상:
docker login harbor-prod.company.com
처럼 도메인만 사용하면 됩니다.
🔐 2. HTTPS 인증서는 어디에 등록할까?
Harbor는 운영환경에서 HTTPS 사용을 권장합니다.
https://harbor-prod.company.com
따라서 인증서에도 해당 도메인이 포함되어 있어야 합니다.
SAN
harbor-prod.company.com
인증서를 적용하는 위치는 크게 두 가지입니다.
방법 ① Kubernetes Ingress에 적용
Client
↓ HTTPS
Ingress
↓
Harbor
Kubernetes TLS Secret으로 인증서를 등록합니다.
kubectl create secret tls harbor-tls \
--cert=harbor.crt \
--key=harbor.key \
-n harbor
방법 ② 외부 LoadBalancer에 적용
회사에서 F5, A10, HAProxy 같은 장비를 사용한다면:
Client
↓ HTTPS
F5 / LoadBalancer
↓
Ingress
↓
Harbor
LoadBalancer에서 TLS를 종료할 수도 있습니다.
운영환경에서는 가능하면 회사 내부 CA에서 발급한 인증서를 사용하는 것이 관리하기 편합니다.
🚪 3. NodePort IP는 고정 IP가 아니다
NodePort에는 별도의 IP가 있는 것이 아닙니다.
예를 들어 Worker Node가:
Node01 10.10.1.11
Node02 10.10.1.12
Node03 10.10.1.13
이고 NodePort가 30443이라면:
10.10.1.11:30443
10.10.1.12:30443
10.10.1.13:30443
처럼 접근할 수 있습니다.
즉:
NodePort = Node IP + 고정 Port
입니다.
⚠️ Worker Node IP를 DNS에 직접 연결하면?
예를 들어:
harbor-prod.company.com
↓
10.10.1.11
↓
Worker01
로 구성했다가 Worker01이 장애 나면 Harbor 접속도 문제가 생길 수 있습니다.
그래서 앞에 VIP 또는 LoadBalancer를 둡니다.
harbor-prod.company.com
↓
VIP 10.10.10.100
↓
LoadBalancer
┌────┼────┐
↓ ↓ ↓
Node1 Node2 Node3
↓
Harbor
Worker Node가 변경되더라도 사용자는 계속:
https://harbor-prod.company.com
만 사용하면 됩니다.
🏢 4. 온프레미스에서는 VIP를 어떻게 만들까?
대표적으로 세 가지 방법이 있습니다.
F5 같은 기존 LoadBalancer
VIP
↓
F5
↓
K8s NodePort
↓
Ingress
↓
Harbor
대규모 기업 환경에서 많이 볼 수 있는 구조입니다.
MetalLB
Bare Metal Kubernetes에서 LoadBalancer 타입 Service를 사용할 수 있도록 IP를 제공하는 방식입니다.
MetalLB
↓
10.10.10.100
↓
Ingress
↓
Harbor
HAProxy + Keepalived
직접 LoadBalancer HA 구성을 만들 수도 있습니다.
HAProxy01 ─┐
├─ VIP
HAProxy02 ─┘
↓
K8s
🔄 5. Harbor Replication에서는 Egress IP도 중요하다
여기서 한 가지 더 구분해야 합니다.
Ingress
외부에서 Harbor로 들어오는 트래픽입니다.
Client
↓
Harbor VIP
↓
Harbor
Egress
Harbor가 다른 Harbor로 나가는 트래픽입니다.
예를 들어 PROD → DR Push Replication이라면:
Harbor PROD
↓
JobService
↓
Worker Node / NAT
↓
Firewall
↓
Harbor DR
문제는 JobService Pod가 다른 Worker로 이동하면 방화벽에서 보이는 Source IP가 달라질 수도 있다는 것입니다.
⭐ 6. Replication Egress IP도 고정하면 좋다
가능하면 다음과 같이 구성합니다.
Harbor JobService
↓
어느 Worker Node에서 실행되든
↓
고정 Egress NAT IP
10.10.10.200
↓
Firewall
↓ TCP 443
Harbor DR
그러면 방화벽에는:
Source
10.10.10.200
Destination
Harbor DR VIP
Port
TCP 443
만 허용하면 되어 관리가 훨씬 편해집니다.
🏗️ 최종 권장 구조
온프레미스 Harbor를 이해할 때 아래 그림을 기억하면 쉽습니다.
사내 DNS
harbor-prod.company.com
│
↓
VIP 10.10.10.100
│
LoadBalancer
│
Ingress
[TLS 인증서]
│
↓
Harbor PROD
┌────┴─────┐
↓ ↓
Registry JobService
│
↓
Egress NAT IP
10.10.10.200
│
Firewall
│ TCP 443
↓
Harbor DR VIP
│
↓
Harbor DR
✅ 핵심만 정리
항목권장 구성
| Harbor 도메인 | 사내 DNS 등록 |
| Harbor IP | 고정 VIP / LoadBalancer IP |
| 인증서 | Ingress 또는 외부 LB |
| Worker Node IP | Harbor 도메인에 직접 연결하지 않음 |
| NodePort | Node IP + Port |
| Replication Egress | 가능하면 고정 NAT/Egress IP |
| PROD → DR 통신 | 보통 HTTPS TCP 443 |
🎯 한 문장으로 정리
Harbor 운영환경에서는 DNS → 고정 VIP → LoadBalancer/Ingress → Harbor 구조를 만들고, Replication의 외부 통신 역시 가능하면 고정 Egress IP를 사용하면 Worker Node가 변경되어도 안정적으로 운영할 수 있습니다.
댓글