글이 이전되었습니다. 링크: https://malwareanalysis.tistory.com/402
안녕하세요. 이 글은 kustomize가 무엇인지 소개합니다.
1. Kustomize란?
kustomize는 쿠버네티스 리소스(yaml파일)를 변경하지 않고 필드를 재정의하여 새로운 쿠버네티스 리소스를 생성하는 도구입니다.
2. 실습하면서 살펴보기
글로 보는 것보다 직접 실습하면 바로 어떤 도구인지 알 수 있을 것 같아요! 제 github repo(https://github.com/choisungwook/kustomize-example)를 다운로드 받고 example_1폴더에 있는 파일을 살펴봅시다.
pod.yaml과 kustomization.yaml파일이 실습에 필요한 파일입니다. kustomization.yaml파일은 kustomize를 실행하기 위한 설정 파일입니다. 아직 알아가는 단계이니 자세한 설명은 생략하겠습니다
pod.yaml파일은 nginx:latest이미지를 사용하여 nginx pod를 실행하는 간단한 예제입니다.
apiVersion: v1
kind: Pod
metadata:
name: nginx
labels:
name: nginx
spec:
containers:
- name: nginx
image: nginx:latest
resources:
limits:
memory: "64Mi"
cpu: "100m"
이제 kustomize 도구를 사용해보겠습니다. kustomize는 kubectl에 내장되어 별도 설치가 필요 없습니다. kubectl kustomize명령어로 kustomize를 실행할 수 있는데요!. stdout으로 실행결과가 출력됩니다.
kubectl kustomize ./
실행결과를 보시면 pod.yaml에 정의되어 있는 image가 변경되었습니다. 그리고 놀랍게도 pod.yaml은 변경되지 않았습니다.
이미지가 변경된 이유는 kustomization.yaml파일 설정때문입니다. nginx image를 nginx:1.23.1로 변경하라고 설정되어 있습니다.
resources:
- pod.yaml
images:
- name: nginx
newName: nginx
newTag: 1.23.1
kustomize 실행결과를 쉘 파이프라인과 kubectl apply -로 쿠버네티스 리소스를 생성할 수 있습니다.
kubectl kustomize ./ | kubectl apply -f -
생성된 pod의 이미지를 확인하면 nginx:1.23.1입니다.
kubectl describe po nginx | grep -i image
3. 마치며
실습을 해봐서 아시는 것처럼, kustomize는 기존 쿠버네티스 리소스 정의(yaml파일)을 변경하지 않고 필드를 재정의하여 새로운 쿠버네티스 리소스를 생성하는 도구입니다. 필드를 재정의 하는 것 때문에 kustomize가 재사용성이 좋다고 표현하기도 합니다.
끝으로, kustomize는 helm과 많이 비교대상으로 언급이 되고 있는데요. helm은 템플릿에 정의된 필드의 값만 수정할 수 있습니다. 하지만 kustomize는 새로운 필드를 삽입할 수도 있고 기존 필드 값을 변경할 수 있습니다.그리고 helm은 버전(rivision)관리가 되지만 kustomize는 버전관리가 없습니다.
결과적으로, helm과 kustomize를 같이 사용하여 서로 부족한 점을 보완할 수 있습니다.
'연재 시리즈' 카테고리의 다른 글
kustomize 3편 - resources필드 의미 (0) | 2022.08.03 |
---|---|
kustomize 2편 - kustomize 컨셉 (0) | 2022.08.03 |
오퍼레이터 5주차 postgresql (0) | 2022.06.20 |
쿠버네티스 오퍼레이터 스터디 3주차 - strimzi operator를 이용한 카프카 토픽 읽기/쓰기 작업 (0) | 2022.06.12 |
쿠버네티스 오퍼레이터 스터디 3주차 - strimzi operator를 이용한 카프카 토픽 생성 (0) | 2022.06.12 |