Harbor는 컨테이너 이미지를 저장, 관리 및 보안하기 위한 오픈 소스 프로젝트입니다. 주로 Docker 및 OCI(Open Container Initiative) 호환 이미지를 지원합니다. Harbor는 기업 환경에서 컨테이너 이미지를 안전하게 저장하고 관리하기 위한 기능을 제공합니다.
Harbor의 주요 특징과 기능은 다음과 같습니다.
- 보안 및 권한 관리: Harbor는 이미지에 대한 접근 권한을 관리하고 감독하기 위한 강력한 보안 기능을 제공합니다. 사용자 및 팀에 대한 권한을 정의하고 이미지의 액세스를 제어할 수 있습니다.
- 복제 및 저장: Harbor는 여러 위치에 이미지를 복제하고 저장할 수 있는 기능을 제공하여 지역 간 이미지 동기화와 재해 복구를 강화합니다.
- 라이프사이클 관리: 이미지의 라이프사이클을 관리하기 위한 다양한 도구와 기능을 제공합니다. 이미지의 메타데이터를 사용하여 정책을 설정하고 이미지를 버전 관리할 수 있습니다.
- 가용성 및 확장성: Harbor는 여러 레플리카 및 고가용성 아키텍처를 통해 안정적이고 확장 가능한 이미지 저장소를 제공합니다.
- LDAP 및 AD 통합: 기업 환경에서 사용되는 디렉터리 서비스와의 통합을 지원하여 사용자 관리를 간편하게 할 수 있습니다.
- 인증 및 암호화: Harbor는 TLS(전송 계층 보안)을 사용하여 통신을 암호화하고, 이미지에 서명하여 데이터의 무결성을 보장합니다.
이러한 기능들은 Harbor를 기업에서 안전하게 컨테이너 이미지를 관리하고 배포하는 데 사용하게 만듭니다.
Harbor는 도커 이미지를 등록하고 관리하는 데 중점을 둔 컨테이너 레지스트리입니다. 도커 이미지는 컨테이너화된 애플리케이션을 패키징하고 배포하는 데 사용되는 핵심 요소 중 하나입니다. Harbor는 도커 및 OCI 호환 이미지를 저장하고, 버전 관리하며, 보안 및 권한을 관리하여 기업 환경에서 안전하게 이미지를 사용할 수 있도록 지원합니다.
기업에서는 보안 및 권한 관리, 이미지의 복제 및 저장, 라이프사이클 관리, 그리고 안정적이고 확장 가능한 이미지 저장소의 필요성이 있습니다. Harbor는 이러한 요구사항을 충족시키기 위한 다양한 기능을 제공하여 컨테이너 이미지 관리를 효과적으로 지원합니다.
Harbor를 Kubernetes 환경에 구성하는 것은 상대적으로 간단한 과정입니다. 아래는 Harbor를 Kubernetes 클러스터에 배포하는 단계별 안내서입니다. 이 예제에서는 Helm을 사용하여 배포하는 방법을 다룹니다.
단계 1: Helm 설치
Helm은 Kubernetes 애플리케이션을 손쉽게 배포 및 관리하기 위한 패키지 매니저입니다. Helm이 설치되어 있지 않다면, 다음 명령어로 설치합니다.
curl https://raw.githubusercontent.com/helm/helm/master/scripts/get-helm-3 | bash
단계 2: Kubernetes 클러스터에 Harbor Helm 차트 설치
- Harbor Helm 차트를 다운로드합니다.
helm repo add harbor https://helm.goharbor.io
- Helm 차트를 업데이트합니다.
helm repo update
- Harbor Helm 차트를 설치합니다. 아래 명령어에서
my-release
는 Harbor를 배포할 Helm 릴리스의 이름입니다.kubectl create namespace harbor-system helm install my-release harbor/harbor --namespace harbor-system
단계 3: Harbor 배포 확인
Helm 설치가 완료되면, Harbor가 Kubernetes 클러스터에 배포됩니다. 다음 명령어를 사용하여 Harbor의 배포 상태를 확인할 수 있습니다.
kubectl get pods -n harbor-system
모든 Harbor 컴포넌트가 실행 중이면, 배포가 성공적으로 이루어진 것입니다.
단계 4: Harbor 접속 확인
Harbor는 기본적으로 Ingress를 사용하여 외부에서 접속할 수 있도록 설정되어 있습니다. Harbor의 Ingress IP를 확인하고 브라우저를 통해 해당 IP에 접속하여 Harbor 웹 인터페이스에 로그인할 수 있습니다.
Harbor의 기본 로그인 정보는 다음과 같습니다.
- Username: admin
- Password: Harbor를 처음 설치할 때 지정한 비밀번호 (Helm 차트 설치 시 입력)
이제 Kubernetes 환경에서 Harbor를 성공적으로 배포하고 구성했습니다. 필요에 따라 Harbor의 설정을 조정하고 추가적인 구성을 수행할 수 있습니다.
Harbor에 이미지를 등록하고 활용하는 과정은 다음과 같습니다.
이미지 등록
- Harbor 웹 인터페이스에 로그인
- 브라우저에서 Harbor의 Ingress IP 또는 서비스 주소로 접속하여 관리자로 로그인합니다.
- 프로젝트 생성
- Harbor 대시보드에서 "Projects"를 선택하고 "Create Project" 버튼을 클릭하여 새 프로젝트를 생성합니다. 프로젝트는 이미지를 그룹화하는 단위입니다.
- 이미지를 프로젝트에 등록
- 프로젝트가 생성되면 해당 프로젝트로 이동하여 "Repositories"를 선택합니다.
- "Add Repository" 버튼을 클릭하여 새로운 Docker 이미지 저장소를 생성합니다.
- 생성한 저장소에 이미지를 업로드하려면, 해당 저장소를 선택하고 "Upload" 버튼을 클릭합니다.
- 이미지 업로드
- "Upload" 버튼을 클릭하면 이미지를 업로드할 수 있는 화면이 나타납니다.
- "Choose or drag & drop to upload" 영역을 사용하여 이미지를 선택하거나 드래그하여 업로드합니다.
- 이미지를 업로드하면 Harbor는 해당 이미지를 저장소에 보관합니다.
이미지 활용
- Kubernetes에서 Harbor 이미지 사용
- Kubernetes Deployment 또는 Pod의 YAML 파일에서 Harbor 저장소에 등록한 이미지를 사용할 수 있습니다.
- 이미지의 주소는 Harbor Ingress IP 또는 서비스 주소와 저장소 및 이미지 이름을 조합하여 지정합니다.
containers: - name: my-container image: harbor-ingress-ip/my-project/my-repository/my-image:tag
- Docker CLI를 통한 이미지 사용
- Docker CLI를 사용하여 Harbor 저장소에 등록한 이미지를 로컬 머신에서 사용할 수 있습니다.
docker pull harbor-ingress-ip/my-project/my-repository/my-image:tag
- Docker CLI를 사용하여 Harbor 저장소에 등록한 이미지를 로컬 머신에서 사용할 수 있습니다.
- Harbor 웹 인터페이스에서 이미지 관리
- Harbor 대시보드를 통해 이미지의 버전 및 메타데이터를 관리할 수 있습니다.
- 이미지 삭제, 버전 관리, 보안 설정 등의 작업을 Harbor 대시보드에서 수행할 수 있습니다.
이제 Harbor를 사용하여 이미지를 등록하고 Kubernetes 또는 Docker CLI를 통해 활용하는 방법에 대한 기본적인 절차를 이해하셨을 것입니다. 필요에 따라 Harbor의 고급 기능을 활용하여 이미지 라이프사이클을 관리하고 보안을 강화할 수 있습니다.
댓글