π’ On-Premise ICT Project
π’ On-Premise ICT Project
Kubernetes λ° Docker κΈ°λ°μ μ¨νλ λ―Έμ€ μΈνλΌ/μ ν리μΌμ΄μ κ΅¬μΆ νλ‘μ νΈ
λͺ©μ°¨β
- π― κ°μ
- π Dayλ³ νμ΅ λ΄μ©
- ποΈ μν€ν μ² κ΅¬μ±
- π μ£Όμ λ¬Έμ λ°λ‘κ°κΈ°
- β‘ λΉ λ₯Έ μμ
- π μ°Έκ³ λ§ν¬
π― κ°μβ
μ£Όμ λͺ©ν:
| λͺ©ν | μ€λͺ |
|---|---|
| ποΈ 2-Tier/3-Tier μν€ν μ² | λ©ν° ν°μ΄ μ ν리μΌμ΄μ κ΅¬μΆ |
| π Ingress-Nginx | ν΄λ¬μ€ν° μ§μ μ κ΅¬μ± |
| π νμ΄λΈλ¦¬λ CI/CD | GitHub + GitLab νμ΄νλΌμΈ |
| π‘οΈ μ»¨ν μ΄λ 보μ | Trivy μ€μΊ μλν |
π Dayλ³ νμ΅ λ΄μ©β
| Day | μ£Όμ | ν΅μ¬ λ΄μ© | λ§ν¬ |
|---|---|---|---|
| Day 2-3 | π§ CI/CD νμ΄νλΌμΈ | GitHub β GitLab λ―Έλ¬λ§, 3-Tier λ°°ν¬ | π λ°λ‘κ°κΈ° |
| Day 3 | ποΈ Application Architecture | 2-Tier/3-Tier, GitLab Runner | π λ°λ‘κ°κΈ° |
| Day 4 | πͺ Ingress-Nginx | NodePort, νμ΄λΈλ¦¬λ CI/CD, Trivy | π λ°λ‘κ°κΈ° |
| Day 5 | π NFS + Virsh | NFS λ³Όλ₯¨, VM μ€λ μ· κ΄λ¦¬ | π λ°λ‘κ°κΈ° |
| Day 6 | βΈοΈ (μμ μμ) | - | π λ°λ‘κ°κΈ° |
| Day 7 | ποΈ DB Replication | MySQL Master-Slave 볡μ | π λ°λ‘κ°κΈ° |
| Day 8 | π₯οΈ 3-Tier VMware | Bastion, NFS, MySQL, K8s ν΄λ¬μ€ν°, GitLab | π λ°λ‘κ°κΈ° |
ποΈ μν€ν μ² κ΅¬μ±β
π μ 체 CI/CD νλ¦β
ποΈ μ ν리μΌμ΄μ κ³μΈ΅β
| κ³μΈ΅ | κ΅¬μ± μμ | λ€μμ€νμ΄μ€ | μλΉμ€ νμ |
|---|---|---|---|
| πͺ Ingress | Nginx | ingress | NodePort (30080) |
| 3οΈβ£ 3-Tier | Nginx, FastAPI, MySQL | 3tier-* | ClusterIP |
| 2οΈβ£ 2-Tier | WordPress, MySQL | 2tier-wordpress | ClusterIP |
| ποΈ DB Replication | MySQL (Master-Slave) | db-replication | LoadBalancer |
π μ£Όμ λ¬Έμ λ°λ‘κ°κΈ°β
π CI/CD & νμ΄νλΌμΈβ
| μ£Όμ | λ§ν¬ | μ€λͺ |
|---|---|---|
| GitHub Actions | μν¬νλ‘μ° README | Gitleaks, Trivy, Build, Mirror |
| GitLab CI | .gitlab-ci.yml | Self-hosted Runner λΉλ |
| GitLab Runner κ΅¬μΆ | Runner κ°μ΄λ | λ‘컬 Runner μ€μ |
ποΈ μ ν리μΌμ΄μ μν€ν μ²β
| μ£Όμ | λ§ν¬ | μ€λͺ |
|---|---|---|
| 2-Tier | 2-Tier README | WordPress + MySQL |
| 3-Tier | 3-Tier README | Nginx + FastAPI + MySQL |
| Ingress-Nginx | Ingress README | NodePort μ§μ μ |
| DB Replication | Day 7 README | MySQL Master-Slave κ΅¬μ± |
π‘οΈ λ³΄μ & νμ΄λΈλ¦¬λβ
| μ£Όμ | λ§ν¬ | μ€λͺ |
|---|---|---|
| Trivy 보μ μ€μΊ | Trivy κ°μ΄λ | 컨ν μ΄λ μ·¨μ½μ μ€μΊ |
| GitHub + GitLab | νμ΄λΈλ¦¬λ κ°μ΄λ | Public + Private μ λ΅ |
β‘ λΉ λ₯Έ μμβ
πͺ Ingress-Nginx λ°°ν¬β
# 1. Docker μΈμ¦ μ 보 μΈμ½λ©
export DOCKER_CONFIG_JSON_BASE64=$(cat ~/.docker/config.json | base64 -w 0)
# 2. λ°°ν¬
cd on-premise-ict/day4-1218/ingress/nginx
envsubst < nginx.yaml | kubectl apply -f -
# 3. μ μ νμΈ
kubectl get svc -n ingress
# λΈλΌμ°μ μμ http://<NodeIP>:30080 μ μ
3οΈβ£ 3-Tier λ°°ν¬β
# MySQL
cd on-premise-ict/day3-1217/3-tier/mysql
envsubst < mysql.yaml | kubectl apply -f -
# FastAPI
cd ../fastapi
envsubst < fastapi.yaml | kubectl apply -f -
# Nginx
cd ../nginx
envsubst < nginx.yaml | kubectl apply -f -
ποΈ DB Replication λ°°ν¬β
# 1. Master λ°°ν¬ (Docker Compose)
cd on-premise-ict/day7-1221/mysql
docker compose up -d
# 2. Slave λ°°ν¬ (Kubernetes)
export $(grep -v '^#' .env | xargs)
envsubst < mysql-slave-statefullset.yaml | kubectl apply -f -
π μ°Έκ³ λ§ν¬β
| λ¬Έμ | λ§ν¬ |
|---|---|
| νλ‘μ νΈ λ©μΈ README | ../README.md |
| GitHub Actions λ¬Έμ | docs.github.com |
| GitLab CI/CD λ¬Έμ | docs.gitlab.com |
| Kubernetes 곡μ λ¬Έμ | kubernetes.io |