네모네모새

Tools 선정 본문

CNCF

Tools 선정

네모새 2022. 4. 5. 09:57

CI/CD

CI/CD는 지속적 통합(Continuous Integration)과 지속적 배포(Continuous Deployment/Delivery)를 합친 말입니다.
애플리케이션의 개발부터 배포까지 이루어지는 단계를 자동화해서 효율적이고 빠르게 그리고 빈번하게 배포할 수 있는 환경을 만드는 것을 의미합니다.

이번 실습에서는 CNCF에 속한 다양한 오픈소스 솔루션들을 활용하여 CI/CD 환경을 구축할 예정입니다.

사용하고자 하는 툴들은 아래와 같습니다.

  • App Code Repo : Github
  • CI System : Github Action
  • Container Registry : HARBOR
  • K8S : EKS
  • CD System : Argo CD

DevOps

DevOps란 Development + Opertations의 합성어로 개발, 배포, 운영으로 이어지는 업무 프로세스에 속도를 높여 접근하는 방식을 의미합니다.

DevOps의 핵심은 "개발과 운영의 벽을 허물어 더 빨리 더 자주 배포하자" 입니다.

DevOps는 개발과 운영을 담당하는 이해관계자들의 협력이 필수적이며, DevOps에 필요한 것들을 정리한 CALMS Model을 확인해보면 그 안에 이에서 설명한 CI/CD가 포함된 것을 볼 수 있습니다.

이처럼 DevOps는 단순히 개발부터 배포까지의 단계를 자동화하는 것 뿐만 아니라, 그 과정에서 이루어지는 협업, 협력 등 다양한 개념을 포함한 하나의 문화라고 볼 수 있겠습니다.

DevOps에는 다양한 툴들이 활용됩니다.
코드 관리를 위한 Git과 같은 툴에서부터, JUnit과 같은 테스트 툴, Jenkins와 같은 CI/CD툴, JIRA와 같은 협력을 위한 툴, Docekr, K8S와 같은 가상화를 위한 툴 등이 DevOps를 구현하는데 사용됩니다.


일반적인 프로세스는 위와 같습니다.

개발자는 코드를 GitHub와 같은 Repository에 저장하고, Jenkins와 같은 CI/CD 툴을 이용해 코드를 컨테이너화 합니다.

그리고 Kubernetes와 같은 오케스트레이션 툴을 이용해 가상화된 애플리케이션들을 배포하고 스케줄링 및 모니터링을 수행합니다.

GitOps

GitOps는 프로젝트에 DevOps를 적용하는 실천 방법 중의 하나입니다.

Git이라는 단어가 들어간 것 처럼 애플리케이션의 배포 및 운영에 관련된 모든 요소들을 코드화하여 Git에서 관리하는 것이 깃옵스의 핵심입니다.

DevOps의 경우 Kubernetes에 애플리케이션을 배포하기 위해서는 yaml 코드를 작성하고 마스터노드에서 실행시키는 작업이 필요합니다.

하지만 GitOps에서는 ArgoCD와 같은 GitOps 툴을 활용하여 모든 작업을 클러스터에서 직접 실행할 필요 없이 Git에 저장한 코드를 통해서 진행할 수 있습니다.

구성도

아래는 이번 실습에서 구현하고자 하는 구성도입니다.


1. 개발자는 코드를 GitHub에 업로드
2. GitHub Action을 통해 Build
3. Build된 컨테이너 이미지를 Priavte Repository인 HARBOR에 저장
4. ArgoCD는 일정 시간 간격으로 GitHub Repository의 특정 경로의 yaml파일의 변화를 확인
5. 변화된 사항을 Kubernetes에 배포

'CNCF' 카테고리의 다른 글

Cloud Native와 CNCF  (0) 2022.04.05
Comments