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/
│ ├── dev-guide-docs/
│ ├── 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 |
release tag promotion by PR |
signal-device-simulator는 dev overlay에 먼저 배치합니다. stg는 release tag로 simulator image가 publish된 뒤 promotion PR에서 추가합니다.
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 |
| docs portal | docs.dev-guide.internal.tirosh.ai |