[Harbor] Docker Limit 오류 Harbor proxy로 해결하기

sunlog·2024년 3월 22일
0

Harbor 설치

mkdir -p ~/certs
cd ~/certs
openssl genrsa -out ca.key 4096

#CA인증서 생성

openssl req -x509 -new -nodes -sha512 -days 3650 \
-subj "/C=KR/ST=Seoul/L=Seoul/CN=<<IP>>" \
-key ca.key \
-out ca.crt

#개인키 생성
openssl genrsa -out harbor.ks.io.key 4096

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

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

[alt_names]
DNS.1=<<IP>>
[DNS.2=harbor.ks.io](http://dns.2=harbor.ks.io/)
DNS.3=harbor

EOF

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

mkdir -p /data/cert
cp harbor.ks.io.crt /data/cert/
cp harbor.ks.io.key /data/cert/

#/root/certs 에서 진행한다.
openssl x509 -inform PEM -in harbor.ks.io.crt -out harbor.ks.io.cert
mkdir -p /etc/docker/certs.d/harbor.ks.io/
cp harbor.ks.io.cert /etc/docker/certs.d/harbor.ks.io/
cp harbor.ks.io.key /etc/docker/certs.d/harbor.ks.io/
cp ca.crt /etc/docker/certs.d/harbor.ks.io/

# root 에서 실행, Harbor Offline 설치
wget "https://github.com/goharbor/harbor/releases/download/v2.1.3/harbor-offline-installer-v2.1.3.tgz "
tar xfvz harbor-offline-installer-v2.1.3.tgz
cd /harbor
cp harbor.yml.tmpl harbor.yml

# 아래 내용처럼 yml 수정
-------------------------------------------------
hostname: harbor.ks.io

https:
  # https port for harbor, default is 443
  port: 443
  # The path of cert and key files for nginx
  certificate: /data/cert/harbor.ks.io.crt
  private_key: /data/cert/harbor.ks.io.key

harbor_admin_password: <<password>>
-------------------------------------------------

./prepare
./install.sh

다른 VM에서 Harbor proxy 사용 방법

  • 전제 조건
    • docker가 이미 설치되어있어야 함
  1. Harbor가 설치된 서버의 인증서를 docker image가 필요한 서버로 복사한다.

    #root 사용자로 전환 후 아래 내용 입력
    
    $ cd /data/cert
    $ scp /etc/docker/certs.d/harbor.ks.io/* <VM의 IP>:/etc/docker/certs.d/harbor.ks.io/
  2. 대상 VM docker 재시작

  3. 대상 VM hosts 파일에 호스트 추가

    <<IP>> harbor.ks.io
  4. docker pull 테스트

    docker pull harbor.ks.io/proxy/<도커네임스페이스>/<docker 이미지명?>
    
    ex) docker pull harbor.ks.io/proxy/pytorch/pytorch

0개의 댓글