반응형
CI/CD 파이프라인을 구성할 때 고려해야 하는 요소
빌드/배포 방식의 차이
- 각각의 파이프라인을 만들고 각각 실행하는 방식 (필요시 트리거를 통해 자동 배포 가능)
- 장점: 담당자가 다른 경우 업무 분장 및 관리 책임 면에서 효율적이다.
- 하나의 구성 안에 파이프라인이 자동으로 연결되는 방식
- 장점: 하나의 파이프라인으로 구성되어 수정이 필요하더라도 한 군데에서 관리할 수 있다.
배포 시 ArgoCD를 사용하는 경우 배포와 인프라 환경의 관계
- 배포 1 : 인프라 N
- 장점: ArgoCD를 하나만 관리하게 되어 편의성이 향상된다.
- 단점: 개발 환경 때문에 장애가 발생하면 운영 환경에도 배포를 할 수가 없다.
- 배포 1 : 인프라 1
- 장점: 개발 환경의 장애 시 운영 환경에 영향이 없다.
- 단점: ArgoCD를 이중으로 관리해야 한다.
CI/CD Tool
- 온라인 (GitHub Actions 등)
- 장점: CI/CD 서버 별도 구축 불필요
- 오프라인 (Jenkins, Jenkins X, Tekton 등)
- 장점: Jenkins X, Tekton 등 컨테이너 환경에 최적화된 제품 지원 / 보안상 조금 더 안전
제품 선정 기준
비슷한 기능의 제품들이 많은 경우, 대체로 레퍼런스가 많은 제품인지 확인하는 것이 좋다.
아래의 구글 트렌드를 참고해 보자.
한 가지 더 고려할 점으로는, 상황에 따라 제품을 도입하고 계속 유지보수로 계약할 수 있는 업체가 존재하는지 여부를 고려할 수 있다.
컨테이너 빌드 Tool (Docker 대체)
Docker는 여전히 많이 사용되긴 하나, Docker 자체가 무겁고 Daemon이 필요하다는 단점이 존재한다.
따라서 이런 단점들을 보완하기 위해 buildah, podman, skopeo 등의 사용을 고려할 수 있다.
다만 구글 트렌드를 보면 Docker가 압도적으로 레퍼런스가 많다.
배포 전략을 세울 때 고려해야 하는 요소
- Recreate
- DB 스키마 변경 등의 이유로 중단 배포를 진행해야 하는 경우 사용할 수 있다.
- RollingUpdate
- 추가적인 배포 툴 없이 무중단 배포를 수행할 수 있다.
- Blue/Green
- Service를 전환하는 형태로 구성되어 수동 배포 시 롤백이 빠르다.
- 배포 동작이 단순하여 Script를 통해 버튼 한 번으로 자동 배포 구성이 가능하다.
- 운영에서만 테스트가 가능한 경우 새 Service에서 테스트 후 문제가 없을 때 배포하는 전략을 사용할 수 있다.
- Canary
- 특정 IP / 사용자 / 언어 등으로 나눠서 특정 트래픽만 보내야 하는 경우 사용할 수 있다.
- 한 번에 트래픽이 쏠리지 않아 App의 웜업 시간을 가질 수 있다.
- 두 버전을 비교하여 반응 비교를 통해 배포 여부를 결정할 수 있다. (A/B 테스트)
단계별로 구축해 보는 배포 파이프라인
파이프라인을 한 번에 완벽하게 구성하려고 하다 보면 여러 이유로 잘 안 되는 경우도 많고 시간이 많이 소요될 수 있다.
파이프라인을 안정화시킨 후 단계적으로 업그레이드하게 되면 조금 느리더라도 작업하는 순서를 직관적으로 확인할 수 있다.
이는 체계적으로 일하는 느낌을 줄 뿐만 아니라 장애가 발생하더라도 단계를 잘 파악하여 빠르게 대처할 수 있다.
- Jenkins 기본 구성
- 직관적인 형태로 완성을 목표로 한 기본 파이프라인 구성
- Jenkins Pipeline 사용
- 하나의 구성으로 빌드 배포가 연결될 수 있도록 통합하여 배포 편의성 향상
- Stage View를 통해 한 화면에서 진행 상황을 편하게 확인 가능
- Jenkinsfile을 통한 Git 관리(Jenkins에서는 1번 구성을 해두면 해당 구성의 Script 형태를 알려주는 기능이 존재한다.)
- Kustomize, Helm 배포
- kubectl 배포에서 Kustomize나 Helm 배포로 변경하여 yaml 파일 동적 구성
- ArgoCD 배포 분리
- 쿠버네티스의 인프라 환경에 ArgoCD를 설치하여 배포 분리
- ArgoCD가 쿠버네티스와 릴리즈 파일 사이에서 계속 싱크를 맞춰주어 신뢰성 향상
- ArgoCD가 GitHub 수정사항을 확인하여 자동으로 쿠버네티스의 리소스를 동기화
- 쿠버네티스의 리소스를 직접 변경한 경우 ArgoCD가 GitHub를 자동으로 수정
- ArgoCD에서 쿠버네티스 리소스를 편하게 확인할 수 있는 UI 제공
출처
https://www.inflearn.com/course/쿠버네티스-어나더-클래스-지상편-sprint1
쿠버네티스 어나더 클래스 (지상편) - Sprint 1, 2 강의 | 일프로 - 인프런
일프로 | , ✅ 광범위한 쿠버네티스 기술을 A~Z까지 넓고 얇게 훑기보다 하나의 개념을 배우더라도 왜 사용하는지 부터 실무에서 어떻게 사용되는지 까지를 다루는 강의✅ 시작은 초급자지만강
www.inflearn.com
반응형
'Kubernetes' 카테고리의 다른 글
[Kubernetes] Helm과 Kustomize 비교 (0) | 2025.06.15 |
---|---|
[Kubernetes] Jenkins를 활용한 Blue/Green 배포 (0) | 2025.06.14 |
[Kubernetes] 손쉽게 CI/CD 환경을 구축하는 방법 (1) | 2025.06.08 |
[Kubernetes] DevOps 한 방 정리 (4) | 2025.06.08 |
[Kubernetes] Component 동작으로 이해하기 (1) | 2025.06.06 |