logo
logo
배포 파이프라인과 쿠버네티스
코드너리  |  2022. 03. 07
쿠버네티스 구조
CI/CD
사용된 기술:
jenkins-image
gitlab-image
helm-image
prometheus-image
content

간단 요약

  1. SCM:
    Git으로 애플리케이션 코드를 관리하며 Gitflow 전략을 사용합니다.
  2. Jenkins Pipeline:
    1. Prepare
      1. Check Environment
        1. 배포 과정에서 필요한 파라미터를 설정하고 기존 환경 및 변경될 환경을 검증합니다.
      2. Warm Up
        1. 후속 빌드 과정에서 사용할 Jenkins Agent Pod들을 미리 병렬로 구동하여 전체 파이프라인 실행 시간을 약간이나마 줄입니다.
    2. Build
      1. Checkout
        1. Git Repository의 코드를 fetch 하고 배포할 브랜치로 checkout 합니다.
      2. Compile
        1. Gradle을 이용하여 build 합니다.
        2. Jib을 사용하여 애플리케이션의 컨테이너 이미지를 생성합니다. Jib을 이용하면 Docker daemon 없이 Docker 혹은 OCI규격의 컨테이너 이미지를 생성할 수 있습니다.
    3. Build Image
      1. Kaniko로 Docker Image를 생성하여 AWS ECR에 Push 합니다. Kaniko는 각 Layer 별 캐싱을 통해 Image 생성 시간을 단축합니다.
      2. Image Layer
        1. Base(centos/8)
        2. JDK
        3. 서비스 공통 설정(구동 스크립트 등)
        4. Compile 단계에서 생성한 애플리케이션 컨테이너 이미지
    4. Deploy
      • Helm을 사용하여 애플리케이션을 배포합니다. 초기 세팅 시에는 애플리케이션의 여러 모듈을 manifest로 테스트하고, 정리가 되면 Helm chart로 패키징하여 관리합니다.
  3. 쿠버네티스와 프로메테우스:
    1. AWS EKS
      • AWS EKS를 사용하며 관리형 서비스에서 얻을 수 있는 이점을 최대한 사용합니다. 특정 서비스를 깊이 사용하다 보면 그 서비스에 매몰되는 것을 항상 걱정하게 되는데요. 계속 상황을 보면서 유연하게 선택해야 합니다. 얻을 것은 얻고 포기할 것은 어느 정도 포기해야 합니다.
    2. Prometheus
      • Prometheus를 사용하여 쿠버네티스 metric을 모니터링합니다.
    3. Grafana
      • Grafana를 구축하여 현재 쿠버네티스의 상태를 Dashboard를 통해 모니터링합니다.(Pod, Container의 CPU, Memory, Network, Count 등)
Copyright © 2024. Codenary All Rights Reserved.