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