이 프로젝트는 Kubernetes를 사용하여 배포 🚀 되고 Argo CD로 관리 🧮 되는 웹 스택 애플리케이션을 정의합니다.
웹 스택은 다음 구성 요소로 구성됩니다 👇 :
- nginx: 웹 서버 🌐 및 리버스 프록시 🔄.
- redis: 인 메모리 데이터 구조 저장소 💾 로, 데이터베이스 🗄️, 캐시 ⚡ 및 메시지 브로커 ✉️ 로 사용됩니다.
- cadvisor: 실행 중인 컨테이너 📦 의 리소스 사용량 📊 및 성능 특성 ⚙️ 을 분석합니다.
- prometheus: 메트릭 수집 및 저장 📈.
- grafana: 메트릭 시각화 대시보드 📊.
- kube-state-metrics: Kubernetes 오브젝트 상태 메트릭 수집 📦.
base: 각 구성 요소에 대한 기본 구성 ⚙️ 을 포함합니다.cadvisor: (구성 정보가 제공되지 않았습니다 😥.cadvisor디렉토리를 찾아보세요 👀.)nginx: nginx에 대한 기본 배포 🚀 및 서비스 정의 📄를 포함합니다.deployment.yaml: nginx 배포 🚀를 정의합니다.service.yaml: nginx 서비스 🌐를 정의합니다.kustomization.yaml: 리소스 묶고 📦 nginx에 대한 공통 레이블 🏷️ 을 정의합니다.
redis: redis에 대한 기본 배포 🚀 및 서비스 정의 📄를 포함합니다.deployment.yaml: redis 배포 🚀를 정의합니다.service.yaml: redis 서비스 🌐를 정의합니다.kustomization.yaml: 리소스 묶고 📦 redis에 대한 공통 레이블 🏷️ 을 정의합니다.
prometheus: 메트릭 수집을 위한 Deployment, Service, ConfigMap을 포함합니다.grafana: 시각화를 위한 Deployment, Service, DataSource ConfigMap을 포함합니다.kube-state-metrics: Prometheus가 Kubernetes 상태 메트릭을 수집할 수 있도록 Deployment, Service, RBAC를 포함합니다.kustomization.yaml: 기본 웹 스택을 구성하는 리소스 목록 🧾입니다.
overlays: 환경별 사용자 정의 🎨 를 포함합니다.dev: 개발 환경 💻 에 특정한 구성을 포함합니다.kustomization.yaml: 기본 구성 ⚙️ 을 포함하고 패치 🩹를 적용합니다.patch.yaml: 개발 환경 💻 에서 nginx, redis 배포의 복제본 수를 재정의합니다.
prod: 프로덕션 환경 🏭 에 특정한 구성을 포함합니다.patch.yaml: 프로덕션 환경 🏭 에서 nginx, redis, prometheus, grafana 배포의 복제본 수를 재정의합니다.kustomization.yaml:../../base/prometheus,../../base/grafana를 추가해 모니터링 스택을 prod에만 배포합니다.
argocd: Argo CD 애플리케이션 정의 📝 를 포함합니다.webstack-prod.yaml:webstack-prod네임스페이스에 웹 스택을 배포하기 위한 Argo CD 애플리케이션을 정의하며, 지정된 Git 리포지토리 📦 의webstack/overlays/prod경로에서 가져옵니다. 또한 가지치기 ✂️ 및 자가 치유 ⛑️ 가 활성화된 자동 동기화 정책 🔄을 구성합니다.
이 애플리케이션은 Kubernetes 리소스의 배포 및 관리를 자동화하는 Argo CD를 사용하여 배포됩니다 🚀.
webstack-prod.yaml파일은webstack/overlays/prod디렉토리에 정의된 리소스를webstack-prod네임스페이스에 배포하는 Argo CD 애플리케이션을 정의합니다.webstack-prod.yaml의syncPolicy는 자동 동기화 🔄, 오래된 리소스 정리 🗑️ 및 수동 변경 사항을 되돌리기 위한 자가 치유 ⛑️를 활성화합니다.
overlays 디렉토리를 사용하면 기본 구성에 대한 환경별 사용자 정의가 가능합니다 🎨. 각 환경 (예 : dev, prod)은 복제본 수, 리소스 제한 또는 환경 변수와 같은 설정을 재정의하는 패치 🩹 를 정의 할 수 있습니다. 이러한 패치는 base 디렉토리에 정의된 기본 구성 ⚙️ 위에 적용됩니다.
자세한 내용은 다음을 참조하십시오 👇 :
- Argo CD: Argo CD 설명서를 참조하십시오 📚.
- Kustomize: Kustomize 설명서를 참조하십시오 📚.
- Kubernetes: Kubernetes 설명서를 참조하십시오 📚.