Helm Values와 오버라이딩 전략

Helm Values와 오버라이딩 전략

6️⃣ Helm Values와 오버라이딩 전략


Helm의 Values 파일은 배포 환경에서 유연한 설정을 가능하게 해줍니다. 이 섹션에서는 Helm에서 Values 파일을 어떻게 활용하고 오버라이딩 할 수 있는지에 대해 알아보겠습니다.


1 기본 values.yaml 활용

Helm에서 values.yaml 파일은 기본 설정 파일로, 차트를 배포할 때 기본적으로 사용되는 값들을 정의합니다.

📌 기본 values.yaml 예시

replicaCount: 3
image:
  repository: nginx
  tag: latest
service:
  type: ClusterIP

이 파일에서 replicaCount, image.repository, service.type 등의 값을 정의하고, 이를 템플릿에서 사용할 수 있습니다.

✅ 템플릿에서 values.yaml 활용

spec:
  replicas: {{ .Values.replicaCount }}
  containers:
    - name: nginx
      image: "{{ .Values.image.repository }}:{{ .Values.image.tag }}"
      ports:
        - containerPort: 80

위와 같이 values.yaml에 정의된 값을 Helm 템플릿에서 사용할 수 있습니다.


2 --set을 이용한 명령줄 값 오버라이딩

Helm 차트를 설치하거나 업그레이드할 때 --set 플래그를 사용하면 명령줄에서 직접 값을 오버라이딩할 수 있습니다.

📌 명령줄에서 --set 사용 예시

helm install my-app my-chart --set replicaCount=5 --set service.type=LoadBalancer

이 명령어는 replicaCount5로, service.typeLoadBalancer로 오버라이드합니다.

✅ 템플릿에서 반영된 값

spec:
  replicas: {{ .Values.replicaCount }}
  service:
    type: {{ .Values.service.type }}

위 템플릿에서 --set으로 전달한 값들이 실제 배포 시 반영됩니다.


3 -f custom-values.yaml로 커스텀 설정 적용

Helm은 -f 플래그를 사용하여 다른 values.yaml 파일을 지정할 수 있습니다. 이를 통해 환경별 설정이나 커스텀 설정을 적용할 수 있습니다.

📌 custom-values.yaml 예시

replicaCount: 5
image:
  repository: custom-nginx
  tag: stable

📌 Helm 명령어로 적용

helm install my-app my-chart -f custom-values.yaml

이 명령어는 custom-values.yaml 파일에 정의된 값을 기본 values.yaml을 덮어쓰며 적용합니다.


4 환경별 Values 파일 사용 전략 (dev, staging, prod)

Helm을 사용하면 다양한 환경에 따라 다른 설정을 적용할 수 있습니다. 일반적으로 dev, staging, prod 환경을 위한 별도의 values 파일을 준비하여 사용하는 전략이 유용합니다.

📌 values-dev.yaml (개발 환경)

replicaCount: 1
image:
  repository: nginx
  tag: dev

📌 values-prod.yaml (프로덕션 환경)

replicaCount: 3
image:
  repository: nginx
  tag: stable

📌 Helm 명령어로 환경별 값 적용

helm install my-app my-chart -f values-dev.yaml
helm install my-app my-chart -f values-prod.yaml

이 방식은 환경별로 다르게 설정된 값을 적용할 수 있어 매우 유용합니다.


5 Secret 관리 및 보안 강화 (helm-secrets 활용)

helm-secrets민감한 데이터를 안전하게 관리하기 위한 Helm 플러그인입니다. 예를 들어, values.yaml에 민감한 정보가 포함될 수 있는데, 이를 암호화하고 관리할 수 있습니다.

📌 helm-secrets 설치

helm plugin install https://github.com/jkroepke/helm-secrets

📌 secrets.yaml 파일 예시

apiVersion: v1
kind: Secret
metadata:
  name: db-credentials
data:
  username: {{ .Values.db.username | b64enc | quote }}
  password: {{ .Values.db.password | b64enc | quote }}

📌 values-secrets.yaml 파일 예시

db:
  username: myuser
  password: mysecretpassword

📌 암호화된 values-secrets.yaml 파일 사용

helm secrets install my-app my-chart -f values-secrets.yaml

helm-secrets를 사용하면 values-secrets.yaml을 암호화하여 배포할 수 있어 보안을 강화할 수 있습니다.

RSS Feed
마지막 수정일자