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>
60 lines
2.2 KiB
Bash
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"
|