Harbor를 프로덕션 준비하기: 배포를 위한 필수 고려사항

발행: (2025년 12월 2일 오후 08:58 GMT+9)
6 min read

Source: VMware Blog

Harbor는 정책 및 역할 기반 접근 제어(RBAC)를 통해 아티팩트를 보호하고, 이미지에 대한 취약점 스캔 및 신뢰할 수 있는 서명을 보장하는 오픈‑소스 컨테이너 레지스트리입니다. Harbor와 이를 가상 머신(VM) 및 쿠버네티스(K8s)에 배포하는 방법에 대한 자세한 내용은 시리즈의 12 파트를 참고하십시오.

Harbor overview

Harbor 배포 자체는 간단하지만, 프로덕션 환경에 적합하도록 만들려면 여러 핵심 요소를 신중히 고려해야 합니다. 이 가이드는 Helm을 통해 쿠버네티스에 배포된 최신 Harbor(v2.14)를 중심으로 하며, 해당 배포에 대한 권장 사항을 제공합니다.

High Availability (HA) and Scalability

프로덕션 환경에서는 단일 장애 지점을 허용할 수 없습니다. Harbor의 고가용성을 구현하려면 다음 사항을 고려하십시오.

Deploy with an Ingress

Harbor 인스턴스 앞에 Ingress(예: Traefik) 타입의 쿠버네티스 Service를 설정해 트래픽을 분산하고 통합 진입점을 제공합니다. 인증서 관리는 cert‑manager를 사용합니다.

expose:
  type: ingress   # options: loadBalancer, ingress, clusterIP, nodePort

Run Multiple Harbor Instances

핵심 Harbor 컴포넌트(core, jobservice, portal, registry, trivy)의 복제본 수를 늘려冗余성을 확보합니다.

core:
  replicas: 3
jobservice:
  replicas: 3
portal:
  replicas: 3
registry:
  replicas: 3
trivy:
  replicas: 3
exporter:
  replicas: 3   # 선택 사항, 모니터링 가용성을 위해
nginx:
  replicas: 3   # Ingress 사용 시 Ingress 가용성 향상

External PostgreSQL (Database HA)

Harbor에 내장된 PostgreSQL은 단일 노드 배포이며 프로덕션에서는 권장되지 않습니다. Patroni, CloudNativePG와 같은 고가용성 PostgreSQL 클러스터를 직접 배포하거나 관리형 서비스를 이용한 뒤, Harbor를 외부 DB에 연결합니다.

database:
  type: external
  external:
    host: "192.168.0.1"
    port: "5432"
    username: "user"
    password: "password"
    coreDatabase: "registry"
    existingSecret: ""   # secret을 사용할 경우 키는 "password"여야 함
    sslmode: "verify-full"   # options: disable, require, verify-ca, verify-full

External Redis (Redis HA)

고가용성 Redis 클러스터(Redis Sentinel 또는 Redis Cluster) 또는 관리형 Redis 서비스를 배포하고, Harbor가 이를 사용하도록 설정합니다.

redis:
  type: external
  external:
    addr: "192.168.0.2:6397"
    sentinelMasterSet: ""
    tlsOptions:
      enable: true
    username: ""
    password: ""

Security Best Practices

보안은 모든 프로덕션 시스템, 특히 컨테이너 레지스트리에서 최우선 과제입니다.

Enable TLS/SSL

모든 Harbor 컴포넌트에 TLS/SSL을 반드시 활성화합니다. 자동 인증서 발급을 위해 cert‑manager와 연동합니다.

expose:
  tls:
    enabled: true
    certSource: auto   # cert-manager 사용 시 manual로 변경
    auto:
      commonName: ""

internalTLS:
  enabled: true
  strong_ssl_ciphers: true
  certSource: "auto"
  core:
    secretName: ""
  jobService:
    secretName: ""
  registry:
    secretName: ""
  portal:
    secretName: ""
  trivy:
    secretName: ""

Configure RBAC and Identity Providers

쿠버네티스 RBAC를 활용해 Harbor 리소스 접근을 관리합니다. 배포 후 LDAP 또는 OIDC와 같은 엔터프라이즈 아이덴티티 제공자를 Harbor와 연동합니다. 공식 가이드를 참고하십시오.

RBAC configuration

Enable Vulnerability Scanning

Harbor는 기본적으로 Trivy를 사용합니다. 스캔 기능을 반드시 활성화합니다.

trivy:
  enabled: true

Vulnerability scanning UI

Activate Content Trust

Harbor는 CosignNotation과 같은 최신 OCI 아티팩트 서명 메커니즘을 지원합니다. 프로젝트 수준에서 콘텐츠 트러스트를 UI 또는 Harbor API를 통해 강제 적용해 검증된 서명 이미지만 허용하도록 합니다.

Content trust UI

Keep Harbor Updated

Harbor Helm 차트와 기반 쿠버네티스 컴포넌트를 정기적으로 업그레이드해 최신 보안 패치와 버그 수정 사항을 적용합니다.

helm repo update
helm upgrade harbor harbor/harbor -f values.yaml

Storage Considerations

효율적이고 안정적인 스토리지는 Harbor의 성능과 안정성에 필수적입니다.

  • 여기에서는 공유 스토리지 백엔드, 성능 튜닝, 백업 전략 등 추가적인 스토리지 권장 사항을 상세히 다룰 예정입니다.
Back to Blog

관련 글

더 보기 »

[TAM Blog] Security Configuration Guide 로 시작하는 보안 강화 ― 도입의 첫걸음

여러분, 안녕하세요. TAM의 테라사와입니다. 일상 뉴스에서는 피싱, DDoS, 랜섬웨어 등 위협이 연일 다루어지고 있습니다. 보안은 이제 IT 운영의 부수 요소가 아니라, 사업 연속성 자체를 좌우하는 핵심 전제가 되었습니다. VMware vSphere® 기반도 예외가 아니며, 취약점이 공표된 이후 공격에 악용되고 있습니다.