Kurly만의 MLOps 구축하기 - 쿠브플로우 도입기
두줄요약
도구 분산으로 커진 ML 실험 환경의 복잡성을 해결하기 위해 Kubeflow를 도입했습니다. Elyra, S3·IRSA, SealedSecrets 기반의 운영 설정과 보안 관리 팁을 공유합니다.
문제 상황
- JupyterHub·MLflow·Airflow 등 개별 도구 증가에 따른 데이터 사이언티스트의 운영 부담과 낮은 도구 간 연결성
- 인프라보다 데이터 분석·실험·모델링에 집중할 수 있는 추상화된 MLOps 환경 필요
선택 이유
- SageMaker의 AWS 통합 편의성과 폭넓은 라이프사이클 지원 대비 비용 및 벤더 종속성 우려
- 기존 EKS·Kubernetes 활용 기반, 환경 이식성 및 기술 내재화 가능성을 고려한 Kubeflow 채택
- 부족한 라이프사이클 영역의 자체 개발 또는 오픈소스 도구 보완 가능성
구조와 흐름
- Elyra 확장 기능이 포함된 JupyterLab 이미지를 ECR에서 관리하고 Kubeflow Notebook 이미지 선택 목록으로 제공
- KFP의 Argo Workflow 설정에서 기본 아티팩트 저장소를 MinIO 대신 S3로 변경
- 멀티테넌시 환경에서 default-editor 서비스 계정의 IRSA로 S3 임시 보안 자격 증명 적용
주의할 점
- 운영 환경의 Dex 자격 증명을 Secret으로 전환하고 SealedSecrets로 암호화해 저장소 관리
- pre-commit Git hook으로 일반 Secret 매니페스트의 실수 커밋 차단
- Kubeflow 운영 커스터마이징 레퍼런스 부족과 다수 오픈소스 구성에 따른 디버깅 복잡성


