Files
service-catalog/doc/chart-restructure-plan.md
T
2026-01-19 16:11:44 +09:00

6.5 KiB

매니페스트 디렉토리 구조 변경 계획

개요

기존 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/ 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/

배포 도구별 분류

Helm 차트

  • 대부분의 애플리케이션이 Helm 차트로 구성
  • Chart.yaml 파일의 version 필드를 기준으로 버전 디렉토리 생성

Kustomize 매니페스트

  • kubeflow - Kustomize 기반 배포, app 버전 1.10.0
  • model-registry - Kustomize 기반 배포, app 버전 0.2.19

마이그레이션 단계

1단계: 디렉토리 네이밍 변경 (완료)

  • charts/manifests/ 디렉토리명 변경
  • 도구별 하위 디렉토리 구조 생성:
    • manifests/helm/
    • manifests/kustomize/

2단계: 백업 및 준비

# 기존 charts 디렉토리 백업 (필요시)
cp -r charts charts_backup_$(date +%Y%m%d_%H%M%S)

3단계: 버전별 디렉토리 구조 변경

각 애플리케이션에 대해 버전 하위 디렉토리 생성 후 내용 이동:

Helm 차트 이동

# 예시: 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 매니페스트 이동

# 예시: 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" 네이밍 채택
    • 도구 중립적이며 확장 가능한 구조로 개선