[Harbor] 사설 image repository Harbor 설치 방법 정리

1. 설치조건 확인

Hardware

Resource Minimum Recommended

CPU2 CPU4 CPU
Mem4 GB8 GB
Disk40 GB160 GB

Software

The following table lists the software versions that must be installed on the target host.

Software Version Description

Docker engineVersion 17.06.0-ce+ or higherFor installation instructions, see https://docs.docker.com/engine/installation/
Docker ComposeVersion 1.18.0 or higherFor installation instructions, see https://docs.docker.com/compose/install/
OpensslLatest is preferredUsed to generate certificate and keys for Harbor

2. 설치 프로그램 다운로

https://github.com/goharbor/harbor/releases

harbor 릴리즈 페이지 방문하여 다운로드

여기선 online installer 로 다운로드 하였음

운로드 이후 public key 검증

gpg --keyserver hkps://keyserver.ubuntu.com --receive-keys 644FF454C0B4115C
gpg -v --keyserver hkps://keyserver.ubuntu.com --verify harbor-online-installer-v2.10.2.tgz.asc

아래와 비슷한 내용이 뜨면 됨

gpg: armor header: Version: GnuPG v1
gpg: assuming signed data in 'harbor-offline-installer-v1.10.0-rc2.tgz'
gpg: Signature made Fri, Dec  6, 2019  5:04:17 AM WEST
gpg: using RSA key 644FF454C0B4115C
gpg: using pgp trust model
gpg: Good signature from "Harbor-sign (The key for signing Harbor build) <jiangd@vmware.com> [unknown]

이후 tgz 파일 추출

$ tar xzvf harbor-online-installer-version.tgz

3. 설치 프로그램 전 harbor 인증서 작성 (HTTPS)

인증기관 인증서 생성

  1. CA 인증서 개인키 생성
openssl genrsa -out ca.key 4096
  1. CA 인증서 생성
openssl req -x509 -new -nodes -sha512 -days 3650 \\
 -subj "/C=KR/ST=Seoul/L=yeoui/O=example/OU=Personal/CN=192.168.133.11" \\
 -key ca.key \\
 -out ca.crt

CN = yourdomain

서버 인증서 생성

  1. 개인키 생성
openssl genrsa -out 192.168.133.11.key 4096

key 이름은 yourdomain.com.key 로

  1. CSR 생성
 openssl req -sha512 -new \\
 -subj "/C=KR/ST=Seoul/L=yeoui/O=example/OU=Personal/CN=192.168.133.11" \\
    -key 192.168.133.11.key \\
    -out 192.168.133.11.csr
  1. x509 v3 확장 파일 생성
cat > v3.ext <<-EOF
authorityKeyIdentifier=keyid,issuer
basicConstraints=CA:FALSE
keyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment
extendedKeyUsage = serverAuth
subjectAltName = @alt_names

[alt_names]

IP.1=192.168.133.11 IP.2=127.0.0.1 DNS.1=192.168.133.11 EOF

alt_names 항목은 환경에 맞게 넣어야함.

  1. v3 파일 사용하여 인증서 생성
openssl x509 -req -sha512 -days 3650 \\
    -extfile v3.ext \\
    -CA ca.crt -CAkey ca.key -CAcreateserial \\
    -in 192.168.133.11.csr \\
    -out 192.168.133.11.crt

Harbor, Docker 인증서 맞추기

  1. Harbor 인증서 폴더에 복사
cp 192.168.133.11.crt /data/cert/
cp 192.168.133.11.key /data/cert/
  • 디렉토리가 없으면 생성
  1. Docker 에서 이용할 수 있도록 crt → cert 변경
openssl x509 -inform PEM -in 192.168.133.11.crt -out 192.168.133.11.cert
  1. Docker 인증서 폴더에 복사
cp 192.168.133.11cert /etc/docker/certs.d/192.168.133.11/
cp 192.168.133.11.key /etc/docker/certs.d/192.168.133.11/
cp ca.crt /etc/docker/certs.d/192.168.133.11/
  • 디렉토리가 없으면 생성
  1. Docker 엔진 재 시작
systemctl restart docker
  • sudo 권한으로 실행

4. Harbor YAML 파일 구성

  1. 바꿔야 할 항목은 hostname, https.certificate, https.private_key 는 위에 인증서 설정을 했기때문에 꼭 바꿔야 하고 나머지는 선택

certificate : 위 3번에서 생성한 서버 crt 인증서 경로 입력

private_key : 위 3번에서 생성한 서버 key 경로 입력

선택적으로 바꿀 내용들

  1. http.port , https:port >> 포트를 변경하고 싶을 경우
  2. password >> harbor admin 패스워드 변경. (DB 패스워드도 있으니 잘 확인)

이외에는 웬만하면 안만지는게 좋아보임

https://goharbor.io/docs/1.10/install-config/configure-yml-file

참고

5. 설치 스크립트 실행

설치 디렉토리에있는 쉘 실행

sudo ./install.sh

(반드시 sudo 권한으로 실행)

모든 컨테이너가 뜨면 접속해서 확인

6. Docker 로 설치한 Harbor 에 로그인

docker login ${Harbor-address}

이 경우는 docker login 192.168.133.11

이후 admin/password 계정 입력

계정을 잘 모르겠다면 위 YAML 파일확인 하면 admin/비밀번호 확인 가능

  • 만약 docker login 이 안될 경우 인증서 문제일 경우가 매우 높음

OS 수준 인증서도 등록해야 함

Ubuntu 의 경우
cp 192.168.133.11.crt /usr/local/share/ca-certificates/192.168.133.11.crt 
update-ca-certificates

Cent OS 의 경우
cp 192.168.133.11.crt /etc/pki/ca-trust/source/anchors/192.168.133.11.crt
update-ca-trust

(안된다면 systmectl restart docker 한번 더)

Harbor 재시작 방법

  • 종료 (docker-compose.yml 이 있는 하버 디렉토리에서)
docker-compose down -v
  • 기동
docker-compose up -d

Leave a Comment