Managing Directories 2

Yu Sang Min·2025년 7월 7일

CKA

목록 보기
107/110
post-thumbnail

🧪 Kustomize 데모

📁 디렉토리 구조 설명

  • k8s/ 디렉토리는 모든 Kubernetes 매니페스트 파일을 포함하는 상위 디렉토리

  • 하위 디렉토리는 다음 세 가지로 구성

    • api/: 애플리케이션 API 관련 리소스를 포함하는 디렉토리
    • cache/: Redis 캐시 관련 리소스를 포함하는 디렉토리
    • database/: MongoDB 데이터베이스 관련 리소스를 포함하는 디렉토리
  • 각 디렉토리에는 다음과 같은 YAML 파일 존재

    • Deployment, Service, ConfigMap 등 일반적인 Kubernetes 리소스 정의 파일 포함

🖥️ Kustomize 없이 리소스 배포

  • 터미널에서 각 디렉토리로 진입한 후, kubectl apply -f 명령어를 개별 실행
kubectl apply -f k8s/api
kubectl apply -f k8s/cache
kubectl apply -f k8s/database
  • 또는 하나의 명령어로 여러 디렉토리를 동시에 적용
kubectl apply -f k8s/api -f k8s/cache -f k8s/database
  • 리소스 수가 증가할수록 디렉토리 별 적용 작업의 반복과 복잡도 상승

❌ 기존 리소스 삭제

  • 기존 명령어에서 applydelete로 변경하여 리소스 제거
kubectl delete -f k8s/api -f k8s/cache -f k8s/database

⚙️ 단일 Kustomization 파일 구성 방식

📝 루트 디렉토리의 kustomization.yaml 생성

  • k8s/ 디렉토리 내에 kustomization.yaml 파일을 생성하고 다음과 같이 정의
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
resources:
  - api/api-depl.yaml
  - api/api-service.yaml
  - cache/redis-config.yaml
  - cache/redis-depl.yaml
  - cache/redis-service.yaml
  - database/db-depl.yaml
  - database/db-service.yaml

🛠️ 리소스 생성 명령어 실행

  • kustomize build 명령어를 실행하면 최종적으로 생성될 Kubernetes 매니페스트를 출력
kustomize build k8s/
  • 출력된 매니페스트를 실제 클러스터에 적용하려면 파이프 연산자를 사용하여 kubectl apply와 연결
kustomize build k8s/ | kubectl apply -f -
  • kubectl 자체 기능을 활용할 수도 있음
kubectl apply -k k8s/

📋 리소스 생성 결과 확인

kubectl get pods
  • 정의한 모든 컨테이너가 정상적으로 실행 중임을 확인 가능

🧱 디렉토리별 Kustomization 분리 방식

📂 하위 디렉토리마다 kustomization.yaml 파일 추가

  • 각 디렉토리에 kustomization.yaml 파일을 별도로 생성하고, 해당 디렉토리 내 리소스를 정의

예시: api/kustomization.yaml

apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
resources:
  - api-depl.yaml
  - api-service.yaml

예시: cache/kustomization.yaml

apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
resources:
  - redis-config.yaml
  - redis-depl.yaml
  - redis-service.yaml

예시: database/kustomization.yaml

apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
resources:
  - db-depl.yaml
  - db-service.yaml

🧭 루트 kustomization.yaml 수정

  • 이전에 정의했던 모든 개별 파일 경로는 제거
  • 각 디렉토리만 경로로 명시하여 해당 디렉토리 내 kustomization.yaml을 자동 탐색하도록 구성
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
resources:
  - api
  - cache
  - database

🧪 재적용 및 결과 확인

리소스 적용 명령어

kubectl apply -k k8s/

또는

kustomize build k8s/ | kubectl apply -f -

리소스 상태 확인

kubectl get pods
  • 모든 리소스가 정상적으로 재생성됨을 확인 가능

✅ 결론

  • 디렉토리별 kustomization.yaml 분리 방식은 유지보수성과 확장성 측면에서 우수함
  • 루트 설정 파일은 경량화되고, 서브디렉토리 내부에서 각자의 리소스를 관리 가능
  • kustomize는 복잡한 Kubernetes 리소스 관리를 체계적으로 구성할 수 있는 유용한 도구
profile
React, Node.js, AWS, Git, Github, Github Action, Docker, K8S

0개의 댓글