ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [CI/CD] CI/CD 적용 예제
    CICD 2023. 1. 12. 18:33
    반응형

    CI/CD 정리

    CI/CD 는 어플리케이션 개발단계(빌드, 테스트, 배포) 를 자동화 하는 것을 말한다.

    CI (Continuous Integration)

    • 지속적인 통합
    • 새로운 커밋이 푸시되면 빌드 및 테스트가 동작하고, 문제가 발생하지 않았는지 자동으로 알려주는 과정

    CD (Continuous Deployment)

    • 지속적인 배포
    • 코드 변경 사항이 CI 를 거쳐 main 에 머지가 되면, 자동으로 배포해주는 과정

    CI/CD 에 사용한 툴

    • git: 코드 히스토리 기록
    • github: 커밋 푸시 / PR 관리
    • jenkins: 이미지 빌드 / 테스트 / 배포 스크립트 푸시
    • docker: 이미지 관리
    • sonarqube: 코드 정적 분석 / 코드 커버리지 기록
    • gitlab: 배포 스크립트 히스토리 관리
      • github 를 써도 되지만, gitlab 을 사용할 기회가 있어서 사용
      • github 를 쓴다면, 해당 repo 의 특정 폴더에 k8s 설정 파일을 올려놓고 argo 에서 설정하면 된다.
    • argo: k8s 자동 배포 관리
    • kubernetes: 배포/운영 환경

    CI/CD 구조

    동작 설명

    1번만 개발자가 하는 것이고 2~6번은 자동으로 동작하게 된다.

    1. git 으로 commit 후 github push
    2. github 에서 jenkins 로 webhook 호출
    3. jenkins 에서 코드 변경사항을 확인하고 Jenkinsfile 에 정의한 파이프라인으로 동작
    4. Jenkinsfile 안에 sonarqube/docker/gitlab 연동 정의
      • sonarqube : 이미지 빌드를 하며 테스트를 진행하고 sonar-scanner 로 sonarqube 에 결과 업로드
      • docker : Dockerfile 에 정의한 내용을 이용해 이미지 생성
      • gitlab : id/token 을 이용하여 k8s 설정 파일 (deploy/service/configmap/etc.) 을 수정 및 푸시
    5. gitlab 에서 argo 로 webhook 호출
    6. argo 에서 gitlab 에 올려놓은 k8s 설정을 이용해 harbor 에 올려놓은 도커 이미지를 k8s 로 자동 배포

    자동 동작을 위한 설정 포인트

    반응형

    댓글

Designed by Tistory.