kustomize 사용하면 여러 목적으로 원시의 템플릿이없는 YAML 파일을 사용자 정의 할 수 있으며, 원래 YAML은 그대로 손대지 않고 사용할 수 있습니다.
kustomize Kubernetes를 대상으로합니다. Kubernetes 스타일 API 객체를 이해하고 패치 할 수 있습니다. make 그것이하는 일이 파일로 선언된다는 점에서, 그것은 편집 된 텍스트를 제출한다는 점에서 sed 와 같습니다.
이 도구는 SIG-CLI (KEP)가 후원합니다.
Kubectl의 최근 버전에 포함 된 Kustomize 버전을 찾으려면 kubectl version 실행하십시오.
> kubectl version --client
Client Version: v1.31.0
Kustomize Version: v5.4.2v2.0.3의 Kustomize 빌드 흐름을 Kubectl v1.14에 추가 하였다. kubectl의 kustomize 흐름은 kubectl v1.21까지 v2.0.3에서 동결 된 상태로 유지되었으며,이를 v4.0.5로 업데이트했습니다. 앞으로 정기적으로 업데이트되며 이러한 업데이트는 Kubernetes 릴리스 노트에 반영됩니다.
| kubectl 버전 | Kustomize 버전 |
|---|---|
| <v1.14 | N/A |
| v1.14-v1.20 | v2.0.3 |
| v1.21 | v4.0.5 |
| v1.22 | v4.2.0 |
| v1.23 | v4.4.1 |
| v1.24 | v4.5.4 |
| v1.25 | v4.5.7 |
| v1.26 | v4.5.7 |
| v1.27 | v5.0.1 |
Kubectl 통합을 사용하기위한 예제 및 가이드는 Kubernetes 문서를 참조하십시오.
YAML 리소스 파일 (배포, 서비스, 구성 맵 등)이 포함 된 일부 디렉토리에서는 Kustomization 파일을 만듭니다.
이 파일은 해당 리소스를 선언하고 자료에 적용 할 수있는 사용자 정의를 선언해야합니다. 예를 들어 공통 레이블을 추가합니다 .
base: kustomization + resources
kustomization.yaml deployment.yaml service.yaml
+---------------------------------------------+ +-------------------------------------------------------+ +-----------------------------------+
| apiVersion: kustomize.config.k8s.io/v1beta1 | | apiVersion: apps/v1 | | apiVersion: v1 |
| kind: Kustomization | | kind: Deployment | | kind: Service |
| commonLabels: | | metadata: | | metadata: |
| app: myapp | | name: myapp | | name: myapp |
| resources: | | spec: | | spec: |
| - deployment.yaml | | selector: | | selector: |
| - service.yaml | | matchLabels: | | app: myapp |
| configMapGenerator: | | app: myapp | | ports: |
| - name: myapp-map | | template: | | - port: 6060 |
| literals: | | metadata: | | targetPort: 6060 |
| - KEY=value | | labels: | +-----------------------------------+
+---------------------------------------------+ | app: myapp |
| spec: |
| containers: |
| - name: myapp |
| image: myapp |
| resources: |
| limits: |
| memory: "128Mi" |
| cpu: "500m" |
| ports: |
| - containerPort: 6060 |
+-------------------------------------------------------+
파일 구조 :
~/someApp ├── deployment.yaml ├── kustomization.yaml └── service.yaml
이 디렉토리의 리소스는 다른 사람의 구성의 포크 일 수 있습니다. 그렇다면 리소스를 직접 수정하지 않기 때문에 소스 자료에서 개선을 캡처하기 위해 쉽게 리바이스 할 수 있습니다.
다음과 함께 맞춤형 YAML을 생성하십시오.
kustomize build ~/someApp
YAML은 클러스터에 직접 적용 할 수 있습니다.
kustomize build ~/someApp | kubectl apply -f -
공통 기반을 수정하는 오버레이를 사용하여 개발 , 준비 및 생산 과 같은 구성의 전통적인 변형을 관리합니다.
overlay: kustomization + patches
kustomization.yaml replica_count.yaml cpu_count.yaml
+-----------------------------------------------+ +-------------------------------+ +------------------------------------------+
| apiVersion: kustomize.config.k8s.io/v1beta1 | | apiVersion: apps/v1 | | apiVersion: apps/v1 |
| kind: Kustomization | | kind: Deployment | | kind: Deployment |
| commonLabels: | | metadata: | | metadata: |
| variant: prod | | name: myapp | | name: myapp |
| resources: | | spec: | | spec: |
| - ../../base | | replicas: 80 | | template: |
| patches: | +-------------------------------+ | spec: |
| - path: replica_count.yaml | | containers: |
| - path: cpu_count.yaml | | - name: myapp |
+-----------------------------------------------+ | resources: |
| limits: |
| memory: "128Mi" |
| cpu: "7000m" |
+------------------------------------------+
파일 구조 :
~/someApp ├── base │ ├── deployment.yaml │ ├── kustomization.yaml │ └── service.yaml └── overlays ├── development │ ├── cpu_count.yaml │ ├── kustomization.yaml │ └── replica_count.yaml └── production ├── cpu_count.yaml ├── kustomization.yaml └── replica_count.yaml
위의 (1)에서 작업을 수행하고 base someApp 하위 디렉토리로 옮긴 다음 오버레이를 형제 디렉토리에 놓습니다.
오버레이는 또 다른 kustomization 일 뿐이며,베이스를 참조하고 해당베이스에 적용되는 패치를 참조합니다.
이 배열을 사용하면 git 로 구성을 쉽게 관리 할 수 있습니다. 베이스에는 다른 사람이 관리하는 업스트림 저장소의 파일이있을 수 있습니다. 오버레이는 당신이 소유 한 저장소에있을 수 있습니다. 디스크의 형제 자매로 리포 클론을 정렬하면 git 서브 모듈이 필요하지 않습니다 (하위 모듈 팬이라면 잘 작동하지만).
Yaml을 생성하십시오
kustomize build ~ /someApp/overlays/productionYAML은 클러스터에 직접 적용 할 수 있습니다.
kustomize build ~ /someApp/overlays/production | kubectl apply -f -
Kubernetes 커뮤니티에 참여하는 것은 Kubernetes 행동 강령에 의해 관리됩니다.