it-wiki:kubernetes:deployments_mit_kustomize
Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
Beide Seiten der vorigen RevisionVorhergehende ÜberarbeitungNächste Überarbeitung | Vorhergehende Überarbeitung | ||
it-wiki:kubernetes:deployments_mit_kustomize [2024/03/13 11:56] – [Konfiguration für die Testumgebung mit geänderten Porteinstellungen:] marko | it-wiki:kubernetes:deployments_mit_kustomize [2024/03/13 12:33] (aktuell) – [Fazit] marko | ||
---|---|---|---|
Zeile 6: | Zeile 6: | ||
==== Konfiguration für die Dev-Umgebung: | ==== Konfiguration für die Dev-Umgebung: | ||
- | < | + | < |
kind: Service | kind: Service | ||
apiVersion: v1 | apiVersion: v1 | ||
Zeile 21: | Zeile 21: | ||
==== Konfiguration für die Testumgebung mit geänderten Porteinstellungen: | ==== Konfiguration für die Testumgebung mit geänderten Porteinstellungen: | ||
- | < | + | < |
kind: Service | kind: Service | ||
apiVersion: v1 | apiVersion: v1 | ||
Zeile 38: | Zeile 38: | ||
Kustomize kann diese Probleme lösen, indem es die Anpassung bestehender Ressourcen vereinfacht und automatisiert. Dabei arbeitet Kustomize nach einem einfachen Grundkonzept: | Kustomize kann diese Probleme lösen, indem es die Anpassung bestehender Ressourcen vereinfacht und automatisiert. Dabei arbeitet Kustomize nach einem einfachen Grundkonzept: | ||
+ | \\ | ||
+ | |||
{{ : | {{ : | ||
+ | \\ | ||
+ | |||
+ | Schauen wir uns einmal an, wie wir unser Beispiel mit den Porteinstellungen in Kustomize umsetzen können. Als Erstes muss eine // | ||
+ | |||
+ | <code yaml> | ||
+ | # | ||
+ | resources: | ||
+ | - service.yaml | ||
+ | </ | ||
+ | |||
+ | <code yaml> | ||
+ | # | ||
+ | bases: | ||
+ | - ../../base | ||
+ | patches: | ||
+ | - service-ports.yaml | ||
+ | </ | ||
+ | |||
+ | {{ : | ||
+ | |||
+ | Durch Patches können einzelne YAML-Attribute einer Konfiguration hinzugefügt oder überschrieben werden. Hierzu wird eine neue YAML-Datei angelegt, welche den Namen der zu patchenden Ressource und alle zu ändernden Attribute beinhaltet. | ||
+ | |||
+ | <code yaml> | ||
+ | # | ||
+ | kind: Service | ||
+ | apiVersion: v1 | ||
+ | metadata: | ||
+ | #Name der zu patchenden Ressource | ||
+ | name: env-anzeige-frontend-https | ||
+ | spec: | ||
+ | ports: #Die Porteinstellungen werden überschrieben | ||
+ | - name: https | ||
+ | port: 443 | ||
+ | </ | ||
+ | |||
+ | Durch die Erstellung von Patch-Dateien können einzelne YAML-Attribute einer Konfiguration hinzugefügt oder überschrieben werden. Um anspruchsvollere Veränderungen an den Dateien durchzuführen, | ||
+ | |||
+ | ^JSON6902 Operator ^Beschreibung^ | ||
+ | | Add | fügt ein Attribut am angegebenen Pfad hinzu | | ||
+ | | Remove | entfernt ein Attribut | | ||
+ | | Replace | überschreibt das Attribut am angegebenen Pfad mit einem neuen Wert | | ||
+ | | Move | verschiebt ein Attribut an einen anderen Pfad | | ||
+ | | Copy | kopiert ein Attribut und fügt es an einem anderen Pfad wieder ein | | ||
+ | | Test | überprüft, | ||
+ | |||
+ | Im Folgenden wird der Service-Patch mit der JSON-Methode durchgeführt: | ||
+ | <code yaml> | ||
+ | # | ||
+ | patchesJson6902: | ||
+ | - target: | ||
+ | version: v1 | ||
+ | kind: Service | ||
+ | name: env-anzeige-frontend-https | ||
+ | path: service-patch.yaml | ||
+ | </ | ||
+ | |||
+ | <code yaml> | ||
+ | # | ||
+ | - op: replace | ||
+ | path: /spec/ports | ||
+ | value: | ||
+ | - name: https | ||
+ | port: 443 | ||
+ | </ | ||
+ | |||
+ | Die herkömmlichen Patches haben einen kleineren Funktionsumfang als der JSON-Patch, dadurch sind sie aber auch lesbarer. Außerdem reichen die Operationen hinzufügen und überschreiben für die meisten Anwendungsfälle völlig aus. Ein JSON-Patch sollte daher nur verwendet werden, wenn die zusätzlichen Operatoren (Attribut entfernen/ | ||
+ | |||
+ | Nachdem wir unsere Patches in Kustomize deklariert haben, können wir nun die einsetzbaren YAML-Konfigurationen erstellen. Kustomize ist fest in der aktuellen Version von kubectl implementiert. Mit dem Befehl **kubectl kustomize** kann die gepatchte YAML Konfigurationen ausgeben lassen. | ||
+ | |||
+ | <code bash>> | ||
+ | <code yaml> | ||
+ | apiVersion: v1 | ||
+ | kind: Service | ||
+ | metadata: | ||
+ | name: env-anzeige-frontend-https | ||
+ | spec: | ||
+ | ports: | ||
+ | - name: https | ||
+ | nodePort: 30951 | ||
+ | port: 443 | ||
+ | selector: | ||
+ | app: env-anzeige-frontend | ||
+ | type: LoadBalancer | ||
+ | </ | ||
+ | |||
+ | Alternativ können die Ressourcen mit dem Befehl **kubectl apply -k** ohne Zwischenschritt direkt in das Cluster geladen werden. | ||
+ | <code bash> | ||
+ | > kubectl apply -k ./ | ||
+ | service/ | ||
+ | </ | ||
- | Schauen wir uns einmal an, wie wir unser Beispiel mit den Porteinstellungen in Kustomize | + | \\ |
+ | ===== Fazit ===== | ||
+ | Kustomize |
it-wiki/kubernetes/deployments_mit_kustomize.1710330991.txt.gz · Zuletzt geändert: von marko