Continuous Deployment für Kubernetes Microservices mit Skaffold und Squash
Anbieter zum Thema
Um Anwendungen in Kubernetes bereitzustellen, sind Zusatztools wie Skaffold oder Squash eine sinnvolle Ergänzung. Die Tools übernehmen Build- und Deployment-Aufgaben, um Entwickler und Entwicklerinnen zu entlasten.

Das Open-Source-Projekt Skaffold ist ein Tool von Google, das Developer dabei unterstützt, aus Code eine funktionierende Anwendung auf einem Kubernetes-Cluster zu machen. Dazu kann Skaffold die Aufgaben für das Erstellen von Builds und den Push sowie die Bereitstellung in Kubernetes erledigen.
Parallel dazu können Entwickler auch noch Squash verwenden, um Code zu debuggen und auch hier Bereitstellungen sowie die Entwicklung von Code zu vereinfachen. Squash und Skaffold ergänzen sich also nahezu perfekt. Dazu ist es auch möglich, Squash in bestehende IDEs zu integrieren, zum Beispiel in Microsoft Visual Studio.
Anwendungen mit Skaffold erstellen
Ein Vorteil bei der Bereitstellung von Anwendungen auf Kubernetes mit Skaffold besteht darin, dass auf dem Kubernetes-Cluster keine Erweiterungen installiert werden müssen. Das Tool arbeitet mit Kubernetes-nativen Funktionen. Dazu gehören richtlinienbasiertes Image-Tagging, Port-Forwarding, Protokollierung und auch die Synchronisierung von Dateien.
Skaffold arbeitet als Tool für die Kommandozeile nur auf dem Client. Es gibt auf dem Cluster keinerlei Overhead durch das Tool. Zusätzlich arbeitet das Tool auch mit Git zusammen, sodass „git clone“ und „skaffold run“ gemeinsam genutzt werden können, um Anwendungen zu teilen. Die Installation auf einem Linux-Computer ist mit zwei Zeilen im Terminal abgeschlossen:
curl -Lo skaffold https://storage.googleapis.com/skaffold/releases/latest/skaffold-linux-amd64
sudo install skaffold /usr/local/bin/
In der umfangreichen Skaffold-Dokumentation werden die einzelnen Abläufe genau beschrieben, auch mit CI/CD. Das ist auch einer der Schwerpunkt von Skaffold. Vor allem in Continuous Deployment-Szenarien kann Skaffold seine Stärken ausspielen, da sich hier recht schnell automatisierte Bereitstellungen umsetzen lassen, auch in Umgebungen, die bereits in Produktion sind. Da auf Seiten des Clusters keine Installationen vorgenommen werden müssen, ist eine Integration von Skaffold für Entwickler keine große Sache.
Anwendungen in Kubernetes kontinuierlich aktualisieren
Skaffold übernimmt bei Bedarf alle Prozesse, die für kontinuierliche Updates der Anwendungen notwendig sind, die bereits im Kubernetes-Cluster laufen. Das Tool kann direkt aus dem Quellcode neue Builds erstellen und diese bereitstellen. Wer keine direkte Bereitstellung durchführen will, erstellt mit Skaffold einfach entsprechende Images.
Diese Images lassen sich wiederum in GitOps-Workflows einsetzen. Auch Debugging von Anwendungen ist mit Skaffold möglich. Hier unterstützt Skaffold unter anderem Go, Node.js, Java oder Python. Für das Debugging steht der Parameter „skaffold debug“ neben „skaffold build“, „skaffold dev“ und „skaffold deploy“ zur Verfügung.
Eine weitere Stärke von Skaffold besteht darin, dass sich das Tool in Umgebungen mit mehreren Kubernetes-Clustern einsetzen lässt. Über Profile können sich Entwicklerinnen und Entwickler mit jeweils der gewünschten Umgebung verbinden, um einen Rebuild von Anwendungen durchzuführen. Die Verbindungen über Profile müssen nur einmal konfiguriert werden und stehen danach für die Automatisierung zur Verfügung. Dadurch können nicht nur lokale Cluster angebunden werden, sondern auch Cloud-Installationen von Kubernetes.
Skaffold ist ein flexibles Tool für die Bereitstellung. Neben der Möglichkeit nahezu alle Aufgaben von erstellen der Builds bis zur Bereitstellung zu übernehmen, lässt sich das Tool auch in bestehende CI/CD-Pipelines integrieren und kann daher auch mit anderen Kubernetes-Tools zusammenarbeiten, die Anwendungen in Kubernetes bereitstellen.
Debuggen von Webanwendungen und Microservices mit Squash
Für das Debuggen von Code, der mit Skaffold anschließend als Aktualisierung in Kubernetes zur Verfügung gestellt wird, kann parallel auch Squash zum Einsatz kommen. Webanwendungen und Anwendungen in Microservices-Umgebungen profitieren von den On-Demand-Testumgebungen, die mit Squash bereitgestellt werden können.
Squash unterstützt Go, Node.js oder Python. Wenn neuer Code zum Repository hinzugefügt wurde, kann ein Pull Request erstellt werden. Squash arbeitet in diesem Zusammenhang auch mit Slack, GitHub, BitBucket oder GitLab zusammen und kann Repositories aus diesen Quellen anbinden. Danach startet Squash eine virtuelle Maschine, um den Code bereitzustellen. Dazu muss nur der Link angeklickt werden, den Squash nach dem Pull Request erstellt.
Developer können so auf die Schnelle in einer Live-Umgebung die Auswirkung von neuem Code überprüfen. Der Einsatz von Squash ermöglicht es Entwickler unkompliziert in wenigen Minuten Änderungen im Code zu testen. Funktioniert alles wie erwartet, können die Änderungen über Skaffold im Kubernetes-Cluster bereitgestellt werden. Wer die Umgebung testen will, kann ein kostenloses Konto bei Squash erstellen.
Squash unterstützt Kubernetes nativ, genauso wie Skaffold. Auf dem Cluster sind auch hier keinerlei Änderungen notwendig. Neben YAML-Dateien unterstützt Squash auch Docker-compose. Parallel dazu kann auch nativ auf Kubernetes gesetzt werden. In der Squash-Dokumentation sind dazu zahlreiche Beispiele zu finden. Die Anbindung an Kubernetes erfolgt über die YAML-Datei von Squash. Dazu wird der YAML-Datei von Squash das Feld „deployment_type: kubernetes“ hinzugefügt. Das könnte dann also folgendermaßen aussehen:
deployments:
MyAppName:
kubernetes_build_image: nginx
deployment_type: kubernetes
use_kubernetes_registry: true
Um mehrere Anwendungen wiederum mit Helm Charts bereitzustellen, kann ebenfalls nur eine einzelne YAML-Datei zum Einsatz kommen:
deployments:
odoo:
kubernetes_helm_chart: stable/odoo
kubernetes_helm_parameters: odooPwd=pwd,psql.pslqPwd=secret
deployment_type: kubernetes
kubernetes_service: odoo
drupal:
kubernetes_helm_chart: stable/drupal
deployment_type: kubernetes
kubernetes_service: drupal
apache:
kubernetes_helm_chart: bitnami/apache
deployment_type: kubernetes
kubernetes_service: apache
kubernetes_helm_repository: bitnami https://charts.io/xyz
Wer ein kostenloses Testkonto bei Squash erstellt hat, kann sein GitHub-Konto verknüpfen und direkt aus dem seinem Repository Anwendungen laden und Testumgebungen erstellen. Dadurch kann schnell ein Überblick zu den Möglichkeiten von Squash gewonnen werden. In Kombination mit Skaffold können die getesteten Anwendungen dann auch gleich mit Skaffold in die CI/CD-Pipeline integriert oder direkt bereitgestellt werden.
(ID:48237543)