사용자 접속 대상은 앱 하나(포트 10000). 앱에 API·MLflow·컨테이너 레지스트리 모두 포함. 나머지는 데이터 저장소(Postgres·RustFS), 모니터링(Prometheus·Alertmanager), 빌드 속도를 높이는 캐시. 웹 화면은 정적 파일 묶음이므로 앱과 별도로 배포하고, 브라우저가 이 앱의 API 호출.

MLOps Central Platform 설치 구성도: 앱 컨테이너, PostgreSQL, RustFS, 모니터링, k3s 클러스터, 빌드 패키지 캐시

앱 (포트 10000)

docker-compose.yml 의 app 서비스. 호스트 네트워크(network_mode: host)로 실행되므로 별도 설정 없이 localhost 의 Postgres·RustFS·Prometheus 와 k3s API 에 접근.

경로용도
/api/v1/…, /auth/…웹 화면과 CLI 가 사용하는 REST API. API 문서는 /docs.
/mlflow내장 MLflow 트래킹 서버. MLflow 파이썬 클라이언트의 주소를 <주소>/mlflow 로 지정하면 그대로 동작. MLflow 서버를 따로 실행하지 않음.
/v2내장 OCI 컨테이너 레지스트리. docker push/pull 지원, 학습·빌드·서빙 이미지 저장. 별도 registry 컨테이너 불필요.

앱 시작 시마다 다음 작업 실행.

  1. DB 스키마 마이그레이션(alembic upgrade head): start-uvicorn.sh 가 서버 기동 전에 실행
  2. 시드(초기 데이터 입력): 부트스트랩 관리자 계정과 공유 빌드 이미지 항목 생성(이미 있으면 변경하지 않음)
  3. 테넌트별 MLflow 워크스페이스 준비, 재시작으로 중단된 작업(이미지 반입·업로드 조립 등) 정리
  4. 백그라운드 작업 시작: 학습 큐, 빌드 감시, 서빙 하트비트, 엣지 플릿 점검

PostgreSQL (포트 5433)

앱과 MLflow 가 같은 데이터베이스, 같은 public 스키마 사용. 덤프 하나로 둘 다 백업.

RustFS (포트 9000, 콘솔 9001)

S3 호환 오브젝트 저장소. 버킷은 용도별로 구분.

버킷저장 대상
mlflowMLflow 아티팩트(모델 파일 등), 사전학습 가중치 미러
datasets데이터셋 파일
registry컨테이너 이미지 레이어·매니페스트(테넌트별로 나뉨)
build-logs이미지 빌드 로그
edge-uploads엣지 장비가 오프라인 동안 수집했다가 업로드한 파일

mlflow·datasets·registry 는 Compose 의 createbucket 이 처음에 생성, build-logs·edge-uploads 는 앱이 처음 사용할 때 생성.

Prometheus (9090) · Alertmanager (9093)

Prometheus 가 앱의 /api/v1/metrics 에서 지표를 주기적으로 수집하고 경보 규칙 검사. 경보 발생 시 Alertmanager 가 앱의 웹훅으로 전달하고, 앱의 경보 화면에 표시. 두 도구의 웹 화면은 앱의 시스템 콘솔(Prometheus, Alertmanager)에서 대신 표시하므로 9090·9093 에 직접 접속할 필요 없음.

k3s 클러스터

학습, 이미지 빌드, 모델 서빙 모두 k3s 의 파드로 실행. 테넌트마다 tenant-{코드} 네임스페이스를 따로 생성.

  • 학습: Kubernetes Job 하나. 스테이저(init 컨테이너)가 데이터셋을 배치하고, 학습 런타임 이미지가 학습 수행.
  • 이미지 빌드: BuildKit rootless Job. 학습 런타임·스테이저·서빙 빌더·모델 서빙 이미지를 빌드해 앱 레지스트리에 푸시. 호스트의 Docker 데몬이나 root 권한은 사용하지 않음.
  • 모델 서빙: 일반 Deployment + NodePort. 추론 요청은 항상 앱 경유.

빌드 패키지 캐시 (5000 · 3142)

proxpi(pip)와 apt-cacher-ng(apt). 빌드가 인터넷에서 내려받는 패키지를 저장하므로 두 번째 빌드부터 빨라짐. 앱은 별도 설정 없이 http://10.42.0.1:5000/index/, http://10.42.0.1:3142 로 연결. 이 둘을 실행하지 않는 환경에서는 캐시 사용 비활성화 필요. 방법은 폐쇄망 설치 참고.

이 밖에 빌드는 이미지 레이어를 앱 레지스트리의 {테넌트}/cache 저장소에 캐시(기본 활성화).

다음: Docker Compose 로 설치

2026-10-02 기준 플랫폼으로 작성

© MLOps Central Platform