Private Registry 구성 - Harbor
Harbor
는 아티팩트를 정책과 역할 기반 접근 제어(RBAC)를 통해 보호하고, 이미지에 취약점이 없는지 스캔하며, 신뢰할 수 있는 이미지에 서명하는 오픈 소스 레지스트리
입니다. CNCF
의 졸업(Graduated) 프로젝트인 Harbor
는 컴플라이언스(규정 준수), 성능, 상호 운용성을 제공하여 Kubernetes
나 Docker
와 같은 클라우드 네이티브 컴퓨팅 플랫폼 전반에서 아티팩트를 일관되고 안전하게 관리할 수 있도록 도와줍니다.
Docker 설치
Harbor
는 기본적으로 docker
컨테이너 엔진기반으로 동작한다.
dnf config-manager --add-repo https://download.docker.com/linux/rhel/docker-ce.repo dnf install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin systemctl enable --now docker
harbor 다운로드
https://goharbor.io/docs/2.12.0/install-config/
Harbor
설치는 온라인/오프라인 설치를 지원한다.
아래 예제는 인터넷이 되지 않는 상황을 가정하고 오프라인 설치하는 방법이다.
https://goharbor.io/docs/2.12.0/install-config/download-installer/ wget https://github.com/goharbor/harbor/releases/download/v2.12.2/harbor-offline-installer-v2.12.2.tgz tar -xvf harbor-offline-installer-v2.12.2.tgz
SSL 인증서 생성
레지스트리 동작에 필요한 SSL인증서를 생성/등록하는 과정이다. insecure registry
로 구성하려면 이부분은 생략해도 된다.
SSL 인증서 설정
# Root CA 인증서 생성 openssl genrsa -out ca.key 4096 openssl req -x509 -new -nodes -sha512 -days 3650 \ -subj "/C=KR/ST=Seoul/L=Seoul/O=ATL/OU=Personal/CN=MyPersonal Root CA" \ -key ca.key \ -out ca.crt # 서버 인증서 생성 openssl genrsa -out server.key 4096 # CSR 생성 openssl req -sha512 -new \ -subj "/C=KR/ST=Seoul/L=Seoul/O=ATL/OU=Personal/CN=Private Harbor Server" \ -key server.key \ -out server.csr # V3 Extension 생성 cat > v3.ext <<-EOF authorityKeyIdentifier=keyid,issuer basicConstraints=CA:FALSE keyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment extendedKeyUsage = serverAuth subjectAltName = @alt_names [alt_names] DNS.1=registry.local.domain DNS.2=registry IP.1=10.33.0.175 EOF # 인증서 생성 openssl x509 -req -sha512 -days 3650 \ -extfile v3.ext \ -CA ca.crt -CAkey ca.key -CAcreateserial \ -in server.csr \ -out server.crt
Docker에 인증서 등록
ca.crt
, server.crt
, server.key
파일을 Harbor
와 Docker
에서 사용할 수 있도록 설정
# 아래 파일을 Harbor data 경로에 복사 mkdir -p /data/cert cp server.crt /data/cert/ cp server.key /data/cert/ # Docker에서 사용할수 있도록 server.crt를 server.cert로 변경해야함 openssl x509 -inform PEM -in server.crt -out server.cert # 인증서 파일을 복사 <yourdomain.com> 부분은 설정한 도메인 또는 아이피로 설정하면 됨 cp server.cert /etc/docker/certs.d/yourdomain.com/ cp server.key /etc/docker/certs.d/yourdomain.com/ cp ca.crt /etc/docker/certs.d/yourdomain.com/ # 예시 mkdir -p /etc/docker/certs.d/10.33.0.175/ cp server.cert /etc/docker/certs.d/10.33.0.175/ cp server.key /etc/docker/certs.d/10.33.0.175/ cp ca.crt /etc/docker/certs.d/10.33.0.175/
Harbor 설치
아까 다운로드 받아 압축 푼 파일에서 prepare
를 실행시킨다.
./prepare docker compose down -v docker compose up -d # 완료
이제 Web 화면에 접속해서 사용하면 된다.
harbor 정지/재기동
정지 / 재기동 시에는 단순히 아래 명령어를 사용하면 된다.
docker compose down -v docker compose up -d
로그인하면 댓글을 남길 수 있습니다.