An open API service indexing awesome lists of open source software.

https://github.com/apexcaptain/apexcaptain.iac

CDK for Terraform project
https://github.com/apexcaptain/apexcaptain.iac

Last synced: 8 months ago
JSON representation

CDK for Terraform project

Awesome Lists containing this project

README

          

# ApexCaptain.IaC - Infrastructure as Code

## ๐Ÿ“‹ ํ”„๋กœ์ ํŠธ ๊ฐœ์š”

OCI ๊ธฐ๋ฐ˜์˜ ๋ฉ€ํ‹ฐ ํด๋Ÿฌ์Šคํ„ฐ Kubernetes ํ™˜๊ฒฝ์„ CDK for Terraform(CDKTF)์„ ์‚ฌ์šฉํ•˜์—ฌ ๊ด€๋ฆฌํ•˜๋Š” IaC ํ”„๋กœ์ ํŠธ์ž…๋‹ˆ๋‹ค.

### ๐ŸŽฏ ์ฃผ์š” ๋ชฉํ‘œ

- **๋ฉ€ํ‹ฐ ํด๋Ÿฌ์Šคํ„ฐ Kubernetes ํ™˜๊ฒฝ** ๊ตฌ์ถ• ๋ฐ ๊ด€๋ฆฌ
- Oracle Cloud OKE ํด๋Ÿฌ์Šคํ„ฐ (ํด๋ผ์šฐ๋“œ)
- On-premise Workstation ํด๋Ÿฌ์Šคํ„ฐ
- **GitOps ๊ธฐ๋ฐ˜ ๋ฐฐํฌ ํŒŒ์ดํ”„๋ผ์ธ** ๊ตฌํ˜„
- **๊ฐœ์ธ ๋ฏธ๋””์–ด ์„œ๋ฒ„ & ๊ฒŒ์ž„ ์„œ๋ฒ„ ์ธํ”„๋ผ**
- **๋ณด์•ˆ ๋ฐ ๋ชจ๋‹ˆํ„ฐ๋ง** ์ฒด๊ณ„ ๊ตฌ์ถ•
- **ํด๋ผ์šฐ๋“œ ๋„ค์ดํ‹ฐ๋ธŒ ๊ฐœ๋ฐœ ํ™˜๊ฒฝ** ์ œ๊ณต

---

## ๐Ÿ—๏ธ ๊ธฐ์ˆ  ์Šคํƒ

### ํ•ต์‹ฌ ๊ธฐ์ˆ 

- **CDK for Terraform (CDKTF)** - TypeScript ๊ธฐ๋ฐ˜ ์ธํ”„๋ผ ์ •์˜
- **Oracle Cloud Infrastructure (OCI)** - ํด๋ผ์šฐ๋“œ ํ”Œ๋žซํผ
- **Kubernetes** - ์ปจํ…Œ์ด๋„ˆ ์˜ค์ผ€์ŠคํŠธ๋ ˆ์ด์…˜
- **Istio** - ์„œ๋น„์Šค ๋ฉ”์‹œ
- **ArgoCD** - GitOps ๋ฐฐํฌ ๊ด€๋ฆฌ (๊ตฌํ˜„ ์™„๋ฃŒ)
- **Longhorn** - ๋ถ„์‚ฐ ์Šคํ† ๋ฆฌ์ง€ ์‹œ์Šคํ…œ
- **MetalLB** - ๋กœ๋“œ ๋ฐธ๋Ÿฐ์„œ

### ๊ฐœ๋ฐœ ๋„๊ตฌ

- **TypeScript** - ๋ฉ”์ธ ๊ฐœ๋ฐœ ์–ธ์–ด
- **NestJS** - ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ํ”„๋ ˆ์ž„์›Œํฌ
- **Projen** - ํ”„๋กœ์ ํŠธ ์ž๋™ํ™” ๋„๊ตฌ
- **ESLint + Prettier** - ์ฝ”๋“œ ํ’ˆ์งˆ ๊ด€๋ฆฌ
- **Yarn** - ํŒจํ‚ค์ง€ ๊ด€๋ฆฌ
- **Context7** - MCP ์„œ๋ฒ„ ํ†ตํ•ฉ

---

## ๐Ÿ“ ํ”„๋กœ์ ํŠธ ๊ตฌ์กฐ

