kustomize позволяет настроить необработанные, без шаблонов YAML-файлов для нескольких целей, оставляя оригинальный YAML нетронутым и пригодным для использования, как есть.
kustomize Targets Kubernetes; Он понимает и может исправлять объекты API стиля Kubernetes. Это make на то, что то, что он делает, объявляется в файле, и это похоже на sed , поскольку он испускает отредактированный текст.
Этот инструмент спонсируется SIG-CLI (KEP).
Чтобы найти версию Kustomize, встроенную в недавние версии Kubectl, запустите kubectl version :
> kubectl version --client
Client Version: v1.31.0
Kustomize Version: v5.4.2Поток сборки Kustomize на V2.0.3 был добавлен в Kubectl v1.14. Поток Kustomize в Kubectl оставался замороженным на V2.0.3 до Kubectl v1.21, который обновил его до 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) выше, переместите ее в подкаталог someApp называемый base , затем поместите накладки в каталог братьев и сестер.
Оверловое - это просто еще одна кустамизация, ссылаясь на базу и ссылаясь на патчи, чтобы применить эту базу.
Это расположение позволяет легко управлять вашей конфигурацией с помощью git . База может иметь файлы из репозитория вверх по течению, управляемым кем -то другим. Наложения могут быть в хранилище, которое вы владеете. Аранжировка клонов репо как братьев и сестер на диске позволяет избежать необходимости в подмодулях GIT (хотя это работает нормально, если вы фанат подмодуля).
Генерировать YAML с
kustomize build ~ /someApp/overlays/productionYAML может быть напрямую применен к кластеру:
kustomize build ~ /someApp/overlays/production | kubectl apply -f -
Участие в сообществе Kubernetes регулируется Кодексом поведения Kubernetes.