프로젝트 기간 : 23.06.12 ~ 23.06.22
프로젝트 목표
- 네트워크 단에서는 공유 Office의 네트워크 통신망을 구현
- Jenkins Pipeline을 지속적 통합/배포 프로세스 구성
- Grafana / Prometheus를 이용한 효율적인 클라우드 리소스 관리를 위한 모니터링 툴 구성
현대의 IT 인프라는 클라우드 컴퓨팅 및 마이크로서비스 아키텍처의 보편화로 인해 고가용성, 오프-프레미스 구성의 중요성과 규모가 커지고 있습니다.
이에 따라 효율적이고 자동화된 지속적 통합, 지속적 배포 과정이 요구되는 시점입니다.
이번 프로젝트는 학원 프로젝트의 일환으로 한 분야의 기술 뿐만이 아닌 다양한 네트워크 기술과 시스템의 흐름을 파악하기 위해 현대적인 다양한 기술들을 사용하여 구현했습니다.
사용 기술로는 pnet, jenkins, ansible, kubernetes, AWS(EC2, EKS) 등이 있습니다.
프로젝트 구성도
프로젝트 구성도는 다음과 같습니다.
DevOps & 클라우드 컴퓨팅 환경은 네트워크 통신망이 구성된 PC에서 개발자의 커밋을 통해 애플리케이션의 배포와 모니터링까지 자동화할 수 있도록 구성됩니다.
네트워크 구성
네트워크 구축 환경은 Pnet의 가상화 장비를 이용하여 구성했습니다.
보편적으로 사용되는 네트워크 장비인 Cisco System의 솔루션을 이용하여 안전하고 안정적인 기업 내, 외부 통신망을 구축하고, 네트워크 통신망을 인터넷 서비스 제공자(ISP)와의 연결을 통해 인터넷에 접속할 수 있도록 구성합니다.
해당 네트워크 통신망을 추후 AWS(Amazon Web Service) 퍼블릭 클라우드 자원과 연결되어 사내망에서의 작업을 서버로 전송할 수 있게 합니다.
네트워크 구성의 목표는 다음과 같습니다.
우선 네트워크 통신망을 인터넷 서비스 제공자(ISP)와의 연결을 통해 인터넷에 접속할 수 있도록 구성합니다.
NAT를 통해 WAN으로 나가면서도 외부로부터의 침입을 차단하며, 트래픽을 검사하고 보안 정책을 적용하기 위해 방화벽을 배치합니다.
백본 스위치를 통해 스위치와 라우터를 중개하여 대규모 트래픽을 처리하고, 부서별로 네트워크를 관리하기 위하여 스위치를 통해 내부망을 분배합니다.
클라우드 구성
클라우드 컴퓨팅 환경은 네트워크 통신망이 구성된 PC에서 개발자의 커밋을 통해 애플리케이션의 배포와 모니터링 까지 자동화할 수 있도록 구성했습니다.
클라우드의 각 파트를 Jenkins Pipeline과 grafana 모니터링으로 나눠 설명하겠습니다.
Jenkins Pipeline
Jenkins는 CI/CD(Continuous Integration/Continuous Deployment)도구로서, 코드 변경 사항을 지속적으로 통합하고 배포하는 자동화 프로세스를 구축하는데 사용됩니다.
Ansible은 인프라 스트럭처 자동화 도구로, YAML 기반의 선언적인 구성 관리를 제공하며 Dokcer 컨테이너를 구성하고 배포하는 데 사용됩니다.
Ansible 서버에서는 ansible playbook을 사용하여 Docker 이미지 빌드를 자동화하고, kubernetes 에서 컨테이너를 실행하고 관리합니다.
ansible은 EKS클러스터의 리소스를 관리하며 배포 매니페스트를 작성하여 애플리케이션을 EKS에 배포합니다.
AWS의 서비스인 EKS는 k8s(kubenetes) 클러스터를 구성하고 관리하며 애플리케이션의 컨테이너화와 오케스트레이션을 담당합니다. k8s 클러스터는 Amazon Web Service 상의 Elastic Kubernetes Service로 구성되며 마이크로 서비스 아키텍처에 기반한 애플리케이션을 실행하고 관리합니다.
Grafana / Prometheus
Grafana란 메트릭, 로그 등을 모니터링 하고 분석할 수 있는 오픈소스 시각 및 분석 툴로, Prometheus나 Cloud Watch 등의 데이터 수집 툴과 연결하여 다양한 형태의 그래프로 시각화 해주는 분석 툴입니다.
Prometheus란 쿠버네티스 내장 도구인 cAdvisor에서 컨테이너 매트릭을 수집하는 데이터 수집 툴입니다.
프로젝트에서는 클러스터를 모니터링하기 위해 k8s와 같은 클러스터에 배포했습니다.
k8s 클러스터에 배포된 Prometheus와 Grafana 모니터링 툴은 데이터 수집과 시각화를 통해 파드들을 운용, 감시하여 실시간에 가까운 장애 대응을 할 수 있습니다.
프로젝트 결과는 다음과 같습니다.
pnet 네트워크 구성 화면
jenkins pipeline으로 구성한 파드와 로드밸런서 확인
EC2 서버 & 워커노드 생성 확인
웹 브라우저에서 로드밸런서의 80 주소로 접근하면 springboot로 만든 화면을 확인할 수 있습니다.
github repository : https://github.com/hweyoung/jenkins-gradle.git
eks cluster 생성 후 VPC 확인
VPC 서비스 구성도 확인
Prometheus / Grafana 파드 확인
grafana에 연결된 로드밸런서의 주소와 실행 화면을 볼 수 있습니다.
로드밸런서로 연결된 주소로 접근하여 클러스터 리소스를 모니터링 할 수 있습니다.
cluster의 리소스가 임계치를 넘게 되면 연동된 slack 채널에 알림을 보내줍니다.
'프로젝트 > 클라우드' 카테고리의 다른 글
Jenkins Pipeline 구축부터 eks 클러스터 배포까지 (0) | 2023.06.26 |
---|---|
클라우드 리소스 관리를 위한 모니터링 시스템 구축, Prometheus와 Grafana (0) | 2023.06.25 |