-
[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번은 자동으로 동작하게 된다.
- git 으로 commit 후 github push
- github 에서 jenkins 로 webhook 호출
- jenkins 에서 코드 변경사항을 확인하고 Jenkinsfile 에 정의한 파이프라인으로 동작
- Jenkinsfile 안에 sonarqube/docker/gitlab 연동 정의
- sonarqube : 이미지 빌드를 하며 테스트를 진행하고 sonar-scanner 로 sonarqube 에 결과 업로드
- docker : Dockerfile 에 정의한 내용을 이용해 이미지 생성
- gitlab : id/token 을 이용하여 k8s 설정 파일 (deploy/service/configmap/etc.) 을 수정 및 푸시
- gitlab 에서 argo 로 webhook 호출
- argo 에서 gitlab 에 올려놓은 k8s 설정을 이용해 harbor 에 올려놓은 도커 이미지를 k8s 로 자동 배포
자동 동작을 위한 설정 포인트
- github -> jenkins webhook 설정
- jenkins 의 Credentials 설정
- Jenkinsfile 생성
- 미리 정의된 Credentials 를 이용하여 sonarqube, docker, gitlab 연동 코드 작성
- argo 에 gitlab repositories 추가 및 k8s cluster 연결
- gitlab -> argo webhook 설정
반응형