private_registry_구성_-_harbor

Private Registry 구성 - Harbor

https://goharbor.io/

Harbor는 아티팩트를 정책과 역할 기반 접근 제어(RBAC)를 통해 보호하고, 이미지에 취약점이 없는지 스캔하며, 신뢰할 수 있는 이미지에 서명하는 오픈 소스 레지스트리입니다. CNCF의 졸업(Graduated) 프로젝트인 Harbor는 컴플라이언스(규정 준수), 성능, 상호 운용성을 제공하여 KubernetesDocker와 같은 클라우드 네이티브 컴퓨팅 플랫폼 전반에서 아티팩트를 일관되고 안전하게 관리할 수 있도록 도와줍니다.

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

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인증서를 생성/등록하는 과정이다. insecure registry로 구성하려면 이부분은 생략해도 된다.

# 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

ca.crt, server.crt, server.key 파일을 HarborDocker에서 사용할 수 있도록 설정

# 아래 파일을 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/

아까 다운로드 받아 압축 푼 파일에서 prepare를 실행시킨다.

./prepare
docker compose down -v
docker compose up -d
# 완료

이제 Web 화면에 접속해서 사용하면 된다.

정지 / 재기동 시에는 단순히 아래 명령어를 사용하면 된다.

docker compose down -v
docker compose up -d
로그인하면 댓글을 남길 수 있습니다.
  • private_registry_구성_-_harbor.txt
  • 마지막으로 수정됨: 2025/04/08 04:27
  • 저자 koov