```
ApexCaptain.IaC/
โ”œโ”€โ”€ ๐Ÿ“ src/ # ์†Œ์Šค ์ฝ”๋“œ
โ”‚ โ”œโ”€โ”€ ๐Ÿ“ terraform/ # CDKTF ์ธํ”„๋ผ ์ •์˜
โ”‚ โ”‚ โ”œโ”€โ”€ ๐Ÿ“ stacks/ # ์ธํ”„๋ผ ์Šคํƒ๋“ค
โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ ๐Ÿ“ k8s/ # Kubernetes ๊ด€๋ จ ์Šคํƒ
โ”‚ โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ ๐Ÿ“ oke/ # Oracle Kubernetes Engine (ํด๋ผ์šฐ๋“œ)
โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ ๐Ÿ“ apps/ # ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜
โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ argo-cd.stack.ts
โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ cert-manager.stack.ts
โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ cloudbeaver.stack.ts
โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ dashboard.stack.ts
โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ git-ops.stack.ts
โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ home-l2tp-vpn-proxy.stack.ts
โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ ingress-controller.stack.ts
โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ istio.stack.ts
โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ monitoring.stack.ts
โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ nfs.stack.ts
โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ oauth2-proxy.stack.ts
โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ redis-ui.stack.ts
โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ โ””โ”€โ”€ vault.stack.ts
โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ cluster.stack.ts
โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ network.stack.ts
โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ bastion.stack.ts
โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ compartment.stack.ts
โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ endpoint.stack.ts
โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ policy.stack.ts
โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ โ””โ”€โ”€ system.stack.ts
โ”‚ โ”‚ โ”‚ โ”‚ โ””โ”€โ”€ ๐Ÿ“ workstation/ # On-premise Workstation
โ”‚ โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ ๐Ÿ“ apps/ # ๊ฐœ์ธ/๋ฏธ๋””์–ด/๊ฒŒ์ž„ ์„œ๋น„์Šค
โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ cert-manager.stack.ts
โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ dashboard.stack.ts
โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ game.7dtd.stack.ts
โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ game.sftp.stack.ts
โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ git-ops.stack.ts
โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ ingress-controller.stack.ts
โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ istio.stack.ts
โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ longhorn.stack.ts
โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ metallb.stack.ts
โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ monitoring.stack.ts
โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ nas.jellyfin.stack.ts
โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ nas.qbittorrent.stack.ts
โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ nas.sftp.stack.ts
โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ โ””โ”€โ”€ windows.stack.ts
โ”‚ โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ ๐Ÿ“ dev-pods/ # ๊ฐœ๋ฐœ ํ™˜๊ฒฝ Pod
โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ โ””โ”€โ”€ apex-captain.stack.ts
โ”‚ โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ system.stack.ts
โ”‚ โ”‚ โ”‚ โ”‚ โ””โ”€โ”€ node-meta.stack.ts
โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ ๐Ÿ“ cloudflare/ # DNS ๋ฐ CDN ์„ค์ •
โ”‚ โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ firewall.stack.ts
โ”‚ โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ record.stack.ts
โ”‚ โ”‚ โ”‚ โ”‚ โ””โ”€โ”€ zone.stack.ts
โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ ๐Ÿ“ project/ # ํ”„๋กœ์ ํŠธ ๊ณตํ†ต ์„ค์ •
โ”‚ โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ ๐Ÿ“ apps/ # ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜
โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ โ””โ”€โ”€ number-planet.stack.ts
โ”‚ โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ github-io.stack.ts
โ”‚ โ”‚ โ”‚ โ”‚ โ””โ”€โ”€ profile.stack.ts
โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ ocir.stack.ts # Oracle Container Image Registry
โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ git-ops.stack.ts # GitOps ๊ด€๋ฆฌ ์Šคํƒ
โ”‚ โ”‚ โ”‚ โ””โ”€โ”€ project.stack.ts # ํ”„๋กœ์ ํŠธ ๋ฉ”์ธ ์Šคํƒ
โ”‚ โ”‚ โ”œโ”€โ”€ terraform.module.ts
โ”‚ โ”‚ โ””โ”€โ”€ terraform.config.service.ts
โ”‚ โ”œโ”€โ”€ ๐Ÿ“ common/ # ๊ณตํ†ต ์œ ํ‹ธ๋ฆฌํ‹ฐ
โ”‚ โ”œโ”€โ”€ ๐Ÿ“ global/ # ๊ธ€๋กœ๋ฒŒ ์„ค์ •
โ”‚ โ””โ”€โ”€ main.ts # ์ง„์ž…์ 
โ”œโ”€โ”€ ๐Ÿ“ scripts/ # ์ž๋™ํ™” ์Šคํฌ๋ฆฝํŠธ
โ”‚ โ”œโ”€โ”€ backup-tfstate.script.ts # Terraform ์ƒํƒœ ๋ฐฑ์—…
โ”‚ โ”œโ”€โ”€ tf-deploy-selection.script.ts # ์„ ํƒ์  ๋ฐฐํฌ
โ”‚ โ”œโ”€โ”€ terminal-v2.script.ts # ๋Œ€ํ™”ํ˜• ํ„ฐ๋ฏธ๋„ ๋„๊ตฌ v2
โ”‚ โ”œโ”€โ”€ create-random-string.script.ts
โ”‚ โ”œโ”€โ”€ ๐Ÿ“ terminal/ # ํ„ฐ๋ฏธ๋„ ๋„๊ตฌ
โ”‚ โ”œโ”€โ”€ ๐Ÿ“ external/ # ์™ธ๋ถ€ ์Šคํฌ๋ฆฝํŠธ
โ”‚ โ”œโ”€โ”€ ๐Ÿ“ generated/ # ์ƒ์„ฑ๋œ ์Šคํฌ๋ฆฝํŠธ
โ”‚ โ””โ”€โ”€ ๐Ÿ“ stage/ # ๋‹จ๊ณ„๋ณ„ ์Šคํฌ๋ฆฝํŠธ
โ”œโ”€โ”€ ๐Ÿ“ assets/ # ์ •์  ์ž์‚ฐ
โ”‚ โ”œโ”€โ”€ ๐Ÿ“ static/ # ์ •์  ํŒŒ์ผ
โ”‚ โ”‚ โ”œโ”€โ”€ 7dtd.install-additional-mods.js
โ”‚ โ”‚ โ”œโ”€โ”€ home-l2tp-vpn-proxy.startup.sh
โ”‚ โ”‚ โ””โ”€โ”€ ๐Ÿ“ windows/ # Windows ๊ด€๋ จ ์Šคํฌ๋ฆฝํŠธ
โ”‚ โ””โ”€โ”€ ๐Ÿ“ templates/ # ํ…œํ”Œ๋ฆฟ ํŒŒ์ผ
โ”œโ”€โ”€ ๐Ÿ“ .projen/ # Projen ์ƒ์„ฑ ํŒŒ์ผ
โ”œโ”€โ”€ ๐Ÿ“ .github/ # GitHub Actions
โ”œโ”€โ”€ ๐Ÿ“ .devcontainer/ # ๊ฐœ๋ฐœ ์ปจํ…Œ์ด๋„ˆ ์„ค์ •
โ”œโ”€โ”€ ๐Ÿ“ .cursor/ # Cursor MCP ์„ค์ •
โ”œโ”€โ”€ ๐Ÿ“ keys/ # ์ธ์ฆ ํ‚ค ํŒŒ์ผ
โ”œโ”€โ”€ ๐Ÿ“ env/ # ํ™˜๊ฒฝ ๋ณ€์ˆ˜
โ”œโ”€โ”€ ๐Ÿ“ .secrets/ # ์‹œํฌ๋ฆฟ ํŒŒ์ผ (gitignore)
โ””โ”€โ”€ ๐Ÿ“ tmp/ # ์ž„์‹œ ํŒŒ์ผ
```

