Skip to content

Pseudo-Lab/DevFactory-Ops

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

106 Commits
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

DevFactory-Ops

OCI ์œ„์—์„œ k3s + ArgoCD๋กœ ์šด์˜๋˜๋Š” ์ธํ”„๋ผ ๊ด€๋ฆฌ ๋ฆฌํฌ์ง€ํ† ๋ฆฌ์ž…๋‹ˆ๋‹ค.


๐Ÿ›๏ธ ์„ค๊ณ„ ์ฒ ํ•™ (Architecture Philosophy)

์ด ๋ฆฌํฌ์ง€ํ† ๋ฆฌ๋Š” ์™„์ „ํ•œ ๋ณต๊ตฌ์„ฑ (Resilience)๊ณผ ๊ด€์‹ฌ์‚ฌ์˜ ๋ถ„๋ฆฌ (Separation of Concerns)๋ฅผ ํ•ต์‹ฌ ์›์น™์œผ๋กœ ํ•ฉ๋‹ˆ๋‹ค.

  1. L1: ์ธํ”„๋ผ (Terraform) - VM, ๋„คํŠธ์›Œํฌ ๋“ฑ ๊ธฐ์ดˆ ๊ณต์‚ฌ๋งŒ ๋‹ด๋‹นํ•ฉ๋‹ˆ๋‹ค. ์†Œํ”„ํŠธ์›จ์–ด ์„ค์น˜ ๋กœ์ง์„ ์ตœ์†Œํ™”ํ•˜์—ฌ ์ธํ”„๋ผ ๋ณ€๊ฒฝ ์‹œ ์„œ๋ฒ„๊ฐ€ ์žฌ์‹œ์ž‘๋˜๊ฑฐ๋‚˜ ์‚ญ์ œ๋˜๋Š” ์œ„ํ—˜์„ ๋ฐฉ์ง€ํ•ฉ๋‹ˆ๋‹ค.
  2. L2: ๋ถ€ํŠธ์ŠคํŠธ๋žฉ (Bootstrap Script) - OS ๋ฐฉํ™”๋ฒฝ, k3s ํด๋Ÿฌ์Šคํ„ฐ ์—”์ง„, ArgoCD๋ฅผ ์„ค์น˜ํ•ฉ๋‹ˆ๋‹ค. ํ…Œ๋ผํผ์œผ๋กœ๋ถ€ํ„ฐ ๋…๋ฆฝ๋˜์–ด ์žˆ์–ด ํด๋Ÿฌ์Šคํ„ฐ๋งŒ ๋”ฐ๋กœ ์ดˆ๊ธฐํ™”ํ•˜๊ฑฐ๋‚˜ ๋ณต๊ตฌํ•  ๋•Œ ์œ ์šฉํ•ฉ๋‹ˆ๋‹ค.
  3. L3: ํ”Œ๋žซํผ & ์•ฑ (GitOps) - ArgoCD๊ฐ€ ๋ชจ๋“  ๊ฒƒ์„ ๊ด€๋ฆฌํ•ฉ๋‹ˆ๋‹ค. Git์˜ ๋งค๋‹ˆํŽ˜์ŠคํŠธ๊ฐ€ ํด๋Ÿฌ์Šคํ„ฐ์˜ ์ƒํƒœ ๊ทธ ์ž์ฒด๊ฐ€ ๋ฉ๋‹ˆ๋‹ค.
  4. L4: ์ž๋™ํ™” (CI/CD Pipeline) - ์„œ๋น„์Šค ๋ฆฌํฌ์ง€ํ† ๋ฆฌ์™€ Ops ๋ฆฌํฌ์ง€ํ† ๋ฆฌ๊ฐ€ ํ˜‘๋ ฅํ•˜์—ฌ ๋ฐฐํฌ๋ฅผ ์ž๋™ํ™”ํ•ฉ๋‹ˆ๋‹ค.

๐ŸŒ ๋„คํŠธ์›Œํฌ ๊ตฌ์กฐ

๋ธŒ๋ผ์šฐ์ €
  โ†“ :80 / :443
