kustomize können Sie rohe, vorlagenfreie YAML-Dateien für mehrere Zwecke anpassen, sodass der ursprüngliche YAML so unberührt und nutzbar ist.
kustomize Targets Kubernetes; Es versteht und kann Kubernetes -API -Objekte stylen. Es ist wie make , in dem, was es tut, in einer Datei deklariert wird, und es ist wie sed , da es den bearbeiteten Text ausgibt.
Dieses Tool wird von SIG-Cli (KEP) gesponsert.
Um die Kustomize -Version zu finden, die in den neuesten Versionen von Kubectl eingebettet ist, führen Sie kubectl version aus:
> kubectl version --client
Client Version: v1.31.0
Kustomize Version: v5.4.2Der Kustomize Build Flow bei V2.0.3 wurde zu Kubectl V1.14 hinzugefügt. Der Kustomize -Fluss in Kubectl blieb bis kubectl v1.21 eingefroren, was ihn auf v4.0.5 aktualisierte. Es wird regelmäßig in Zukunft aktualisiert, und solche Aktualisierungen werden in den Kubernetes -Versionshinweise widerspiegelt.
| Kubectl -Version | Kustomize -Version |
|---|---|
| <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 |
Beispiele und Anleitungen zur Verwendung der Kubectl -Integration finden Sie in der Kubernetes -Dokumentation.
Erstellen Sie in einem Verzeichnis, das Ihre YAML -Ressourcendateien (Bereitstellungen, Dienste, configMaps usw.) enthält, eine Kustomisierungsdatei.
Diese Datei sollte diese Ressourcen deklarieren und jede Anpassung, die sich für sie anwendet, z. B. ein gemeinsames Etikett hinzufügen .
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 |
+-------------------------------------------------------+
Dateistruktur:
~/someApp ├── deployment.yaml ├── kustomization.yaml └── service.yaml
Die Ressourcen in diesem Verzeichnis könnten eine Gabelung der Konfiguration eines anderen sein. In diesem Fall können Sie problemlos aus dem Quellmaterial wiederhergestellt werden, um Verbesserungen zu erfassen, da Sie die Ressourcen nicht direkt ändern.
Generieren Sie angepasste YAML mit:
kustomize build ~/someApp
Der YAML kann direkt auf einen Cluster angewendet werden:
kustomize build ~/someApp | kubectl apply -f -
Verwalten Sie herkömmliche Varianten einer Konfiguration - wie Entwicklung , Inszenierung und Produktion - unter Verwendung von Overlays, die eine gemeinsame Basis ändern.
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" |
+------------------------------------------+
Dateistruktur:
~/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
Nehmen Sie die Arbeit von Schritt (1) oben, bewegen Sie sie in ein someApp -Unterverzeichnis namens base und legen Sie Overlays in ein Geschwisterverzeichnis.
Ein Overlay ist nur eine weitere Kustomisierung, die sich auf die Basis bezieht und sich auf Patches bezieht, die für diese Basis gelten.
Diese Anordnung erleichtert die Verwaltung Ihrer Konfiguration mit git . Die Basis könnte Dateien von einem Upstream -Repository haben, das von jemand anderem verwaltet wird. Die Overlays könnten sich in einem Repository befinden, das Sie besitzen. Das Anordnen der Repo -Klone als Geschwister auf der Festplatte vermeidet die Notwendigkeit von Git -Submodules (obwohl dies einwandfrei funktioniert, wenn Sie ein Submodul -Lüfter sind).
Yaml erzeugen mit
kustomize build ~ /someApp/overlays/productionDer YAML kann direkt auf einen Cluster angewendet werden:
kustomize build ~ /someApp/overlays/production | kubectl apply -f -
Die Teilnahme an der Kubernetes -Community unterliegt dem Kubernetes -Verhaltenskodex.