From 04535205503a5ac58aca651d99fb736ac09a2478 Mon Sep 17 00:00:00 2001 From: jungwoo choi Date: Mon, 31 Aug 2026 03:25:00 +0900 Subject: [PATCH] =?UTF-8?q?feat(dev):=20=EB=A1=9C=EC=BB=AC=20=ED=81=B4?= =?UTF-8?q?=EB=9D=BC=EC=9A=B0=EB=93=9C=20=EA=B8=B0=EB=B3=B8=20CP1+?= =?UTF-8?q?=EC=9B=8C=EC=BB=A42=20=E2=80=94=200.25.0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Claude Opus 4.8 --- bin/yakcloud | 10 +++++----- yakcloud.yaml | 2 +- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/bin/yakcloud b/bin/yakcloud index b7dbdf9..958c90a 100755 --- a/bin/yakcloud +++ b/bin/yakcloud @@ -16,7 +16,7 @@ set -uo pipefail # -e 미사용: 'test && action' 관용구가 값 없을 때 REPO="${YAKCLOUD_STARTER_REPO:-https://gitea.yakenator.io/yakenator/yakcloud-starter}" BRANCH="${YAKCLOUD_STARTER_BRANCH:-main}" -VERSION="0.24.3" +VERSION="0.25.0" # 로컬 개발 클러스터(kind) — 개발 후 운영까지 '직선 배포'의 dev 구간. DEV_CTX="${YAK_DEV_CONTEXT:-kind-yak-dev}" DEV_CLUSTER="${YAK_DEV_CLUSTER:-yak-dev}" @@ -198,7 +198,7 @@ _init_wizard() { printf "개발 클러스터 = 로컬 kind, 이름 [dev]: "; read -r devc; devc="$(_sanitize_name "${devc:-dev}")" devp=80 if [ "$devc" != "dev" ]; then printf "로컬 인그레스 포트 [8080]: "; read -r devp; devp="${devp:-8080}"; fi - printf "워커 노드 수 [1]: "; read -r devw; devw="${devw:-1}"; case "$devw" in ''|*[!0-9]*) devw=1 ;; esac + printf "워커 노드 수 [2]: "; read -r devw; devw="${devw:-2}"; case "$devw" in ''|*[!0-9]*) devw=2 ;; esac printf "검증 클러스터(관리형, 선택, 엔터=생략): "; read -r valc printf "운영 클러스터(관리형, 선택, 엔터=생략): "; read -r prodc printf "운영 도메인(선택, 예 app.example.com): "; read -r pdom @@ -468,7 +468,7 @@ _podman_auth_fix() { # --name dev2 --port N → kind 'yak-dev2', ctx 'kind-yak-dev2', 등록명 -dev2, 인그레스 N (80은 기본 클러스터 몫) # 나머지 인자(태그 등)는 DEV_ARGS 배열에 남긴다(--name 값이 태그로 오인되지 않게 여기서 소비). _dev_resolve() { - DEV_NAME="dev"; DEV_HTTP_PORT="80"; DEV_PORT_EXPLICIT=0; DEV_WORKERS=0; DEV_ARGS=() + DEV_NAME="dev"; DEV_HTTP_PORT="80"; DEV_PORT_EXPLICIT=0; DEV_WORKERS=2; DEV_ARGS=() # 기본 로컬 클라우드 = CP1 + 워커2 while [ "$#" -gt 0 ]; do case "$1" in --name|--cluster) DEV_NAME="${2:-}"; shift 2 || shift ;; @@ -678,7 +678,7 @@ cmd_dev() { if [ -n "$_mn" ]; then local _inj=(--name "$_mn") { [ -n "$_mp" ] && [ "$_mp" != "80" ]; } && _inj+=(--port "$_mp") - case " $* " in *" --worker"*) : ;; *) { [ -n "$_mw" ] && [ "$_mw" != "0" ]; } && _inj+=(--workers "$_mw") ;; esac + case " $* " in *" --worker"*) : ;; *) [ -n "$_mw" ] && _inj+=(--workers "$_mw") ;; esac # 매니페스트 workers(0 포함) 존중; 없으면 _dev_resolve 기본 2 set -- "${_inj[@]}" "$@"; name_given=1 fi fi @@ -767,7 +767,7 @@ yakcloud $VERSION — YakCloud 프로젝트 CLI (개발·검증·운영 모두 cluster create [--template S|M] [--nodes N] [--golden] 클러스터 생성(프로비저닝 완료까지 대기) cluster ls 내 클러스터 목록(이름·상태·노드·기본 도메인) ── 로컬 개발 클러스터(kind) — 개발 후 운영까지 직선 배포의 dev 구간 ── - dev up [--workers N] 로컬 kind 생성 + 인그레스(80/443) — 최초 1회. --workers N=워커 노드 추가(기본 0=CP만, 매니페스트 environments.dev.workers 도 가능) + dev up [--workers N] 로컬 kind 생성 + 인그레스(80/443) — 최초 1회. 기본 CP1+워커2. --workers N 으로 조정(0=CP만, 매니페스트 environments.dev.workers 도 가능) dev deploy [tag] 매니페스트대로 로컬 리컨실(이미지 빌드+load, 소스/워크로드/인그레스; 콘솔 API 불필요) dev ls 로컬 클러스터 목록(kind 이름 / --name / 콘솔 등록명) — 삭제 전 대상 확인 dev status | dev clean 로컬 배포 상태 / 이 프로젝트 리소스 삭제 diff --git a/yakcloud.yaml b/yakcloud.yaml index e70ac5a..48f533d 100644 --- a/yakcloud.yaml +++ b/yakcloud.yaml @@ -23,7 +23,7 @@ project: my-app # 프로젝트 이름(이미지 경로/표 # workloads: # 워크로드명(web) 키로 필드 패치(resources·replicas·env 는 병합, 그 외 교체) # web: { replicas: 3, resources: { cpu: 500m, mem: 512Mi } } environments: - dev: { cluster: dev, port: 80, workers: 1 } # 로컬 kind (project deploy). cluster=로컬 이름, port=인그레스 포트(이름!=dev면 비80), workers=워커 노드 수(0=CP만) + dev: { cluster: dev, port: 80, workers: 2 } # 로컬 kind (project deploy). cluster=로컬 이름, port=인그레스 포트(이름!=dev면 비80), workers=워커 노드 수(기본 2, 0=CP만) val: { cluster: my-val-cluster } # 관리형 (promote --to val) prod: { cluster: my-prod-cluster, domains: [] } # 관리형 (promote --to prod, domains 예: [app.example.com]) — 필요 시 위 예처럼 requires/workloads 오버라이드