Files
dap-was-dapms/deploy/ci/render-manifests.sh
koseokmin d1d93f7dc9 GitOps 이전까지 쓸 배포 파이프라인과 Portal 모드 Chart를 추가한다
GitOps 저장소도 ArgoCD Application도 아직 없어, 그때까지 이 저장소가
push 방식 파이프라인(.gitea/workflows/)을 임시로 소유한다. 무엇을
포기하는지와 넘길 때 할 일은 deploy/README.md에 적었다.

Chart는 portal과 bundles 두 배포 모델을 모두 렌더링한다. ADR-0013이
ADR-0007을 대체했으므로 운영은 portal이 기준이지만, bundles 경로를
언제 삭제할지는 아직 정하지 않았다.

- .gitea/workflows/ci.yaml, deploy-openshift.yaml
- deploy/ci/render-manifests.sh, deploy/examples/
- Chart: mode 분기, selectedDeployment/tier helper, imagePullSecrets,
  toolService.apiKeySecret 참조
- extension-points.md에 미결 항목 9~12 추가

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-14 11:02:36 +09:00

60 lines
2.2 KiB
Bash

#!/bin/sh
# Chart를 실제로 렌더링해 배포될 YAML을 만든다.
#
# 존재 이유가 둘이다.
# 1. 검증. HelmDeploymentContractTest는 values와 template의 정적 규칙만 본다.
# helper 오류, 잘못된 들여쓰기, 조건 분기 실수는 렌더링해야 드러난다.
# 2. 인수인계. GitOps 저장소가 아직 없으므로 여기서 나온 YAML이 "지금 무엇이 배포되는가"의
# 유일한 확인 가능한 형태다. 저장소가 생기면 이 산출물을 그대로 옮기면 된다.
#
# helm 바이너리가 PATH에 있어야 한다. CI는 helm 컨테이너 안에서 이 스크립트를 실행한다.
set -eu
CHART=deploy/helm/mcp-server
OUT=${OUT_DIR:-build/rendered}
# values.yaml의 deployments에서 배포 key 목록을 뽑는다.
# 목록의 정본은 values.yaml 하나이며 여기에 복사해 두지 않는다.
deployment_keys() {
sed -n '/^deployments:/,/^[a-z]/p' "$CHART/values.yaml" |
sed -n 's/^ \([a-z0-9-]*\):$/\1/p'
}
rm -rf "$OUT"
mkdir -p "$OUT"
keys=$(deployment_keys)
if [ -z "$keys" ]; then
echo "values.yaml의 deployments에서 배포 key를 찾지 못했다. 형식이 바뀌었는지 확인한다." >&2
exit 1
fi
for env in dev test prod; do
values="$CHART/values-$env.yaml"
namespace="ax-hub-$env"
# portal 모드. 배포 하나가 전 route를 서비스한다(ADR-0013).
echo "== lint $env / portal"
helm lint "$CHART" -f "$values"
echo "== render $env / portal"
helm template axhub-mcp "$CHART" -f "$values" \
--namespace "$namespace" \
>"$OUT/$env-portal.yaml"
# bundles 모드. 배포마다 Tool Service 하나(ADR-0007).
# 토폴로지 전체를 돌려야 등급별 replica·PDB·노드 분산 분기가 모두 렌더링된다.
for key in $keys; do
echo "== lint $env / bundles / $key"
helm lint "$CHART" -f "$values" --set mode=bundles --set "deploymentKey=$key"
echo "== render $env / bundles / $key"
helm template "$key-mcp" "$CHART" -f "$values" \
--set mode=bundles --set "deploymentKey=$key" \
--namespace "$namespace" \
>"$OUT/$env-bundles-$key.yaml"
done
done
echo
echo "렌더링 결과: $OUT"
ls -1 "$OUT"