Change chart directory structure
This commit is contained in:
+119
-79
@@ -1,94 +1,134 @@
|
||||
# 차트 디렉토리 구조 변경 계획
|
||||
# 매니페스트 디렉토리 구조 변경 계획
|
||||
|
||||
## 개요
|
||||
charts 디렉토리 구조를 `charts/{app_name}`에서 `charts/{app_name}/{chart_version}`으로 변경합니다. 각 Chart.yaml 파일의 버전 정보를 사용합니다. kustomize를 사용하는 `kubeflow`, `model-registry`는 app version을 사용합니다.
|
||||
기존 charts 디렉토리를 manifests로 변경하고, 디렉토리 구조를 `manifests/{tool}/{app_name}/{version}`으로 변경합니다. 각 Chart.yaml 파일의 버전 정보를 사용하며, kustomize를 사용하는 `kubeflow`, `model-registry`는 app version을 사용합니다.
|
||||
|
||||
## 디렉토리 네이밍 변경 사유
|
||||
|
||||
### 기존 "charts" 디렉토리의 문제점
|
||||
- **의미적 부정확성**: "charts"는 Helm 전용 용어로, Kustomize 매니페스트를 포함하기에 부적절
|
||||
- **혼란 야기**: 새로운 팀원이나 외부 개발자가 디렉토리 구조를 이해하기 어려움
|
||||
- **확장성 제한**: 향후 다른 배포 도구 추가 시 네이밍 일관성 문제
|
||||
|
||||
### "manifests" 선택 이유
|
||||
- **업계 표준**: Istio, ArgoCD 등 주요 오픈소스 프로젝트에서 사용
|
||||
- **도구 중립적**: Helm, Kustomize, 원시 YAML 등 모든 배포 도구 포괄
|
||||
- **의미 명확성**: Kubernetes 매니페스트의 집합이라는 의미가 직관적
|
||||
- **확장성**: 향후 Jsonnet, Pulumi 등 다른 도구 추가 시에도 일관성 유지
|
||||
|
||||
## 새로운 디렉토리 구조
|
||||
```
|
||||
manifests/
|
||||
├── helm/
|
||||
│ ├── kafka-ui/1.5.1/
|
||||
│ ├── keycloak/18.4.0/
|
||||
│ └── ...
|
||||
└── kustomize/
|
||||
├── kubeflow/1.10.0/
|
||||
└── model-registry/0.2.19/
|
||||
```
|
||||
|
||||
## 현재 구조 vs 새로운 구조 매핑
|
||||
|
||||
Chart.yaml 분석을 바탕으로 한 현재 구조에서 새로운 구조로의 매핑:
|
||||
|
||||
| 현재 경로 | 차트 버전 | 새로운 경로 |
|
||||
|-----------|-----------|-------------|
|
||||
| `charts/airflow/` | 1.16.0 | `charts/airflow/1.16.0/` |
|
||||
| `charts/argo-cd/` | 7.7.0 | `charts/argo-cd/7.7.0/` |
|
||||
| `charts/cert-manager/` | v1.16.1 | `charts/cert-manager/v1.16.1/` |
|
||||
| `charts/dnsup/` | 1.0.1 | `charts/dnsup/1.0.1/` |
|
||||
| `charts/flowise/` | 6.0.0 | `charts/flowise/6.0.0/` |
|
||||
| `charts/gitea/` | 12.4.0 | `charts/gitea/12.4.0/` |
|
||||
| `charts/harbor/` | 1.16.2 | `charts/harbor/1.16.2/` |
|
||||
| `charts/kafka/` | 32.4.3 | `charts/kafka/32.4.3/` |
|
||||
| `charts/kafka-cluster/` | 1.0.0 | `charts/kafka-cluster/1.0.0/` |
|
||||
| `charts/kafka-ui/` | 1.5.1 | `charts/kafka-ui/1.5.1/` |
|
||||
| `charts/keycloak/` | 18.4.0 | `charts/keycloak/18.4.0/` |
|
||||
| `charts/kong/` | 2.46.0 | `charts/kong/2.46.0/` |
|
||||
| `charts/kserve/` | 0.1.0 | `charts/kserve/0.1.0/` |
|
||||
| `charts/kubeflow/` | 1.10.0 | `charts/kubeflow/1.10.0/` |
|
||||
| `charts/kyverno/` | 3.4.1 | `charts/kyverno/3.4.1/` |
|
||||
| `charts/lakekeeper/` | 0.8.1 | `charts/lakekeeper/0.8.1/` |
|
||||
| `charts/langflow-ide/` | 0.1.0 | `charts/langflow-ide/0.1.0/` |
|
||||
| `charts/langfuse/` | 1.0.0-rc.2 | `charts/langfuse/1.0.0-rc.2/` |
|
||||
| `charts/litellm/` | 0.4.4 | `charts/litellm/0.4.4/` |
|
||||
| `charts/mlflow/` | 2.1.0 | `charts/mlflow/2.1.0/` |
|
||||
| `charts/model-registry/` | 0.2.19 | `charts/model-registry/0.2.19/` |
|
||||
| `charts/nemo/` | 25.4.0 | `charts/nemo/25.4.0/` |
|
||||
| `charts/nim/` | 25.4.0 | `charts/nim/25.4.0/` |
|
||||
| `charts/ollama/` | 1.1.2 | `charts/ollama/1.1.2/` |
|
||||
| `charts/open-webui/` | 5.4.0 | `charts/open-webui/5.4.0/` |
|
||||
| `charts/postgresql-ha/` | 11.9.4 | `charts/postgresql-ha/11.9.4/` |
|
||||
| `charts/qdrant/` | 1.12.4 | `charts/qdrant/1.12.4/` |
|
||||
| `charts/ragflow/` | 0.1.0 | `charts/ragflow/0.1.0/` |
|
||||
| `charts/rancher/` | 2.10.1 | `charts/rancher/2.10.1/` |
|
||||
| `charts/rancher-monitoring/` | 104.1.2+up57.0.3 | `charts/rancher-monitoring/104.1.2+up57.0.3/` |
|
||||
| `charts/rancher-monitoring-crd/` | 104.1.2+up57.0.3 | `charts/rancher-monitoring-crd/104.1.2+up57.0.3/` |
|
||||
| `charts/spark-operator/` | 2.0.2 | `charts/spark-operator/2.0.2/` |
|
||||
| `charts/starrocks/` | 1.11.3 | `charts/starrocks/1.11.3/` |
|
||||
| `charts/starrocks-operator/` | 1.11.3 | `charts/starrocks-operator/1.11.3/` |
|
||||
| `charts/strimzi-kafka-operator/` | 0.47.0 | `charts/strimzi-kafka-operator/0.47.0/` |
|
||||
| `charts/superset/` | 0.13.5 | `charts/superset/0.13.5/` |
|
||||
| `charts/unitycatalog/` | 0.2.0 | `charts/unitycatalog/0.2.0/` |
|
||||
| `charts/vllm/` | 0.0.11 | `charts/vllm/0.0.11/` |
|
||||
| 현재 경로 | 도구 | 버전 | 새로운 경로 |
|
||||
|-----------|------|------|-------------|
|
||||
| `charts/airflow/` | Helm | 1.16.0 | `manifests/helm/airflow/1.16.0/` |
|
||||
| `charts/argo-cd/` | Helm | 7.7.0 | `manifests/helm/argo-cd/7.7.0/` |
|
||||
| `charts/cert-manager/` | Helm | v1.16.1 | `manifests/helm/cert-manager/v1.16.1/` |
|
||||
| `charts/dnsup/` | Helm | 1.0.1 | `manifests/helm/dnsup/1.0.1/` |
|
||||
| `charts/flowise/` | Helm | 6.0.0 | `manifests/helm/flowise/6.0.0/` |
|
||||
| `charts/gitea/` | Helm | 12.4.0 | `manifests/helm/gitea/12.4.0/` |
|
||||
| `charts/harbor/` | Helm | 1.16.2 | `manifests/helm/harbor/1.16.2/` |
|
||||
| `charts/kafka/` | Helm | 32.4.3 | `manifests/helm/kafka/32.4.3/` |
|
||||
| `charts/kafka-cluster/` | Helm | 1.0.0 | `manifests/helm/kafka-cluster/1.0.0/` |
|
||||
| `charts/kafka-ui/` | Helm | 1.5.1 | `manifests/helm/kafka-ui/1.5.1/` |
|
||||
| `charts/keycloak/` | Helm | 18.4.0 | `manifests/helm/keycloak/18.4.0/` |
|
||||
| `charts/kong/` | Helm | 2.46.0 | `manifests/helm/kong/2.46.0/` |
|
||||
| `charts/kserve/` | Helm | 0.1.0 | `manifests/helm/kserve/0.1.0/` |
|
||||
| `charts/kubeflow/` | Kustomize | 1.10.0 | `manifests/kustomize/kubeflow/1.10.0/` |
|
||||
| `charts/kyverno/` | Helm | 3.4.1 | `manifests/helm/kyverno/3.4.1/` |
|
||||
| `charts/lakekeeper/` | Helm | 0.8.1 | `manifests/helm/lakekeeper/0.8.1/` |
|
||||
| `charts/langflow-ide/` | Helm | 0.1.0 | `manifests/helm/langflow-ide/0.1.0/` |
|
||||
| `charts/langfuse/` | Helm | 1.0.0-rc.2 | `manifests/helm/langfuse/1.0.0-rc.2/` |
|
||||
| `charts/litellm/` | Helm | 0.4.4 | `manifests/helm/litellm/0.4.4/` |
|
||||
| `charts/mlflow/` | Helm | 2.1.0 | `manifests/helm/mlflow/2.1.0/` |
|
||||
| `charts/model-registry/` | Kustomize | 0.2.19 | `manifests/kustomize/model-registry/0.2.19/` |
|
||||
| `charts/nemo/` | Helm | 25.4.0 | `manifests/helm/nemo/25.4.0/` |
|
||||
| `charts/nim/` | Helm | 25.4.0 | `manifests/helm/nim/25.4.0/` |
|
||||
| `charts/ollama/` | Helm | 1.1.2 | `manifests/helm/ollama/1.1.2/` |
|
||||
| `charts/open-webui/` | Helm | 5.4.0 | `manifests/helm/open-webui/5.4.0/` |
|
||||
| `charts/postgresql-ha/` | Helm | 11.9.4 | `manifests/helm/postgresql-ha/11.9.4/` |
|
||||
| `charts/qdrant/` | Helm | 1.12.4 | `manifests/helm/qdrant/1.12.4/` |
|
||||
| `charts/ragflow/` | Helm | 0.1.0 | `manifests/helm/ragflow/0.1.0/` |
|
||||
| `charts/rancher/` | Helm | 2.10.1 | `manifests/helm/rancher/2.10.1/` |
|
||||
| `charts/rancher-monitoring/` | Helm | 104.1.2+up57.0.3 | `manifests/helm/rancher-monitoring/104.1.2+up57.0.3/` |
|
||||
| `charts/rancher-monitoring-crd/` | Helm | 104.1.2+up57.0.3 | `manifests/helm/rancher-monitoring-crd/104.1.2+up57.0.3/` |
|
||||
| `charts/spark-operator/` | Helm | 2.0.2 | `manifests/helm/spark-operator/2.0.2/` |
|
||||
| `charts/starrocks/` | Helm | 1.11.3 | `manifests/helm/starrocks/1.11.3/` |
|
||||
| `charts/starrocks-operator/` | Helm | 1.11.3 | `manifests/helm/starrocks-operator/1.11.3/` |
|
||||
| `charts/strimzi-kafka-operator/` | Helm | 0.47.0 | `manifests/helm/strimzi-kafka-operator/0.47.0/` |
|
||||
| `charts/superset/` | Helm | 0.13.5 | `manifests/helm/superset/0.13.5/` |
|
||||
| `charts/unitycatalog/` | Helm | 0.2.0 | `manifests/helm/unitycatalog/0.2.0/` |
|
||||
| `charts/vllm/` | Helm | 0.0.11 | `manifests/helm/vllm/0.0.11/` |
|
||||
|
||||
## 예외 사항
|
||||
## 배포 도구별 분류
|
||||
|
||||
### 비표준 차트 구조(kustmize)
|
||||
- `charts/kubeflow/` - Kustomize 기반 배포, app 버전 1.10.0 제공
|
||||
- `charts/model-registry/` - Kustomize 기반 배포, app 버전 0.2.19 제공
|
||||
### Helm 차트
|
||||
- 대부분의 애플리케이션이 Helm 차트로 구성
|
||||
- Chart.yaml 파일의 version 필드를 기준으로 버전 디렉토리 생성
|
||||
|
||||
## 구현 단계
|
||||
### Kustomize 매니페스트
|
||||
- `kubeflow` - Kustomize 기반 배포, app 버전 1.10.0
|
||||
- `model-registry` - Kustomize 기반 배포, app 버전 0.2.19
|
||||
|
||||
1. **백업 단계**
|
||||
- 현재 charts 디렉토리 백업: `cp -r charts charts_backup_$(date +%Y%m%d_%H%M%S)`
|
||||
## 마이그레이션 단계
|
||||
|
||||
### 1단계: 디렉토리 네이밍 변경 (완료)
|
||||
- `charts/` → `manifests/` 디렉토리명 변경
|
||||
- 도구별 하위 디렉토리 구조 생성:
|
||||
- `manifests/helm/`
|
||||
- `manifests/kustomize/`
|
||||
|
||||
2. **디렉토리 구조 변경 단계**
|
||||
- 각 차트 디렉토리에 대해 버전 하위 디렉토리 생성 후 내용 이동:
|
||||
```bash
|
||||
# 임시 디렉토리에 내용 이동
|
||||
mkdir -p /tmp/chart_temp/{app_name}
|
||||
mv charts/{app_name}/* /tmp/chart_temp/{app_name}/
|
||||
|
||||
# 버전 디렉토리 생성 후 내용 이동
|
||||
mkdir -p charts/{app_name}/{version}
|
||||
mv /tmp/chart_temp/{app_name}/* charts/{app_name}/{version}/
|
||||
|
||||
# 임시 디렉토리 정리
|
||||
rm -rf /tmp/chart_temp/{app_name}
|
||||
```
|
||||
|
||||
또는 더 간단한 방법:
|
||||
```bash
|
||||
# 버전 디렉토리 생성
|
||||
mkdir -p charts/{app_name}/{version}
|
||||
|
||||
# 버전 디렉토리를 제외한 모든 파일/디렉토리 이동
|
||||
find charts/{app_name} -maxdepth 1 -not -name {version} -not -name {app_name} -exec mv {} charts/{app_name}/{version}/ \;
|
||||
```
|
||||
### 2단계: 백업 및 준비
|
||||
```bash
|
||||
# 기존 charts 디렉토리 백업 (필요시)
|
||||
cp -r charts charts_backup_$(date +%Y%m%d_%H%M%S)
|
||||
```
|
||||
|
||||
3. **검증 단계**
|
||||
- 모든 파일이 올바르게 이동되었는지 확인
|
||||
- 고아 파일이 남아있지 않은지 확인
|
||||
- Chart.yaml 파일이 올바른 위치에 있는지 확인
|
||||
### 3단계: 버전별 디렉토리 구조 변경
|
||||
각 애플리케이션에 대해 버전 하위 디렉토리 생성 후 내용 이동:
|
||||
|
||||
4. **문서 업데이트 단계**
|
||||
- 문서에서 이전 구조에 대한 참조 업데이트
|
||||
- 이전 경로를 참조하는 스크립트나 자동화 업데이트
|
||||
#### Helm 차트 이동
|
||||
```bash
|
||||
# 예시: kafka-ui 차트 이동
|
||||
mkdir -p manifests/helm/kafka-ui/1.5.1
|
||||
mv manifests/helm/kafka-ui/* manifests/helm/kafka-ui/1.5.1/ 2>/dev/null || true
|
||||
```
|
||||
|
||||
#### Kustomize 매니페스트 이동
|
||||
```bash
|
||||
# 예시: kubeflow 매니페스트 이동
|
||||
mkdir -p manifests/kustomize/kubeflow/1.10.0
|
||||
mv manifests/kustomize/kubeflow/* manifests/kustomize/kubeflow/1.10.0/ 2>/dev/null || true
|
||||
```
|
||||
|
||||
### 4단계: 검증
|
||||
- 모든 파일이 올바른 위치로 이동되었는지 확인
|
||||
- Chart.yaml 또는 kustomization.yaml 파일이 올바른 위치에 있는지 확인
|
||||
- 고아 파일이 남아있지 않은지 확인
|
||||
|
||||
### 5단계: 참조 경로 업데이트
|
||||
- BUILD-README.md 파일들의 경로 참조 업데이트
|
||||
- CUSTOM-README.md 파일들의 경로 참조 업데이트
|
||||
- CI/CD 파이프라인의 경로 참조 업데이트
|
||||
- 문서의 이전 경로 참조 업데이트
|
||||
|
||||
## 변경 이력
|
||||
|
||||
### 2026-01-19
|
||||
- **디렉토리 네이밍 변경**: `charts/` → `manifests/`
|
||||
- 이유: Helm과 Kustomize 혼재 구조에서 "charts"는 의미적으로 부적절
|
||||
- 업계 표준인 "manifests" 네이밍 채택
|
||||
- 도구 중립적이며 확장 가능한 구조로 개선
|
||||
|
||||
Reference in New Issue
Block a user