1. 설치조건 확인
Hardware
Resource Minimum Recommended
CPU | 2 CPU | 4 CPU |
Mem | 4 GB | 8 GB |
Disk | 40 GB | 160 GB |
Software
The following table lists the software versions that must be installed on the target host.
Software Version Description
Docker engine | Version 17.06.0-ce+ or higher | For installation instructions, see https://docs.docker.com/engine/installation/ |
Docker Compose | Version 1.18.0 or higher | For installation instructions, see https://docs.docker.com/compose/install/ |
Openssl | Latest is preferred | Used 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)
인증기관 인증서 생성
- CA 인증서 개인키 생성
openssl genrsa -out ca.key 4096
- 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
서버 인증서 생성
- 개인키 생성
openssl genrsa -out 192.168.133.11.key 4096
key 이름은 yourdomain.com.key 로
- 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
- 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 항목은 환경에 맞게 넣어야함.
- 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 인증서 맞추기
- Harbor 인증서 폴더에 복사
cp 192.168.133.11.crt /data/cert/
cp 192.168.133.11.key /data/cert/
- 디렉토리가 없으면 생성
- Docker 에서 이용할 수 있도록 crt → cert 변경
openssl x509 -inform PEM -in 192.168.133.11.crt -out 192.168.133.11.cert
- 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/
- 디렉토리가 없으면 생성
- Docker 엔진 재 시작
systemctl restart docker
- sudo 권한으로 실행
4. Harbor YAML 파일 구성
- 바꿔야 할 항목은 hostname, https.certificate, https.private_key 는 위에 인증서 설정을 했기때문에 꼭 바꿔야 하고 나머지는 선택
certificate : 위 3번에서 생성한 서버 crt 인증서 경로 입력
private_key : 위 3번에서 생성한 서버 key 경로 입력
선택적으로 바꿀 내용들
- http.port , https:port >> 포트를 변경하고 싶을 경우
- 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
'IT 공부 > PaaS' 카테고리의 다른 글
K8S 에서 containerd 와 docker (0) | 2024.05.29 |
---|---|
[Harbor] 이미지 Push 및 Kubernetes 에서 사용방법 (0) | 2024.04.13 |
[K8S] MetalLB 설치 (0) | 2024.02.20 |
[K8S] 9. AutoScaling & Scheduler (0) | 2024.01.22 |
[K8S] 8. Statefulset (0) | 2024.01.20 |