OCI Load Balancer (devfactory-prod-lb)
  โ”œโ”€โ”€ :80  โ†’ NodePort 30080
  โ””โ”€โ”€ :443 โ†’ NodePort 30443  โ† TCP Passthrough (TLS ๋ฏธ์ข…๋ฃŒ)
               โ†“
               K8s nginx ingress
                 - cert-manager๊ฐ€ Let's Encrypt ์ธ์ฆ์„œ ๋ฐœ๊ธ‰ยท๊ฐฑ์‹ 
                 - HTTP โ†’ HTTPS ๋ฆฌ๋‹ค์ด๋ ‰ํŠธ
                 - ๋„๋ฉ”์ธ + ๊ฒฝ๋กœ ๊ธฐ๋ฐ˜ ๋ผ์šฐํŒ…

์ฃผ์˜: OCI LB๋Š” 443์„ TCP Passthrough๋กœ ๋„˜๊ธฐ๋ฏ€๋กœ TLS๋Š” K8s nginx ingress + cert-manager๊ฐ€ ๋‹ด๋‹นํ•ฉ๋‹ˆ๋‹ค. K8s ingress ์ž‘์„ฑ ์‹œ cert-manager.io/cluster-issuer: letsencrypt-prod annotation๊ณผ tls ๋ธ”๋ก์ด ๋ฐ˜๋“œ์‹œ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ์ž์„ธํ•œ ๋‚ด์šฉ์€ docs/networking.md๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.


๐Ÿ™ GitOps ๊ตฌ์กฐ (App of Apps)

ArgoCD๋Š” App of Apps ํŒจํ„ด์œผ๋กœ ๊ตฌ์„ฑ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.

clusters/prod.yaml  (root-app)
  โ””โ”€โ”€ apps/prod/
        โ”œโ”€โ”€ infrastructure.yaml  โ†’  argocd, cert-manager, ingress-nginx,
        โ”‚                           sealed-secrets, victoria-metrics, monitoring
        โ””โ”€โ”€ services.yaml        โ†’  homepage, event-bingo, experiment-platform
  • clusters/prod.yaml์„ ํด๋Ÿฌ์Šคํ„ฐ์— ์ ์šฉํ•˜๋ฉด ๋‚˜๋จธ์ง€๋Š” ArgoCD๊ฐ€ ์ž๋™์œผ๋กœ ๋ชจ๋‘ ๋ฐฐํฌ
  • ๋ชจ๋“  App์€ automated sync + selfHeal + prune ํ™œ์„ฑํ™” (Git์ด ๊ณง ํด๋Ÿฌ์Šคํ„ฐ ์ƒํƒœ)
  • ์ƒˆ ์„œ๋น„์Šค ์ถ”๊ฐ€ ์‹œ apps/prod/services/์— ArgoCD Application ํŒŒ์ผ๋งŒ ์ถ”๊ฐ€ํ•˜๋ฉด ๋จ

๐Ÿ› ๏ธ ์šด์˜ ๋ฐ ๊ด€๋ฆฌ ๊ทœ์น™

  • ํ˜•์ƒ ๊ด€๋ฆฌ: ๋ชจ๋“  ์ธํ”„๋ผ ๋ณ€๊ฒฝ์€ terraform/ ์ฝ”๋“œ๋กœ, K8s ๋ณ€๊ฒฝ์€ kubernetes/ ๋งค๋‹ˆํŽ˜์ŠคํŠธ๋ฅผ ํ†ตํ•ด PR ๋ฐ ๋จธ์ง€ ํ›„ ๋ฐ˜์˜ํ•ฉ๋‹ˆ๋‹ค.
  • ๋ณด์•ˆ: ๋น„๋ฐ€๋ฒˆํ˜ธ๋‚˜ ํ‚ค ๋“ฑ์€ ์ ˆ๋Œ€ Git์— ์ปค๋ฐ‹ํ•˜์ง€ ์•Š์œผ๋ฉฐ, ๋ฐ˜๋“œ์‹œ Sealed Secrets๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์•”ํ˜ธํ™”๋œ ์ƒํƒœ๋กœ ์ปค๋ฐ‹ํ•ฉ๋‹ˆ๋‹ค.
  • ๋ฐฉํ™”๋ฒฝ: ์„œ๋ฒ„์˜ OS ๋ฐฉํ™”๋ฒฝ(iptables) ๊ทœ์น™ ๋ณ€๊ฒฝ ์‹œ iptables-persistent๋ฅผ ํ†ตํ•ด ์˜๊ตฌ ์ €์žฅํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๐Ÿ“š ๋ฌธ์„œ

About

๐Ÿญ Infrastructure as Code (IaC) & GitOps platform for Pseudo-Lab DevFactory

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors