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 |