Ssoon
Kustomize : Kustomize에서 컨테이너 이미지 업데이트하기 본문
🔄 Kustomize로 컨테이너 이미지 손쉽게 업데이트하기
소프트웨어 개발에서 가장 중요하고 자주 사용되는 작업 중 하나는 버그 수정이나 새로운 기능을 포함한 새 버전으로 애플리케이션을 업데이트하는 것입니다.
Kubernetes 환경에서 이는 새로운 컨테이너 이미지를 만들고, tag 섹션을 사용해 해당 이미지의 버전을 명명해야 함을 의미합니다.
Kustomize는 원본 YAML 파일을 수정하지 않고도 이러한 이미지 업데이트를 매우 효율적으로 관리할 수 있는 방법을 제공합니다.
"Kustomize를 사용하면 deployment.yaml 원본을 변경하지 않고도 배포될 컨테이너 이미지의 버전을 쉽게 관리할 수 있습니다."
📄 kustomization.yaml의 images 섹션 사용하기
Kustomize를 사용하여 컨테이너 이미지를 업데이트하는 방법은 kustomization.yaml 파일에 images 섹션을 추가하는 것입니다.
문제 상황 (Problem):
다음과 같이 1.0.0 태그를 사용하는 기존 deployment.yaml 파일
(⎈|kind-myk8s:N/A) ssoon@DESKTOP-72C919S:~/pacman$ cat deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: pacman-kikd
namespace: pacman
labels:
app.kubernetes.io/name: pacman-kikd
spec:
replicas: 1
selector:
matchLabels:
app.kubernetes.io/name: pacman-kikd
template:
metadata:
labels:
app.kubernetes.io/name: pacman-kikd
spec:
containers:
- image: lordofthejars/pacman-kikd:1.0.0 # <-- 현재 1.0.0 버전이 배포됨
imagePullPolicy: Always
name: pacman-kikd
ports:
- containerPort: 8080
name: http
protocol: TCP
해결책 (Solution):
kustomization.yaml 파일에 images 섹션을 추가하여 1.0.1 버전으로 업데이트
(⎈|kind-myk8s:N/A) ssoon@DESKTOP-72C919S:~/pacman$ cat <<EOF >> kustomization.yaml
images:
- name: lordofthejars/pacman-kikd
newTag: 1.0.1
EOF
(⎈|kind-myk8s:N/A) ssoon@DESKTOP-72C919S:~/pacman$ cat kustomization.yaml
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
resources:
- ./namespace.yaml
- ./deployment.yaml
- ./service.yaml
images:
- name: lordofthejars/pacman-kikd # <-- 업데이트할 이미지의 이름을 설정
newTag: 1.0.1 # <-- 이미지에 적용할 새 태그 값을 설정
- name: deployment.yaml에서 찾을 대상 이미지의 이름(태그 제외)을 지정합니다.
- newTag: Kustomize가 빌드 시 적용할 새로운 태그를 지정합니다.
"kustomization.yaml의 images 섹션은 특정 이미지(name)를 찾아 새로운 버전(newTag)으로 교체하도록 Kustomize에 지시합니다."
🔍 변경 사항 확인하기
images 섹션을 추가한 후, kubectl의 dry-run이나 kustomize CLI를 사용하여 deployment.yaml 파일의 출력이 새 태그 버전으로 변경되었는지 확인할 수 있습니다.
(⎈|kind-myk8s:N/A) ssoon@DESKTOP-72C919S:~/pacman$ kustomize build
apiVersion: v1
kind: Namespace
metadata:
name: pacman
---
apiVersion: v1
kind: Service
metadata:
labels:
app.kubernetes.io/name: pacman-kikd
name: pacman-kikd
namespace: pacman
spec:
ports:
- name: http
port: 8080
targetPort: 8080
selector:
app.kubernetes.io/name: pacman-kikd
---
apiVersion: apps/v1
kind: Deployment
metadata:
labels:
app.kubernetes.io/name: pacman-kikd
name: pacman-kikd
namespace: pacman
spec:
replicas: 1
selector:
matchLabels:
app.kubernetes.io/name: pacman-kikd
template:
metadata:
labels:
app.kubernetes.io/name: pacman-kikd
spec:
containers:
- image: lordofthejars/pacman-kikd:1.0.1 # <-- kustomization.yaml에 설정된 버전
imagePullPolicy: Always
name: pacman-kikd
ports:
- containerPort: 8080
name: http
protocol: TCP
실행 결과:
kustomize build 명령어의 출력 결과는 다음과 같이 Deployment의 이미지 태그가 1.0.1로 변경된 것을 보여줍니다.
중요한 점: Kustomize는 **비침해적(not intrusive)**입니다.
이것이 의미하는 바는, kustomize build의 출력은 1.0.1로 변경되었지만, 여러분이 직접 작성한 원본 deployment.yaml 파일은 여전히 기존 태그(1.0.0)를 그대로 유지한다는 것입니다.
"Kustomize는 원본 YAML 파일을 절대 수정하지 않고, 오직 빌드 시(또는 apply -k 시)에만 변경 사항을 메모리상에서 덧씌워 적용합니다."
⌨️ CLI 명령어로 이미지 편리하게 수정하기
kustomization.yaml 파일의 newTag 필드를 직접 수정하는 방법도 있지만, kustomize CLI 도구를 사용하면 이 과정을 자동화할 수 있습니다.
kustomization.yaml 파일이 있는 동일한 디렉터리에서 다음 명령어를 실행합니다.
(⎈|kind-myk8s:N/A) ssoon@DESKTOP-72C919S:~/pacman$ kustomize edit set image lordofthejars/pacman-kikd:1.0.2
이 명령어를 실행한 후 kustomization.yaml 파일의 내용을 확인해 보면 newTag 필드가 1.0.2로 자동 업데이트된 것을 볼 수 있습니다.
(⎈|kind-myk8s:N/A) ssoon@DESKTOP-72C919S:~/pacman$ cat kustomization.yaml
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
resources:
- ./namespace.yaml
- ./deployment.yaml
- ./service.yaml
images:
- name: lordofthejars/pacman-kikd
newTag: 1.0.2 # <-- CLI 명령에 의해 자동으로 1.0.2로 변경됨
"kustomize edit set image [이미지명]:[새 태그] 명령어를 사용하면 kustomization.yaml 파일을 열지 않고도 이미지 버전을 업데이트할 수 있습니다."
📌 핵심 요약
- kustomization.yaml 파일의 images 섹션을 사용하여 컨테이너 이미지의 태그를 업데이트할 수 있습니다.
- images 섹션은 name (대상 이미지)과 newTag (새로운 버전 태그) 필드를 사용합니다.
- Kustomize는 **비침해적(not intrusive)**이므로 원본 deployment.yaml 파일은 변경되지 않으며, kustomize build 시에만 변경 사항이 적용된 결과가 생성됩니다.
- kustomize edit set image [이미지명]:[새 태그] CLI 명령어를 사용하면 kustomization.yaml 파일을 직접 수정하지 않고도 이미지 태그를 편리하게 업데이트할 수 있습니다.
'CICD Study [1기]' 카테고리의 다른 글
| Kustomize : 여러 환경에 배포하기 (0) | 2025.10.14 |
|---|---|
| Kustomize : Kustomize에서 Kubernetes 필드 업데이트하기 (0) | 2025.10.14 |
| Kustomize : Kustomize를 사용한 Kubernetes 리소스 배포 (0) | 2025.10.14 |
| Containers (0) | 2025.10.14 |
| Container Registry, Git Repository, Local Kubernetes Cluster (0) | 2025.10.14 |