9b66d3269576d3276de300d82a2231c85533ba58
- 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>
yakcloud 스타터 (프레임워크 중립)
의존성 0의 최소 HTTP 서버. 배포 계약만 지키면 어떤 스택으로 바꿔도 된다:
PORT환경변수로 리슨(기본 8080)GET /healthz→ 200 (매니페스트health경로)- (선택) 바인딩된 소스는
<ALIAS>_URL등 env로 접속
로컬 실행 (앱만)
PORT=8080 python3 app.py
curl localhost:8080/healthz # {"ok":true}
curl localhost:8080/ # 앱 정보 + 연결된 소스 키
로컬 개발 (K8s 파리티) — yakcloud dev
운영과 같은 K8s + 같은 바인딩 env로, 선언한 데이터소스까지 로컬에 띄워 검증한다:
yakcloud dev up # 최초 1회 — 로컬 kind + 인그레스
yakcloud dev deploy # requires 소스 + workloads 를 로컬 배포(관리형과 동일한 <ALIAS>_URL 등 주입)
curl -s http://<project>.dev.localhost/ # bound_sources 에 연결 키 확인
yakcloud dev down # 정리
같은 매니페스트·같은 이미지로 준비되면 yakcloud project promote --to val|prod 로 직선 승격.
매니페스트 매핑 (yakcloud.yaml)
workloads:
- name: web
build: ./ # 이 디렉터리(Dockerfile)를 CI 가 빌드
image: gitea.yakenator.io/<GITEA_USER>/<project>-web:${TAG}
port: 8080
health: /healthz
binds:
- { alias: db, source: appdb } # → 앱에서 os.environ["DB_URL"] 로 접속
다른 스택으로 교체
app.py(+Dockerfile)를 원하는 언어/프레임워크로 교체하되 위 3계약 유지.
소스별 주입 env 전체 목록은 ../reference/DATA-SOURCES.md 참고.
Description
Languages
Python
65.6%
Shell
34.3%
Dockerfile
0.1%