Environment Layout

환경별 차이는 clusters/<env>/<cluster>/apps 아래에서 관리합니다.

catalog는 환경 공통 base이고, clusters는 실제 환경별 overlay입니다. 같은 app이라도 dev와 stg에서 image tag, replica, ingress host가 달라질 수 있으므로 환경별 차이는 overlay에 둡니다.

1. Directory Structure

현재 구조는 다음과 같습니다.

cd-repo/
├── catalog/
│   └── apps/
│       ├── patient-risk-python-api/
│       ├── patient-risk-web/
│       ├── risk-monitor-operator/
│       └── signal-device-simulator/
└── clusters/
    ├── dev/
    │   └── k3s/
    │       ├── applications/
    │       └── apps/
    └── stg/
        └── k3s/
            ├── applications/
            └── apps/

2. Catalog

catalog/apps는 app별 공통 manifest를 보관합니다.

Path Purpose
catalog/apps/<app>/base/deployment.yaml Deployment base
catalog/apps/<app>/base/service.yaml Service base
catalog/apps/<app>/base/kustomization.yaml app base resource and default image tag

Job으로 실행되는 workload는 deployment.yaml 대신 job.yaml을 사용할 수 있습니다.

3. Environment Overlay

환경 overlay는 catalog base를 가져온 뒤 환경별 차이를 적용합니다.

Environment Overlay path Namespace Image policy
dev clusters/dev/k3s/apps tirosh-guide-dev dev moving tag and Image Updater
stg clusters/stg/k3s/apps tirosh-guide-stg exact release tag와 digest를 PR로 promotion

signal-device-simulator는 dev overlay에 먼저 배치합니다. stg는 release tag로 simulator image가 publish된 뒤 promotion PR에서 추가합니다.

Dev는 Image Updater가 mutable dev tag의 현재 digest를 Git에 기록합니다. Stg는 release unit의 exact tag와 digest를 reviewed pull request로 변경하고 목표 운영 정책에서는 manual sync로 배포 시점을 통제합니다. 자세한 기준은 Image Promotion을 따릅니다.

4. Applications Path

clusters/<env>/<cluster>/applications는 Argo CD Application manifest를 둡니다.

Argo CD Application은 어떤 repository path를 어떤 cluster/namespace로 sync할지 선언합니다. App of Apps 패턴을 사용할 경우 이 path가 상위 Application의 자식 Application 목록이 됩니다.

5. Hosts

현재 guide 환경의 주요 host는 다음과 같습니다.

Purpose Host
dev app dev.dev-guide.internal.tirosh.ai
stg app dev-guide.internal.tirosh.ai