---

## ๐Ÿš€ ์ฃผ์š” ๊ธฐ๋Šฅ

### 1. ํ•˜์ด๋ธŒ๋ฆฌ๋“œ ๋ฉ€ํ‹ฐ ํด๋Ÿฌ์Šคํ„ฐ Kubernetes ํ™˜๊ฒฝ

- **Oracle Kubernetes Engine (OKE)** ํด๋Ÿฌ์Šคํ„ฐ ์ž๋™ ํ”„๋กœ๋น„์ €๋‹ (ํด๋ผ์šฐ๋“œ)
- **On-premise Workstation ํด๋Ÿฌ์Šคํ„ฐ** On-Premise๋กœ ๊ตฌ์ถ• (๋กœ์ปฌ ํ™˜๊ฒฝ)
- **Istio ์„œ๋น„์Šค ๋ฉ”์‹œ** ๊ตฌ์ถ•์œผ๋กœ ์„œ๋น„์Šค ๊ฐ„ ํ†ต์‹  ๊ด€๋ฆฌ
- **ํ•˜์ด๋ธŒ๋ฆฌ๋“œ ๋ฉ€ํ‹ฐ ํด๋Ÿฌ์Šคํ„ฐ ํ†ต์‹ ** ์„ค์ • (์ง„ํ–‰ ์ค‘)

### 2. ๋ณด์•ˆ ๋ฐ ์ธ์ฆ

- **Vault** - ์‹œํฌ๋ฆฟ ๊ด€๋ฆฌ ์‹œ์Šคํ…œ (๊ฐœ๋ฐœ ์ค‘)
- **OAuth2 Proxy** - ์ธ์ฆ ํ”„๋ก์‹œ (๊ตฌํ˜„ ์™„๋ฃŒ)
- **Cert-Manager** - SSL ์ธ์ฆ์„œ ์ž๋™ ๊ด€๋ฆฌ (๊ตฌํ˜„ ์™„๋ฃŒ)
- **Bastion ํ˜ธ์ŠคํŠธ** - ๋ณด์•ˆ ์ ‘๊ทผ ์ œ์–ด

### 3. ๋ชจ๋‹ˆํ„ฐ๋ง ๋ฐ ๊ด€์ฐฐ์„ฑ

- **Prometheus + Grafana** - ๋ฉ”ํŠธ๋ฆญ ์ˆ˜์ง‘ ๋ฐ ์‹œ๊ฐํ™” (๊ฐœ๋ฐœ ์ค‘)

### 4. DevOps ๋„๊ตฌ

