도커

Harbor 설치

황동리 2024. 7. 23. 13:51
반응형

https://goharbor.io/docs/2.0.0/install-config/installation-prereqs/
Harbor 설치 관련 내용은 위 사이트에서 참조하였습니다.


1. Harbor 설치 전 요구 사항

Harbor를 설치하기 전, 필요한 사항들을 알아보도록 하겠습니다.

Harbor 하드웨어 요구사항

자원최소사양권장사양

CPU 2 CPU 4 CPU
Mem 4 GB 8 GB
Disk 40 GB 160GB

소프트웨어 요구사항

소프트웨어버전

Docker 엔진 Version 17.06.0-ce 이상
Docker Compose Version 1.18.0 이상
Openssl 최신버전 추천

Network Ports

아래에서 요구하는 포트를 사용할 수 있어야 합니다.

PortProtocol

443 HTTPS
4443 HTTPS
80 HTTP

2. Harbor 설치 진행

Harbor 설치 방법은 두 개로 나뉘는데,

  • 온라인 설치
  • 오프라인 설치

이번엔 오프라인 설치로 진행해보겠습니다.

2-1. Harbor 파일 다운로드

https://github.com/goharbor/harbor/tags
위 URL에서 원하는 버전의 파일을 받아주시면 됩니다.

저는 v2.10.3 버전의 오프라인 파일 설치하였습니다.

2-2. 인증 기관 인증서 생성

1. CA 인증서 개인 키 생성

# openssl genrsa -out ca.key 4096

 

2. CA 인증서 생성

# openssl req -x509 -new -nodes -sha512 -days 3650 \
 -subj "/C=KR/ST=Seoul/L=Seoul/O=example/OU=Personal/CN=<원하는 도메인 명>" \
 -key ca.key \
 -out ca.crt

2-3. 서버 인증서 생성

 

1. CA 인증서 개인 키 생성

# openssl genrsa -out <원하는 도메인 명>.key 4096

 

 

2. 인증서 서명 요청(CSR) 생성

# openssl req -sha512 -new \
    -subj "/C=KR/ST=Seoul/L=Seoul/O=example/OU=Personal/CN=<원하는 도메인 명>" \
    -key <원하는 도메인 명>.key \
    -out <원하는 도메인 명>.csr

 

 

3. x509 v3 확장 파일 생성

# cat > v3.ext <<-EOF
authorityKeyIdentifier=keyid,issuer
basicConstraints=CA:FALSE
keyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment
extendedKeyUsage = serverAuth
subjectAltName = @alt_names

[alt_names]
DNS.1=<원하는 도메인명>
hostname=<원하는 호스트명>
EOF

 

 

4. v3.ext 파일을 사용하여 Harbor 호스트에 대한 인증서 생성

# openssl x509 -req -sha512 -days 3650 \
    -extfile v3.ext \
    -CA ca.crt -CAkey ca.key -CAcreateserial \
    -in <원하는 도메인 명>.csr \
    -out <원하는 도메인 명>.crt

 

2-4. harbor.yml 파일 수정

우선 앞서 받은 tgz 파일의 압축을 풀어줍니다.

# tar zxvf harbor-offline-installer-v2.10.3.tgz 

이후 harbor.yml.tmpl 파일을 harbor.yml로 복사해줍니다.

# cp harbor.yml.tmpl harbor.yml

이제 harbor.yml 파일의 내용을 수정해줍니다.
(harbor.yml 파일의 자세한 내용은 아래 링크에서 확인이 가능합니다.)
https://goharbor.io/docs/2.0.0/install-config/configure-yml-file/

# vi harbor.yml

저는 여기서 hostname, certificate, private_key, harbor_admin_password 항목의 내용을 변경해주었습니다.

hostname: 내가 사용하고자 하는 도메인 명
certificate: 내가 사용하고자 하는 도메인 명에 대한 crt 파일
private_key: 내가 사용하고자 하는 도메인 명에 대한 key 파일
harbor_admin_password: harbor의 admin 계정에 대한 비밀번호

2-5. Harbor 및 Docker에 인증서 제공

ca.crt, <원하는 도메인 명>.crt 및 파일을 생성한 후에는 <원하는 도메인 명>.key 를 Harbor와 Docker에 제공하고 Harbor를 재구성해서 사용합니다.

 

1. 서버 인증서와 키를 인증서 폴더를 생성 후 복사

# mkdir -p /data/cert/
# cp <원하는 도메인 명>.crt /data/cert/
# cp <원하는 도메인 명>.key /data/cert/

 

 

2. Docker에서 사용하려면 <원하는 도메인 명>.crt 파일을 <원하는 도메인 명>.cert 로 변경 필요

# openssl x509 -inform PEM -in <원하는 도메인 명>.crt -out <원하는 도메인 명>.cert

 

 

3. 서버 인증서, 키, CA 파일을 Docker 인증서 폴더 안에 넣어주어야 인증이 적용됩니다.

# cp <원하는 도메인 명>.cert /etc/docker/certs.d/<원하는 도메인 명>/
# cp <원하는 도메인 명>.key /etc/docker/certs.d/<원하는 도메인 명>/
# cp <원하는 도메인 명>.crt /etc/docker/certs.d/<원하는 도메인 명>/

 

혹시라도 harbor.yml에 https 포트를 443이 아닌 다른 포트에 매핑을 한 경우에는, /etc/docker/certs.d/<원하는 도메인 명>:port 와 같이 디렉터리를 생성 해줍니다.

 

4. Docker 서비스 재시작

# systemctl restart docker

 

 

2-6. Harbor 설치를 위한 docker-compose.yml 파일 생성

 

1. 앞서 과정들을 모두 완료하고나서 prepare 스크립트를 돌려줍니다.

# ./prepare

 

정상적으로 스크립트가 돌아가면 docker-compose.yml 파일이 생성됩니다.

 

 

2. 그럼 이제 docker-compose.yml 파일을 실행 해줍니다.

# docker compose up -d

 

2-7. 정상 접속 확인

 

설치 과정은 이상 입니다.


원격 서버에서 Harbor 레지스트리 인증서 적용

원격 서버에서 앞서 생성한 Harbor 레지스트리에 이미지를 올리려면, 인증서를 적용 시켜주어야 합니다.

원격 서버에서 인증서를 적용 시키려면, 파일들을 넣어주면 된다

앞서 생성한 ca.crt, <harbor 레지스트리 주소>.crt, <harbor 레지스트리 주소>.key
파일들을 아래의 디렉터리 밑에 넣어주면 됩니다.

/etc/docker/certs.d/<harbor 레지스트리 주소>/ca.crt
/etc/docker/certs.d/<harbor 레지스트리 주소>/<harbor 레지스트리 주소>.crt
/etc/docker/certs.d/<harbor 레지스트리 주소>/<harbor 레지스트리 주소>.key

 

이상 입니다.

반응형

'도커' 카테고리의 다른 글

Docker compose 설치 (ubuntu)  (0) 2024.05.22
Ubuntu 20.04 Docker 설치 방법  (0) 2024.03.08
Docker 알아보기 - 4  (1) 2024.01.04
Docker 알아보기 - 3  (1) 2024.01.03
Docker 알아보기 - 2  (1) 2024.01.02