Habor란?
- CNCF 졸업 프로젝트로 오픈 소스 레지스트리
- 정책 및 역할 기반 액세스 제어를 제공한다.
- 아티팩트를 보호하고, 이미지 스캔, 취약성 확인, 이미지를 신뢰할 수 있도록 서명
- 웹 대시보드 제공
Harbor를 설치할 인스턴스 생성
vagrant 이용한다면
- 이미지: ubuntu:24.04 인스턴스를 구성
- 최소 사향: CPU 4, 8GB 메모리
- 디스크 크기: 100GB
Vagrant.configure("2") do |config|
# Ubuntu 24.04 이미지 설정
config.vm.box = "ubuntu/focal64"
# vagrant plugin install vagrant-disksize
config.disksize.size = '100GB'
config.vm.network "private_network", type: "static", ip: "192.168.200.99"
config.vm.hostname = "harbor"
# CPU 및 메모리 설정
config.vm.provider "virtualbox" do |vb|
vb.cpus = 2
vb.memory = "4096"
end
end
docker-compose를 사용해서 배포
- 도커 설치 필요
- 관리자 권한으로 넘어와서 도커 설치를 진행
# 도커 설치
sudo apt update
sudo apt install -y docker.io
# 도커 컴포즈 설치
sudo curl -L "https://github.com/docker/compose/release/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod 755 /usr/local/bin/docker-compose
sudo docker-compose version
# Harbor 다운로드
wget https://github.com/goharbor/harbor/releases/download/v2.10.1/harbor-offline-installer-v2.10.1.tgz
tar xzvf harbor-offline-installer-v2.10.1.tgz
Harbor 인증서 준비
- 아래 내용에서 도메인정보(yourdomain.com)를 IP로 변경하면 됩니다.
openssl genrsa -out ca.key 4096
openssl req -x509 -new -nodes -sha512 -days 3650 \
-subj "/C=CN/ST=Beijing/L=Beijing/O=example/OU=Personal/CN=yourdomain.com" \
-key ca.key \
-out ca.crt
openssl genrsa -out yourdomain.com.key 4096
openssl req -sha512 -new \
-subj "\C=CN/ST=Beijing/L=Beijing/O=example/OU=Personal/CN=yourdomain.com" \
-key yourdomain.com.key \
-out yourdomain.com csr
cat > v3.ext << -EOF
authorityKeyIdentifier=keyid,issuer
basicConstraints=CA:FALSE
KeyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment
extendedKeyUsage = serverAuth
subjectAltName = @alt_names
Harbor 설정 파일 구성 및 시작
cd harbor
cp harbor.yml.tmpl harbor.yml
vim harbor.yaml
sudo ./prepare
sudo ./install.sh
hostname: yourdomain.com
http:
port: 80
https:
port: 443
certificate: /etc/docker/certs.d/yourdomain.com/yourdomain.com.cert
private_key: /etc/docker/certs.d/yourdomain.com/yourdomain.com.key
웹 UI를 활용한 Harbor 사용
- 8443포트를 호스트의 443으로 포트포워딩하고 웹 브라우저로 접속
- 고급을 누르고 안전하지 않음을 선택
- Harbor의 초기 ID와 패스워드는 admin/Harbor12345
프로젝트 생성
- 처음에 로그인하면 기본 프로젝트인 Library가 보인다.
- 이 프로젝트는 누구나 액세스해서 사용할 수 있는 Public 모드로 구성
- 여기에 New Project 버튼을 눌러서 새 프로젝트를 생성할 수 있다.
프로젝트 멤버 관리
- admin 프로젝트로 가면 해당 기능을 사용할 수 있는 유저를 정할 수 있는 기능이 있다.
- 프로젝트 단위대로 권한을 부여해 액세스할 수 있는 유저 구성한다.
- 유저는 왼쪽 유저 탭에서 새로운 유저를 구성할 수 있다.
docker CLI를 활용한 Harbor 사용
- 도커 CLI에서 하버로 접속하는 설정
- admin 유저를 사용해 원하는 이미지를 업로드하기 위해 로그인
sudo docker login yourdomain.com -u admin -p password1234
admin 권한으로 업로드를 진행
- nginx를 pulling하고 nginx에 태그를 추가
- 전달되는 IP는 Harbor의 IP, 그리고 추가된 태그로 푸시를 진행
sudo docker pull nginx
sudo docker tag nginx yourdomain.com/admin/nginx
sudo docker push yourdomain.com/admin/nginx