2 minute read

Amazon EKS와 ArgoCD를 활용한 CI/CD Pipeline 구축 및 모니터링 시스템 구축

본 프로젝트의 서비스 흐름도와 AWS 아키텍쳐는 아래와 같습니다.

service

AWSarchi


서론

  • 프로젝트 구축 목적
    • 본 프로젝트는 AWS 클라우드 환경에 하나의 웹 블로그 페이지를 배포하는 것이 목적입니다.
    • 해당 웹 블로그를 배포하는 과정에서, Frontend 부분과 Backend 부분으로 구성된 블로그는 Docker를 사용해 각각 이미지화 하여 별개의 컨테이너 환경에서 구동될 것입니다. 이렇게 컨테이너화 된 워크로드를 관리하기 위해서, 컨테이너 오케스트레이션 도구인 쿠버네티스를 사용할 것이고, AWS의 관리형 쿠버네티스 서비스인 Amazon EKS (Elastic Kubernetes Service)를 이용할것입니다.
    • 또한 최초 배포 이후로 블로그에 업데이트 등이 진행되었을 시, 업데이트 내역을 배포하는 과정을 자동화하여 인적개입을 최소화 할 것입니다. 업데이트 및 배포의 자동화를 통해 빠른 배포를 보장할 수 있고, 사람의 부주의로 인한 문제를 최소화 할 수 있습니다. 이를 위하여 자동화된 CI/CD 파이프라인을 구성할 것이고, ‘버전관리 시스템의 오픈소스 버전인 Git를 사용해 인프라 및 애플리케이션 구성을 관리하기 위한 일련의 사례’인 GitOps 원칙을 적용할 것입니다.
    • 마지막으로 실제 서비스가 운영되기 시작하면 트래픽 과부하, 서버 과부하 등 서비스 가동 시간에 영향을 주는 여러 장애가 발생할 수 있습니다. 이를 사전에 방지하고 대응할 수 있는 고가용성 설계를 구축하기 위해서, 쿠버네티스 오토스케일링과 여러 모니터링 조치를 수립할 것입니다.
  • 프로젝트 구축 목표
    • 본 프로젝트에서는 Amazon EKS 환경에서 쿠버네티스 서비스 배포, 자동화된 CI/CD 파이프라인 구축, 고가용성을 위한 오토스케일링&모니터링 도입 3개의 목표를 수행할 것입니다.
    • 먼저 쿠버네티스 서비스 배포를 위해서, Amazon EKS 환경을 구축할 것입니다. 이를 위해서 먼저 별도의 IAM 사용자계정을 생성해 권한을 관리하고, Cloud9으로 작업환경을 구축한뒤, EKS 전용 CLI툴인 eksctl을 통해 생성될 것입니다. 이후 React로 짜여진 Frontend와 Flask로 구현된 Backend가 Docker 이미지화되어 ECR 저장소에 보관된 뒤, 배포됩니다.
    • 그리고 자동화된 CI/CD 파이프라인 구축을 위하여 여러 연관 도구를 사용할 것입니다. CI 부분은 Github-Action과 Kustomize를 사용하여 소스코드의 도커라이징과 k8s manifest를 생성하며, CD 부분은 ArgoCD가 배포상태를 추적하여 클러스터의 상태를 깃 저장소와 동일화 합니다.
    • 마지막으로 오토스케일링&모니터링을 통한 고가용성을 이룩하기 위하여, k8s의 HPA, CA기능 및Helm을 통해 다수의 모니터링 솔루션을 구축해볼 것입니다. HPA 및 CA가 구축된 후에는 부하테스트를 진행하여 실제 작동이 되는지 확인해보고, 모니터링 도구의 Dashboard의 상황을 볼 것입니다.

결론

  • 구축 결과
    • 웹 서비스 배포
      • 생성된 AWS Ingress 로드밸런서 경로를 통한 접속 가능
    • CI/CD Pipeline 구축
      • 배포된 서비스에 대한 변경이나 업데이트가 있을 경우, 수정 사항을 작업하여 해당 Git 저장소에 커밋하면 파이프라인을 거친 뒤 반영
    • Autoscaling 적용
      • HPA (Horizental Pod Autoscaler)
        • Pod 단위의 오토스케일링
        • 실제 워크로드를 처리하는 Pod에 대한 부하가 일정이상 지속 > 부하 분산을 위해 추가 Pod가 배치
      • CA (Cluster Autoscaler)
        • Node 단위의 오토스케일링
        • Pod를 배치할 Node의 가용성이 떨어지는 경우 추가 Node 배치
    • Monitoring 구현
      • EKS CloudWatch Container Insights
        • AWS CloudWatch와 연동, 간편히 구성 가능
      • Prometheus & Grafana
        • 데이터 갱신 주기 변경, 대시보드 개인화 등 다양한 기능의 사용자화 가능

문서 다운로드

전체 분량이 약 60pg정도 되어 문서의 pdf파일의 링크를 공유합니다.

pdf링크

Categories:

Updated:

Leave a comment