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이 명령어는 replicaCount를 5로, service.type을 LoadBalancer로 오버라이드합니다.
✅ 템플릿에서 반영된 값
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.yamlhelm 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.yamlhelm-secrets를 사용하면 values-secrets.yaml을 암호화하여 배포할 수 있어 보안을 강화할 수 있습니다.