1. Harbor 간단하게 개념 확인

Taeho Kim·2026년 1월 20일
post-thumbnail

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로 변경하면 됩니다.
# CA 인증서 생성
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 설정 파일 구성 및 시작

# harbor 설정 구성
cd harbor
cp harbor.yml.tmpl harbor.yml # 복제 및 수정
# hostname 및 /data/cert/yourdomain.com.crt 위치, admin 패스워드 수정
vim harbor.yaml

# 하버 컨테이너 준비 및 시작
sudo ./prepare
sudo ./install.sh
# DO NOT use localhost or 127.0.0.1, because Harbor needs to be accessed by external clients.
hostname: yourdomain.com # IP 주소로 설정

# http related config
http:
	# port for http, default is 80. If https enabled, this port will redirect to https port
    port: 80

# https related config
https:
	# https port for harbor, default is 443
    port: 443
    # The path of cert and key files for nginx
    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
profile
interested in operating Kubernetes efficiently.

0개의 댓글