kustomize로 여러 환경에 대한 k8s yaml 매니페스트를 관리하는 방법은 무엇입니까?
커스텀마이즈란?
Kustomize는 계층화를 활용하여 애플리케이션의 기본 설정을 보존하는 Kubernetes 객체용 CLI 구성 관리자입니다. 이는 선언적 YAML 아티팩트를 오버레이하여 원본 매니페스트를 실제로 변경하지 않고 기본 설정을 재정의함으로써 달성됩니다. Kustomize는 kubectl과도 통합됩니다.
Kustomize는 kubernetes 리소스와 해당 필드를 인식하며 다른 도구와 같은 단순한 텍스트 템플릿 솔루션이 아닙니다.
Kustomize를 사용하면 모든 환경(개발, 스테이징, 프로덕션 등)에서 기본 파일 중 하나를 재사용하고 각 환경에 대한 오버레이 사양을 사용할 수 있습니다.
Kustomize는 argo CD와 같은 helm 및 CD 솔루션과 함께 사용할 수도 있습니다.
kustomize checkout을 설치하려면 --> https://kubectl.docs.kubernetes.io/installation/kustomize/
kustomize는 어떻게 작동합니까?
kustomization.yaml
각 디렉터리에는 Kubernetes 개체를 생성하거나 변환하는 방법을 설명하는 리소스 또는 매니페스트의 기본 목록인 kustomization.yaml 파일이 포함되어 있습니다.
Kustomize를 사용하면 템플릿이 없는 원시 YAML 파일을 구성할 수 있으므로 배포와 프로덕션 간에 설정/주석을 쉽게 수정할 수 있습니다.
Kustomize는 패치를 적용하는 2가지 방법을 제공합니다.
patchesStrategicMerge
는 가장 일반적이고 사용하기 쉬운 병합 전략입니다. 체크아웃 패치에 대해 자세히 알아보려면 --> https://kubernetes.io/docs/tasks/manage-kubernetes-objects/kustomization/#customizing기본 폴더
기본 폴더에는 deployment.yaml, service.yaml 및 configmap.yaml과 같은 공통 리소스가 있습니다. 여기에는 초기 매니페스트와 리소스에 대한 네임스페이스 및 레이블이 포함됩니다.
오버레이 폴더
overlays 폴더에는 환경별 오버레이가 있으며 패치를 사용하여 YAML 파일을 정의하고 모든 변경 사항에 대해 기본 위에 오버레이할 수 있습니다.
예제 구조,
기본 configmap 리소스를 생성하고 스테이징 및 프로덕션에 대한 configmap 변수를 변경합니다. 완전한 예제 체크아웃을 얻으려면 --> https://github.com/sureshdsk/kustomize-k8s-example
kustomize-k8s
├── base
│ ├── configmap.yaml
│ ├── kustomization.yaml
└── overlays
├── production
│ ├── configmap-patch.yaml
│ ├── kustomization.yaml
└── staging
├── configmap-patch.yaml
├── kustomization.yaml
기본/configmap.yaml
apiVersion: v1
kind: ConfigMap
metadata:
name: django-configmap
data:
DJANGO_AUTH_PUBLIC_URI: "http://dj.192.168.0.139.sslip.io"
DEBUG: "True"
기본/kustomization.yaml
# common labels to be added on all manifests
commonLabels:
app: demo
# resources that needs to be kustomized
resources:
- configmap.yaml
이제 스테이징 환경에 대한 DJANGO_AUTH_PUBLIC_URI 값을 변경해 보겠습니다.
오버레이/스테이징/configmap-patch.yaml
apiVersion: v1
kind: ConfigMap
metadata:
name: django-configmap
data:
DJANGO_AUTH_PUBLIC_URI: "http://staging.192.168.0.139.sslip.io"
오버레이/스테이징/kustomization.yaml
# prefix to be added to name of the resource
namePrefix: staging-
commonLabels:
env: staging
# directory contains base yaml
bases:
- ../../base
# patch strategy
patchesStrategicMerge:
- configmap-patch.yaml
저장소 복제
git clone [email protected]:sureshdsk/kustomize-k8s-example.git
cd kustomize-k8s-example
매니페스트 미리보기 및 적용
kustomize build
명령을 사용하여 kustomize 출력을 미리 볼 수 있습니다.# preview output
kustomize build overlays/staging
# apply output to kubernetes
kustomize build overlays/staging | kubectl apply -f -
kubectl 플러그인으로 kustomize
kubectl kustomize
를 사용할 수도 있습니다.# preview output
kubectl kustomize overlays/staging
# apply output to kubernetes
kubectl apply -k overlays/staging
자원
Reference
이 문제에 관하여(kustomize로 여러 환경에 대한 k8s yaml 매니페스트를 관리하는 방법은 무엇입니까?), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/kcdchennai/how-to-manage-k8s-yaml-manifests-for-multiple-environments-with-kustomize-450o텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)