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>
This commit is contained in:
2026-09-14 11:02:36 +09:00
parent b79a10a451
commit d1d93f7dc9
19 changed files with 944 additions and 150 deletions

View File

@@ -1,16 +1,14 @@
# prod 환경.
#
# replica는 배포 하나가 받는 트래픽 기준으로 잡는다. 업무 × 등급으로 나뉘어 있으므로
# 배포 하나가 받는 몫은 전체를 하나로 묶었을 때의 일부다. 등급별 기준은 아래가 정본이다.
#
# 조회 부하 = replica 수 / 주기. 1:1이라 bundle 수는 항상 1이다(ADR-0007).
# 중요 등급 3 replica / 30초 = 배포당 초당 0.1회. Tool Service 한 대가 받는 몫이 그대로 이 값이다.
# replica는 배포가 받는 트래픽 기준으로 잡는다.
# 매니페스트 조회 부하 = replica 수 × (route에 붙은 Tool Service 수) / 주기다.
# portal 모드는 한 배포가 전 route를 서비스하므로 route가 늘면 이 값이 함께 는다(ADR-0013 전제 3).
#
# 중요 등급은 replica 2 이상과 PodDisruptionBudget이 필수다.
# 1이면 rolling update 중 반드시 공백이 생기고, PDB가 없으면 노드 drain이 마지막 Pod을 내린다.
# HelmDeploymentContractTest가 replica·PDB·노드 분산 values를 정적으로 검사한다.
#
# 어느 배포를 설치할지는 이 파일이 정하지 않는다. --set deploymentKey=<key>로 고른다.
# 이 파일은 배포 토폴로지를 소유하지 않는다. mode와 deployments는 values.yaml 한 곳에 있다.
# TODO: namespace가 확정되면 agentBuilderNamespace를 교체한다.
global:
@@ -18,6 +16,11 @@ global:
agentBuilderNamespace: ax-hub-agentbuilder-prod
mcpHost: mcp.apps.example.internal
portal:
# TODO: 실제 운영 Portal registry 주소로 교체한다.
registryUrl: https://axhub.apps.example.internal/api/portal/registry
refreshIntervalSeconds: 300
route:
# TODO: Agent Builder의 실제 고정 egress CIDR로 교체한다.
sourceAllowlist: 192.0.2.0/24