[Harbor] 소개, 기본 사용법
Harbor는 사설 docker image registry 구축을 위한 오픈소스 프레임워크다.
외부 서비스 의존성 없이 컨테이너 기반 환경을 구축할 때는 거의 준-필수로 사용되는 녀석이기도 하다.
Go로 만들어졌고, 아파치 라이센스를 사용한다.
내부 구성요소는 다음과 같다. 덕지덕지 붙인게 좀 많다.

여기서는 Harbor를 간단히 단일머신 서버에 띄우는 방법을 다뤄본다.
인증서 준비
Harbor는 SSL 옵션을 필수로 요구한다.
Docker CLI를 비롯한 주요 레지스트리 클라이언트들이 SSL을 필수로 요구하기 때문이기도 하다.
openssl을 써서 적당히 만들어주겠다.
mkdir -p ~/keys
cd ~/keysopenssl genrsa -out ~/keys/private.key 4096
openssl req -x509 -new -nodes -sha512 -days 365 -key ~/keys/private.key -out ~/keys/public.crtHarbor 설치
인스톨러가 예쁘게 제공되거나 패키지매니저를 통해서 설치가 가능하게 되어있진 않다.
다음 릴리즈 페이지에 들어가서 압축 파일을 받아야 한다.
https://github.com/goharbor/harbor/releases
내 경우에는 온라인 인스톨러를 사용했다.
뭘 써도 별로 상관은 없다. 오프라인 파일은 추가 다운로드 없이 설치를 수행하므로, 폐쇄망일 경우에 쓰면 된다.
받고 압축을 풀면 이런 식으로 구성되는데

yml 설정파일을 복사해서 기본 설정을 해줘야 한다.

cp harbor.yml.tmpl harbor.yml
vim harbor.yml
중요한건 hostname, 포트, 인증서 정도다.
hostname은 현재 서버의 IP를 넣으면 되고, 포트는 넣고싶은대로, 인증서는 아까 만든거 넣으면 된다.
그리고 다음 명령을 순서대로 실행하면, 자동으로 세팅을 시도한다.
sudo ./prepare
sudo ./install.sh



그럼 뭘 잔뜩 세팅하는데, 성공했다면 위 메세지가 나올 것이고
도커 컨테이너도 잔뜩 떠있을 것이다.
참고로 이건 systemd로 자동 실행을 보장하거나 하는건 아니고, 일회성 실행이다.
잘 띄워졌다면, 아까 연 포트를 통해서 WebUI에 접근할 수 있다.
기본 패스워드는 admin:Harbor12345이다.
로그인해서 들어가면 이런 페이지가 뜬다.
프로젝트를 만들고 사용자나 권한 추가해서 적절히 쓰면 된다.
프로젝트는 여러개의 repository가 들어갈 수 있는 권한 관리용 그룹이다.

적당히 만들고 나면, 저기에다가 실제 이미지들을 push할 수 있는 것이다.
Docker CLI로 push해보기
docker CLI를 통해 접근하려면, 먼저 로그인을 해야 한다.
근데 무턱대로 찌르면 이런 식으로 인증서 관련 오류가 발생할 수 있다.
신뢰할 수 없는 인증서이기 때문이다.
가장 간단한 조치는, 그냥 무시하도록 설정하는 것이다.
sudo vi /etc/docker/daemon.json
{
"insecure-registries": ["192.168.1.5:20443"]
}
sudo chmod 644 /etc/docker/daemon.json
sudo systemctl restart docker
이렇게 해서 재실행하면 접근이 될 것이다.
내부망에서만 쓸거라면 이런 구조가 별 문제는 되지 않을 것이다.

로그인이 되면, 그때부터는 자유롭게 사용할 수 있다.
sudo docker pull myyrakle/node-server-for-test
sudo docker tag myyrakle/node-server-for-test 192.168.1.5:20443/test/node-server-for-test
sudo docker push 192.168.1.5:20443/test/node-server-for-test
push도 되고
프로젝트 레포지토리에도 추가가 될 것이다.
참조
https://goharbor.io/
https://velog.io/@hyeseong-dev/Harbor-%EC%86%8C%EA%B0%9C-%EC%84%A4%EC%B9%98-%EB%B0%8F-%EB%B0%B0%ED%8F%AC
https://engineering.linecorp.com/ko/blog/harbor-for-private-docker-registry
https://github.com/goharbor/harbor
https://goharbor.io/docs/2.14.0/install-config/run-installer-script/