Kubernetes 환경에서 CI/CD 툴을 조사하던 중 Jenkins X 를 발견하게 되었다.
널리널리 사용되는 Jenkins! 그런데 좀 더 발전된 버전인가? 어떤 점이 다른지 살펴보자 🤔
Jenkins X?
- kubernetes 환경에서 CI(=continuous integration) 과 CD(continuous deployment) 를 제공하는 툴
- 오픈소스 프로젝트, 현재도 열심히 개발되고 있는 프로젝트!
- 아쉽게도 웹이나 serverless하게 확인해볼수있는 demo는 없지만, 아래 kubecon 영상에서 demo확인 가능
- 2018 kubecon Jenkins X demo (Jenkins x 뽕에 취해보세요)
특징
Automated CI/CD
- Github에서 commit, push, PR을 통해 자연스러운 CI/CD 환경을 경험할 수 있음 (모든 git event에 따라 각각 다른 pipeline이 동작)
- 개발자가 web UI를 통해 (jenkins, Argo CD같은) 배포 버튼을 누르는 작업을 따로 하지 않아도 됨
Environments
- Devlopment, Staging, Production 환경을 제공
- kubernetes cluster의 namespace 하나가 Jenkins X에서 말하는 enviornment가 됨
- Single cluster의 경우 하나의 cluster안에서 development, staging, production의 배포 환경을 namespace로 구분
- multi-cluster도 지원함
- 배포환경 뿐만 아니라, 각 팀마다 다른 배포 환경을 가지도록 구성할 수도 있음
- team == environment
Preview Environments
- PR에서 반영한 코드를 테스트할 수 있는 preview 환경을 제공
- 개발자가 작업한 feature가 master branch로 (merge 하고자 하는 branch) merge가 되었을때의 결과물을 샘플로 보여주는 환경
dev pod
- PR을 올리기 전 (preview environment를 사용하기 전), 로컬환경에서의 작업물을 테스트할 수 있는 환경을 제공
- 로컬환경에서 CI/CD 환경에 구축되어있지 않더라도, 현재 작업하고있는 작업물을 dev pod에서 테스트 가능
- 따로 배포를 하지 않고, 사용하고있는 IDE에서 코드 저장하기만 하면 dev pod로 sync
- 내부적으로 skaffold 라는 오픈소스를 사용해서 동작
- 참고: https://www.cloudbees.com/blog/exploring-jenkins-x-devpod
고려사항
AWS, GKE, Azure에 최적화
- on-premise보다는 위의 클라우드 provider에서 사용하는것을 권장
- on-premise로 사용하게 될 경우에는, Metal LB로 구성해야함 (클라우드를 사용하게 될 경우, 이 부분은 걱정하지 않아도 됨)
- 여러모로 설정부분에서 신경써야 할 것이 많긴 해 보임
반응형
'BE' 카테고리의 다른 글
[Kotlin] Annotation Targets (0) | 2022.10.05 |
---|---|
[Jenkins] java.lang.NoSuchMethodError: No such DSL method 'cleanWs' found among steps 에러 해결 방법 (0) | 2022.09.15 |
Jenkins 버전 업데이트 & 롤백하는 방법 (0) | 2022.09.14 |