- **ArgoCD** - GitOps ๊ธฐ๋ฐ˜ ๋ฐฐํฌ ๊ด€๋ฆฌ (๊ตฌํ˜„ ์™„๋ฃŒ)
- **OCIR** - Oracle Container Image Registry ํ†ตํ•ฉ (๊ตฌํ˜„ ์™„๋ฃŒ)
- **GitOps ํŒŒ์ดํ”„๋ผ์ธ** - ์ž๋™ํ™”๋œ CI/CD ์›Œํฌํ”Œ๋กœ์šฐ (๊ตฌํ˜„ ์™„๋ฃŒ)
- **CloudBeaver** - ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ด€๋ฆฌ ๋„๊ตฌ (๊ตฌํ˜„ ์™„๋ฃŒ)
- **Redis UI** - Redis ๊ด€๋ฆฌ ์ธํ„ฐํŽ˜์ด์Šค (๊ตฌํ˜„ ์™„๋ฃŒ)
- **Home L2TP VPN Proxy** - ์›๊ฒฉ ๋„คํŠธ์›Œํฌ ์ ‘๊ทผ ํ”„๋ก์‹œ (๊ตฌํ˜„ ์™„๋ฃŒ)

### 5. ๊ฐœ์ธ ๋ฏธ๋””์–ด ์„œ๋ฒ„ ์ธํ”„๋ผ (On-premise)

- **Jellyfin** - ๋ฏธ๋””์–ด ์ŠคํŠธ๋ฆฌ๋ฐ ์„œ๋ฒ„ (๊ตฌํ˜„ ์™„๋ฃŒ)
- **qBittorrent** - ํ† ๋ ŒํŠธ ๋‹ค์šด๋กœ๋“œ ๊ด€๋ฆฌ (๊ตฌํ˜„ ์™„๋ฃŒ)
- **7 Days to Die** - ๊ฒŒ์ž„ ์„œ๋ฒ„ (๊ตฌํ˜„ ์™„๋ฃŒ)
- **SFTP ์„œ๋ฒ„** - ํŒŒ์ผ ์ „์†ก ์„œ๋น„์Šค (๊ตฌํ˜„ ์™„๋ฃŒ)
- **Longhorn Storage** - ๋ถ„์‚ฐ ์Šคํ† ๋ฆฌ์ง€ ์‹œ์Šคํ…œ (๊ตฌํ˜„ ์™„๋ฃŒ)

---

## ๐ŸŽฎ ๋ฐฐํฌ๋œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋ชฉ๋ก

### Oracle Cloud OKE ํด๋Ÿฌ์Šคํ„ฐ (ํด๋ผ์šฐ๋“œ)

#### ์‹œ์Šคํ…œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜

- **Istio Service Mesh** - ์„œ๋น„์Šค ๊ฐ„ ํ†ต์‹  ๊ด€๋ฆฌ (๊ฐœ๋ฐœ ์ค‘)
- **ArgoCD** - GitOps ๋ฐฐํฌ ๊ด€๋ฆฌ (๊ตฌํ˜„ ์™„๋ฃŒ)
- **Vault** - ์‹œํฌ๋ฆฟ ๊ด€๋ฆฌ ์‹œ์Šคํ…œ (๊ฐœ๋ฐœ ์ค‘)
- **Prometheus + Grafana** - ๋ชจ๋‹ˆํ„ฐ๋ง ๋ฐ ๋ฉ”ํŠธ๋ฆญ ์ˆ˜์ง‘ (๊ตฌํ˜„ ์™„๋ฃŒ)
- **Cert-Manager** - SSL ์ธ์ฆ์„œ ์ž๋™ ๊ด€๋ฆฌ (๊ตฌํ˜„ ์™„๋ฃŒ)
- **Ingress Controller** - ํŠธ๋ž˜ํ”ฝ ๋ผ์šฐํŒ… (๊ตฌํ˜„ ์™„๋ฃŒ)

#### ์ผ๋ฐ˜ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜

- **Number Planet** - ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ (๊ตฌํ˜„ ์™„๋ฃŒ)
- **CloudBeaver** - ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ด€๋ฆฌ ๋„๊ตฌ
- **Redis UI** - Redis ๊ด€๋ฆฌ ์ธํ„ฐํŽ˜์ด์Šค
- **OAuth2 Proxy** - ์ธ์ฆ ํ”„๋ก์‹œ
- **Home L2TP VPN Proxy** - ์›๊ฒฉ ๋„คํŠธ์›Œํฌ ์ ‘๊ทผ ํ”„๋ก์‹œ
- **NFS Server** - ๋„คํŠธ์›Œํฌ ํŒŒ์ผ ์‹œ์Šคํ…œ
- **Kubernetes Dashboard** - ํด๋Ÿฌ์Šคํ„ฐ ๊ด€๋ฆฌ UI

### On-premise Workstation ํด๋Ÿฌ์Šคํ„ฐ

#### ์‹œ์Šคํ…œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜

