티스토리 뷰

반응형

쿠버네티스 실습: Helm Chart에 ConfigMap · Secret · PVC · Ingress · HPA 통합하기

앞선 글에서는 Helm Chart를 이용해 단일 애플리케이션(Nginx)을 배포하고, values.yaml을 통해 배포 환경을 유연하게 관리하는 방법을 실습했습니다.
이번 글에서는 실제 운영 환경에서 흔히 필요한 리소스들(ConfigMap, Secret, PVC, Ingress, HPA)을 Helm Chart에 통합하는 방법을 다룹니다.
즉, 단순 배포 자동화를 넘어서 실제 서비스 레벨의 배포 패키지를 구성하는 단계입니다.


1) Chart 구조 확장

Helm Chart를 만들면 기본적으로 templates/ 디렉토리에 매니페스트 템플릿이 들어갑니다.
여기에 configmap.yaml, secret.yaml, pvc.yaml, ingress.yaml, hpa.yaml 등을 추가해 관리합니다.

myapp/
  values.yaml
  Chart.yaml
  templates/
    deployment.yaml
    service.yaml
    configmap.yaml
    secret.yaml
    pvc.yaml
    ingress.yaml
    hpa.yaml

2) ConfigMap 템플릿

templates/configmap.yaml

apiVersion: v1
kind: ConfigMap
metadata:
  name: {{ .Release.Name }}-config
data:
  APP_ENV: {{ .Values.app.env | quote }}
  WELCOME_MSG: {{ .Values.app.welcomeMsg | quote }}

values.yaml에 추가:

app:
  env: production
  welcomeMsg: "Hello from Helm ConfigMap"

3) Secret 템플릿

반응형

templates/secret.yaml

apiVersion: v1
kind: Secret
metadata:
  name: {{ .Release.Name }}-secret
type: Opaque
data:
  DB_PASSWORD: {{ .Values.secrets.dbPassword | b64enc | quote }}

values.yaml에 추가:

secrets:
  dbPassword: supersecret

4) PVC 템플릿

templates/pvc.yaml

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: {{ .Release.Name }}-pvc
spec:
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: {{ .Values.persistence.size }}

values.yaml에 추가:

persistence:
  size: 1Gi

5) Ingress 템플릿

templates/ingress.yaml

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: {{ .Release.Name }}-ingress
  annotations:
    nginx.ingress.kubernetes.io/rewrite-target: /
spec:
  rules:
  - host: {{ .Values.ingress.host }}
    http:
      paths:
      - path: /
        pathType: Prefix
        backend:
          service:
            name: {{ .Release.Name }}
            port:
              number: {{ .Values.service.port }}

values.yaml에 추가:

ingress:
  enabled: true
  host: myapp.local

6) HPA 템플릿

templates/hpa.yaml

apiVersion: autoscaling/v2
kind: HorizontalPodAutoscaler
metadata:
  name: {{ .Release.Name }}-hpa
spec:
  scaleTargetRef:
    apiVersion: apps/v1
    kind: Deployment
    name: {{ .Release.Name }}
  minReplicas: 1
  maxReplicas: 5
  metrics:
  - type: Resource
    resource:
      name: cpu
      target:
        type: Utilization
        averageUtilization: {{ .Values.hpa.targetCPUUtilizationPercentage }}

values.yaml에 추가:

hpa:
  enabled: true
  targetCPUUtilizationPercentage: 50

7) 통합 배포

Chart 적용:

helm install myapp ./myapp

배포 리소스 확인:

kubectl get all
kubectl get ingress
kubectl get hpa

8) 정리

  • ConfigMap, Secret → 환경 변수와 민감 정보 주입
  • PVC → 데이터 영속성 보장
  • Ingress → 외부 접근 및 도메인 기반 라우팅
  • HPA → 부하에 따른 자동 확장

즉, Helm Chart 하나로 애플리케이션 + 설정 + 스토리지 + 네트워크 + 확장성까지 패키징이 가능해졌습니다.

다음 글에서는 이 Helm Chart를 기반으로 NestJS + NextJS + PostgreSQL + Redis를 통합위치 기반 주유소 정보 시스템 전체 배포를 실습하겠습니다.


 

쿠버네티스,Helm,HelmChart,ConfigMap,Secret,PVC,Ingress,HPA,DevOps,K8s실습

 

Helm Chart 통합 구성에 도움이 될 웹 참고 자료

주제 핵심 내용

기초 구조와 템플릿 방식 helm create로 생성되는 템플릿 구조, ConfigMap 추가 예시 (Helm, Civo.com)
통합 구조의 실제 실무 예 loki-stack 차트에 Deployment, Service, ConfigMap, HPA, Ingress, PVC 등 다양한 템플릿이 포함된 활용 예 (Civo.com)
ConfigMap·Secret의 관리 방식 ConfigMap과 Secret을 분리해서 Helm 템플릿으로 관리하는 실전 패턴 (Stack Overflow, Medium)
Secret 보안 관리 팁 helm-secrets 플러그인이나 외부 Secret Manager를 통한 안전한 Secrets 처리 전략 (GitGuardian 블로그)

문서에 반영하면 좋을 핵심 보강 내용

  • 템플릿 구조에 대한 공식 예시 추가
    helm create로 생성된 차트 구조와 함께, configmap.yaml, secret.yaml, pvc.yaml 등 사용자 정의 템플릿을 추가할 수 있다는 점을 명확히 설명하세요. (Helm)
  • 멀티-리소스 포함 예시 강조
    Loki Stack과 같은 차트가 실제로 Ingress, PVC, HPA까지 통합해 관리하는 사례를 보여줘, 독자에게 실용적인 모범안으로 제시하는 것이 좋습니다. (Civo.com)
  • ConfigMap 및 Secret 접근 전략 비교
    값 직접 삽입 방식 vs. shared Secret 객체 참조 방식 등, 두 가지 접근 방식을 비교 설명하면 독자가 적절한 방식을 선택할 수 있습니다. (Stack Overflow)
  • Helm 기반 Secret 보안 강화 방안 소개
    helm-secrets 같은 플러그인 또는 외부 Secret 관리자 연동 방식으로 Helm에서도 보안성을 확보할 수 있음을 강조하세요. (GitGuardian 블로그)

 

※ 이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다.
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2026/04   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30
글 보관함
반응형