CI/CD(4) : Harbor 설치

NOHHYEONGJUN·2024년 9월 15일

CI/CD

목록 보기
5/15
post-thumbnail

Harbor

  • docker registry를 사용
  • Private한 registry 구성

 

 

 


1. docker, docker-compose 설치

sudo apt-get update

#docker
sudo apt-get install -y docker.io
sudo systemctl start docker
sudo systemctl enable docker

sudo usermod -aG docker username

#docker-compose
sudo apt-get install -y docker-compose

 

 

2. Harbor 다운로드

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

wget https://github.com/goharbor/harbor/releases/download/v2.11.1/harbor-offline-installer-v2.11.1.tgz

tar xvf harbor-offline-installer-v2.11.1.tgz

 

 

3. 인증 기관 인증서 생성

https://minha0220.tistory.com/180

#인증서 디렉토리 생성
mkdir ~/cert
cd ~/cert

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

#CA 인증서 생성: CN에 harbor를 설치할 서버의 IP주소 입력
openssl req -x509 -new -nodes -sha512 -days 3650 \
 -subj "/C=CN/ST=Seoul/L=Seoul/O=example/OU=Personal/CN=192.168.64.1" \
 -key ca.key \
 -out ca.crt

 

 

4. 서버 인증서 생성

#개인키 생성
openssl genrsa -out 192.168.64.1.key 4096

#인증서 서명 요청(CSR)을 생성
openssl req -sha512 -new \
    -subj "/C=CN/ST=Seoul/L=SEoul/O=example/OU=Personal/CN=192.168.64.1" \
    -key 192.168.64.1.key \
    -out 192.168.64.1.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=192.168.64.1
EOF

#Harbor 호스트에 대한 인증서 생성
openssl x509 -req -sha512 -days 3650 \
    -extfile v3.ext \
    -CA ca.crt -CAkey ca.key -CAcreateserial \
    -in 192.168.64.1.csr \
    -out 192.168.64.1.crt

 

 

5. Harbor & Docker에 인증서 제공

#/data/cert/ 폴더 생성
sudo mkdir -p /data/cert

#서버 인증서와 키를 Harbor 호스트의 인증서 폴더에 복사
sudo cp 192.168.64.1.crt /data/cert/
sudo cp 192.168.64.1.key /data/cert/

# Docker에서 사용할 수 있도록 crt을 cert로 변환
openssl x509 -inform PEM -in 192.168.64.1.crt -out 192.168.64.1.cert

#Docker 인증서 폴더 생성
sudo mkdir -p /etc/docker/certs.d/192.168.64.1/

#서버 인증서, 키 및 CA 파일을 Harbor 호스트의 Docker 인증서 폴더에 복사
sudo cp 192.168.64.1.cert /etc/docker/certs.d/192.168.64.1/
sudo cp 192.168.64.1.key /etc/docker/certs.d/192.168.64.1/
sudo cp ca.crt /etc/docker/certs.d/192.168.64.1/

#Docker 엔진 다시 시작
sudo systemctl restart docker

 

 

6. Harbor 배포 및 구성

#harbor directory 이동
cd ~/harbor

# harbor.yml.tmpl 파일을 harbor.yml로 수정 후 파일 진입
mv harbor.yml.tmpl harbor.yml
vi harbor.yml

  • 5, 17, 18번 줄 IP 수정 (image는 .3이지만, 글 내용 상 .1)
  • harbor admin password 확인

 

 

7. Harbor 설치 및 접속

  1. 설치
sudo ./prepare
sudo ./install.sh

 

  1. 접속

https://192.168.64.1

 

 

8. 재부팅 시 시작 설정

  1. systemd service 파일 생성
sudo vi /etc/systemd/system/harbor.service

 

  1. service 파일 내용 작성
[Unit]
Description=Harbor
After=docker.service
Requires=docker.service

[Service]
Type=oneshot
RemainAfterExit=yes
WorkingDirectory=/home/hj/harbor
ExecStart=/usr/local/bin/docker-compose up -d
ExecStop=/usr/local/bin/docker-compose down
TimeoutStartSec=0

[Install]
WantedBy=multi-user.target
    → WorkingDirectory 경로 확인 후 설정

 

  1. systemd 재시작
sudo systemctl daemon-reload

 

  1. Harbor enable
sudo systemctl enable harbor.service

 

 

9. 인증서 신뢰 설정

주의 요함 → 인증서가 올바르지 않음 → 세부정보 → 내보내기
→ 인증서 시스템 등록 → 항상 신뢰 설정


 

 

 


10. 종료 및 재시작 방법

sudo docker-compose down
sudo docker-compose up -d

 

 

 


Harbor 사용 시 주의 사항

sudo를 사용하면 안된다!

docker login https://192.168.64.1

docker tag SOURCE_IMAGE[:TAG] [MyDomain.com]:[PORT]/[PROJECT]/IMAGE[:TAG]

docker push [MyDomain.com]:[PORT]/[PROJECT]/IMAGE[:TAG]
profile
Cloud/DevOps & Network Virtualization에 관심 있는 대학생입니다. 🐳

0개의 댓글