- **Istio Service Mesh** - ์„œ๋น„์Šค ๊ฐ„ ํ†ต์‹  ๊ด€๋ฆฌ (๊ฐœ๋ฐœ ์ค‘)
- **Longhorn Storage** - ๋ถ„์‚ฐ ์Šคํ† ๋ฆฌ์ง€ ์‹œ์Šคํ…œ (๊ตฌํ˜„ ์™„๋ฃŒ)
- **MetalLB Load Balancer** - ๋กœ๋“œ ๋ฐธ๋Ÿฐ์‹ฑ (๊ตฌํ˜„ ์™„๋ฃŒ)
- **Prometheus + Grafana** - ๋ชจ๋‹ˆํ„ฐ๋ง ๋ฐ ๋ฉ”ํŠธ๋ฆญ ์ˆ˜์ง‘ (๊ฐœ๋ฐœ ์ค‘)
- **Cert-Manager** - SSL ์ธ์ฆ์„œ ์ž๋™ ๊ด€๋ฆฌ (๊ตฌํ˜„ ์™„๋ฃŒ)
- **Ingress Controller** - ํŠธ๋ž˜ํ”ฝ ๋ผ์šฐํŒ… (๊ตฌํ˜„ ์™„๋ฃŒ)

#### ๋ฏธ๋””์–ด ๋ฐ ๊ฒŒ์ž„ ์„œ๋ฒ„

- **Jellyfin** - ๋ฏธ๋””์–ด ์ŠคํŠธ๋ฆฌ๋ฐ ์„œ๋ฒ„ (๊ตฌํ˜„ ์™„๋ฃŒ)
- **qBittorrent** - ํ† ๋ ŒํŠธ ๋‹ค์šด๋กœ๋“œ ๊ด€๋ฆฌ (๊ตฌํ˜„ ์™„๋ฃŒ)
- **7 Days to Die** - ๊ฒŒ์ž„ ์„œ๋ฒ„ (๊ตฌํ˜„ ์™„๋ฃŒ)
- **Game SFTP Server** - ๊ฒŒ์ž„ ํŒŒ์ผ ์ „์†ก ์„œ๋น„์Šค (๊ตฌํ˜„ ์™„๋ฃŒ)
- **NAS SFTP Server** - NAS ํŒŒ์ผ ์ „์†ก ์„œ๋น„์Šค (๊ตฌํ˜„ ์™„๋ฃŒ)

#### ๊ฐœ๋ฐœ ๋„๊ตฌ & ๊ธฐํƒ€

- **Kubernetes Dashboard** - ํด๋Ÿฌ์Šคํ„ฐ ๊ด€๋ฆฌ UI (๊ตฌํ˜„ ์™„๋ฃŒ)
- **Development Pods** - ๊ฐœ๋ฐœ ํ™˜๊ฒฝ ์ปจํ…Œ์ด๋„ˆ (ApexCaptain) (๊ตฌํ˜„ ์™„๋ฃŒ)
- **Windows Desktop** - ์›๊ฒฉ Windows ๋ฐ์Šคํฌํ†ฑ ํ™˜๊ฒฝ (๊ตฌํ˜„ ์™„๋ฃŒ)

---

## ๐Ÿ”ง ์ธํ”„๋ผ ์•„ํ‚คํ…์ฒ˜

### ๋„คํŠธ์›Œํฌ ๊ตฌ์„ฑ

```
OCI VCN
โ”œโ”€โ”€ Public Subnet (Bastion, Load Balancer)
โ”œโ”€โ”€ Private Subnet (Kubernetes Nodes)
โ””โ”€โ”€ Database Subnet (RDS, Redis)
```

### ํ•˜์ด๋ธŒ๋ฆฌ๋“œ Kubernetes ํด๋Ÿฌ์Šคํ„ฐ ๊ตฌ์„ฑ

