From 08ac29a352b39c0eda1141cf73c8c79f2fc4d7c9 Mon Sep 17 00:00:00 2001 From: Cloud User Date: Wed, 25 Feb 2026 14:40:05 +0900 Subject: [PATCH] Initial commit: MLOps architecture project setup - config.yaml: cluster/component infrastructure config - README.md: install guide and component status - .gitignore: exclude .env and secrets Co-Authored-By: Claude Opus 4.6 --- .gitignore | 15 ++++++++++ README.md | 86 +++++++++++++++++++++++++++++++++++++++++++++++++++++ config.yaml | 60 +++++++++++++++++++++++++++++++++++++ 3 files changed, 161 insertions(+) create mode 100644 .gitignore create mode 100644 README.md create mode 100644 config.yaml diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..108ddb2 --- /dev/null +++ b/.gitignore @@ -0,0 +1,15 @@ +# Secrets +.env +*.key +*.pem + +# OS +.DS_Store +Thumbs.db + +# IDE +.vscode/ +.idea/ + +# DVC +/dvc-storage/ diff --git a/README.md b/README.md new file mode 100644 index 0000000..0c15c80 --- /dev/null +++ b/README.md @@ -0,0 +1,86 @@ +# MLOps Architecture + +Gitea + Gitea Runner + ArgoCD + DVC 기반 MLOps 파이프라인 구성 프로젝트 + +## 환경 정보 + +| 항목 | 값 | +|------|-----| +| K8s 클러스터 | v1.34.3 / Master 3 + Worker 14 | +| Gitea | v1.22.1 — `https://gitea.gpulive.cloud` | +| ArgoCD | v2.12.3 — `https://argocd.gpulive.cloud` | +| Storage Class | `component-nas` (default), `internal-nas`, `user-nas` | + +## 컴포넌트 설치 상태 + +| 컴포넌트 | 상태 | 네임스페이스 | +|----------|------|-------------| +| Gitea | installed | `gitea` | +| Gitea Runner | **TODO** | `gitea` | +| ArgoCD | installed | `argocd` | +| DVC | **TODO** | - | + +--- + +## 1. Gitea (이미 설치됨) + +Helm으로 설치 완료. Ingress를 통해 접근 가능. + +```bash +# 상태 확인 +kubectl get pods -n gitea +kubectl get ingress -n gitea +``` + +--- + +## 2. Gitea Runner + +> TODO: 설치 후 아래 내용 업데이트 + +```bash +# 설치 예정 명령어가 여기에 추가됩니다 +``` + +--- + +## 3. ArgoCD (이미 설치됨) + +Helm으로 설치 완료. Ingress를 통해 접근 가능. + +```bash +# 상태 확인 +kubectl get pods -n argocd +kubectl get ingress -n argocd + +# 초기 admin 비밀번호 확인 +kubectl -n argocd get secret argocd-initial-admin-secret -o jsonpath="{.data.password}" | base64 -d; echo +``` + +--- + +## 4. DVC + +> TODO: 설치 후 아래 내용 업데이트 + +```bash +# 설치 예정 명령어가 여기에 추가됩니다 +``` + +--- + +## 파일 구조 + +``` +mlops_architecture/ +├── .env # 접속 정보, 시크릿 (git 제외) +├── .gitignore +├── config.yaml # 인프라 구성 정보 +└── README.md # 설치 가이드 (이 파일) +``` + +## 설정 파일 사용법 + +- `.env` : 계정 정보, 토큰 등 민감 정보 → **git에 포함되지 않음** +- `config.yaml` : 클러스터/컴포넌트 메타 정보 → git 추적 가능 +- 컴포넌트 설치할 때마다 이 README와 config.yaml을 업데이트합니다 diff --git a/config.yaml b/config.yaml new file mode 100644 index 0000000..d215c5d --- /dev/null +++ b/config.yaml @@ -0,0 +1,60 @@ +# ============================================ +# MLOps Architecture - Infrastructure Config +# 클러스터/컴포넌트 구성 정보 (시크릿 제외) +# ============================================ + +cluster: + name: gpulive + api_server: https://114.110.128.68:6443 + k8s_version: v1.34.3 + masters: 3 + workers: 14 # GPU 노드 포함 + storage_classes: + default: component-nas # NFS provisioner + internal: internal-nas + user: user-nas + +# ── 컴포넌트 현황 ──────────────────────────── +components: + gitea: + location: external # 다른 클러스터에 설치됨 + url: https://gitea.inje-private.com + version: 1.22.1 + installed: true # 외부에서 운영 중 + + gitea_runner: + location: this_cluster # Gitea는 외부지만 Runner는 이 클러스터에 설치 + namespace: soo # 워크로드와 같은 네임스페이스 + version: "" # 파이프라인 개발 시 설치 예정 + deploy_type: kubernetes + installed: false + note: "GPU/NAS 접근을 위해 이 클러스터에 설치 예정" + + argocd: + namespace: argocd + version: v2.12.3 + ingress: argocd.gpulive.cloud + installed: true + + dvc: + version: "" # TODO: 설치 시 채우기 + remote_type: nas + nas_server: 192.168.0.43 + nas_path: /GJ_SHARE_FS2/afed9d8d-f9c8-4053-aa89-23cdc70938e3 + mount_point: /mnt/dvc-storage + installed: false + +# ── 네임스페이스 매핑 ──────────────────────── +namespaces: + infra: gitea # Gitea, Runner + cd: argocd # ArgoCD + workload: soo # ML 워크로드 배포 대상 + monitoring: monitoring # Prometheus, Grafana + +# ── GitOps 구조 ────────────────────────────── +gitops: + # single: 앱 코드 + manifest 한 repo + # split: 앱 repo / manifest repo 분리 + repo_strategy: "" # TODO: 결정 후 채우기 + app_repo: "" + manifest_repo: ""