본문 바로가기

서버

파이프라인, CI/CD, 젠킨스 개념

새로 개발한 애플리케이션을 쿠버네티스에서 사용하는 과정

  1. 깃허브 등 저장소에 저장해둔 애플리케이션 소스 코드를 내려받아 도커 컨테이너 이미지로 빌드 (docker build)
  2. 빌드한 컨테이너 이미지를 쿠버네티스에서 사용할 수 있도록 레지스트리에 등록 (docker push)
  3. 등록된 이미지를 기반으로 쿠버네티스 오브젝트 생성 (kubectl create)
  4. 생성한 오브젝트(파드, 디플로이먼트)를 외부에서 접속할 수 있도록 서비스 형태로 노출 (kubectl expose)

파이프라인

  • 이런 과정을 파이프라인이라고 한다.
  • 파이프라인을 자동화할 수 있는데, 자동화는 크게 지속적 통합 CI, 지속적 배포 CD로 나눈다.
  • CI/CD는 실무적인 환경에서 변경 사항을 계속 추적해 좀 더 안정화된 애플리케이션으로 만들고, 이를 배포하는 과정을 자동화해 시스템을 안정적으로 운영하는데 쓰이는 개념

컨테이너 인프라 환경에서 CI/CD

CI - 지속적 통합

  • 코드를 커밋하고 빌드했을 때 정상적으로 작동하는지 반복적으로 검증해, 애플리케이션의 신뢰성을 높이는 작업
  • 이를 마친 애플리케이션은 신뢰할 수 있는 상태가됨
  • 개발자가 소스를 커밋하고 푸시하면 CI단계로 들어감
  • CI 단계에서는 애플리케이션이 자동 빌드되고 테스트를 거쳐 배포할 수 있는 애플리케이션인지 확인함

CD - 지속적 배포

  • CI과정에서 생성된 신뢰할 수 있는 애플리케이션을 실제 상용 환경에 자동으로 배포하는 것을 의미
  • 애플리케이션을 상용 환경에 배포할 때 고려해야할 사항을 CD에 미리 정의하면 실수를 줄이고, 실제 적용 시간을 최소화할 수 있습니다.
  • CD 단계에서는 애플리케이션을 컨테이너 이미지로 만들어서 파드, 디플로에먼트, 스테이트풀셋 등 다양한 오브젝트 조건에 맞춰 미리 설정한 파일을 통해 배포함

젠킨스로 쿠버네티스 운영 환경 개선하기

모든 배포 환경을 컨테이너 인프라로 일원화하고, CI/CD 도구를 사용하면 애플리케이션에 맞는 환경을 적용해 자동을 배포할 수 있다.

  1. 개발자가 작성한 애플리케이션 소스를 푸시
  2. 쿠버네티스 내부에 설치된 젠킨스는 코드를 빌드하고 레지스트리에 푸시, 쿠베네티스에서 사용 가능한 형태로 배포

젠킨스는 작업 내용을 아이템 단위로 정의하고 조건에 따라 자동으로 작업을 수행함

젠킨스 주 사용 목적 : 애플리케이션을 컨테이너로 만들고 배포하는 과정을 자동화하기 위해
반응형