cli v0.13.0: 공유 외부 소스 CLI 선언(source add --shared, mode:shared) + 문서 3계층·cluster create 정리

source add --shared / requires[].mode:shared 로 공유 외부 소스를 매니페스트에 선언 → 배포 시 백엔드가 클러스터별 격리 DB/계정 민팅(인클러스터 StatefulSet 없음, 소용량 클러스터용). reconcile_source 가 mode 를 POST /services 로 전달(local 하드코딩 제거). 문서(슬래시명령·매니페스트 템플릿·DATA-SOURCES·SKILL·bin help): 로컬 dev/migrate 제거·dev/val/prod 3계층 승격(promote --to)·cluster create/ls·project check --env 반영.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
jungwoo choi
2026-08-28 12:08:11 +09:00
parent 2281039c1b
commit 89fca872c0
7 changed files with 56 additions and 32 deletions

View File

@ -36,9 +36,13 @@
> 비밀번호·키는 인클러스터 Secret으로 주입되고 콘솔/브라우저에 노출되지 않는다. URL의 user/pw는 URL-인코딩됨.
## 개발/운영 모두 클러스터에서
데이터 소스는 **클러스터 안에서 실제로 프로비저닝**된다(로컬 docker 없음). 개발 클러스터에 배포하면 그 클러스터의 소스가
`<ALIAS>_*` 로 주입되고, 운영 클러스터로 승격하면 운영 클러스터의 소스가 주입된다 — 각 환경이 자체 데이터 계층을 가진다.
## 개발/검증/운영 모두 클러스터에서
데이터 소스는 두 가지 모드:
1. **인클러스터(local)**: 클러스터 안에서 실제로 프로비저닝(StatefulSet). 개발 클러스터에 배포하면 클러스터의 소스가
`<ALIAS>_*` 로 주입되고, 상위 환경으로 승격하면 그 환경 클러스터의 소스가 주입된다 — 각 환경이 자체 데이터 계층을 가진다.
2. **공유 외부(shared)**: 소용량(S) 클러스터용. 매니페스트 `requires``{ name, type: mongodb, mode: shared }` 로 선언
(또는 `yakcloud source add <name> mongodb --shared`; 콘솔/API 등록도 가능). 배포 시 백엔드가 클러스터별 격리 DB/계정을
만들어, 모든 환경이 같은 외부 소스 이름으로 환경별 격리 접속(인클러스터 StatefulSet 불필요).
환경 간 데이터 백업·싱크는 별도(추후).
## 앱 코드 예시