Provisioning, Harbor/Dev

Jeonghak Choยท2025๋…„ 5์›” 18์ผ

Provisioning

๋ชฉ๋ก ๋ณด๊ธฐ
26/44

๐Ÿ“— ํ”„๋กœ๋น„์ €๋‹ - Harbor

๐Ÿณ๏ธโ€๐ŸŒˆ [๊ถ๊ธˆํ•œ์ ]

  • ๋กœ์ปฌ ํ™˜๊ฒฝ์— ์ด๋ฏธ์ง€ ์ €์žฅ์†Œ๋ฅผ ๋งŒ๋“ค์–ด ํ™œ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•

๐Ÿ”—[๋ชฉ์ฐจ]

Harbor ์„ค์น˜

Harbor(ํ•˜๋ฒ„)๋ฅผ Docker๋กœ ์„ค์น˜ํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ๊ณต์‹์ ์œผ๋กœ Docker Compose๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ์‹์ด ๊ฐ€์žฅ ๊ฐ„๋‹จํ•˜๊ณ  ๋„๋ฆฌ ์‚ฌ์šฉ๋œ๋‹ค. ์šด์˜ ํ™˜๊ฒฝ์—์„œ๋Š” HTTPS + CA ์ธ์ฆ์„œ + ์™ธ๋ถ€ DB + reverse proxy ๊ตฌ์„ฑ์ด ๊ถŒ์žฅ๋œ๋‹ค. Harbor๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ ๋‹ค์Œ ๊ตฌ์„ฑ ์š”์†Œ๋ฅผ ํฌํ•จํ•œ๋‹ค.

  • nginx
  • core service
  • jobservice
  • registry
  • database (PostgreSQL)
  • Redis

์‚ฌ์ „์ค€๋น„

# Docker ์„ค์น˜
curl -fsSL https://get.docker.com -o get-docker.sh
sh get-docker.sh

# Docker Compose ์„ค์น˜
sudo curl -L "https://github.com/docker/compose/releases/latest/download/docker-compose-$(uname -s)-$(uname -m)" \
-o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose

Harbor ์„ค์น˜ ํŒŒ์ผ ๋‹ค์šด๋กœ๋“œ

wget https://github.com/goharbor/harbor/releases/download/v2.10.0/harbor-online-installer-v2.10.0.tgz
tar xzvf harbor-online-installer-v2.10.0.tgz
cd harbor

๋ฒ„์ „์€ ๊ณต์‹ GitHub ๋ฆด๋ฆฌ์ฆˆ์—์„œ ์ตœ์‹  ํ™•์ธ ๊ฐ€๋Šฅ

harbor.yml ๊ตฌ์„ฑ

cp harbor.yml.tmpl harbor.yml
  • vim harbor.yml
hostname: localhost         # ๋˜๋Š” IP, ๋„๋ฉ”์ธ (์˜ˆ: harbor.example.com)
http:
  port: 8088                # ๊ธฐ๋ณธ ํฌํŠธ ๋ณ€๊ฒฝ ๊ฐ€๋Šฅ

# https ์„ค์ •์€ ๊บผ๋‘๊ณ  ์‹œ์ž‘ (ํ…Œ์ŠคํŠธ ๋ชฉ์ )
https:
  enabled: false

๊ด€๋ฆฌ์ž ๋น„๋ฐ€๋ฒˆํ˜ธ

harbor_admin_password: Harbor12345

Harbor ์„ค์น˜ ์‹คํ–‰

sudo ./install.sh

์„ค์น˜ ์™„๋ฃŒ๋˜๋ฉด Docker Compose๋กœ Harbor๊ฐ€ ์‹คํ–‰๋œ๋‹ค

์ ‘์† ํ™•์ธ

  • ๋ธŒ๋ผ์šฐ์ € ์ ‘์†: http://localhost:8080
  • ๊ธฐ๋ณธ ๋กœ๊ทธ์ธ:
  • ID: admin
  • PW: Harbor12345 (์œ„์—์„œ ์„ค์ •ํ•œ ๋น„๋ฐ€๋ฒˆํ˜ธ)

Harbor ์ด๋ฏธ์ง€ ์˜ฌ๋ฆฌ๊ธฐ

์ „์ œ: Harbor๊ฐ€ http://localhost:8088 (HTTPS ์•ˆ ์”€) ์— ์„ค์น˜๋˜์–ด ์žˆ๋‹ค๊ณ  ๊ฐ€์ •ํ•œ๋‹ค.

1. Docker ๋กœ๊ทธ์ธ

docker login localhost:8088
  • ์‚ฌ์šฉ์ž๋ช…: admin
  • ๋น„๋ฐ€๋ฒˆํ˜ธ: Harbor12345 (harbor.yml์—์„œ ์ง€์ •ํ•œ ๊ฐ’)

2. Harbor์—์„œ ํ”„๋กœ์ ํŠธ ์ƒ์„ฑ

  • ์›น ๋ธŒ๋ผ์šฐ์ €์—์„œ http://localhost:8088 ์ ‘์† โ†’ Projects โ†’ New Project ํด๋ฆญ
  • ์˜ˆ์‹œ: myproject ์ƒ์„ฑ (Public ์„ค์ •ํ•ด๋„ ๋จ)

3. ํ…Œ์ŠคํŠธ ์ด๋ฏธ์ง€ ํƒœ๊น… ๋ฐ ํ‘ธ์‹œ

docker pull nginx:latest
docker tag nginx:latest localhost:8088/myproject/nginx:latest
# Harbor๋กœ ํ‘ธ์‹œ
``` bash
docker push localhost:8080/myproject/nginx:latest

4. ์ด๋ฏธ์ง€ ํ™•์ธ

์›น UI์—์„œ:

Projects โ†’ test-project ํด๋ฆญ โ†’ Repositories โ†’ nginx์—์„œ ํ™•์ธ ๊ฐ€๋Šฅ

(์„ ํƒ) ์ธ์ฆ์„œ ์—†๋Š” HTTP Harbor ์‚ฌ์šฉ ์‹œ docker push ์‹คํŒจํ•˜๋Š” ๊ฒฝ์šฐ

/etc/docker/daemon.json์— insecure registry ์„ค์ •์ด ํ•„์š”ํ•  ์ˆ˜ ์žˆ๋‹ค

{
  "insecure-registries": ["localhost:8088"]
}

์„ค์ • ํ›„:

sudo systemctl restart docker

0๊ฐœ์˜ ๋Œ“๊ธ€