feat(cli): 0.20.0 — dev=로컬 kind 기본(project deploy 자동 생성), promote=관리형(build+push)

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
2026-08-30 15:29:41 +09:00
parent f699eda791
commit 0e83adc82a
3 changed files with 124 additions and 98 deletions

View File

@ -6,16 +6,15 @@
apiVersion: yakcloud/v1
project: my-app # 프로젝트 이름(이미지 경로/표시에 사용) — 소문자·숫자·하이픈
# 환경 — 개발 → 검증 → 운영 3단계. 각 환경 = 별도 클러스터. 검증계(val)가 필요 없으면 그 줄을 지워도 됩니다.
# 로컬 개발(kind) → yakcloud dev up (최초 1회) → yakcloud dev deploy — 콘솔/CI 불필요, 오프라인 반복.
# 로컬에서 requires 소스+workloads 가 관리형과 '동일한 바인딩 env'로 뜬다(직선 파리티).
# deploy → dev (태그 push → CI 빌드 → 개발 클러스터, 기본 도메인으로 확인)
# promote --to val→ 그 이미지를 재빌드 없이 검증 클러스터로
# promote --to prod→ 검증 통과분을 운영 클러스터로 + 운영 도메인(기본 도메인 c-xxxx.yakenator.io 은 자동)
# 환경 — 개발(로컬 kind) → 검증/운영(관리형). 검증계(val)가 필요 없으면 그 줄을 지워도 됩니다.
# dev = **로컬 kind**. yakcloud project deploy → 로컬 클러스터(없으면 자동 생성) + dev deploy(오프라인·무료, CI 불필요).
# 로컬에서 requires 소스+workloads 가 관리형과 '동일한 바인딩 env'로 뜬다(직선 파리티). cluster=로컬 이름, port=인그레스 포트.
# val/prod = **관리형**. yakcloud project promote --to val|prod → 이미지 build+push(이미 있으면 재빌드 없이) 후 리컨실 + 도메인.
# (기본 도메인 c-xxxx.yakenator.io 은 자동. 운영 커스텀 도메인은 prod.domains 에.)
environments:
dev: { cluster: my-dev-cluster } # deploy 대상(기본)
val: { cluster: my-val-cluster } # promote --to val
prod: { cluster: my-prod-cluster, domains: [] } # promote --to prod (domains 예: [app.example.com])
dev: { cluster: dev, port: 80 } # 로컬 kind (project deploy). cluster=로컬 이름, port=인그레스 포트(이름!=dev면 비80)
val: { cluster: my-val-cluster } # 관리형 (promote --to val)
prod: { cluster: my-prod-cluster, domains: [] } # 관리형 (promote --to prod, domains 예: [app.example.com])
# 필요한 데이터 소스(논리 이름). 없으면 [] 로. 기본 = **공유(shared)** — 이미 있는 공유 소스에 연결 + 격리 DB 민팅.
# type ∈ postgresql·mysql·mariadb·mongodb·redis·minio·rabbitmq·solr·oracle