Applications
CD repo는 source repo가 publish한 deployable image를 Kubernetes workload로 표현합니다.
각 app은 catalog base를 갖고, 환경 overlay에서 image tag와 runtime 차이를 조정합니다. 이 방식은 app manifest의 공통 구조와 환경별 정책을 분리합니다.
1. Deployable Apps
현재 CD repo가 다루는 app은 다음과 같습니다.
| App | Runtime shape | Image repository |
|---|---|---|
dev-guide-docs |
Deployment + Service | ghcr.io/tirosh-chain/guide/dev-guide-docs |
patient-risk-python-api |
Deployment + Service | ghcr.io/tirosh-chain/guide/patient-risk-python-api |
patient-risk-web |
Deployment + Service | ghcr.io/tirosh-chain/guide/patient-risk-web |
risk-monitor-operator |
Job | ghcr.io/tirosh-chain/guide/risk-monitor-operator |
signal-device-simulator |
Deployment | ghcr.io/tirosh-chain/guide/signal-device-simulator |
2. Web and API Boundary
patient-risk-web만 외부 app host로 노출합니다.
Browser는 같은 origin의 /api/를 호출하고, web container의 Nginx가 namespace 내부의 patient-risk-python-api:8080으로 proxy합니다. 그래서 API service를 별도 public host로 열지 않습니다.
3. Docs Boundary
dev-guide-docs는 static docs image입니다.
MkDocs는 runtime에서 실행하지 않습니다. Source repo workflow가 MkDocs output을 static file로 build하고, Nginx image가 그 결과만 서빙합니다.
4. Operator Boundary
risk-monitor-operator는 현재 demo manifest를 읽고 reconcile status를 확인하는 Job입니다.
장시간 실행되는 controller Deployment가 아니므로 CD repo에서는 Job으로 선언합니다. 나중에 실제 controller loop를 운영하면 Deployment나 controller-specific manifest로 바꿀 수 있습니다.
5. Simulator Boundary
signal-device-simulator는 dev 환경에서 synthetic SignalPacket을 계속 전송하는 demo helper입니다.
이 app은 clinical logic을 계산하지 않습니다. Source repo의 signal fixture를 transport payload로 바꾸고, patient-risk-python-api의 POST /signal-packets endpoint로 주기적으로 전송합니다. stg는 release image가 준비된 뒤 별도 promotion PR에서 붙입니다.