# MLflow 배포 bitnami/mlflow 차트(2.1.0) 기반 배포 가이드다. ## 1. 배포 방법 ### 1) 사전 조건 - 내장 bitnami postgresql 서브차트 대신 `cnpg-cluster`(전용 인스턴스)를 외부 DB로 사용한다. `cloudnative-pg` operator(`manifests/helm/cloudnative-pg/0.29.0`)가 클러스터에 먼저 설치되어 있어야 한다. ### 2) 배포 순서 ```sh git clone https://github.com/paasup/dip-catalog.git cd dip-catalog # 1) mlflow용 DB 계정 시크릿 생성 (password는 externalDatabase.password와 동일해야 한다) kubectl create secret generic mlflow-db-app-secret \ --from-literal=username=mlflow --from-literal=password=mlflow1234 -n mlflow # 2) 전용 cnpg-cluster 배포 helm upgrade mlflow-db manifests/helm/cnpg-cluster/1.0.0 \ -f manifests/helm/cnpg-cluster/1.0.0/custom-values.yaml \ -f manifests/applicationset/mlflow/2.1.0/mlflow-db-values.yaml \ --install -n mlflow --create-namespace # 3) mlflow 배포 helm upgrade mlflow manifests/helm/mlflow/2.1.0 -f custom-values.yaml --install -n mlflow ``` ArgoCD로 배포한다면 `manifests/applicationset/mlflow/2.1.0/`의 ApplicationSet을 쓴다 — `mlflow-db`(syncWave 0) → `mlflow`(syncWave 1) 순서로 자동 배포된다. 자세한 내용은 해당 디렉토리의 `README.md` 참고. ## 2. custom-values.yaml 설명 ### 1) 이미지 설정 private 환경 배포 시 registry를 변경한다. ```yaml image: repository: bitnamilegacy/mlflow gitImage: repository: bitnamilegacy/git waitContainer: image: repository: bitnamilegacy/os-shell ``` ### 2) PostgreSQL 설정 내장 postgresql 서브차트를 끄고 `externalDatabase`로 cnpg-cluster를 가리킨다. ```yaml postgresql: enabled: false externalDatabase: dialectDriver: "postgresql" host: "mlflow-db-rw" # cnpg-cluster 릴리스명이 mlflow-db일 때의 rw 서비스명 port: 5432 user: mlflow password: mlflow1234 # 위 시크릿 생성 시 사용한 password와 동일해야 한다 database: mlflow ``` 참고: `manifests/applicationset/mlflow/2.1.0/mlflow-db-values.yaml` ### 3) MinIO 설정 아티팩트 저장소로 내장 minio 서브차트를 사용한다(`minio.enabled: true`). private 환경에서는 `minio.image.repository`를 내부 registry로 변경한다. ```yaml minio: enabled: true auth: rootUser: admin rootPassword: admin1234 image: repository: bitnamilegacy/minio ```