ApexCaptain.IaCλ Oracle Cloud Infrastructure(OCI) κΈ°λ°μ ν΄λΌμ°λ λ€μ΄ν°λΈ μΈνλΌλ₯Ό CDK for Terraform(CDKTF)μ μ¬μ©νμ¬ μ½λλ‘ κ΄λ¦¬νλ Infrastructure as Code νλ‘μ νΈμ λλ€.
- νμ΄λΈλ¦¬λ λ©ν° ν΄λ¬μ€ν° Kubernetes νκ²½ κ΅¬μΆ λ° κ΄λ¦¬
- Oracle Cloud OKE ν΄λ¬μ€ν° (ν΄λΌμ°λ)
- On-premise Workstation ν΄λ¬μ€ν° (kubeadm κΈ°λ°)
- GitOps κΈ°λ° λ°°ν¬ νμ΄νλΌμΈ ꡬν
- κ°μΈ λ―Έλμ΄ μλ² μΈνλΌ
- 보μ λ° λͺ¨λν°λ§ μ²΄κ³ κ΅¬μΆ
- CDK for Terraform (CDKTF) - TypeScript κΈ°λ° μΈνλΌ μ μ
- Oracle Cloud Infrastructure (OCI) - ν΄λΌμ°λ νλ«νΌ
- Kubernetes - 컨ν μ΄λ μ€μΌμ€νΈλ μ΄μ
- Istio - μλΉμ€ λ©μ
- ArgoCD - GitOps λ°°ν¬ κ΄λ¦¬ (κ°λ° μ€)
- TypeScript - λ©μΈ κ°λ° μΈμ΄
- Projen - νλ‘μ νΈ μλν λꡬ
- ESLint + Prettier - μ½λ νμ§ κ΄λ¦¬
- Yarn - ν¨ν€μ§ κ΄λ¦¬
ApexCaptain.IaC/
βββ π src/ # μμ€ μ½λ
β βββ π terraform/ # CDKTF μΈνλΌ μ μ
β β βββ π stacks/ # μΈνλΌ μ€νλ€
β β β βββ π k8s/ # Kubernetes κ΄λ ¨ μ€ν
β β β β βββ π oke/ # Oracle Kubernetes Engine (ν΄λΌμ°λ)
β β β β β βββ π apps/ # λΉμ¦λμ€ μ ν리μΌμ΄μ
β β β β β βββ cluster.stack.ts
β β β β β βββ network.stack.ts
β β β β β βββ bastion.stack.ts
β β β β β βββ system.stack.ts
β β β β βββ π workstation/ # On-premise Workstation (kubeadm)
β β β β βββ π apps/ # κ°μΈ/λ―Έλμ΄ μλΉμ€
β β β β βββ π dev-pods/ # κ°λ° νκ²½
β β β β βββ system.stack.ts
β β β βββ π cloudflare/ # DNS λ° CDN μ€μ
β β β βββ π project/ # νλ‘μ νΈ κ³΅ν΅ μ€μ
β β βββ terraform.module.ts
β β βββ terraform.config.service.ts
β βββ π common/ # κ³΅ν΅ μ νΈλ¦¬ν°
β βββ π global/ # κΈλ‘λ² μ€μ
β βββ main.ts # μ§μ
μ
βββ π scripts/ # μλν μ€ν¬λ¦½νΈ
β βββ backup-tfstate.script.ts # Terraform μν λ°±μ
β βββ tf-deploy-selection.script.ts # μ νμ λ°°ν¬
β βββ π terminal/ # ν°λ―Έλ λꡬ
βββ π .projen/ # Projen μμ± νμΌ
βββ π .github/ # GitHub Actions
βββ π .devcontainer/ # κ°λ° 컨ν
μ΄λ μ€μ
βββ π keys/ # μΈμ¦ ν€ νμΌ
βββ π env/ # νκ²½ λ³μ
βββ π assets/ # μ μ μμ°
- Oracle Kubernetes Engine (OKE) ν΄λ¬μ€ν° μλ νλ‘λΉμ λ (ν΄λΌμ°λ)
- On-premise Workstation ν΄λ¬μ€ν° kubeadm κΈ°λ° κ΅¬μΆ (λ‘컬 νκ²½)
- Istio μλΉμ€ λ©μ ꡬμΆμΌλ‘ μλΉμ€ κ° ν΅μ κ΄λ¦¬
- νμ΄λΈλ¦¬λ λ©ν° ν΄λ¬μ€ν° ν΅μ μ€μ (μ§ν μ€)
- Vault - μν¬λ¦Ώ κ΄λ¦¬ μμ€ν (κ°λ° μ€)
- OAuth2 Proxy - μΈμ¦ νλ‘μ
- Cert-Manager - SSL μΈμ¦μ μλ κ΄λ¦¬
- Bastion νΈμ€νΈ - 보μ μ κ·Ό μ μ΄
- Prometheus + Grafana - λ©νΈλ¦ μμ§ λ° μκ°ν (κ°λ° μ€)
- ArgoCD - GitOps κΈ°λ° λ°°ν¬ κ΄λ¦¬ (κ°λ° μ€)
- CloudBeaver - λ°μ΄ν°λ² μ΄μ€ κ΄λ¦¬ λꡬ
- Redis UI - Redis κ΄λ¦¬ μΈν°νμ΄μ€
- Jellyfin - λ―Έλμ΄ μ€νΈλ¦¬λ° μλ²
- qBittorrent - ν λ νΈ λ€μ΄λ‘λ κ΄λ¦¬
- 7 Days to Die - κ²μ μλ²
- SFTP μλ² - νμΌ μ μ‘ μλΉμ€
OCI VCN
βββ Public Subnet (Bastion, Load Balancer)
βββ Private Subnet (Kubernetes Nodes)
βββ Database Subnet (RDS, Redis)
Oracle Cloud OKE Cluster (ν΄λΌμ°λ)
βββ System Namespace
β βββ Istio Control Plane
β βββ ArgoCD (κ°λ° μ€)
β βββ Vault (κ°λ° μ€)
β βββ Monitoring Stack (κ°λ° μ€)
βββ Application Namespace
β βββ Docent AI Engine
β βββ Docent AI Web
β βββ Business Applications
βββ Ingress Controller
On-premise Workstation Cluster (kubeadm κΈ°λ°)
βββ System Namespace
β βββ Istio Control Plane
β βββ Local Development Tools
β βββ Monitoring Stack
β βββ Longhorn Storage
βββ Application Namespace
β βββ Development Applications
β βββ Testing Workloads
β βββ Media Services (Jellyfin, qBittorrent)
β βββ Game Servers (7 Days to Die)
β βββ File Services (SFTP, NAS)
βββ Local Ingress Controller
- μ΄ μ½λ λΌμΈ: 15,000+ λΌμΈ
- TypeScript νμΌ: 50+ κ°
- Terraform μ€ν: 20+ κ°
- λ°°ν¬λ μ ν리μΌμ΄μ : 20+ κ° (μΌλΆ κ°λ° μ€)
- μλν μ€ν¬λ¦½νΈ: 10+ κ°
- κ°λ° μ§νλ₯ : μ½ 70% μλ£
- 100% μ½λ κΈ°λ° μΈνλΌ κ΄λ¦¬
- GitOps μν¬νλ‘μ° κ΅¬νμΌλ‘ λ°°ν¬ μλν (μ§ν μ€)
- λ©ν° νκ²½ μ§μ (ν΄λΌμ°λ/On-premise)
- Zero Trust λ€νΈμν¬ μν€ν μ² κ΅¬ν
- μν¬λ¦Ώ κ΄λ¦¬ μλν (Vault κ°λ° μ€)
- SSL μΈμ¦μ μλ κ°±μ
- λͺ¨λν°λ§ λμ보λ κ΅¬μΆ (Prometheus/Grafana κ°λ° μ€)
- λ‘κ·Έ μ€μν μμ€ν (κ³ν μ€)
- λ°±μ λ° λ³΅κ΅¬ μλν
- λ―Έλμ΄ μλΉμ€ μλν (Jellyfin, qBittorrent)
# κ°λ° νκ²½ μ€μ
yarn install
yarn watch
# μΈνλΌ μ½λ μμ±
# src/terraform/stacks/ μμ μ€ν μ μ
# μΈνλΌ κ³ν
yarn tf@plan
# μ νμ λ°°ν¬
yarn tf@deploy:selection
# μ 체 λ°°ν¬
yarn tf@deploy
# μν λ°±μ
yarn tf@backup
# μν μ 리
yarn tf@clean
μ€ν¬λ¦½νΈ | μ€λͺ |
---|---|
yarn tf@deploy |
μ 체 μΈνλΌ λ°°ν¬ |
yarn tf@deploy:selection |
μ νμ μ€ν λ°°ν¬ |
yarn tf@plan |
λ°°ν¬ κ³ν νμΈ |
yarn tf@backup |
Terraform μν λ°±μ |
yarn terminal |
λνν ν°λ―Έλ λꡬ |
- ArgoCD μμ±: GitOps λ°°ν¬ νμ΄νλΌμΈ κ΅¬μΆ μλ£
- Vault μμ±: μν¬λ¦Ώ κ΄λ¦¬ μμ€ν κ΅¬μΆ μλ£
- Prometheus/Grafana μμ±: λͺ¨λν°λ§ μμ€ν κ΅¬μΆ μλ£
- νμ΄λΈλ¦¬λ λ©ν° ν΄λ¬μ€ν° ν΅μ : OKEμ Workstation ν΄λ¬μ€ν° κ° Istio μ°κ²°
- λͺ¨λν°λ§ κ³ λν: ELK μ€ν μΆκ° λ° Kiali νμ±ν
- Authentik: ν΅ν© μΈμ¦ μμ€ν ꡬμΆ
- Palworld κ²μ μλ²: μΆκ° κ²μ μλ² κ΅¬μΆ
- λ©ν° ν΄λΌμ°λ μ§μ: AWS, Azure μΆκ°
- μλ²λ¦¬μ€ μν€ν μ²: FaaS λμ
- AI/ML νμ΄νλΌμΈ: λ¨Έμ λ¬λ μν¬λ‘λ μ§μ
λμ : ν΄λΌμ°λ(OKE)μ On-premise(Workstation) Kubernetes ν΄λ¬μ€ν° κ° μμ ν ν΅μ κ΅¬μΆ ν΄κ²°: Istio μλΉμ€ λ©μμ μ μ© λ€νΈμν¬ κ΅¬μ±μΌλ‘ ν΄κ²° (μ§ν μ€)
λμ : Terraform μν νμΌμ μμ ν κ΄λ¦¬ ν΄κ²°: μλνλ λ°±μ μ€ν¬λ¦½νΈμ μ격 μν μ μ₯μ ꡬν
λμ : ν΄λΌμ°λ λ€μ΄ν°λΈ νκ²½μμμ 보μ κ°ν ν΄κ²°: Vault, OAuth2 Proxy, Cert-Managerλ₯Ό ν΅ν μ’ ν©μ 보μ μ²΄κ³ κ΅¬μΆ (μ§ν μ€)