kustomize le permite personalizar archivos YAML sin plantilla y sin plantilla para múltiples fines, dejando el YAML original intacto y utilizable como está.
kustomize objetivo Kubernetes; Entiende y puede parchear los objetos API de estilo Kubernetes. Es como make , ya que lo que hace se declara en un archivo, y es como sed , ya que emite texto editado.
Esta herramienta está patrocinada por SIG-CLI (KEP).
Para encontrar la versión Kustomize integrada en versiones recientes de Kubectl, ejecute kubectl version :
> kubectl version --client
Client Version: v1.31.0
Kustomize Version: v5.4.2El flujo de compilación Kustomize en V2.0.3 se agregó a Kubectl V1.14. El flujo de kustomización en Kubectl permaneció congelado en V2.0.3 hasta Kubectl V1.21, lo que lo actualizó a V4.0.5. Se actualizará regularmente en el futuro, y dichas actualizaciones se reflejarán en las notas de la versión de Kubernetes.
| Versión kubectl | Versión de 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 |
Para ver ejemplos y guías para usar la integración de Kubectl, consulte la documentación de Kubernetes.
En algún directorio que contiene sus archivos de recursos Yaml (implementaciones, servicios, configmaps, etc.), cree un archivo de kustomización.
Este archivo debe declarar esos recursos y cualquier personalización para aplicarse a ellos, por ejemplo, agregue una etiqueta común .
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 |
+-------------------------------------------------------+
Estructura del archivo:
~/someApp ├── deployment.yaml ├── kustomization.yaml └── service.yaml
Los recursos en este directorio podrían ser una bifurcación de la configuración de otra persona. Si es así, puede rebotar fácilmente del material fuente para capturar mejoras, porque no modifica los recursos directamente.
Genere YAML personalizado con:
kustomize build ~/someApp
El YAML se puede aplicar directamente a un clúster:
kustomize build ~/someApp | kubectl apply -f -
Administre las variantes tradicionales de una configuración, como el desarrollo , la estadificación y la producción , utilizando superposiciones que modifican una base común.
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" |
+------------------------------------------+
Estructura del archivo:
~/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
Tome el trabajo del paso (1) anterior, muévalo a un subdirectorio someApp llamado base , luego coloque superposiciones en un directorio de hermanos.
Una superposición es solo otra kustomización, que se refiere a la base y se refiere a parches para aplicar a esa base.
Este arreglo facilita la administración de su configuración con git . La base podría tener archivos de un repositorio ascendente administrado por otra persona. Las superposiciones podrían estar en un repositorio que posee. Organizar los clones de reposition como hermanos en el disco evita la necesidad de submódulos GIT (aunque eso funciona bien, si es un ventilador de submódulos).
Generar yaml con
kustomize build ~ /someApp/overlays/productionEl YAML se puede aplicar directamente a un clúster:
kustomize build ~ /someApp/overlays/production | kubectl apply -f -
La participación en la comunidad de Kubernetes se rige por el Código de Conducta de Kubernetes.