```
Oracle Cloud OKE Cluster (ํด๋ผ์šฐ๋“œ)
โ”œโ”€โ”€ Infrastructure Layer
โ”‚ โ”œโ”€โ”€ Compartment (๊ตฌํ˜„ ์™„๋ฃŒ)
โ”‚ โ”œโ”€โ”€ Network (VCN, Subnets, Security Lists) (๊ตฌํ˜„ ์™„๋ฃŒ)
โ”‚ โ”œโ”€โ”€ Bastion Host (๊ตฌํ˜„ ์™„๋ฃŒ)
โ”‚ โ”œโ”€โ”€ Policy & IAM (๊ตฌํ˜„ ์™„๋ฃŒ)
โ”‚ โ””โ”€โ”€ Cluster Endpoint (๊ตฌํ˜„ ์™„๋ฃŒ)
โ”œโ”€โ”€ System Namespace
โ”‚ โ”œโ”€โ”€ Istio Control Plane (๊ฐœ๋ฐœ ์ค‘)
โ”‚ โ”œโ”€โ”€ ArgoCD (๊ตฌํ˜„ ์™„๋ฃŒ)
โ”‚ โ”œโ”€โ”€ Vault (๊ฐœ๋ฐœ ์ค‘)
โ”‚ โ”œโ”€โ”€ Monitoring Stack (Prometheus/Grafana) (๊ฐœ๋ฐœ ์ค‘)
โ”‚ โ”œโ”€โ”€ Cert-Manager (๊ตฌํ˜„ ์™„๋ฃŒ)
โ”‚ โ””โ”€โ”€ Ingress Controller (๊ตฌํ˜„ ์™„๋ฃŒ)
โ”œโ”€โ”€ Application Namespace
โ”‚ โ”œโ”€โ”€ Number Planet (๊ตฌํ˜„ ์™„๋ฃŒ)
โ”‚ โ”œโ”€โ”€ CloudBeaver (๊ตฌํ˜„ ์™„๋ฃŒ)
โ”‚ โ”œโ”€โ”€ Redis UI (๊ตฌํ˜„ ์™„๋ฃŒ)
โ”‚ โ”œโ”€โ”€ OAuth2 Proxy (๊ตฌํ˜„ ์™„๋ฃŒ)
โ”‚ โ”œโ”€โ”€ Home L2TP VPN Proxy (๊ตฌํ˜„ ์™„๋ฃŒ)
โ”‚ โ”œโ”€โ”€ NFS Server (๊ตฌํ˜„ ์™„๋ฃŒ)
โ”‚ โ””โ”€โ”€ Kubernetes Dashboard (๊ตฌํ˜„ ์™„๋ฃŒ)
โ””โ”€โ”€ GitOps Layer
โ””โ”€โ”€ ArgoCD Applications (๊ตฌํ˜„ ์™„๋ฃŒ)

On-premise Workstation Cluster
โ”œโ”€โ”€ Infrastructure Layer
โ”‚ โ”œโ”€โ”€ Node Metadata (๊ตฌํ˜„ ์™„๋ฃŒ)
โ”‚ โ”œโ”€โ”€ Longhorn Storage (HDD + SSD) (๊ตฌํ˜„ ์™„๋ฃŒ)
โ”‚ โ””โ”€โ”€ MetalLB Load Balancer (๊ตฌํ˜„ ์™„๋ฃŒ)
โ”œโ”€โ”€ System Namespace
โ”‚ โ”œโ”€โ”€ Istio Control Plane (๊ฐœ๋ฐœ ์ค‘)
โ”‚ โ”œโ”€โ”€ Monitoring Stack (Prometheus/Grafana) (๊ฐœ๋ฐœ ์ค‘)
โ”‚ โ”œโ”€โ”€ Cert-Manager (๊ตฌํ˜„ ์™„๋ฃŒ)
โ”‚ โ””โ”€โ”€ Ingress Controller (๊ตฌํ˜„ ์™„๋ฃŒ)
โ”œโ”€โ”€ Application Namespace
โ”‚ โ”œโ”€โ”€ Media Services
โ”‚ โ”‚ โ”œโ”€โ”€ Jellyfin (๊ตฌํ˜„ ์™„๋ฃŒ)
โ”‚ โ”‚ โ””โ”€โ”€ qBittorrent (๊ตฌํ˜„ ์™„๋ฃŒ)
โ”‚ โ”œโ”€โ”€ Game Services
โ”‚ โ”‚ โ”œโ”€โ”€ 7 Days to Die (๊ตฌํ˜„ ์™„๋ฃŒ)
โ”‚ โ”‚ โ””โ”€โ”€ Game SFTP (๊ตฌํ˜„ ์™„๋ฃŒ)
โ”‚ โ”œโ”€โ”€ File Services
โ”‚ โ”‚ โ””โ”€โ”€ NAS SFTP (๊ตฌํ˜„ ์™„๋ฃŒ)
โ”‚ โ””โ”€โ”€ Kubernetes Dashboard (๊ตฌํ˜„ ์™„๋ฃŒ)
โ”œโ”€โ”€ Development Namespace
โ”‚ โ”œโ”€โ”€ Windows Desktop (๊ตฌํ˜„ ์™„๋ฃŒ)
โ”‚ โ””โ”€โ”€ Dev Pods (ApexCaptain) (๊ตฌํ˜„ ์™„๋ฃŒ)
โ””โ”€โ”€ GitOps Layer
โ””โ”€โ”€ ArgoCD Applications (๊ตฌํ˜„ ์™„๋ฃŒ)
```

## ๐ŸŽฏ ํ•ต์‹ฌ ์„ฑ๊ณผ

### 1. ์ธํ”„๋ผ ์ž๋™ํ™”

- **100% ์ฝ”๋“œ ๊ธฐ๋ฐ˜ ์ธํ”„๋ผ** ๊ด€๋ฆฌ (TypeScript + CDKTF)
- **GitOps ์›Œํฌํ”Œ๋กœ์šฐ** ๊ตฌํ˜„์œผ๋กœ ๋ฐฐํฌ ์ž๋™ํ™” (ArgoCD ๊ธฐ๋ฐ˜)
- **๋ฉ€ํ‹ฐ ํด๋Ÿฌ์Šคํ„ฐ** ํ™˜๊ฒฝ ๊ตฌ์ถ• (OKE + Workstation)
- **์„ ํƒ์  ๋ฐฐํฌ ์‹œ์Šคํ…œ** ๊ตฌํ˜„ (๋Œ€ํ™”ํ˜• ํ„ฐ๋ฏธ๋„ ๋„๊ตฌ)
- **Terraform ์ƒํƒœ ์ž๋™ ๋ฐฑ์—…** ์‹œ์Šคํ…œ

