Commit Graph

59 Commits

Author SHA1 Message Date
6ffc6425bb fix: promote 실패 시 거짓 성공 방지 + 기본 소스 이름 프로젝트 고유화(공용 클러스터 충돌 예방) (v0.29.0)
- bin/yakcloud: promote 의 리컨실(deploy.py) 실패면 '✓ 승격 완료' 대신 die(운영 승인 대기 403 안내 포함).
  set -e 미사용이라 이전엔 배포 차단돼도 성공으로 표시되던 버그.
- yakcloud.yaml: 기본 소스 이름 appdb→my-app-db(init 이 <project>-db 로 치환). 공용 클러스터에서
  리컨실이 동명 기존 소스를 재사용·바인딩 → 남의 DB 에 테이블 만드는 사고 예방.
- deploy.py: 기존 소스 재사용 시 로그를 ⚠ 로 강화(공유 위험·고유 이름 권고 명시).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-08-31 15:01:26 +09:00
63021f63b2 feat: 운영 승격 게이트 Phase2 — 콘솔 휴먼 승인 연동 (v0.28.0)
- project confirm: 게이트 켜진 prod 클러스터에 승인 요청 best-effort 등록(YAKCLOUD_ACTION=register-approval)
- deploy.py: register-approval 액션(워크로드별 PENDING 생성) + 403 힌트를 운영 승인 안내로
- SKILL.md: 운영 승격 게이트에 콘솔 휴먼 승인(Phase2) 명시 — 에이전트 승인 불가

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-08-31 12:31:41 +09:00
9b66d32695 feat: 운영 승격 게이트 — project confirm(dev 검증 사인오프) 없으면 prod 차단 (v0.27.0)
- project confirm [vX.Y.Z]: 개발계 검증 사인오프를 .yakcloud.confirm 에 기록(로컬·git 미포함)
- promote --to prod: 확정 버전 일치 시에만 통과(val 자유). 불일치/없음 차단
- 스캐폴드: CLAUDE.md 운영 게이트 규칙 + 에이전트 임의 confirm 금지, .gitignore 에 .yakcloud.confirm
- SKILL.md: confirm 실행 전 확인 + 운영 게이트 경고

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-08-31 11:42:09 +09:00
6d3118dd47 feat: yakcloud 강제 가드레일 스캐폴딩 — project init 이 CLAUDE.md + .claude/settings.json(docker-compose 차단) 생성 (v0.26.0)
- init: 프로젝트 루트 CLAUDE.md(항상 로드, yakcloud-only 지침) + .claude/settings.json permissions.deny(docker compose/run 차단) 생성
- update: 위 가드레일 backfill(사용자 편집 보존)
- .claude 통삭제 → skills/commands 만 제거로 수정(프로젝트 settings.json 보존)
- SKILL.md: description 트리거를 로컬 실행·검증·개발환경으로 확장 + compose 금지 원칙

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-08-31 11:25:50 +09:00
0453520550 feat(dev): 로컬 클라우드 기본 CP1+워커2 — 0.25.0
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-08-31 03:25:00 +09:00
7ecea53944 fix(deploy): 승격/재배포 바인딩 재적용(소스 교체 반영) — 0.24.3
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-08-30 22:50:14 +09:00
dcca946a63 fix: Redis 공유 제거 — 전용/외부로 통일 — 0.24.2
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-08-30 22:39:11 +09:00
9b9c873bc7 fix(deploy): Redis 기본 전용(local) — 공유 ACL 프리픽스 pub/sub NOPERM 해결 — 0.24.1
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-08-30 22:29:22 +09:00
311bbd8951 feat(deploy): 환경별 오버레이(requires/workloads override) — 0.24.0
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-08-30 22:21:45 +09:00
f3a70227ba feat(console): 로컬 앱 설정·재배포·삭제·스케일·연결표시(에이전트 릴레이) — 0.23.0
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-08-30 19:39:58 +09:00
e848547319 fix(dev): 워커 CP 오분류 수정 + 마법사 워커 수 질문(기본1) + 템플릿 workers:1 — 0.22.1
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-08-30 19:25:07 +09:00
bb0295a527 feat(dev): 로컬 kind 워커 노드 추가(dev up --workers N + environments.dev.workers) — 0.22.0
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-08-30 18:41:16 +09:00
922f8157fd fix(dev): dev ls/down 런타임 인지(런타임 컬럼 + docker·podman 모두) — 0.21.4
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-08-30 18:16:34 +09:00
53881b85ae fix(dev): dev down 안전화 + dev ls 신설(엉뚱한 삭제 방지) — 0.21.3
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-08-30 18:09:14 +09:00
d6532ad988 fix(console): 로컬 앱 상세 데이터소스 연결(바인딩) 표시 — dev deploy binds 리포트 + ServiceBinding 싱크. 0.21.2
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-08-30 17:55:02 +09:00
d1481486ee fix(dev): dev 명령이 매니페스트 environments.dev.cluster 를 이름으로 강제(등록명 조합) — 0.21.1
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-08-30 17:46:54 +09:00
a87c41358c feat(dev): 로컬 데이터소스 9종 파리티(minio·rabbitmq·solr·oracle) — 0.21.0
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-08-30 17:28:25 +09:00
0e83adc82a feat(cli): 0.20.0 — dev=로컬 kind 기본(project deploy 자동 생성), promote=관리형(build+push)
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-08-30 15:29:41 +09:00
f699eda791 chore(cli): 0.19.1 — dev deploy ingress 경로 리포트
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-08-30 15:10:21 +09:00
de9b6dc746 chore(cli): 0.19.0 — 로컬 릴레이/다중클러스터/podman/init . /패스스루 누적 반영
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-08-30 14:48:50 +09:00
77cbcb3605 feat(skill): /yakcloud <args> 패스스루 규약(그대로 실행 + 안전장치)
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-08-30 14:46:54 +09:00
451c21c4c4 fix(cli): project init . — 폴더명으로 이름 유도 + 이름 정규화
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-08-30 14:40:41 +09:00
ec8aa1e349 fix(dev): docker·podman 둘 다 견고화(런타임 강제지정 + podman localhost/·image-archive 로드)
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-08-30 11:47:52 +09:00
ac02e695d1 fix(dev): podman + Docker Desktop credHelpers(https://) 충돌 자동 우회(공개 이미지 pull)
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-08-30 10:43:12 +09:00
225a53aa24 feat(dev): localReport 에 kubectl context 추가(콘솔 연결·삭제 탭 안내용)
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-08-29 22:16:14 +09:00
a0352d02c0 feat(dev): 릴레이 에이전트를 클러스터 단위로 — dev up 에서 기동(배포 전 노드 모니터링·연결)
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-08-29 20:41:59 +09:00
da1911a036 feat(dev): 다중 로컬 dev 클러스터(--name/--port) + 노드 리소스 사용현황 릴레이
`yakcloud dev up --name dev2 --port 8081` 로 머신에 여러 kind dev 클러스터(공유 소스 컨테이너 재사용).
agent 가 노드 CPU/MEM/DISK(예약·실측)를 릴레이 → 콘솔이 원격과 동일한 노드 리소스 카드로 표시.
dev up 이 metrics-server 자동 설치(실측용). 리뷰 반영(pidfile 정리·포트 범위·phase·디스크).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-08-29 19:33:45 +09:00
761666aade feat(relay): agent describe 를 PodDescribeDTO 스키마로 확장(로컬 앱 파드 상세)
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-08-29 15:34:01 +09:00
208393b185 feat(relay): 에이전트 kube 핸들러(pods/describe/workloads) — 로컬 앱 라이브 조회
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-08-29 15:17:36 +09:00
3c3724b091 feat(relay): 로컬 클러스터 데이터툴 라이브 릴레이 — 콘솔에서 로컬 소스 관리(원격 파리티)
dev deploy 시 릴레이 에이전트(.yakcloud/agent.py) 기동 — 콘솔에서 ds-token 받아 프로덕션
백엔드 ds-actions 롱폴 → 로컬 kind Secret 읽고 공유 컨테이너의 격리 DB 에 접속(docker exec,
무설치) → 결과만 반환. 자격은 노트북 밖으로 안 나감. dev.py 가 소스 secret 리포트 + 데몬
라이프사이클(dev down 중지). 콘솔의 SQL/Mongo/Redis 매니저를 로컬 소스에 그대로 사용.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-08-29 14:51:43 +09:00
1ce0cf3871 feat(dev): 로컬 dev 소스를 공유 도커 컨테이너+격리 DB로 재작성(클러스터=비즈니스만)
로컬 kind 개발에서 데이터 소스를 타입별 공유 도커 컨테이너(yak-dev-*)로 올리고
프로젝트-소스별 격리 DB·계정(<project>_<source>)을 민팅한다. 클러스터에는
no-selector Service + 수동 Endpoints 로 kind 밖 컨테이너를 가리켜 앱만 배포한다.
관리형 shared 모드와 동일한 바인딩 env 파리티 유지. dev down 시 공유 컨테이너 정리.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-08-29 13:32:34 +09:00
2f4d79bc6e fix(cli): install_global_assets local 선언 오타 수정(project init 완주)
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-08-29 13:10:58 +09:00
fbdf8f68df refactor(cli): 엔진 전역화(.yakcloud 다운로드 소스) + 스캐폴드 최소화 + shared 기본 — 0.18.0
엔진(deploy/ctl/dev.py)은 install.sh 가 ~/.config/yakcloud/lib 로 설치, CLI 가 전역 실행.
project init 스캐폴드 = 앱+매니페스트+얇은 .gitea CI 만. 데이터소스 기본 shared.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-08-29 13:08:21 +09:00
d8874eaed7 feat(cli): dev deploy 가 로컬 소스·앱을 콘솔에 리포트(내 로컬 클러스터 3탭) — 0.17.0
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-08-29 12:32:08 +09:00
05c1afe718 chore(cli): 스캐폴드 정리(project init 이 commands/README/DATA-SOURCES 제외) + SKILL 슬림화 — 0.16.0
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-08-29 11:50:56 +09:00
3f12342693 feat(cli): 로컬 dev 클러스터를 콘솔 클러스터 목록에 등록(내 로컬/내 원격) — 0.15.0
dev up/deploy 가 배포토큰으로 콘솔에 로컬 클러스터를 best-effort 메타 등록/heartbeat, dev down 이 해제.
로그인 없으면 조용히 스킵(오프라인 dev 불변식). 콘솔 사이드바가 '내 로컬 클러스터'/'내 원격 클러스터'로 분리.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-08-29 11:38:50 +09:00
7a90cb2be8 feat: 로컬 kind 개발 클러스터(yakcloud dev) — 개발 후 운영까지 직선 배포
yakcloud dev up|deploy|status|clean|down. 로컬 kind 를 dev 구간으로 삼아 관리형과 동일한
바인딩 env 계약을 로컬에서 재현(pg/mysql/mariadb/mongodb/redis). dev 에선 CLI 가 곧 컨트롤플레인
이라 오프라인 반복. 같은 매니페스트·같은 이미지로 promote --to val/prod 직선. VERSION 0.14.0.
문서 동시 갱신(SKILL·/yakcloud 명령·yakcloud.yaml·README·DATA-SOURCES).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-08-29 10:47:42 +09:00
89fca872c0 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>
2026-08-28 12:08:11 +09:00
2281039c1b cli v0.12.3: 소스 프로비저닝 엔드포인트 수정 — POST /services(clusterId in body). /clusters/{id}/services 는 GET전용이라 405 나던 것(board6 '권한' 오진 실은 잘못된 엔드포인트) 2026-08-28 06:19:19 +09:00
d2de054b3b cli v0.12.2: 개발→검증→운영 3단계 — promote --to <env> 일반화, environments 템플릿 dev/val/prod, init 마법사 검증 클러스터 2026-08-28 06:02:21 +09:00
ef287cbfd4 cli v0.12.1: 배포 이름 충돌 가드 — 같은 이름·다른 이미지 repo 면 덮어쓰기 거부(fail-fast). 백엔드 create_deployment 도 409 로 강제 2026-08-28 05:39:59 +09:00
d85e4929fd cli v0.12.0: 'yakcloud cluster create/ls' — 배포토큰으로 POST /clusters(템플릿 S/M) + 프로비저닝 폴. 클러스터 생성부터 배포까지 완전 CLI 2026-08-28 05:22:32 +09:00
2517615913 cli v0.11.1: environments env 클러스터가 저장/전역 YAKCLOUD_CLUSTER 보다 우선(폴백 강등) — dev/prod 해석 정확화 2026-08-28 05:19:31 +09:00
dd6cf8a880 cli v0.11.0: 로컬 dev/migrate 제거, 개발/운영 클러스터 승격 모델. environments.{dev,prod} 매니페스트; project deploy=개발 클러스터, project promote=재빌드 없이 운영 클러스터+운영 도메인. CI=dev 환경. dev/prod dry-run 검증 2026-08-28 05:07:14 +09:00
9353cd7706 cli v0.10.0: migrate oracle(Data Pump expdp/impdp + REMAP_SCHEMA + EXCLUDE) — 소스 컨테이너 exec+docker cp, chmod-as-root, exclude=user. 9종 전부 지원. docker E2E(캡처·제외·apply-skip·reset복원 CUSTOMERS/ORDERS) 검증 2026-08-27 22:21:43 +09:00
d8fe2b0ea3 cli v0.9.0: migrate 확장 redis/solr/rabbitmq — redis(SCAN+DUMP/RESTORE·TTL보존), solr(cursorMark export·fq 블랙리스트), rabbitmq(정의 export/import·메시지제외). 3종 docker E2E(캡처·제외·apply-skip·reset복원) 검증. oracle=다음 2026-08-27 22:00:42 +09:00
a498a402e6 cli v0.8.0: 'yakcloud datasource migrate' — 블랙리스트(.migrateignore) 스냅샷 캡처/빈타깃 적용(부트스트랩). pg/mysql/mariadb/mongo/minio, 미리보기+제외검증+apply-skip+reset복원 docker E2E 검증. dev reset named볼륨 삭제 수정. 문서·/yakcloud 갱신 2026-08-27 20:15:18 +09:00
a82de865f7 cli v0.7.0: 'yakcloud dev' — 로컬 docker 데이터소스 + 프로덕션 _bind_env_for 바이트 동일 <ALIAS>_* env(.env.dev). up/run/down/status/logs/env/reset/doctor; 결정적 자격 파생; 9종 패리티+6종 docker E2E 검증. .gitignore 에 dev 산출물 2026-08-27 19:27:09 +09:00
31cf7fbb49 cli v0.6.0: 설치/업그레이드 시 Claude Code 전역 슬래시 명령 /yakcloud 자동 생성(.claude/commands/yakcloud.md); install.sh·upgrade 가 fetch·최신화 2026-08-27 18:58:05 +09:00
eb58df76d2 cli: 'yakcloud datasource ls'(=source ls) — 클러스터 이용가능 소스 목록(이름·타입·내부/외부·상태·플랜) 2026-08-27 18:46:40 +09:00