콘텐츠로 이동

On-premises 배포

.github/workflows/onprem-cd.ymldevelop push 또는 수동 실행에서 image를 build/push한 뒤, 외부 holamago/mago-onprem-infra 저장소의 main branch에 있는 서비스별 image.yaml을 직접 갱신합니다. Workflow는 cluster에 배포하지 않습니다. Workflow의 성공 메시지는 Argo CD 관리자가 manual sync할 것을 명시합니다.

sequenceDiagram
    actor Developer
    participant Action as CD (on-prem)
    participant GAR as Artifact Registry
    participant Infra as mago-onprem-infra/main
    participant Argo as Argo CD
    actor Admin
    Developer->>Action: develop push 또는 workflow_dispatch
    Action->>GAR: 12자 source SHA image push
    Action->>Infra: image.yaml commit/push
    Argo->>Infra: desired tag 읽기
    Argo-->>Admin: diff / OutOfSync
    Admin->>Argo: sync

저장소별 책임

위치 현재 책임
이 저장소 애플리케이션, Chart, deploy/values-onprem.yaml, image build workflow
mago-onprem-infra Argo CD Application/override와 서비스별 image.yaml
관리자 Argo CD diff 확인과 실제 sync

Workflow가 갱신하는 경로:

gitops/apps/values/sohri-graph-builder-onprem/image.yaml

Workflow는 GitHub App token으로 외부 저장소를 checkout하고 HEAD:main을 직접 push합니다. 실패 시 fetch/rebase 후 최대 5회 재시도합니다. PR을 만들지 않으므로 외부 main ruleset이 해당 GitHub App push를 허용해야 합니다.

현재 runtime 값

항목
Application/release identity sohri-graph-builder-onprem
Image asia-northeast3-docker.pkg.dev/mago-services/mago/sohri-graph-builder
Image tag source commit SHA 앞 12자리
Replica 기본값 1
Service ClusterIP :59212
Runtime Secret sohri-graph-builder-openai, key OPENAI_API_KEY
Image pull Secret gcp-artifact-registry
Skill Runtime http://sohri-skill-runtime:59213
ExternalSecret / NEG / Ingress 비활성
HPA / PDB 기본 비활성

Ingress를 켜면 /dm(/|$)(.*)/$2로 rewrite합니다. Skill Runtime이 없어도 Pod 자체는 시작할 수 있지만 Skill 호출은 실패·fallback 경로로 들어갑니다.

필요한 credential

Workflow secrets:

  • GCP_ARTIFACT_REGISTRY_WRITER_KEY
  • ONPREM_INFRA_APP_ID
  • ONPREM_INFRA_APP_PRIVATE_KEY

Cluster secrets:

  • gcp-artifact-registry
  • sohri-graph-builder-openaiOPENAI_API_KEY

절차

  1. develop에 변경을 반영합니다.
  2. CD (on-prem)의 image push와 외부 image.yaml commit을 확인합니다.
  3. Argo CD가 실제로 이 저장소의 Chart/values-onprem.yaml과 외부 image values를 조합하는지 확인합니다.
  4. Diff에서 image tag, replica, Secret, ConfigMap과 Service identity를 확인합니다.
  5. 관리자가 sync한 뒤 rollout과 API/Skill 연결을 검증합니다.

현재 제한

  • 이 저장소는 외부 Argo CD Application의 source revision, values 조합 또는 manual sync 설정을 검증하지 않습니다.
  • deploy/values-onprem.yaml 자체의 tag는 latest이며 실제 immutable tag는 외부 image.yaml overlay에 의존합니다.
  • dm/tests/test_deploy_contract.py의 on-prem 기대값은 현재 workflow와 불일치합니다. 실제 workflow는 서비스 저장소 branch나 로컬 deploy/values-onprem-image.yaml을 갱신하지 않습니다.