Ssoon
Helm : 5.3 - Helm에서 컨테이너 이미지 업데이트하기 본문
🐳 Helm을 이용한 컨테이너 이미지 업데이트하기
Helm은 Kubernetes 환경에서 애플리케이션을 손쉽게 배포하고 관리할 수 있는 패키지 매니저입니다.
이번 글에서는 Helm을 사용해 Deployment 파일의 컨테이너 이미지를 업데이트하고, 실행 중인 애플리케이션을 업그레이드하는 방법을 단계별로 알아보겠습니다.
🚀 Step 1. Helm 차트 설치 (초기 배포)
- _helpers.tpl 파일 초기 설정으로 수정 후 Helm 배포
(⎈|kind-myk8s:N/A) ssoon@DESKTOP-72C919S:~/pacman$ cat << EOF > templates/_helpers.tpl
{{- define "pacman.selectorLabels" -}}
app.kubernetes.io/name: {{ .Chart.Name}}
{{- end }}
EOF
(⎈|kind-myk8s:N/A) ssoon@DESKTOP-72C919S:~/pacman$ helm install pacman .
NAME: pacman
LAST DEPLOYED: Tue Oct 21 23:36:57 2025
NAMESPACE: default
STATUS: deployed
REVISION: 1
TEST SUITE: None
- 이 명령어는 Chart.yaml과 values.yaml을 기반으로 pacman 차트를 클러스터에 설치합니다.
- 배포 후, 현재 배포된 Revision(배포 이력)을 확인하려면 다음 명령어를 사용합니다:
(⎈|kind-myk8s:N/A) ssoon@DESKTOP-72C919S:~/pacman$ helm history pacman
REVISION UPDATED STATUS CHART APP VERSION DESCRIPTION
1 Tue Oct 21 23:36:57 2025 deployed pacman-0.1.0 1.0.0 Install complete
Helm은 각 배포를 Revision으로 관리하며, 이후 업그레이드나 롤백 시 이 정보를 기반으로 동작합니다.
🧩 Step 2. 컨테이너 이미지 버전 업데이트
- 이제 새로운 버전의 컨테이너 이미지를 사용하기 위해 values.yaml 파일을 수정합니다.
(⎈|kind-myk8s:N/A) ssoon@DESKTOP-72C919S:~/pacman$ cat << EOF > values.yaml
image:
repository: quay.io/gitops-cookbook/pacman-kikd
tag: "1.1.0"
pullPolicy: Always
containerPort: 8080
replicaCount: 1
securityContext: {}
EOF
- 이렇게 하면 컨테이너 이미지 태그가 "1.1.0"으로 변경됩니다.
💬 "image.tag" 값은 실제 컨테이너 레지스트리에서 사용할 이미지 버전을 의미합니다.
📄 Step 3. Chart 메타데이터 수정 (Chart.yaml)
- 이제 Chart.yaml의 appVersion을 동일하게 업데이트해야 합니다.
(⎈|kind-myk8s:N/A) ssoon@DESKTOP-72C919S:~/pacman$ cat << EOF > Chart.yaml
apiVersion: v2
name: pacman
description: A Helm chart for Pacman
type: application
version: 0.1.0
appVersion: "1.1.0"
EOF
- 여기서 appVersion은 애플리케이션 자체의 버전을 나타내며, 실제 컨테이너 이미지 버전과 맞추는 것이 일반적입니다.
- 반면 version은 Helm Chart의 버전으로, 템플릿 구조나 차트의 정의가 변경될 때 업데이트합니다.
appVersion은 애플리케이션 버전, version은 Helm Chart 버전입니다.
둘은 독립적으로 관리됩니다.
🔄 Step 4. Helm 업그레이드 실행
- 이제 수정된 값을 반영하기 위해 다음 명령어로 차트를 업그레이드합니다.
(⎈|kind-myk8s:N/A) ssoon@DESKTOP-72C919S:~/pacman$ helm upgrade pacman .
Release "pacman" has been upgraded. Happy Helming!
NAME: pacman
LAST DEPLOYED: Tue Oct 21 23:39:48 2025
NAMESPACE: default
STATUS: deployed
REVISION: 2
TEST SUITE: None
- REVISION: 2로 표시되며, 이는 새로운 배포가 완료되었음을 의미합니다.
- 이제 다시 helm history pacman 명령으로 배포 이력을 확인해보면 다음과 같이 표시됩니다.
(⎈|kind-myk8s:N/A) ssoon@DESKTOP-72C919S:~/pacman$ helm history pacman
REVISION UPDATED STATUS CHART APP VERSION DESCRIPTION
1 Tue Oct 21 23:36:57 2025 superseded pacman-0.1.0 1.0.0 Install complete
2 Tue Oct 21 23:39:48 2025 deployed pacman-0.1.0 1.1.0 Upgrade complete
helm upgrade는 기존 배포를 새로운 Revision으로 대체하며, 변경 사항은 자동으로 반영됩니다.
⏪ Step 5. 이전 버전으로 롤백하기
- Helm은 업그레이드뿐 아니라 이전 버전으로 Rollback도 지원합니다.
예를 들어, Revision 1로 되돌리고 싶다면 아래 명령을 실행합니다: 성공 시 다음과 같은 메시지가 표시됩니다.
(⎈|kind-myk8s:N/A) ssoon@DESKTOP-72C919S:~/pacman$ helm rollback pacman 1
Rollback was a success! Happy Helming!
- 롤백 후 이력을 다시 확인해 보면 다음과 같습니다.
(⎈|kind-myk8s:N/A) ssoon@DESKTOP-72C919S:~/pacman$ helm history pacman
REVISION UPDATED STATUS CHART APP VERSION DESCRIPTION
1 Tue Oct 21 23:36:57 2025 superseded pacman-0.1.0 1.0.0 Install complete
2 Tue Oct 21 23:39:48 2025 superseded pacman-0.1.0 1.1.0 Upgrade complete
3 Tue Oct 21 23:40:53 2025 deployed pacman-0.1.0 1.0.0 Rollback to 1
helm rollback은 이전 Revision으로 손쉽게 되돌릴 수 있는 강력한 기능입니다.
⚙️ Step 6. YAML 파일을 통한 Override 적용
- Helm은 --set 옵션 외에도 별도의 Override YAML 파일을 이용해 값을 덮어쓸 수 있습니다.
- 예를 들어 newvalues.yaml 파일을 생성하고 다음과 같이 작성합니다:
(⎈|kind-myk8s:N/A) ssoon@DESKTOP-72C919S:~/pacman$ cat << EOF > newvalues.yaml
image:
tag: "1.2.0"
EOF
- 이제 이 파일을 이용해 Helm 템플릿을 렌더링합니다:
(⎈|kind-myk8s:N/A) ssoon@DESKTOP-72C919S:~/pacman$ helm template pacman -f newvalues.yaml .
...
spec:
containers:
- image: "quay.io/gitops-cookbook/pacman-kikd:1.2.0" #📌 이미지 지정 placeholder, 이미지 태그가 있으면 넣고, 없으면 Chart.yaml에 값을 설정
...
- 렌더링된 결과를 보면 values.yaml의 기존 설정은 그대로 유지되지만,
image.tag 값만 "1.2.0"으로 변경되어 반영됩니다.
-f newvalues.yaml 옵션을 사용하면 원본 설정을 유지한 채 특정 값만 간단히 덮어쓸 수 있습니다.
📘 Figure: Helm Upgrade Lifecycle
┌──────────────────────────────────────────────┐
│ 1️⃣ helm install → 최초 배포 (revision 1) │
│ 2️⃣ helm upgrade → 새 이미지로 업데이트 (rev 2) │
│ 3️⃣ helm rollback → 이전 버전으로 복원 (rev 3) │
│ 4️⃣ helm history → 전체 이력 확인 │
└──────────────────────────────────────────────┘
📌 핵심 요약
- helm install 명령으로 애플리케이션을 초기 배포할 수 있습니다.
- values.yaml의 image.tag와 Chart.yaml의 appVersion을 업데이트하여 새 버전으로 업그레이드합니다.
- helm upgrade로 변경 사항을 반영하면 새로운 Revision이 생성됩니다.
- helm rollback으로 이전 Revision으로 쉽게 복구할 수 있습니다.
- -f newvalues.yaml 옵션을 사용하면 설정 파일로 특정 값만 Override 할 수 있습니다.
🎯 결론:
Helm은 애플리케이션 배포, 업그레이드, 롤백을 모두 체계적으로 관리할 수 있는 강력한 도구입니다.
특히 버전 관리와 배포 이력 추적이 용이하여 GitOps 환경에 매우 적합합니다.
'CICD Study [1기]' 카테고리의 다른 글
| Helm : 5.5 Deploying a Chart from a Repository (0) | 2025.10.19 |
|---|---|
| Helm : 5.4 - Helm 차트 패키징 및 배포 (0) | 2025.10.19 |
| Helm : 5.2 - 템플릿 간 문장 재사용 (0) | 2025.10.19 |
| Helm : 5.1 - Helm 프로젝트 생성 (0) | 2025.10.19 |
| Kustomize : Kustomize에서 ConfigMap 생성하기 (0) | 2025.10.18 |
Comments