[Kubernetes] 배포를 시작하기 전에 반드시 알아야 할 것들

2025. 6. 12. 00:31·Kubernetes
반응형

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 테스트)

 

단계별로 구축해 보는 배포 파이프라인

파이프라인을 한 번에 완벽하게 구성하려고 하다 보면 여러 이유로 잘 안 되는 경우도 많고 시간이 많이 소요될 수 있다.

 

파이프라인을 안정화시킨 후 단계적으로 업그레이드하게 되면 조금 느리더라도 작업하는 순서를 직관적으로 확인할 수 있다.

이는 체계적으로 일하는 느낌을 줄 뿐만 아니라 장애가 발생하더라도 단계를 잘 파악하여 빠르게 대처할 수 있다.

  1. Jenkins 기본 구성
    • 직관적인 형태로 완성을 목표로 한 기본 파이프라인 구성
  2. Jenkins Pipeline 사용
    • 하나의 구성으로 빌드 배포가 연결될 수 있도록 통합하여 배포 편의성 향상
    • Stage View를 통해 한 화면에서 진행 상황을 편하게 확인 가능
    • Jenkinsfile을 통한 Git 관리(Jenkins에서는 1번 구성을 해두면 해당 구성의 Script 형태를 알려주는 기능이 존재한다.)
  3. Kustomize, Helm 배포
    • kubectl 배포에서 Kustomize나 Helm 배포로 변경하여 yaml 파일 동적 구성
  4. 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
'Kubernetes' 카테고리의 다른 글
  • [Kubernetes] Helm과 Kustomize 비교
  • [Kubernetes] Jenkins를 활용한 Blue/Green 배포
  • [Kubernetes] 손쉽게 CI/CD 환경을 구축하는 방법
  • [Kubernetes] DevOps 한 방 정리
hojun-dev
hojun-dev
개발과 함께하는 일상을 그리는 블로그입니다.
  • hojun-dev
    개발 일상
    hojun-dev
  • 전체
    오늘
    어제
    • 분류 전체보기 (69)
      • Java & Spring (15)
      • Kubernetes (17)
      • Javascript (2)
      • Linux (2)
      • Setting (16)
      • Work (4)
      • 일상 (10)
      • 항해플러스 (3)
  • 인기 글

  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.2
hojun-dev
[Kubernetes] 배포를 시작하기 전에 반드시 알아야 할 것들
상단으로

티스토리툴바