Benutzer-Werkzeuge

Webseiten-Werkzeuge


it-wiki:kubernetes:deployments_mit_kustomize

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen RevisionVorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
it-wiki:kubernetes:deployments_mit_kustomize [2024/03/13 11:59] – [Konfiguration für die Testumgebung mit geänderten Porteinstellungen:] markoit-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: ====
-<code bash>+<code yaml>
 kind: Service kind: Service
 apiVersion: v1 apiVersion: v1
Zeile 45: Zeile 45:
 Schauen wir uns einmal an, wie wir unser Beispiel mit den Porteinstellungen in Kustomize umsetzen können. Als Erstes muss eine //kustomization.yaml// angelegt werden, welche alle benötigten Ressourcen und die zu verwendenden Patches auflistet. Schauen wir uns einmal an, wie wir unser Beispiel mit den Porteinstellungen in Kustomize umsetzen können. Als Erstes muss eine //kustomization.yaml// angelegt werden, welche alle benötigten Ressourcen und die zu verwendenden Patches auflistet.
  
-<code>+<code yaml>
 #base/kustomization.yaml #base/kustomization.yaml
 resources: resources:
Zeile 51: Zeile 51:
 </code> </code>
  
-<code>+<code yaml>
 #overlays/test/kustomization.yaml #overlays/test/kustomization.yaml
 bases: bases:
Zeile 58: Zeile 58:
 - service-ports.yaml - service-ports.yaml
 </code> </code>
 +
 +{{ :it-wiki:kubernetes:b2ap3_large_bild2.png?nolink&400 |}}
 +
 +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>
 +#overlays/test/service-ports.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
 +</code>
 +
 +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, bietet Kustomize zusätzlich das Verändern von Ressourcen unter Verwendung des [[https://tools.ietf.org/html/rfc6902|JSON6902]] Standards an. Dieser beinhaltet sechs weitere Operatoren zur Veränderung von Ressourcen und ist damit umfangreicher als der Standard-Patch.
 +
 +^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, ob ein bestimmtes Attribut den angegebenen Wert besitzt |
 +
 + Im Folgenden wird der Service-Patch mit der JSON-Methode durchgeführt:
 +<code yaml>
 +#kustomization.yaml
 +patchesJson6902:
 +- target:
 +    version: v1
 +    kind: Service
 +    name: env-anzeige-frontend-https
 +  path: service-patch.yaml
 +</code>
 +
 +<code yaml>
 +#service-patch.yaml
 +- op: replace
 +  path: /spec/ports
 +  value: 
 +  - name: https
 +    port: 443
 +</code>
 +
 +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/kopieren/verschieben/testen) benötigt werden.
 +
 +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>> kubectl kustomize ./overlays/test/</code>
 +<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
 +</code>
 +
 +Alternativ können die Ressourcen mit dem Befehl **kubectl apply -k** ohne Zwischenschritt direkt in das Cluster geladen werden.
 +<code bash>
 +> kubectl apply -k ./overlays/test/
 +service/env-anzeige-frontend-https created
 +</code>
 +
 +\\
 +===== Fazit =====
 +Kustomize vereinfacht den Konfigurationsprozess für verschiedene Umgebungen erheblich. Weitere Vorteile von Kustomize sind die feste Implementierung in kubectl. Dadurch ist keine weitere Konfiguration oder Installation notwendig.
it-wiki/kubernetes/deployments_mit_kustomize.1710331144.txt.gz · Zuletzt geändert: von marko