Kustomize로 완성하는 고급 리소스 관리법

39 sec read


1️⃣ 시작하며: 왜 리소스 관리가 중요한가요?

Kubernetes 환경에서는 수많은 리소스가 서로 얽혀 작동합니다.
이 리소스들을 구분하고 정리하고 관리할 수 없다면, 운영은 점점 복잡해집니다.

이번 장에서는 다음과 같은 내용을 배웁니다:

🎯 학습 목표

  • 레이블과 어노테이션의 차이와 역할
  • commonLabels, commonAnnotations 활용법
  • 네임스페이스를 이용한 리소스 분리
  • 패치로 리소스 설정 일부 수정하는 방법

🏷️ 2. 공통 레이블과 어노테이션: 리소스에 이름표 달기

2.1 레이블 vs 어노테이션

구분레이블(Label)어노테이션(Annotation)
목적리소스 검색, 분류, 선택리소스에 부가 정보 저장
사용 대상kubectl get 등에서 사용운영 도구, 사용자의 설명
예시app=my-appmanaged-by=kustomize

📚 비유로 이해하기

  • 레이블: 책장에 붙여진 분류 스티커
  • 어노테이션: 책 안쪽에 적힌 개인 메모

2.2 Kustomize에서 공통 레이블/어노테이션 설정하기

# kustomization.yaml
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization

commonLabels:
  app: my-app
  environment: dev

commonAnnotations:
  managed-by: kustomize
  version: "1.0"

resources:
  - deployment.yaml
  - service.yaml

📌 위 설정을 적용하면 deployment.yaml, service.yaml공통 레이블과 어노테이션이 자동으로 붙습니다.


2.3 리소스 검색도 레이블로 간편하게!

kubectl get all -l app=my-app

레이블은 리소스를 논리적으로 그룹화하고, 필요한 리소스만 쏙쏙 골라볼 수 있게 해줍니다!


🗂️ 3. 네임스페이스: 리소스 정리 정돈하기

3.1 네임스페이스란?

  • Kubernetes 클러스터 내 논리적 공간 구분 도구
  • 마치 회사의 부서처럼, 팀/환경 별로 리소스를 격리해서 관리할 수 있어요.

📚 비유로 이해하기

한 클러스터 안에 있는 여러 개의 책장
→ dev용 책장, prod용 책장, test용 책장


3.2 Kustomize에서 네임스페이스 설정

# kustomization.yaml
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization

namespace: my-namespace

resources:
  - deployment.yaml
  - service.yaml

⛳ 위 설정으로 배포되는 모든 리소스는 my-namespace에 들어가게 됩니다.


3.3 특정 네임스페이스의 리소스 확인

kubectl get all -n my-namespace

🛠️ 4. 리소스 변형의 기초: 필드만 살짝 수정하기

Kustomize는 전체 리소스를 복사하지 않고 필드만 골라서 수정할 수 있는 기능을 제공합니다.


4.1 patchesStrategicMerge 사용

# kustomization.yaml
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization

patchesStrategicMerge:
  - patch-replica.yaml

resources:
  - deployment.yaml
  - service.yaml

4.2 patch-replica.yaml 예시

# patch-replica.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
  name: my-app
spec:
  replicas: 5

🎯 위 설정은 my-app Deployment의 리플리카 수를 5개로 변경합니다.


⚠️ 주의: 필드 구조를 정확히 이해하고 작성해야 합니다!

틀린 경로나 구조는 패치가 적용되지 않거나 오류를 유발할 수 있어요.


🧪 5. 예제 통합: 실전에서 모두 적용해 보기

🧾 예제 파일 구성

  • deployment.yaml
  • service.yaml
  • patch-replica.yaml
  • kustomization.yaml

📄 kustomization.yaml 예시

apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization

namespace: my-namespace

commonLabels:
  app: my-app
  environment: dev

commonAnnotations:
  managed-by: kustomize
  version: "1.0"

patchesStrategicMerge:
  - patch-replica.yaml

resources:
  - deployment.yaml
  - service.yaml

🚀 적용 방법

kubectl apply -k .

이 명령으로:

  • 네임스페이스: my-namespace
  • 레이블: app: my-app, environment: dev
  • 어노테이션: managed-by, version
  • 리플리카 수: 5
    가 적용된 리소스가 배포됩니다.

🧠 마무리하며: 리소스 관리의 전문가 되기!

Kustomize는 단순한 템플릿 도구가 아닙니다.
공통 정보의 중앙 관리, 리소스 분리와 필드 단위 변경,
이 모든 것이 여러분의 클러스터 운영을 훨씬 더 쉽게 만들어줍니다

Kustomize 핵심 개념: 베이스(Base)와 오버레이(Overlay) 완전 정복

Kubernetes 설정을 효율적으로 관리하고 싶으신가요? 그렇다면 오늘 소개할 Kustomize의 베이스(Base)와 오버레이(Overlay) 개념을 꼭 알아두세요! 마치 기본 옷(Base) 위에 액세서리(Overlay) 를 더해 상황에 맞는 스타일을...
eve
32 sec read

Kustomize 시작하기: kustomization.yaml 완벽 가이드

Kubernetes 설정을 보다 효율적으로 관리하고 싶다면, Kustomize는 필수 도구입니다. 그리고 그 중심에는 바로 kustomization.yaml 파일이 있습니다. 이 글에서는 kustomization.yaml 파일의 구조와 주요 키워드를 소개하고,...
eve
40 sec read

쿠버네티스 시크릿 관리, 어떤 방법이 최선일까? 4가지 방식 장단점…

쿠버네티스에서 애플리케이션을 운영할 때, DB 접속 정보나 API 키 같은 민감한 정보, 즉 ‘시크릿(Secret)’을 어떻게 관리해야 할지는 모두의 공통된 고민입니다. 관리 방식은 보안, 운영...
eve
13 sec read