본문 바로가기
DevOps

DevOps 환경에서 CI/CD 프로비저닝 구성하기: 이미지 기반 파이프라인과 인프라 자동화

by Yoon_estar 2024. 11. 15.
728x90
반응형

최근 DevOps의 CI/CD 파이프라인과 프로비저닝에 대한 개념이 조금씩 이해가 가면서, 저만의 DevOps 아키텍처를 설계하게 되었습니다. 이 과정에서 GitLab, Jenkins, Helm, Terraform 등 다양한 도구를 활용하여 환경을 구성하고 모니터링을 설정했습니다. 오늘은 제가 이해한 내용을 바탕으로 DevOps 엔지니어의 관점에서 인프라를 구성하는 방법과 각 도구의 역할에 대해 공유해보겠습니다.

 

 

현재까지 가 이해한 대로 구성도를 짜보았습니다.

 

Dev 파트 (CI): GitLab, Jenkins, Github Actions를 활용한 CI 파이프라인

DevOps 환경에서 CI 파이프라인의 중심에는 GitLab과 Jenkins가 자리 잡고 있습니다. GitLab을 통해 코드 변경 사항을 관리하고, Jenkins는 이를 기반으로 자동 빌드를 실행해 Docker 이미지를 생성합니다. 이와 더불어 Github과 Github Actions를 활용하여 두 번째 CI 파이프라인을 구성함으로써 다양한 소스 관리와 빌드 자동화의 유연성을 확보했습니다.

 

생성된 Docker 이미지는 로컬 이미지 저장소인 Harbor에 저장되며, 이후 CD 파이프라인에서 배포에 사용됩니다. 각종 변경 사항에 대한 알림은 Discord, Slack, Notion과 같은 커뮤니케이션 도구로 전달되며, 이는 Prometheus의 알림 설정을 통해 자동으로 연동됩니다. 이를 통해 개발과 운영 팀 간의 원활한 커뮤니케이션과 즉각적인 피드백을 가능하게 합니다.

DevOps 파트 (CD): Argo CD와 Helm을 통한 클러스터 배포 자동화

배포(CD) 단계에서는 클러스터 환경에서 Argo CD를 활용해 애플리케이션을 자동으로 배포합니다. 클러스터는 총 5대의 노드로 구성되어 있으며, Master 노드와 4개의 워커 노드로 나누어져 있습니다. Argo CD는 Harbor에서 필요한 이미지 파일을 가져와 Helm Chart를 사용하여 원하는 설정을 적용하며 파드를 생성합니다.

 

Helm Chart를 통해 애플리케이션 배포 시 각종 설정값을 손쉽게 적용할 수 있으며, 파드의 모든 상태는 Prometheus를 통해 모니터링됩니다. 또한 Grafana를 통해 이러한 모니터링 데이터를 시각화하여 운영 중인 애플리케이션 상태를 한눈에 파악할 수 있습니다. 이를 통해 안정적이고 신속한 배포와 실시간 모니터링을 구현할 수 있습니다.

 

 

프로비저닝 파트: Terraform과 Cloud-init을 이용한 인프라 자동화

DevOps의 핵심 중 하나는 인프라의 자동화입니다. 저는 Terraform과 Cloud-init을 활용하여 AWS와 온프레미스 환경을 프로비저닝하는 자동화 시스템을 구축했습니다. AWS에서는 Terraform을 통해 필요한 리소스를 선언적으로 관리하고, 온프레미스 환경에서는 Cloud-init을 통해 초기 설정을 자동화하여 서버 구축 시간을 줄였습니다.

 

온프레미스 환경은 가상화 기술을 사용해 구축되었으며, Zabbix를 통해 모니터링과 통합 관리가 이루어집니다. 이러한 인프라 자동화 시스템은 다양한 환경에서 쉽게 인프라를 재구성하고 관리할 수 있는 유연성을 제공하며, DevOps 파이프라인에 적합한 효율적인 환경을 만듭니다.

 

Conclusion

오늘은 DevOps 엔지니어의 관점에서 CI/CD 파이프라인과 프로비저닝 환경을 구축하는 방법에 대해 소개했습니다. GitLab과 Jenkins를 활용한 CI 파이프라인부터 Argo CD와 Helm을 통한 자동 배포, Terraform과 Cloud-init을 통한 인프라 자동화까지 다양한 도구를 조합하여 최적의 DevOps 환경을 만들었습니다. 이 글이 DevOps 환경에서 인프라를 구축하고자 하는 분들께 도움이 되길 바랍니다.

 

 

 

 

 

반응형