cli v0.5.0: deploy가 도메인 리컨실 + 소스 405 액션형 에러 + --local 폴백/러너 프리플라이트 + 에러 힌트/pyyaml 가드; init에서 bin/install 제거; 문서(토큰권한·healthz·러너) 보강
This commit is contained in:
@ -1,24 +1,33 @@
|
||||
# YakCloud 선언적 배포 매니페스트 — 스타터(최소, 데이터소스 없이 단독 배포 가능)
|
||||
# 태그(v*) push → Gitea Actions → build/push → 리컨실 배포. 자세한 절차: .claude/skills/yakcloud-deploy/SKILL.md
|
||||
# YakCloud 선언적 배포 매니페스트 (범용 템플릿)
|
||||
# 태그(v*) push → Gitea Actions → 이 매니페스트로 배포:
|
||||
# 1) requires 리컨실 — 논리 이름의 소스가 READY 면 스킵, 없으면 type/plan 대로 프로비저닝 후 Ready 대기
|
||||
# 2) workloads 빌드/배포 — build 컨텍스트를 image 로 빌드·push, 각 워크로드가 소스를 alias 로 바인딩
|
||||
# 3) 앱 탭 등록 + 데이터소스 연결(<ALIAS>_URL 등 env 자동 주입)
|
||||
apiVersion: yakcloud/v1
|
||||
project: yakcloud-starter
|
||||
project: my-app # 프로젝트 이름(이미지 경로/표시에 사용) — 소문자·숫자·하이픈
|
||||
|
||||
# 배포 대상 클러스터 — 이름 또는 콘솔 id 로 변경. (YAKCLOUD_CLUSTER 시크릿이 있으면 그게 우선)
|
||||
# 배포 대상 클러스터 — 이름 또는 콘솔 id. (우선순위: YAKCLOUD_CLUSTER 시크릿 > 이 필드)
|
||||
cluster: my-service-19
|
||||
|
||||
# 데이터 소스 필요하면 추가(없으면 빈 목록):
|
||||
# - { name: appdb, type: postgresql, plan: small }
|
||||
requires: []
|
||||
# 필요한 데이터 소스(논리 이름). 없으면 [] 로 둬도 됨.
|
||||
# type ∈ postgresql·mysql·mariadb·mongodb·redis·minio·rabbitmq·solr·oracle, plan ∈ small·medium·large
|
||||
# ⚠ 이름이 클러스터의 기존 READY 소스와 일치하면 스킵·바인딩. 없을 때 자동 프로비저닝은
|
||||
# "배포 토큰에 소스 생성 권한이 있을 때"만 됩니다(없으면 405). 권한이 없으면 콘솔에서 소스를
|
||||
# 먼저 만들고 이 name 을 그 소스명으로 지정하세요. ('yakcloud project check' 로 미리 확인)
|
||||
requires:
|
||||
- { name: appdb, type: postgresql, plan: small }
|
||||
|
||||
# 워크로드(앱 컨테이너). CI 는 각 workload.build 를 도커 빌드해 image 로 push 한다(${TAG}=릴리스 태그).
|
||||
workloads:
|
||||
- name: web
|
||||
build: ./ # 루트 Dockerfile 을 CI 가 빌드
|
||||
image: gitea.yakenator.io/yakenator/yakcloud-starter-web:${TAG} # <GITEA_USER>/<project>-web 로 변경
|
||||
build: ./ # 도커 빌드 컨텍스트(Dockerfile 위치). 예: ./ 또는 ./api
|
||||
image: gitea.yakenator.io/CHANGE_ME_GITEA_USER/my-app-web:${TAG}
|
||||
port: 8080
|
||||
replicas: 2 # ≥2 → 무중단 롤링
|
||||
replicas: 2 # ≥2 → 무중단 롤링(readiness 게이트)
|
||||
health: /healthz
|
||||
resources: { cpu: 25m, mem: 64Mi }
|
||||
expose: { path: /, rewrite: false } # host: <등록도메인> 지정 시 그 도메인으로 노출. 여러 개는 hosts: [a, b]
|
||||
# 데이터 소스를 쓰면 requires 에 추가하고 아래처럼 바인딩(앱은 DB_URL 등으로 접속):
|
||||
# binds:
|
||||
# - { alias: db, source: appdb }
|
||||
resources: { cpu: 25m, mem: 96Mi }
|
||||
# host 지정 시 등록 도메인으로 노출(미지정=클러스터 기본 도메인). 여러 개는 hosts: [a, b]
|
||||
expose: { path: /, rewrite: false }
|
||||
binds:
|
||||
# source=위 requires 이름, alias=env 프리픽스(대문자화). 예 alias=db → DB_URL/DB_HOST/DB_PORT/…
|
||||
- { alias: db, source: appdb }
|
||||
|
||||
Reference in New Issue
Block a user