🚀 요약

SUMMARY

과거 GitLab Registry 사용 경험에서 겪었던 GC 문제와 UI 불편성을 바탕으로 Harbor와 Gitea Registry를 비교 분석했다. Harbor는 직관적인 UI, 강력한 권한 관리, 취약점 검사 등 풍부한 기능을 제공하여 최종 선택했다.

💡 개요

Kubernetes 클러스터 구축 과정에서 컨테이너 레지스트리 선정이 필요했다. 이전에 GitLab Registry를 사용해본 경험에서 느낀 불편했던 점을 참고하여 신규 클러스터에서 사용할 컨테이너 레지스트리를 선정했다.

📋 선정 배경

과거 GitLab Registry 사용 경험에서 다음과 같은 문제점들을 겪었다.

  • 가비지 컬렉션(GC) 문제: 사용하지 않는 이미지들이 제대로 정리되지 않아 스토리지 용량이 계속 증가했다
  • UI 불편함: 레지스트리 내용을 GUI로 직관적으로 파악하기 어려웠다

이러한 경험을 바탕으로 새로운 컨테이너 레지스트리 선정 시 다음 요구사항을 설정했다.

  • 간결하고 효율적인 구조
  • 가비지 컬렉션이 원활하게 동작할 것
  • GUI를 통한 직관적인 관리가 가능할 것

NOTE

고가용성(High Availability) 구성은 이번 클러스터링 작업에서 시간적 여유가 없어 향후 고려하기로 했다. 회사에서 다루는 컨테이너 이미지는 로컬에도 저장되어 있고 대부분 Dockerfile로 정의되어 있어, 문제 발생 시 비교적 빠른 복구가 가능하다고 판단했기 때문이다.

📊 비교

주요 후보로 Harbor와 Gitea Registry를 선정하여, 각 솔루션의 특징을 중립적인 관점에서 비교했다. 두 도구 모두 컨테이너 이미지를 저장하고 관리하는 핵심 기능은 충실히 수행하지만, 지향하는 목표와 기능의 깊이에서 차이를 보였다.

기능HarborGitea Registry
저장소 관리프로젝트 기반의 독립적 관리Gitea 저장소에 종속
사용자 인터페이스전용 웹 UI 제공 (직관적)Gitea UI에 통합 (제한적)
권한 관리세분화된 역할 기반 접근 제어(RBAC)저장소 수준의 기본 권한
보안이미지 취약점 스캐너 내장 (Trivy)외부 도구 연동 필요
스토리지 효율성가비지 컬렉션, 이미지 중복 제거가비지 컬렉션, 이미지 중복 제거
인증OIDC, LDAP 등 외부 인증 연동 지원Gitea 자체 인증 사용
지원 아티팩트컨테이너 이미지, Helm 차트컨테이너 이미지 외 다양한 패키지

Harbor - 엔터프라이즈급 기능과 보안

Harbor는 컨테이너 레지스트리가 갖춰야 할 대부분의 고급 기능을 제공하는 데 중점을 둔다.

  • 독립적인 관리 환경: 전용 웹 UI를 통해 이미지 라이프사이클, 사용자 권한, 복제 정책 등을 프로젝트 단위로 세밀하게 관리할 수 있다.
  • 강화된 보안: Trivy와 같은 이미지 취약점 스캐너를 내장하고 있어, 이미지 푸시 시 자동으로 보안 검사를 수행하고 취약점이 발견된 이미지의 배포를 차단하는 정책을 설정할 수 있다.
  • 운영 편의성: 프로젝트별 리소스 쿼터 설정, 상세한 감사 로그, OIDC/LDAP 연동 등 기업 환경에서 요구되는 운영 기능이 풍부하다.

Gitea Registry - 경량화 및 통합

Gitea Registry는 Gitea의 일부로 동작하며, 소스 코드와 컨테이너 이미지를 한 곳에서 관리하는 통합 환경을 지향한다.

  • 단순성과 경량성: 별도의 설치나 복잡한 설정 없이 Gitea 설정 활성화만으로 즉시 사용할 수 있다.
  • 통합 관리: 소스 코드와 함께 컨테이너 이미지, npm, Maven 등 다양한 패키지 아티팩트를 동일한 저장소 내에서 관리할 수 있다는 장점이 있다.
  • 기본 기능에 집중: 권한 관리는 Gitea 저장소의 권한을 그대로 상속받으며, 레지스트리 관리를 위한 별도 UI보다는 기본적인 기능에 집중하는 모습을 보였다.

결론적으로, Harbor는 보안과 거버넌스가 중요한 대규모 환경에 적합하며, Gitea Registry는 개발 워크플로우의 단순성과 통합을 우선시하는 환경에 더 유리하다고 판단했다.

✅ 선정 사유

Harbor를 최종 선택했다. 주요 선정 이유는 다음과 같다.

  1. 핵심 요구사항 충족: 가비지 컬렉션, 직관적인 UI 등 기본 요구사항을 모두 만족한다
  2. 운영 편의성: 프로젝트별 용량 제한, 세밀한 권한 관리 등 실제 운영에 필요한 기능들이 잘 구현되어 있다
  3. 보안 강화: 내장된 취약점 검사 기능으로 컨테이너 이미지의 보안을 사전에 점검할 수 있어 운영 환경에서 유용하다
  4. 확장성: Helm 차트 저장소 기능, OIDC 연동 등 향후 필요할 수 있는 기능들을 이미 제공한다

IMPORTANT

Harbor는 필요한 기능 외에도 다양한 추가 기능을 제공하여 향후 확장성 측면에서도 유리하다고 판단했다. 특히 기업 환경에서 요구되는 권한 관리와 보안 기능이 잘 갖춰져 있어 장기적으로 도움이 될 것으로 예상된다.

🔗 참고