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가지 방법을 제공합니다.
  • 패치 전략적 병합
  • 패치Json6902
  • 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 플러그인으로 kustomizekubectl kustomize를 사용할 수도 있습니다.

    # preview output
    kubectl kustomize overlays/staging
    
    # apply output to kubernetes
    kubectl apply -k overlays/staging
    


    자원


  • Kustomize website
  • kubernetes tutorial
  • Argo CD - Kustomize
  • Kustomize - Helm chart
  • 좋은 웹페이지 즐겨찾기