Harbor를 이용해 Docker Private Registry를 구축해 봅니다.
1. Harbor
Harbor는 비교적 덜 알려진 도커 레지스트리들 중 하나입니다. 공식 문서에 따르면 Harbor는 다음과 같이 설명하고 있습니다.
Harbor는 컨텐츠를 저장, 서명 및 스캔하는 오픈 소스 신뢰할 수 있는 클라우드 기본 레지스트리 프로젝트입니다. Harbor는 보안, ID 및 관리와 같은 사용자가 일반적으로 필요로 하는 기능을 추가하여 오픈 소스 Docker Distribution을 확장합니다.
빌드 및 실행 환경에 더 가까운 레지스트리를 사용하면 이미지 전송 효율성을 향상시킬 수 있습니다. Harbor는 레지스트리 간 이미지 복제를 지원하고 사용자 관리, 액세스 제어 및 활동 감사와 같은 고급 보안 기능을 제공합니다.
Harbor는 CNCF (Cloud Native Computing Foundation)에서 호스팅 합니다. 클라우드 네이티브 기술의 진화를 구체화하려는 조직인 경우 CNCF 가입을 고려하십시오. 참여자 및 Harbor의 역할에 대한 자세한 내용은 CNCF 발표를 읽으십시오.
또한 Harbor에서 제공하는 주요한 기능은 다음과 같습니다:
- 클라우드 네이티브 레지스트리: 컨테이너 이미지와 Helm 차트를 모두 지원하는 Harbor는 컨테이너 런타임 및 오케스트레이션 플랫폼과 같은 클라우드 네이티브 환경의 레지스트리 역할을 합니다.
- 역할 기반 액세스 제어: 사용자 및 리포지토리는 '프로젝트'를 통해 구성되며 사용자는 프로젝트에서 이미지 또는 Helm 차트에 대해 서로 다른 권한을 가질 수 있습니다.
- 정책 기반 복제: 여러 필터(리포지토리, 태그 및 레이블)가 있는 정책을 기반으로 여러 레지스트리 인스턴스 간에 이미지 및 차트를 복제(동기화) 할 수 있습니다. Harbor는 오류가 발생하면 자동으로 복제를 재 시도합니다. 로드 밸런싱, 고 가용성, 다중 데이터 센터, 하이브리드 및 다중 클라우드 시나리오에 적합합니다.
- 취약점 검색: Harbor는 이미지를 정기적으로 스캔하여 사용자에게 취약점을 경고합니다.
- LDAP/AD 지원: Harbor는 사용자 인증 및 관리를 위해 기존 엔터프라이즈 LDAP / AD와 통합되며 LDAP 그룹을 Harbor로 가져오고 적절한 프로젝트 역할을 할당할 수 있습니다.
- OIDC 지원 : Harbor는 OIDC(OpenID Connect)를 활용하여 외부 인증 서버 또는 자격 증명 공급자가 인증 한 사용자의 자격 증명을 확인합니다. Single sign-on을 사용하여 Harbor 포털에 로그인할 수 있습니다.
- 이미지 삭제 및 가비지 수집: 이미지를 삭제하고 공간을 재활용할 수 있습니다.
- 공증(Notary): 이미지 진위를 보장할 수 있습니다.
- 그래픽 사용자 포털: 사용자는 쉽게 저장소를 탐색하고 검색하며 프로젝트를 관리할 수 있습니다.
- 감사: 리포지토리에 대한 모든 작업이 추적됩니다.
- RESTful API: 대부분의 관리 작업을 위한 RESTful API로 외부 시스템과 쉽게 통합할 수 있습니다. API를 탐색하고 테스트하기 위해 임베디드 Swagger UI를 사용할 수 있습니다.
- 쉬운 배포: 온라인 및 오프라인 설치 관리자를 모두 제공합니다. 또한 Helm Chart를 사용하여 Kubernetes에 Harbor를 배포할 수 있습니다.
만약 Harbor대신 다른 레지스트리들의 옵션을 알고 싶다면이 글을 참고해 주시기 바랍니다.
2. Harbor 설치 준비 - 요구 사양
Harbor는 리눅스에서 동작합니다. 이 글에서는 리눅스 서버 18.04.3 버전을 사용합니다.
하드웨어 요구사항은 다음과 같습니다.
리소스 | 최소 사양 | 권장 사양 |
CPU | 2 CPU | 4CPU |
메모리 | 4 GB | 8 GB |
스토리지 | 40 GB | 160 GB |
소프트웨어 요구사항은 다음과 같습니다.
소프트웨어 | 버전 |
Docker Engine | 17.06.0 CE 버전 이상 |
Docker Compose | 1.18.0 버전 이상 |
OpenSSL | 최신 버전 권장 |
도커 설치는 이 글을, 도커 컴포즈 설치는 이 글을 참고해주세요.
네트워크 포트 사용은 다음과 같습니다.
포트 | 프로토콜 | 설명 | |||
443 | HTTPS | Harbor 포털 및 코어 API는이 포트에서 HTTPS 요청을 수락합니다. 구성 파일에서이 포트를 변경할 수 있습니다. | |||
4443 | HTTPS | 하버 용 Docker Content Trust 서비스에 대한 연결입니다. 공증(Notary)이 활성화 된 경우에만 필요합니다. 구성 파일에서이 포트를 변경할 수 있습니다. | |||
80 | HTTP | Harbor 포털 및 코어 API는이 포트에서 HTTP 요청을 수락합니다. 구성 파일에서이 포트를 변경할 수 있습니다. |
3. Harbor 설치
우선 Harbor 릴리즈 페이지로 이동해 Harbor 파일을 다운로드합니다. 이 글에선 현재(20.02.14) 최신 버전인 1.10.1 버전의 오프라인 버전을 다운로드하여서 설치해 보도록 하겠습니다.
.asc 파일은 옵션입니다. 이 파일은 OpenPGP 키 파일로 다운로드한 번들이 정품인지 확인하는 데 사용됩니다. 다운로드한 파일을 검증하는 방법은 여기서 확인해 주시기 바랍니다.
다운로드한 파일이 있는 경로로 이동해서 다음 명령어를 통해 파일을 추출합니다.
$ tar xvf harbor-offline-installer-v1.10.1.tgz
./harbor/harbor.yml파일을 수정하여 설정을 변경할 수 있습니다. 설치를 위해 호스트 이름을 변경합시다.
$ vi harbor.yml
호스트 설정은 파일 가장 위에 있습니다.
localhost나 127.0.0.1을 사용하지 말라고 되어있네요. 적당한 호스트를 입력한 후 저장합니다.
이 설정 파일엔 초기 접속 정보 및 DB정보도 기재되어있습니다. 우선 관리자 암호를 기억해 둡시다.
실제 사용을 원한다면 당연히 HTTPS를 사용해야 합니다만 우선 간단한 설치를 위해 HTTPS 사용을 비활성화합니다.
설정을 저장한 후 다음 명령어로 install.sh을 실행시킵니다.
$ sudo ./install.sh
위와 같이 설치가 정상적으로 끝나면 앞서 입력한 호스트네임으로 접속해 봅시다. 다음과 같이 Harbor admin페이지를 확인할 수 있습니다.
기본 계정과 암호로 로그인합니다. 로그인 정보는 admin/Harbor12345입니다. 만약 설정 파일에서 초기 비밀번호를 바꾸셨다면 그 암호를 입력해 로그인합니다.
정상적으로 로그인되는 것을 확인할 수 있습니다.
'Programming > Linux' 카테고리의 다른 글
[Docker] Harbor에 HTTPS 연결하기. (0) | 2020.04.27 |
---|---|
[Ubuntu] FTP: vsFTPD Passive 모드로 변경하기. (0) | 2020.04.27 |
[Ubuntu] LDAP: OpenLDAP 설치하기 (0) | 2020.01.20 |
[Ubuntu] CI/CD를 위한 Jenkins 설치 (0) | 2020.01.17 |
[Ububtu] Rabbit MQ 설치하기 (2) | 2020.01.17 |