### 2. ๋ณด์•ˆ ๊ฐ•ํ™”

- **Zero Trust ๋„คํŠธ์›Œํฌ** ์•„ํ‚คํ…์ฒ˜ ๊ตฌํ˜„
- **OAuth2 ๊ธฐ๋ฐ˜ ์ธ์ฆ** ํ”„๋ก์‹œ (GitHub OAuth)
- **SSL/TLS ์ธ์ฆ์„œ** ์ž๋™ ๊ด€๋ฆฌ ๋ฐ ๊ฐฑ์‹  (Cert-Manager)
- **์‹œํฌ๋ฆฟ ๊ด€๋ฆฌ** ์ž๋™ํ™” (Vault ๊ฐœ๋ฐœ ์ค‘)
- **VPN ํ”„๋ก์‹œ** ๊ตฌํ˜„ (L2TP/IPsec)

### 3. ์šด์˜ ํšจ์œจ์„ฑ

- **๋ถ„์‚ฐ ์Šคํ† ๋ฆฌ์ง€** ์‹œ์Šคํ…œ (Longhorn - HDD/SSD ํ•˜์ด๋ธŒ๋ฆฌ๋“œ)
- **๋กœ๋“œ ๋ฐธ๋Ÿฐ์‹ฑ** (MetalLB)
- **๋ชจ๋‹ˆํ„ฐ๋ง ๋Œ€์‹œ๋ณด๋“œ** ๊ตฌ์ถ• (Prometheus/Grafana ๊ฐœ๋ฐœ ์ค‘)
- **๋ฐฑ์—… ๋ฐ ๋ณต๊ตฌ** ์ž๋™ํ™”
- **๋ฏธ๋””์–ด & ๊ฒŒ์ž„ ์„œ๋ฒ„** ํ†ตํ•ฉ ๊ด€๋ฆฌ

### 4. ๊ฐœ๋ฐœ์ž ๊ฒฝํ—˜

- **ํด๋ผ์šฐ๋“œ ๋„ค์ดํ‹ฐ๋ธŒ ๊ฐœ๋ฐœ ํ™˜๊ฒฝ** (Dev Pods)
- **Windows ์›๊ฒฉ ๋ฐ์Šคํฌํ†ฑ** ํ™˜๊ฒฝ
- **๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ด€๋ฆฌ ๋„๊ตฌ** (CloudBeaver)
- **๋Œ€ํ™”ํ˜• ๋ฐฐํฌ ๋„๊ตฌ** (ํ„ฐ๋ฏธ๋„ v2)
- **MCP ์„œ๋ฒ„ ํ†ตํ•ฉ** (Context7)

---

## ๐Ÿ› ๏ธ ์ฃผ์š” ์Šคํฌ๋ฆฝํŠธ

| ์Šคํฌ๋ฆฝํŠธ | ์„ค๋ช… |
| -------------------------- | ----------------------------- |
| `yarn projen` | Projen ์„ค์ • ์žฌ์ƒ์„ฑ |
| `yarn build` | ํ”„๋กœ์ ํŠธ ๋นŒ๋“œ |
| `yarn compile` | TypeScript ์ปดํŒŒ์ผ |
| `yarn tf@build` | CDKTF ์ฝ”๋“œ ์‹ ์‹œ์‚ฌ์ด์ฆˆ (synth) |
| `yarn tf@deploy` | ์ „์ฒด ์ธํ”„๋ผ ๋ฐฐํฌ (๋ณ‘๋ ฌ 20) |
| `yarn tf@deploy:selection` | ์„ ํƒ์  ์Šคํƒ ๋ฐฐํฌ (๋Œ€ํ™”ํ˜•) |
| `yarn tf@deploy:single` | ๋‹จ์ผ ์Šคํƒ ๋ฐฐํฌ |
| `yarn tf@plan` | ๋ฐฐํฌ ๊ณ„ํš ํ™•์ธ (diff) |
| `yarn tf@install` | Terraform provider ์ดˆ๊ธฐํ™” |
| `yarn tf@backup` | tfstate ํŒŒ์ผ ๋ฐฑ์—… |
| `yarn tf@clean` | CDKTF ์ถœ๋ ฅ ๋””๋ ‰ํ† ๋ฆฌ ์ •๋ฆฌ |
| `yarn terminal` | ๋Œ€ํ™”ํ˜• ํ„ฐ๋ฏธ๋„ ๋„๊ตฌ v2 |

---

## ๐Ÿ† ๊ธฐ์ˆ ์  ๋„์ „๊ณผ ํ•ด๊ฒฐ

### 1. ํ•˜์ด๋ธŒ๋ฆฌ๋“œ ๋ฉ€ํ‹ฐ ํด๋Ÿฌ์Šคํ„ฐ ํ†ต์‹ 

**๋„์ „**: ํด๋ผ์šฐ๋“œ(OKE)์™€ On-premise(Workstation) Kubernetes ํด๋Ÿฌ์Šคํ„ฐ ๊ฐ„ ์•ˆ์ „ํ•œ ํ†ต์‹  ๊ตฌ์ถ•

