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.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
을 암호화하여 배포할 수 있어 보안을 강화할 수 있습니다.