[K8S] CI/CD Pipeline, 모니터링, 로깅 시스템 구축 프로젝트 - 프로젝트 소개

mDev_97·2023년 10월 26일
0

Kubernetes

목록 보기
4/10
post-thumbnail

프로젝트 소개

이번에 진행하는 프로젝트는 위의 아키텍처와 같이 React, NodeJS, MySQL로 이루어진 풀스택 어플리케이션을 위한 CI/CD 파이프라인과 Prometheus, Grafana를 통한 모니터링 시스템, 로깅 시스템을 구축해보는 프로젝트입니다.

프로젝트의 자세한 소개는 아래에서 진행하겠습니다.

📌 이번 프로젝트에서 사용되는 어플리케이션 소스코드와 쿠버네티스 메니페스트는
[K8S] Ingress 도메인 라우팅 규칙 적용 (Feat. Mac M1 with Docker Desktop) 게시글을 참고해주세요.

⭐️ 물론 위의 게시글은 로컬 환경에서 구축한 것이기 때문에 GKE 환경에서 구축할 때는 쿠버네티스 메니페스트가 변경될 수 있습니다.
프로젝트 진행에 대한 소스코드와 메니페스트도 게시글에서 함께 올리니 게시글을 그대로 읽으셔도 좋습니다! :)

프로젝트의 진행은 다음의 과정을 통해서 진행됩니다.
진행 과정에 대한 솔루션과 트러블 슈팅은 각 과정에 대한 게시글 링크를 남겨두겠습니다.

풀스택 어플리케이션 GKE 환경에서 배포

이번 프로젝트는 GCP에서 VM 인스턴스 3개를 만들어서 직접 쿠버네티스 환경을 구축하는 것이 아닌
간편하게 GKE 클러스터를 만들어서 프로젝트 환경을 구축합니다.

📌 프로젝트 진행 과정 및 Trouble Shooting
[K8S] CI/CD Pipeline, 모니터링, 로깅 시스템 구축 프로젝트 -GKE 환경에 배포하기



CI/CD 파이프라인 구축

CI/CD 파이프라인은 어플리케이션 소스 코드 GitHub 리포지토리, Kubernetes GitHub 리포지토리, Jenkins, Docker Hub를 사용하여 구축합니다.

CI/CD 파이프라인 실행 과정은 다음과 같이 진행됩니다.

  1. 어플리케이션 소스 코드를 GitHub 리포지토리에 푸시하면 Jenkins 서버에 Webhook 요청을 보냅니다.

  2. Jenkinsfile을 작성하여 푸시된 코드를 통하여 Docker Image를 빌드하고 빌드된 이미지를 도커 허브에 Push 합니다.
    그리고, Jenkins 서버는 빌드된 이미지의 태그 값으로 쿠버네티스 메니페스트가 저장되어 있는 GitHub 리포지토리를 수정해줍니다.

  3. ArgoCD가 GitHub의 변경된 메니페스트를 감지하고 메니페스트와 Cluster의 Sync를 맞춥니다.

📌 CI/CD 파이프라인 구축 과정
[K8S] CI/CD Pipeline, 모니터링, 로깅 시스템 구축 프로젝트 - CI/CD 파이프라인 구축:1
[K8S] CI/CD Pipeline, 모니터링, 로깅 시스템 구축 프로젝트 - CI/CD 파이프라인 구축:2
[K8S] CI/CD Pipeline, 모니터링, 로깅 시스템 구축 프로젝트 - CI/CD 파이프라인 구축:3



모니터링 시스템 구축

모니터링 시스템은 Prometheus와 Grafana를 사용해 구축합니다.
모니터링 시스템을 구축하기 위한 진행 계획은 다음과 같습니다.

쿠버네티스 환경에서 Prometheus와 Grafana 구축 및 Traffic 매트릭 생성

첫 번째 단계: Prometheus와 Grafana 설치 및 구성

  • Prometheus와 Grafana를 쿠버네티스 클러스터에 배포합니다.

  • Prometheus 설정 파일을 수정하여 수집 대상을 정의합니다. (WAS자체에서 따로 Exporter 설정을 하지 않습니다)

두 번째 단계: Prometheus API를 활용하여 수집기 개발

  • Prometheus API를 사용하여 WAS에서 오고가는 Network Packet을 크롤링합니다.
  • 그리고 알맞게 DBMS에 하루 단위로 Insert하는 Job을 개발합니다.

세 번째 단계: Grafana 대시보드 구성

  • Grafana를 열어 새로운 대시보드를 생성합니다.

  • 대시보드에 생성한 Traffic 매트릭을 시각화하기 위한 패널을 추가합니다.

그래프 또는 표 등을 사용하여 Traffic의 추이를 표시합니다.

📌 해당 대시보드의 패널을 개발합니다.

  • 클러스터 전체에 떠있는 Pod 개수 추적
  • 클러스터 전체에서 각 Pod의 Memory, Cpu 상태
  • Unhealty 상태에 있는 Pod 개수 추적
  • 기타 추가적으로 개발 하고 싶은 것이 있으면 개발하면 됩니다.

📌 모니터링 시스템 구축 과정
[K8S] CI/CD Pipeline, 모니터링, 로깅 시스템 구축 프로젝트 - 모니터링 시스템 구축



로깅 시스템 구축하기

Grafana Loki를 사용하여 Logging 시스템 구축하기 (or EKF의 ElasticSearch 사용하기)

📌 로깅 시스템 구축 과정
[K8S] CI/CD Pipeline, 모니터링, 로깅 시스템 구축 프로젝트 - 로깅 시스템 구축

profile
안녕하세요. 백엔드, 클라우드, 인프라에 관심과 열정이 있는 김문성입니다. 😊

0개의 댓글