필요 스펙
설치 환경
OS : CentOS 7
CPU : 4
Mem : 8 GB
Disk : 40GB
Harbor : v. 2.6.1
harbor-offline-installer 다운로드
https://github.com/goharbor/harbor/releases
# 압축 해제
tar xzvf harbor-offline-installer-version.tgz
# 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
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>
#서버 인증서와 키를 하버 호스트의 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
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>)
#설치
#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
참고