# YakCloud 선언적 배포 매니페스트 (범용 템플릿) # 태그(v*) push → Gitea Actions → 이 매니페스트로 배포: # 1) requires 리컨실 — 논리 이름의 소스가 READY 면 스킵, 없으면 type/plan 대로 프로비저닝 후 Ready 대기 # 2) workloads 빌드/배포 — build 컨텍스트를 image 로 빌드·push, 각 워크로드가 소스를 alias 로 바인딩 # 3) 앱 탭 등록 + 데이터소스 연결(_URL 등 env 자동 주입) apiVersion: yakcloud/v1 project: my-app # 프로젝트 이름(이미지 경로/표시에 사용) — 소문자·숫자·하이픈 # 배포 대상 클러스터 — 이름 또는 콘솔 id. (우선순위: YAKCLOUD_CLUSTER 시크릿 > 이 필드) cluster: my-service-19 # 필요한 데이터 소스(논리 이름). 없으면 [] 로 둬도 됨. # type ∈ postgresql·mysql·mariadb·mongodb·redis·minio·rabbitmq·solr·oracle, plan ∈ small·medium·large requires: - { name: appdb, type: postgresql, plan: small } # 워크로드(앱 컨테이너). CI 는 각 workload.build 를 도커 빌드해 image 로 push 한다(${TAG}=릴리스 태그). workloads: - name: web build: ./ # 도커 빌드 컨텍스트(Dockerfile 위치). 예: ./ 또는 ./api image: gitea.yakenator.io/CHANGE_ME_GITEA_USER/my-app-web:${TAG} port: 8080 replicas: 2 # ≥2 → 무중단 롤링(readiness 게이트) health: /healthz 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 }