Cloud/docker

[Docker] Registry - Harbor 설치 방법

근육곰돌이 2024. 4. 8. 12:45
728x90

Harbar 설치

사전 주의 사항 (podman 사용불가)

# 만약 podman일 경우  
아래와 같이 에러가 발생한다..

~\]# ./install.sh  
\[Step 0\]: checking if docker is installed ...  
Emulate Docker CLI using podman. Create /etc/containers/nodocker to quiet msg.

Note: docker version: 4.6.1  
✖ Need to upgrade docker package to 17.06.0+.

 

01. 디렉토리 생성

  • 하버의 설치 디렉토리와 인증서관리를 위한 cert 디렉토리 생성
mkdir -p /opt/infra/harbor/  
mkdir -p /opt/infra/harbor/cert

 

02. CA Certificate 생성

직접 CA를 생성하여 Server의 인증서가 안전하다고 인증이 필요하므로, CA 공개키 생성해야합니다.

cd /opt/infra/harbor/cert

# Root CA의 비밀키 생성
openssl genrsa -out ca.key 4096

#Root CA의 비밀키와 짝을 이룰 공개키 생성  
openssl req -x509 -new -nodes -sha512 -days 365 -key ca.key -out ca.crt

# Country Name (2 letter code) \[XX\]:
# State or Province Name (full name) \[\]:
# Locality Name (eg, city) \[Default City\]:
# Organization Name (eg, company) \[Default Company Ltd\]:
# Organizational Unit Name (eg, section) \[\]:
# Common Name (eg, your name or your server's hostname) \[\]:
# Email Address \[\]:

 

03. Server Certificate 생성

서버의 인증서를 생성합니다. ROOT CA의 비밀키와 공개키를 만들때와 마찬가지로 서버의 비밀키를 생성하고, 생성한 비밀키로 CSR파일을 생성합니다.
CSR(Certificate Signing Request)파일은 인증서를 발급하기 위해 필요한 정보를 담고 있는 데이터입니다. SSL 발급을 신청하기 위해 해당 파일 내용을 ROOT CA에 제출하는 용도로 사용하게 됩니다.

# Server의 비밀키 생성
openssl genrsa -out server.key 4096

# Server의 CSR 파일 생성
openssl req -sha512 -new -key server.key -out server.csr

 

04. SAN 등록

앞서 생성한 CSR파일과 ROOT CA에 인증해달라고 요청하는 작업을 수행합니다. CSR파일을 가지고 서버의 인증키를 생성하게 됩니다.

vim v3ext.cnf

# 아래 내용 추가
subjectAltName = IP:192.168.X.X,IP:127.0.0.1
openssl x509 -req -sha512 -days 365 -extfile v3ext.cnf -CA ca.crt -CAkey ca.key -CAcreateserial -in server.csr -out server.crt

 

05. Certificate 업데이트

Docker에서는 .crt파일을 CA로 간주하기 떄문에, 서버의 인증서라는 것을 표현하려면 .crt형식이 아닌 .cert형식으로 변환해주어야한다.
따라서 server.crt파일을 server.cert파일로 변환합니다.

openssl x509 -inform PEM -in server.crt -out server.cert

 

06. 만들어진 인증서 파일들을 Docker와 Host에 등록, 업데이트 작업을 수행합니다.

# Docker

# host의 이름을 server라고 했으므로, /certs.d/server로 생성합니다.
sudo mkdir -p /etc/docker/certs.d/server  
cp server.cert /etc/docker/certs.d/server/  
cp server.key /etc/docker/certs.d/server/  
cp ca.crt /etc/docker/certs.d/server/

systemctl restart docker  
systemctl restart podman

 

07. Harbor package 다운로드

Harbor는 오프라인과 온라인 두가지 설치 방식이 있습니다. 해당 글은 오프라인으로 설치 진행합니다.
(2024-04-08) 현재 기준 최신파일입니다.

# 패키지 디렉토리로 이동
mkdir -p /opt/infra/harbor/install  
cd /opt/infra/harbor/install

# 설치 파일을 다운로드 합니다.
wget [https://github.com/goharbor/harbor/releases/download/v2.10.1/harbor-offline-installer-v2.10.1.tgz](https://github.com/goharbor/harbor/releases/download/v2.10.1/harbor-offline-installer-v2.10.1.tgz)

# 다운로드한 파일을 압축 해제 합니다.
tar xzvf harbor-offline-installer-v2.10.1.tgz

 

08. harbor.yml 작성

기본적으로 디렉토리 내에는 harbor.yml.tmpl이 존재합니다. 이 파일을 기준으로 내용을 수정하여 설치 시 사용하면 됩니다.

# 압축이 해제된 harbor 디렉터리로 이동하여 작업을 수행합니다.
cd /opt/infra/harbor/install/harbor

cp harbor.yml.tmpl harbor.yml  
vim harbor.yml

# 아래 내용 수정
http:  
port: 80 # 기본 포트 80

https:  
ports: 443 # 기본 포트 443

hostname: {IP주소로 수정 (예시, 192.168.X.X)}

https.certificate: {server.cert로 수정 (예시, /etc/docker/certs.d/server/server.cert)  
https.private\_key: {server.key로 수정 (예시, /etc/docker/certs.d/server/server.key)

특히나, 무결성 기능을 사용하기 위해서는 https가 반드시 설정되어 있어야 한다.

 

09. Harbor 기동 (Deploy)

# 관리자 권한 필수
./prepare

# 관리자 권한 필수
./install.sh

 

 


 

 

Harbor 사용

로그인

  • 브라우저에 아래와 같이 4443포트로 접속
https://<server-ip>:4443
  • 기본 ID/PASSWORD
ID: admin  
PASSWORD: Harbor12345
반응형