# MLOps Architecture Gitea + Gitea Runner + ArgoCD + DVC 기반 MLOps 파이프라인 구성 프로젝트 ## Repository ``` https://gitea.inje-private.com/selee/mlops-architecture ``` ## 환경 정보 | 항목 | 값 | |------|-----| | K8s 클러스터 | v1.34.3 / Master 3 + Worker 14 | | Gitea | v1.22.1 — `https://gitea.inje-private.com` (외부 클러스터) | | ArgoCD | v2.12.3 — `https://argocd.gpulive.cloud` | | DVC Remote | NAS `192.168.0.43` | | Storage Class | `component-nas` (default), `internal-nas`, `user-nas` | ## 컴포넌트 설치 상태 | 컴포넌트 | 상태 | 위치 | |----------|------|------| | Gitea | installed | 외부 클러스터 | | Gitea Runner | **TODO** | 이 클러스터 (`soo` ns) | | ArgoCD | installed + **repo 연동 완료** | 이 클러스터 (`argocd` ns) | | DVC | **installed** (v3.66.1) | 로컬 + NAS (`/ainas/dvc-storage`) | --- ## 1. Gitea (외부 클러스터, 설치됨) 외부 클러스터에서 운영 중. 이 프로젝트 repo 생성 완료. ```bash # repo 생성 (API) curl -sk -X POST "https://gitea.inje-private.com/api/v1/user/repos" \ -u "$GITEA_ADMIN_USER:$GITEA_ADMIN_PASSWORD" \ -H "Content-Type: application/json" \ -d '{"name":"mlops-architecture","description":"MLOps Architecture","private":true,"auto_init":false}' # 로컬 연결 git init && git branch -m main git remote add origin https://gitea.inje-private.com/selee/mlops-architecture.git git add config.yaml README.md .gitignore git commit -m "Initial commit" git push -u origin main ``` --- ## 2. Gitea Runner > TODO: 설치 후 아래 내용 업데이트 ```bash # 설치 예정 명령어가 여기에 추가됩니다 ``` --- ## 3. ArgoCD (설치됨 + Gitea repo 연동 완료) Helm으로 설치 완료. Gitea repo 등록 및 Application 생성 완료. - App 이름: `mlops-architecture` - Source: `gitea.inje-private.com/selee/mlops-architecture` → `manifests/` - Destination: 이 클러스터 `soo` 네임스페이스 - SyncPolicy: automated (prune + selfHeal) ```bash # 상태 확인 kubectl get pods -n argocd kubectl get app mlops-architecture -n argocd # ArgoCD에 Gitea repo 등록 (이미 완료) # ArgoCD API를 통해 등록됨 - argocd/application.yaml 참조 # Application 적용 kubectl apply -f argocd/application.yaml # sync 상태 확인 kubectl get app mlops-architecture -n argocd -o jsonpath='{.status.sync.status}'; echo ``` --- ## 4. DVC (설치 + NAS remote 설정 완료) - 버전: v3.66.1 - Remote: NAS (`/ainas/dvc-storage`) - NAS 마운트: `192.168.0.43:/GJ_SHARE_FS2/...` → `/ainas` ```bash # 설치 sudo apt-get install -y python3-pip pip3 install dvc # 초기화 dvc init # NAS remote 설정 (NAS가 /ainas에 마운트된 상태) sudo mkdir -p /ainas/dvc-storage && sudo chown ubuntu:ubuntu /ainas/dvc-storage dvc remote add -d nas /ainas/dvc-storage # 확인 dvc remote list dvc version # 사용 예시 # dvc add data/dataset.csv # 파일 추적 # dvc push # NAS로 push # dvc pull # NAS에서 pull ``` --- ## 파일 구조 ``` mlops_architecture/ ├── .env # 접속 정보, 시크릿 (git 제외) ├── .gitignore ├── config.yaml # 인프라 구성 정보 ├── README.md # 설치 가이드 (이 파일) ├── .dvc/ # DVC 설정 (remote 등) ├── argocd/ │ └── application.yaml # ArgoCD Application 정의 └── manifests/ # K8s 배포 manifest (ArgoCD가 감시) ``` ## 설정 파일 사용법 - `.env` : 계정 정보, 토큰 등 민감 정보 → **git에 포함되지 않음** - `config.yaml` : 클러스터/컴포넌트 메타 정보 → git 추적 가능 - 컴포넌트 설치할 때마다 이 README와 config.yaml을 업데이트합니다