**ํ•ด๊ฒฐ**:

- Istio ์„œ๋น„์Šค ๋ฉ”์‹œ ๊ตฌํ˜„ (๊ฐœ๋ฐœ ์ค‘)
- L2TP VPN ํ”„๋ก์‹œ๋ฅผ ํ†ตํ•œ ์•ˆ์ „ํ•œ ๋„คํŠธ์›Œํฌ ํ„ฐ๋„๋ง (๊ตฌํ˜„ ์™„๋ฃŒ)
- ArgoCD๋ฅผ ํ†ตํ•œ ๋ฉ€ํ‹ฐ ํด๋Ÿฌ์Šคํ„ฐ ๋ฐฐํฌ ๊ด€๋ฆฌ (๊ตฌํ˜„ ์™„๋ฃŒ)

### 2. ์Šคํ† ๋ฆฌ์ง€ ์ „๋žต

**๋„์ „**: On-premise ํ™˜๊ฒฝ์—์„œ์˜ ํšจ์œจ์ ์ธ ์Šคํ† ๋ฆฌ์ง€ ๊ด€๋ฆฌ

**ํ•ด๊ฒฐ**:

- Longhorn ๋ถ„์‚ฐ ์Šคํ† ๋ฆฌ์ง€ ์‹œ์Šคํ…œ ๋„์ž…
- HDD/SSD ํ•˜์ด๋ธŒ๋ฆฌ๋“œ ๊ตฌ์„ฑ์œผ๋กœ ์„ฑ๋Šฅ๊ณผ ์šฉ๋Ÿ‰ ์ตœ์ ํ™”
- ์ž๋™ ๋ฐฑ์—… ๋ฐ ๋ณต์ œ ๊ธฐ๋Šฅ ๊ตฌํ˜„

### 3. GitOps ํŒŒ์ดํ”„๋ผ์ธ

**๋„์ „**: ๋ณต์žกํ•œ ๋ฉ€ํ‹ฐ ํด๋Ÿฌ์Šคํ„ฐ ํ™˜๊ฒฝ์—์„œ์˜ ์ผ๊ด€๋œ ๋ฐฐํฌ ๊ด€๋ฆฌ

**ํ•ด๊ฒฐ**:

- ArgoCD ๊ธฐ๋ฐ˜ GitOps ์›Œํฌํ”Œ๋กœ์šฐ ๊ตฌ์ถ•
- ์„ ํƒ์  ์Šคํƒ ๋ฐฐํฌ ๋„๊ตฌ ๊ฐœ๋ฐœ (๋Œ€ํ™”ํ˜• CLI)
- ์ž๋™ํ™”๋œ ๋ฐฐํฌ ๊ฒ€์ฆ ๋ฐ ๋กค๋ฐฑ ๋ฉ”์ปค๋‹ˆ์ฆ˜

### 4. ์ƒํƒœ ๊ด€๋ฆฌ ๋ฐ ๋ฐฑ์—…

**๋„์ „**: Terraform ์ƒํƒœ ํŒŒ์ผ์˜ ์•ˆ์ „ํ•œ ๊ด€๋ฆฌ์™€ ๋ฒ„์ „ ๊ด€๋ฆฌ

**ํ•ด๊ฒฐ**:

- ๋กœ์ปฌ ๋ฐฑ์—”๋“œ์™€ ์ž๋™ ๋ฐฑ์—… ์Šคํฌ๋ฆฝํŠธ ๊ตฌํ˜„
- ์Šคํƒ๋ณ„ ๋…๋ฆฝ์ ์ธ ์ƒํƒœ ๊ด€๋ฆฌ
- Git ๊ธฐ๋ฐ˜ ๋ฒ„์ „ ๊ด€๋ฆฌ ์‹œ์Šคํ…œ

### 5. ๋ณด์•ˆ ๊ฐ•ํ™”

**๋„์ „**: ํด๋ผ์šฐ๋“œ ๋„ค์ดํ‹ฐ๋ธŒ ํ™˜๊ฒฝ์—์„œ์˜ ์ข…ํ•ฉ์  ๋ณด์•ˆ ์ฒด๊ณ„ ๊ตฌ์ถ•

**ํ•ด๊ฒฐ**:

- OAuth2 Proxy๋ฅผ ํ†ตํ•œ ์ธ์ฆ ๋ ˆ์ด์–ด (๊ตฌํ˜„ ์™„๋ฃŒ)
- Cert-Manager๋ฅผ ํ†ตํ•œ ์ž๋™ SSL/TLS ๊ด€๋ฆฌ (๊ตฌํ˜„ ์™„๋ฃŒ)
- Bastion ํ˜ธ์ŠคํŠธ๋ฅผ ํ†ตํ•œ ์•ˆ์ „ํ•œ ํด๋Ÿฌ์Šคํ„ฐ ์ ‘๊ทผ (๊ตฌํ˜„ ์™„๋ฃŒ)
- Vault ์‹œํฌ๋ฆฟ ๊ด€๋ฆฌ ์‹œ์Šคํ…œ (๊ฐœ๋ฐœ ์ค‘)