본문 바로가기
CS/TIL

[Docker] Harbor 설치

by DenverAlmighty 2024. 3. 5.
반응형
반응형

velog 마이그레이션

시리즈 : 지하철에서 OO 마스터하기 - 도커 

원글 : [Docker] Harbor 설치 (2022년 11월 8일)

 

 

 

Harbor 설치하기

0. 설치 환경

필요 스펙

설치 환경
OS : CentOS 7
CPU : 4
Mem : 8 GB
Disk : 40GB
Harbor : v. 2.6.1

 

1. 다운로드 및 압축 해제

harbor-offline-installer 다운로드
https://github.com/goharbor/harbor/releases

# 압축 해제
tar xzvf harbor-offline-installer-version.tgz

 

2. 설정 및 설치

2.1 harbor.yml 수정

# hostname 설정 (harbor 접속 도메인/IP)
vi harbor.yml
hostname, port, path of cert, admin pw 수정

hostname : <domain.com>
/data/cert/<domain.com>.crt
/data/cert/<domain.com>.key

2.1 인증서 생성

인증 기관 인증서 생성

cd /
mkdir certs
cd certs

#CA 인증서 개인키 생성
openssl genrsa -out ca.key 4096

#CA 인증서 생성
openssl req -x509 -new -nodes -sha512 -days 3650 \
 -subj "/C=<CN>/ST=<Seoul>/L=<Seoul>/CN=<yourdomain.com>" \
 -key ca.key \
 -out ca.crt

서버인증서 생성

#개인키 생성
openssl genrsa -out <yourdomain.com.key> 4096

#인증서 서명 요청(CSR)을 생성
openssl req -sha512 -new \
    -subj "/C=CN/ST=<Seoul>/L=<Seoul>/OU=Personal/CN=<yourdomain.com>" \
    -key <yourdomain.com.key> \
    -out <yourdomain.com.csr>

#x509 v3 확장 파일을 생성(IP/FQDN으로 하버 호스트에 연결 여부와 관계 없이 설정)
cat > v3.ext <<-EOF
authorityKeyIdentifier=keyid,issuer
basicConstraints=CA:FALSE
keyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment
extendedKeyUsage = serverAuth
subjectAltName = @alt_names

[alt_names]
DNS.1=<yourdomain.com>
DNS.2=<yourdomain>
DNS.3=<hostname>
EOF

#v3.ext하여 Harbour 호스트에 대한 인증서를 생성
openssl x509 -req -sha512 -days 3650 \
    -extfile v3.ext \
    -CA ca.crt -CAkey ca.key -CAcreateserial \
    -in <yourdomain.com.csr> \
    -out <yourdomain.com.crt>

Harbor 및 Docker에 인증서 제공

#서버 인증서와 키를 하버 호스트의 certficates 폴더에 복사
mkdir -p /data/cert
cp <yourdomain.com>.crt /data/cert/
cp <yourdomain.com>.key /data/cert/

Docker에서 사용하기 위해 .crt -> .cert 로 변환
(Docker 데몬은 .crt파일을 CA 인증서로 해석하고 .cert파일을 클라이언트 인증서로 해석)
openssl x509 -inform PEM -in <yourdomain.com>.crt -out <yourdomain.com>.cert

서버 인증서, 키 및 CA 파일을 Harbour 호스트의 Docker 인증서 폴더에 복사합니다. 먼저 적절한 폴더를 만들어야 합니다.
cp <yourdomain.com>.cert /etc/docker/certs.d/<yourdomain.com>/
cp <yourdomain.com>.key /etc/docker/certs.d/<yourdomain.com>/
cp ca.crt /etc/docker/certs.d/<yourdomain.com>

도커 엔진 재시작
systemctl restart docker



#Harbor 배포 또는 재구성
prepare스크립트를 실행하여 HTTPS를 활성화합니다.
cd /opt/harbor
./prepare

Harbor가 실행 중이면 기존 인스턴스를 중지하고 제거하십시오.
이미지 데이터는 파일 시스템에 남아 있으므로 데이터가 손실되지 않습니다.

docker compose down -v

Harbor 재시작

docker compose up -d

HTTPS 연결 확인

1.브라우저에서 https://<yourdomain.com> 접속

2. Docker 데몬을 실행하는 머신에서 /etc/docker/daemon.json파일 확인
-insecure-registry옵션이 https://<yourdomain.com>에 대해 설정되지 않았는지 확인

3. Docker 클라이언트에서 Harbor에 로그인
docker login <yourdomain.com>
(443 포트를 다른 포트에 매핑한 경우 명령 nginx에 포트를 추가
docker login <yourdomain.com:port>)

2.3 설치

#설치
#clair : 도커 이미지 취약점 분석도구
#chartmuseum : helm chart repository

./install.sh --with-clair --with-chartmuseum

docker 설치했했는데 docker-compose를 설치하라고 나온다

#링크 생성
ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose

install.sh

설치 확인

harbor.yml에 설정한 포트

docker compose 프로세스 확인

docker-compose ps

로그

/var/log/harbor

참고

https://goharbor.io/

728x90
반응형