feat(cli): clusterName 환경별 소스명 매핑 + 운영 소스 3-모드 결정 조회(datasource options/ls) + 검증·문서 · v0.32.0

This commit is contained in:
2026-09-06 03:41:17 +09:00
parent 789aaee5b4
commit 075d7bc3d7
9 changed files with 356 additions and 62 deletions

View File

@ -9,14 +9,14 @@
# yakcloud project info 프로젝트 개괄(매니페스트 + 라이브 상태)
# yakcloud project check [--env dev|val|prod] dry-run(직접 API 계획만)
#
# yakcloud domain <fqdn> [wl] · scale · set · env · datasource ls · source · bind/unbind
# yakcloud domain <fqdn> [wl] · scale · set · env · datasource ls/options · source · bind/unbind
#
# 매니페스트: environments.dev=로컬 kind{cluster,port}, val/prod=관리형{cluster,+prod.domains}. env: YAKCLOUD_URL, YAKCLOUD_TOKEN(yakd_…)
set -uo pipefail # -e 미사용: 'test && action' 관용구가 값 없을 때 CLI 를 중단시키는 함정 회피. 중요 경로는 명시적 || die.
REPO="${YAKCLOUD_STARTER_REPO:-https://gitea.yakenator.io/yakenator/yakcloud-starter}"
BRANCH="${YAKCLOUD_STARTER_BRANCH:-main}"
VERSION="0.31.0"
VERSION="0.32.0"
# 로컬 개발 클러스터(kind) — 개발 후 운영까지 '직선 배포'의 dev 구간.
DEV_CTX="${YAK_DEV_CONTEXT:-kind-yak-dev}"
DEV_CLUSTER="${YAK_DEV_CLUSTER:-yak-dev}"
@ -179,8 +179,8 @@ _scaffold_yakcloud_guardrails() {
`yakcloud project promote --to prod <ver>` 가 통과한다(확정은 그 버전에 묶임). 에이전트가 임의로 confirm 하지 말 것.
## 데이터소스
- `yakcloud.yaml` 의 `requires` 에 `{ name, type }` 선언 → 워크로드 `binds` 로 연결 → `<ALIAS>_URL` 등 자동 주입.
- type ∈ postgresql·mysql·mariadb·mongodb·redis·minio·rabbitmq·solr·oracle. 목록 = `yakcloud datasource ls`.
- `yakcloud.yaml` 의 `requires` 에 `{ name, type }` 선언 → 워크로드 `binds` 로 연결(binds 는 항상 논리 `name` 참조, 불변) → `<ALIAS>_URL` 등 자동 주입. 운영에서 실제 소스 이름이 다르면 `environments.<env>` 오버레이에 같은 `name` + `clusterName: <실제 소스명>` (기본=name)으로 매핑한다.
- type ∈ postgresql·mysql·mariadb·mongodb·redis·minio·rabbitmq·solr·oracle. 기존 소스 나열 = `yakcloud datasource ls`, 타입별 지원모드·공유 가용성 확인(운영 모드 결정) = `yakcloud datasource options <type> --env prod`. (oracle=remote 전용, redis·minio=shared 없음, 나머지 6종=local/remote/shared 3모드; 로컬 dev 는 도커로 논리 이름 그대로 떠서 결정 불필요)
## 참고
- 상태 = `yakcloud project info` · 배포 전 dry-run = `yakcloud project check`.
@ -979,7 +979,8 @@ yakcloud $VERSION — YakCloud 프로젝트 CLI (개발·검증·운영 모두
scale <wl> <n> replicas 변경
set <wl> --image/--port/--health/--cpu/--mem/--path/--rewrite
env <wl> KEY=VAL … [--secret KEY] [--unset KEY]
datasource ls 클러스터에서 이용 가능한 소스 목록(이름·타입·내부/외부·상태)
datasource ls [--env prod|val] [--cluster <id>] [--json] 대상 클러스터 소스 목록(이름·타입·내부/외부·상태)
datasource options <type> [--env prod|val] [--cluster <id>] [--json] 타입별 지원모드(local/remote/shared)+이 배포의 공유 가용성(sharedAvailable)+기존 소스(existing, 조회실패는 existingError). 운영 소스 '모드 결정'용
source add <name> <type> [plan] [--shared] | source rm <name> (--shared=공유 외부, 백엔드가 격리 DB 민팅)
bind <wl> <source> <alias> | unbind <wl> <alias>
매니페스트: environments.{dev,val,prod}.cluster(val 선택, +prod.domains). env: YAKCLOUD_URL, YAKCLOUD_TOKEN(배포토큰 yakd_…)