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>
40 lines
1.6 KiB
Markdown
40 lines
1.6 KiB
Markdown
# yakcloud 스타터 (프레임워크 중립)
|
|
|
|
의존성 0의 최소 HTTP 서버. **배포 계약**만 지키면 어떤 스택으로 바꿔도 된다:
|
|
- `PORT` 환경변수로 리슨(기본 8080)
|
|
- `GET /healthz` → 200 (매니페스트 `health` 경로)
|
|
- (선택) 바인딩된 소스는 `<ALIAS>_URL` 등 env로 접속
|
|
|
|
## 로컬 실행 (앱만)
|
|
```sh
|
|
PORT=8080 python3 app.py
|
|
curl localhost:8080/healthz # {"ok":true}
|
|
curl localhost:8080/ # 앱 정보 + 연결된 소스 키
|
|
```
|
|
|
|
## 로컬 개발 (K8s 파리티) — `yakcloud dev`
|
|
운영과 **같은 K8s + 같은 바인딩 env**로, 선언한 데이터소스까지 로컬에 띄워 검증한다:
|
|
```sh
|
|
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`)
|
|
```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` 참고.
|