And Brain said,

Harbor, 컨테이너 이미지를 위한 거대한 선착장 본문

IT/DevOps \ Architecture

Harbor, 컨테이너 이미지를 위한 거대한 선착장

The Man 2023. 8. 28. 14:52
반응형

현대의 소프트웨어 개발 트렌드를 들여다보면, '컨테이너'라는 단어를 자주 접하게 됩니다. 컨테이너화는 개발부터 배포까지의 프로세스를 표준화하며, 그 결과로서 일관성 있고, 빠르며, 안정적인 애플리케이션 배포가 가능하게 해주는데 이러한 컨테이너 이미지들을 어디서 관리하고, 어떻게 효율적으로 배포할 수 있을까요?

이 질문에 대한 대답 중 하나가 바로 'Harbor' 입니다. Harbor는 CNCF (Cloud Native Computing Foundation)의 오픈소스 프로젝트로, 컨테이너 이미지와 Helm 차트를 안전하고 효율적으로 저장, 관리, 스캔, 배포할 수 있는 레지스트리 솔루션을 제공합니다.

 

 

그럼 바로 설치부터 해봅시다.

 

먼저 Harbor의 GitHub 릴리즈 페이지에서 최신 버전의 오프라인 설치 패키지를 다운로드받습니다. 아래는 예시 경로입니다.

wget https://github.com/goharbor/harbor/releases/download/v2.3.0/harbor-offline-installer-v2.8.4.tgz
tar xvf harbor-offline-installer-v2.8.4.tgz
cd harbor

 

다운로드가 끝나고, harbor 디렉토리 내로 이동하였다면, 내부에 harbor.yml.tmpl 파일이 존재할 것입니다. 이를 약간 수정하고 harbor.yml 파일로 저장할 것입니다. 아래는 수정한 부분만 적은 것입니다.

// harbor.yml

hostname: Your-IP!!

http:

  # port for http, default is 80. If https enabled, this port will redirect to https port

  port: 80


# https related config

#https:

  # https port for harbor, default is 443

 # port: 443

  # The path of cert and key files for nginx

 # certificate: /your/certificate/path

 # private_key: /your/private/key/path




# The initial password of Harbor admin

# It only works in first time to install harbor

# Remember Change the admin password from UI after launching Harbor.

harbor_admin_password: Your-Password



# Harbor DB configuration

database:

  # The password for the root user of Harbor DB. Change this before any production use.

  password: Your-Password

password는 수정하지 않으면 tmpl 파일에 디폴트값이 적혀있으니 이를 확인하시고 추후에 사용하시면 됩니다. 저는 https 통신은 하지 않을 것이므로 https 설정들은 모두 주석 처리하였습니다.

 

 

harbor.yml 파일을 저장하셨다면 이제, 설치합니다.

./install.sh

 

기본적으로 80 port를 사용했기에 Harbor가 실행 중인 호스트 내 브라우저에서 localhost로 접속하면

 

UI 접속이 가능합니다. password를 정하셨다면 admin / your_password 하시면 되고 아니면 기본값을 넣어주셔서 로그인하시면 됩니다.

 

이제 프로젝트도 만드시고, 유저도 만들어보시면 됩니다.

 

 

** Docker login 방법

Docker를 사용하여 Harbor를 이미지 레지스트리로 사용하실려면 login이 필요합니다. 하지만 Docker daemon은 기본적으로 https 통신으로 로그인을 합니다. 우리는 https 통신을 주석처리하였기 때문에 이를 http 통신이 가능하게 바꿔주어야 하는데,

nano /etc/docker/daemon.json


// daemon.json
{
  "insecure-registries" : ["harbor_host:80"]
}


systemctl restart docker

 

daemon.json 파일에 저런 식으로 Harbor의 IP와 Port 를 설정해주신 후 Docker daemon을 재시작 해줍니다.

 

로그인 되는 것을 확인할 수 있습니다.

 

 

Thanks for watching, Have a nice day.

반응형
Comments