[Kubernetes] 배포 파이프라인 구축 후 마주하게 되는 고민들

2025. 6. 16. 23:56·Kubernetes
목차
  1. 배포 파이프라인 구축 후 마주하게 되는 고민들
  2. 보안
  3. 컨테이너 이미지 누적
  4. 네임스페이스
  5. Pod 기동 확인
  6. 배포 시 업그레이드 누락
  7. 이미지 관리
  8. 출처
반응형

배포 파이프라인 구축 후 마주하게 되는 고민들

보안

배포를 위해 서버에서 Docker Hub 로그인을 해두면 특정 디렉토리에 접속 정보를 담은 파일이 생긴다.

또한 kube-config 파일도 관리자 권한의 인증서이기 때문에,

탈취되면 관리자 권한으로 쿠버네티스 클러스터에 API를 요청할 수 있게 된다.

 

따라서 1차적으로 아무나 서버에 들어갈 수 없도록 접근 보안을 잘 해둬야 하고,

또한 디스크에 암호화되지 않는 중요 정보를 남기지 않아야 한다.

 

이를 위해 중요 정보를 Jenkins Credential로 등록하여 암호화된 상태로 사용할 수 있다.

 

또한 파이프라인 내에서의 Docker 로그인 시에도 결국 파일이 생성되기 때문에,

배포가 끝나면 로그아웃을 하는 명령어를 요청하여 파일을 삭제해야 한다.

 

추가로 해당 파일의 암호화 기능을 제공하는 docker-credential-helpers를 사용할 수 있다.

 

컨테이너 이미지 누적

빌드를 계속 하다 보면 CI/CD서버에 컨테이너 이미지가 계속 쌓여서 디스크가 꽉 차게 된다.

따라서 컨테이너 빌드 및 업로드 이후 해당 이미지를 잘 삭제하도록 구성해야 한다.

 

또한 배포되는 노드에서도 이미지가 계속 쌓일 수 있는데,

쿠버네티스에서는 Garbage Collection을 통해 사용하지 않는 이미지는 자동으로 삭제한다.

 

네임스페이스

하나의 네임스페이스는 여러 App을 구성할 수 있고, Helm으로 Uninstall하더라도 네임스페이스가 삭제되지 않는다.

따라서 네임스페이스는 배포와 별도로 관리해 주는 것이 좋다.

 

Pod 기동 확인

배포 명령 실행 후 Pod가 정상적으로 기동되었는지 확인이 필요할 수 있다.

Helm에서 제공하는 wait 옵션을 활용하여 Pod가 완전히 기동되었는지 확인할 수 있다.

 

배포 시 업그레이드 누락

쿠버네티스는 Deployment.yaml 파일의 template 속성 밑으로 변경이 있어야만 업그레이드를 시작한다.

Helm의 annotations를 통해 template 속성 하위에 랜덤 값을 생성하여 배포 시 항상 업그레이드를 수행할 수 있다.

 

이미지 관리

개발 환경과 운영 환경의 차이에 따라 각 특성에 맞춰서 이미지 관리가 필요하다.

 

개발 환경

개발 환경은 배포가 자주 일어나고, 이미지 버전 관리가 필요 없다.

따라서 기본적으로는 아래와 같이 설정할 수 있다.

  • image 태그: latest 혹은
  • pullPolicy: Always

버전 관리가 필요 없으므로 태그는 가장 최신인 latest로 구성하고,

pullPolicy를 Always로 두어 동일한 태그여도 항상 Docker Hub에서 이미지를 가져와서 최신화한다.

 

이 때 태그가 바뀌지 않아 Deployment가 동일하여 배포가 안될 수 있기 때문에,

Helm의 annotations를 활용하여 배포가 동작하도록 구성한다.

 

운영 환경

운영 환경은 항상 계획적으로 배포를 수행하고, 이미지 버전 관리가 반드시 필요하다.

따라서 아래와 같이 설정하는 것이 좋다.

  • image 태그: 배포 버전
  • pullPolicy: ifNotPresent

pullPolicy가 ifNotPresent이면 노드에 해당 이미지가 존재하는 경우 그 이미지를 사용한다.

이미 있는 이미지를 다시 받아오는 것은 비효율적이기도 하지만,

운영 중에 Pod가 Scale-Out되는 경우 Docker Hub에 연결이 되지 않는 상황이더라도 정상 동작할 수 있다.

 

버전 관리되는 개발 환경

운영 환경처럼 개발 환경에서도 롤백이나 버전 관리가 필요할 수 있고,

이미지를 사용하는 제3자 입장에서는 latest 태그를 보면 최신 안정화 버전으로 착각할 가능성이 있다.

 

따라서 위와 같은 경우 아래와 같이 구성할 수도 있다.

  • image 태그: 날짜, Git 커밋 ID, Jenkins 빌드 ID 등 고유한 값
  • pullPolicy: ifNotPresent

배포가 자주 일어나기 때문에 태그에 고유한 속성을 추가하여 관리한다.

이 때는 이미지 태그 자체가 변경되므로 Helm의 annotations 설정이 불필요하다.


출처

https://inf.run/Ncohz
 

쿠버네티스 어나더 클래스 (지상편) - Sprint 1, 2 강의 | 일프로 - 인프런

일프로 | ⚓쿠버네티스(Kuberentes, Containerd, Docker Hub, Helm, Jenkins, Kustomize, ArgoCD) 🙇‍♀️아직 망설이시나요? 🙋‍♂️저만 믿고 따라오세요! 이론과 실습으로 당신의 실력을 ⭐어나더 레벨로 만

www.inflearn.com

반응형

'Kubernetes' 카테고리의 다른 글

[Kubernetes] ArgoCD Image Updater를 이용한 이미지 자동 배포  (1) 2025.06.21
[Kubernetes] ArgoCD 아키텍처  (0) 2025.06.18
[Kubernetes] Helm과 Kustomize 비교  (0) 2025.06.15
[Kubernetes] Jenkins를 활용한 Blue/Green 배포  (0) 2025.06.14
[Kubernetes] 배포를 시작하기 전에 반드시 알아야 할 것들  (0) 2025.06.12
  1. 배포 파이프라인 구축 후 마주하게 되는 고민들
  2. 보안
  3. 컨테이너 이미지 누적
  4. 네임스페이스
  5. Pod 기동 확인
  6. 배포 시 업그레이드 누락
  7. 이미지 관리
  8. 출처
'Kubernetes' 카테고리의 다른 글
  • [Kubernetes] ArgoCD Image Updater를 이용한 이미지 자동 배포
  • [Kubernetes] ArgoCD 아키텍처
  • [Kubernetes] Helm과 Kustomize 비교
  • [Kubernetes] Jenkins를 활용한 Blue/Green 배포
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] 배포 파이프라인 구축 후 마주하게 되는 고민들
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.