Harbor에 대한 설명
Harbor 개요
Harbor는 VMware가 개발한 오픈 소스 프라이빗 컨테이너 레지스트리로 Docker Registry와 같이 컨테이너 이미지를 관리하는 기능을 구현한 레지스트리이다.
Docker Hub 처럼 이미지를 저장할 수 있는 저장소로써, Registry의 장점을 포함하여 직관적인 Web 기반 User Interface를 제공하기 때문에 효율적인 이미지 관리가 가능하다.
일반적으로 Docker를 사용하는 경우 docker 명령을 사용하여 Nginx 및 busybox와 같은 컨테이너 이미지를 배포한다. 이 이미지의 취득처가 레지스트리로, 디폴트에서는 Docker hub로부터 받아오고 오고 있다.
그러나, Docker hub는 공용 레지스트리이므로 보안 액세스가 불가능하거나 회사 프로젝트에서 만드는 것과 같은 자체 컨테이너 이미지를 업로드하는 데 적합하지 않을 수 있다.
Harbor는 이러한 문제를 해결하기 위해 폐쇄 환경에서 사용된다고 가정하는 개인 레지스트리로 다양한 기능을 제공한다.
원래 Harbor는 2014년에 VMware가 이미지 사용에 있어서 보안 체제의 강화나 컴플라이언스의 준수를 목적으로 개발이 시작되었다.
2016년에 오픈 소스화되었으며 2018년에는 Kubernetes와 같은 개발을 호스팅하는 Cloud Native Computing Foundation(CNCF) 프로젝트 중 하나로 채택되었으며 2020년에 프로젝트를 종료하였다.
Harbor의 주요 특징
- Docker Image 개인 저장소 제공
- Cloud-Native 기반 오픈 소스 레지스트리
- Harbor는 컨테이너 이미지와 Helm 차트를 모두 지원하며, 컨테이너 런타임 및 오케스트레이션 플랫폼과 같은 클라우드 네이티브 환경의 레지스트리 역할을 한다.
- 역할 기반 액세스 제어 관리(RBAC)
- 사용자나 프로젝트마다, 공개하는 컨테이너 이미지나 조작을 제어하는 것이 가능하다.
- 정책 기반 복제
- 필터(리포지토리, 태그, 레이블)를 사용하는 정책을 기반으로 서버를 가로지르는 여러 레지스트리 인스턴스 간에 이미지를 복제하여 부하 분산 및 고가용성을 제공한다.
- LDAP/AD 지원
- AD 및 LDAP와 같은 사용자 관리 시스템을 사용하는 경우 시스템을 Harbor에 통합하여 RBAC에 사용할 수 있다.
- 취약성 스캔
- 리포지토리의 컨테이너 이미지에 대해 주기적으로 취약점을 검사하여 취약한 이미지가 배포되는 것을 방지한다.
- OIDC 지원
- Harbor는 OpenID Connect(OIDC)를 이용하여 Keycloak 등의 외부 인증 서버에서 Harbor 포털로의 싱글 사인온(SSO)을 실현할 수 있다.
- 그래픽 사용자 포털
- Web UI 제공한다.
- 사용자는 Harbor 포털(WebUI)을 통해 리포지토리를 찾아보고, 검색하고, 프로젝트를 관리할 수 있다.
- 감사
- 리포지토리에 대한 모든 작업은 WebUI나 로그를 통해 감사, 추적할 수 있다.
Harbor의 운영 환경
운영 체제와 Docker
Harbor는 여러 Docker 컨테이너로 배포됩니다. 따라서 Docker를 지원하는 모든 Linux 배포판에 배포할 수 있다. 호스트에는 Docker 및 Docker Compose 설치가 필요하다.
하드웨어
다음 표는 Harbor를 배치하기 위한 최소 구성과 권장 구성이다.
자원 | 최소 구성 | 권장 구성 |
---|---|---|
CPU | 2CPU | 4CPU |
메모리 | 4GB | 8GB |
디스크 크기 | 40GB | 160GB |
소프트웨어
다음 표는 호스트에 설치해야 하는 소프트웨어 및 해당 버전이다.
소프트웨어 | 버전 | 설명 |
---|---|---|
도커 엔진 | Version 17.06.0-ce+ 이상 | 설치 방법에 대한 자세한 내용은 Docker Engine 설명서를 참조하여라. |
Docker Compose | 버전 1.18.0 이상 | 설치 방법에 대한 자세한 내용은 Docker Compose 설명서를 참조하여라. |
Openssl | Latest | Harbor의 인증서와 키를 생성하는 데 사용된다. |
네트워크 포트
Harbor를 사용하려면 호스트에서 다음 포트가 열려 있어야 한다.
포트 | 프로토콜 | 설명 |
---|---|---|
443 | HTTPS | Harbor 포털과 코어 API는 이 포트에서 HTTPS 요청을 수락한다. 이 포트는 구성 파일에서 변경할 수 있다. |
4443 | HTTPS | Harbor의 Docker Content Trust 서비스에 연결하는데 사용된다. Notary가 활성화된 경우에만 필요하다. 이 포트는 구성 파일에서 변경할 수 있다. |
80 | HTTP | Harbor 포털과 코어 API는 이 포트에서 HTTP 요청을 수락한다. 이 포트는 구성 파일에서 변경할 수 있다. |
Harbor 라이센스
Harbor의 라이센스는 ‘Apache 라이센스 버전 2’(Apache License version2)라는 라이센스에 근거하여 공개되며, 영리, 비영리를 불문하고 누구나 자유롭고 무료로 이용, 변경, 재배포할 수 있다.
참고
- Harbor 공식 사이트
- Harbor 최신판 LiveDemo
- Harbor 기능 VideoDemos
- Harbor를 이용한 Private Docker Registry 구축
- [DevOps] Docker-Compose를 이용해 Harbor 배포하기(HTTPS 지원)