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