117 lines
3.1 KiB
Markdown
117 lines
3.1 KiB
Markdown
# 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 | **TODO** | 로컬 + NAS |
|
|
|
|
---
|
|
|
|
## 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
|
|
|
|
> TODO: 설치 후 아래 내용 업데이트
|
|
|
|
```bash
|
|
# 설치 예정 명령어가 여기에 추가됩니다
|
|
```
|
|
|
|
---
|
|
|
|
## 파일 구조
|
|
|
|
```
|
|
mlops_architecture/
|
|
├── .env # 접속 정보, 시크릿 (git 제외)
|
|
├── .gitignore
|
|
├── config.yaml # 인프라 구성 정보
|
|
├── README.md # 설치 가이드 (이 파일)
|
|
├── argocd/
|
|
│ └── application.yaml # ArgoCD Application 정의
|
|
└── manifests/ # K8s 배포 manifest (ArgoCD가 감시)
|
|
```
|
|
|
|
## 설정 파일 사용법
|
|
|
|
- `.env` : 계정 정보, 토큰 등 민감 정보 → **git에 포함되지 않음**
|
|
- `config.yaml` : 클러스터/컴포넌트 메타 정보 → git 추적 가능
|
|
- 컴포넌트 설치할 때마다 이 README와 config.yaml을 업데이트합니다
|