{"id":37475,"date":"2019-10-31T22:17:51","date_gmt":"2019-10-31T19:17:51","guid":{"rendered":"https:\/\/prohoster.info\/blog\/instrumenty-dlya-razrabotchikov-prilozhenij-zapuskaemyh-v-kubernetes\/"},"modified":"2019-10-31T22:17:51","modified_gmt":"2019-10-31T19:17:51","slug":"instrumenty-dlya-razrabotchikov-prilozhenij-zapuskaemyh-v-kubernetes","status":"publish","type":"post","link":"https:\/\/prohoster.info\/de\/blog\/administrirovanie\/instrumenty-dlya-razrabotchikov-prilozhenij-zapuskaemyh-v-kubernetes","title":{"rendered":"Werkzeuge f\u00fcr Entwickler von Anwendungen, die in Kubernetes laufen","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><img decoding=\"async\" alt=\"Werkzeuge f\u00fcr Entwickler von Anwendungen, die in Kubernetes laufen\" src=\"\/wp-content\/uploads\/2019\/08\/ad1f46a3562dcefacaa1722ee1ce3387.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nDer moderne Ansatz zur Betriebsf\u00fchrung l\u00f6st viele dr\u00e4ngende Gesch\u00e4ftsprobleme. Container und Orchestratoren erm\u00f6glichen eine einfache Skalierung von Projekten jeglicher Komplexit\u00e4t, vereinfachen die Ver\u00f6ffentlichung neuer Versionen und machen diese zuverl\u00e4ssiger, bringen jedoch gleichzeitig zus\u00e4tzliche Herausforderungen f\u00fcr Entwickler mit sich. Programmierer haben in erster Linie ihre Codes im Kopf: Architektur, Qualit\u00e4t, Leistung, Eleganz \u2013 und nicht, wie sie in Kubernetes integriert werden und wie sie nach selbst minimalen \u00c4nderungen getestet und debuggt werden. Daher ist es nur logisch, dass sich Werkzeuge f\u00fcr Kubernetes aktiv weiterentwickeln, um selbst den \u201earchaischsten\u201c Entwicklern zu helfen und ihnen zu erm\u00f6glichen, sich auf das Wesentliche zu konzentrieren.<\/p>\n<p>In diesem \u00dcberblick wird eine kurze Information \u00fcber einige Werkzeuge bereitgestellt, die das Leben von Entwicklern erleichtern, deren Code in den Pods eines Kubernetes-Clusters l\u00e4uft.<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<h2>Einfache Helfer<\/h2>\n<p><\/p>\n<h3>Kubectl-debug<\/h3>\n<p><\/p>\n<ul>\n<li> Essenz: <b>F\u00fcgen Sie Ihren Container in den Pod ein und sehen Sie, was darin passiert.<\/b>.<\/li>\n<li> <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/aylei\/kubectl-debug\">GitHub<\/a><\/noindex>.<\/li>\n<li> Kurze GH-Statistik: 715 Sterne, 54 Commits, 9 Mitwirkende.<\/li>\n<li> Sprache: Go.<\/li>\n<li> Lizenz: Apache License 2.0.<\/li>\n<\/ul>\n<p>\nDieses Plugin f\u00fcr kubectl erm\u00f6glicht es, innerhalb des gew\u00fcnschten Pods einen zus\u00e4tzlichen Container zu erstellen, der den Namespace der Prozesse mit den anderen Containern teilt. Damit k\u00f6nnen Sie den Funktionsablauf des Pods debuggen: die Netzwerkverbindung \u00fcberpr\u00fcfen, Netzwerkverkehr abh\u00f6ren, ein strace des interessierenden Prozesses durchf\u00fchren usw.<\/p>\n<p>Man kann auch in den Prozesscontainer wechseln, indem man ausf\u00fchrt <code>chroot \/proc\/PID\/root<\/code> \u2014 das ist sehr praktisch, wenn man eine root-Shell im Container ben\u00f6tigt, f\u00fcr den im Manifest <code>securityContext.runAs<\/code>.<\/p>\n<p>festgelegt ist. Das Tool ist einfach und effektiv, sodass es f\u00fcr jeden Entwickler n\u00fctzlich sein kann. Weitere Informationen dazu haben wir in einer <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/436112\/\">eigenen Artikel<\/a><\/noindex>.<\/p>\n<h3>Telepresence<\/h3>\n<p><\/p>\n<ul>\n<li> Essenz: <b>\u00fcbertrage die Anwendung auf deinen Computer. Entwickle und debugge lokal.<\/b>.<\/li>\n<li> <noindex><a rel=\"nofollow\" href=\"https:\/\/www.telepresence.io\/\">Die Website<\/a><\/noindex>; <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/telepresenceio\/telepresence\">GitHub<\/a><\/noindex>.<\/li>\n<li> Kurze GH-Statistik: 2131 Sterne, 2712 Commits, 33 Mitwirkende.<\/li>\n<li> Sprache: Python.<\/li>\n<li> Lizenz: Apache License 2.0.<\/li>\n<\/ul>\n<p>\nDie Idee dieses Tools besteht darin, einen Container mit der Anwendung auf dem lokalen Benutzercomputer zu starten und den gesamten Verkehr aus dem Cluster zu ihm und zur\u00fcck zu proxien. Dieser Ansatz erm\u00f6glicht die lokale Entwicklung, indem einfach die Dateien in der bevorzugten IDE ge\u00e4ndert werden: Die Ergebnisse sind sofort verf\u00fcgbar.<\/p>\n<p>Die Vorteile der lokalen Ausf\u00fchrung sind die Bequemlichkeit von Anpassungen und sofortige Ergebnisse sowie die M\u00f6glichkeit, die Anwendung auf gewohnte Weise zu debuggen. Nachteile sind die Anforderungen an die Verbindungsgeschwindigkeit, was besonders bemerkbar ist, wenn man mit einer Anwendung mit relativ hohem RPS und Traffic arbeitet. Au\u00dferdem hat Telepresence Probleme mit Volume-Mounts unter Windows, was f\u00fcr Entwickler, die an dieses Betriebssystem gew\u00f6hnt sind, ein entscheidendes Limit sein kann.<\/p>\n<p>Wir haben bereits unsere Erfahrungen mit Telepresence geteilt. <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/446788\/\">hier<\/a><\/noindex>.<\/p>\n<h3>Ksync<\/h3>\n<p><\/p>\n<ul>\n<li> Essenz: <b>nahezu sofortige Synchronisierung von Code mit dem Container im Cluster.<\/b>.<\/li>\n<li> <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/vapor-ware\/ksync\">GitHub<\/a><\/noindex>.<\/li>\n<li> Kurze GH-Statistik: 555 Sterne, 362 Commits, 11 Mitwirkende.<\/li>\n<li> Sprache: Go.<\/li>\n<li> Lizenz: Apache License 2.0.<\/li>\n<\/ul>\n<p>\nDas Utility erm\u00f6glicht die Synchronisierung des Inhalts eines lokalen Verzeichnisses mit dem Containerverzeichnis, das im Cluster ausgef\u00fchrt wird. Dieses Tool eignet sich hervorragend f\u00fcr Entwickler, die Skriptsprachen verwenden, deren Hauptproblem darin besteht, den Code in einen laufenden Container zu bringen. Ksync soll dieses Problem l\u00f6sen.<\/p>\n<p>Nach einmaliger Initialisierung mit dem Befehl <code>ksync init<\/code> Im Cluster wird ein DaemonSet erstellt, das dazu dient, den Zustand des Dateisystems des gew\u00e4hlten Containers zu \u00fcberwachen. Auf seinem lokalen Computer f\u00fchrt der Entwickler den Befehl aus <code>ksync watch<\/code>, der die Konfigurationen \u00fcberwacht und <noindex><a rel=\"nofollow\" href=\"https:\/\/syncthing.net\/\">syncthing<\/a><\/noindex>startet, das die direkte Synchronisierung von Dateien mit dem Cluster durchf\u00fchrt.<\/p>\n<p>Es bleibt, ksync anzuleiten, was und mit wem synchronisiert werden soll. Zum Beispiel k\u00f6nnte folgender Befehl verwendet werden:<\/p>\n<pre><code class=\"plaintext\">ksync create --name=myproject --namespace=test --selector=app=backend --container=php --reload=false \/home\/user\/myproject\/ \/var\/www\/myproject\/<\/code><\/pre>\n<p>\n\u2026 dies wird einen Watcher mit dem Namen <code>myproject<\/code>erstellen, der nach einem Pod mit dem Label <code>app=backend<\/code> sucht und versucht, das lokale Verzeichnis <code>\/home\/user\/myproject\/<\/code> mit dem Verzeichnis <code>\/var\/www\/myproject\/<\/code> des Containers mit dem Namen <code>php<\/code>.<\/p>\n<p>Probleme und Anmerkungen zu ksync aus unserer Erfahrung:<\/p>\n<ul>\n<li> Auf den Knoten des Kubernetes-Clusters sollte der <code>overlay2<\/code> als Storage-Driver f\u00fcr Docker verwendet werden. Mit anderen Tools wird es nicht funktionieren.<\/li>\n<li> Bei der Verwendung von Windows als Client-OS kann es zu Fehlfunktionen des Dateisystemwatchers kommen. Dieser Fehler wurde bei der Arbeit mit gro\u00dfen Verzeichnissen festgestellt \u2013 mit einer gro\u00dfen Anzahl von verschachtelten Dateien und Verzeichnissen. Wir haben <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/syncthing\/syncthing\/issues\/5832\">entsprechendes Issue erstellt<\/a><\/noindex> Im Projekt Syncthing gibt es seit Anfang Juli keinen Fortschritt.<\/li>\n<li> Verwenden Sie die Datei <noindex><a rel=\"nofollow\" href=\"https:\/\/docs.syncthing.net\/users\/ignoring.html\"><code>.stignore<\/code><\/a><\/noindex> , um Pfade oder Dateimuster anzugeben, die nicht synchronisiert werden sollen (z. B. Verzeichnisse <code>app\/cache<\/code> und <code>.git<\/code>).<\/li>\n<li> Standardm\u00e4\u00dfig wird ksync den Container bei jeder \u00c4nderung von Dateien neu starten. Dies ist f\u00fcr Node.js praktisch, f\u00fcr PHP jedoch v\u00f6llig \u00fcberfl\u00fcssig. Es w\u00e4re besser, opcache zu deaktivieren und das Flag <code>--reload=false<\/code>.<\/li>\n<li> zu verwenden. Die Konfiguration kann jederzeit in <code>$HOME\/.ksync\/ksync.yaml<\/code>.<\/li>\n<\/ul>\n<p><\/p>\n<h3>Squash<\/h3>\n<p><\/p>\n<ul>\n<li> Essenz: <b>debuggen Sie Prozesse direkt im Cluster.<\/b>.<\/li>\n<li> <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/solo-io\/squash\">GitHub<\/a><\/noindex>.<\/li>\n<li> Kurze GH-Statistik: 1154 Sterne, 279 Commits, 23 Mitwirkende.<\/li>\n<li> Sprache: Go.<\/li>\n<li> Lizenz: Apache License 2.0.<\/li>\n<\/ul>\n<p>\nDieses Tool ist zur Prozess-Diagnose direkt in Pods gedacht. Die Anwendung ist einfach und erlaubt im interaktiven Modus die Auswahl des gew\u00fcnschten Debuggers. <i>(siehe unten)<\/i> und Namespace + Pod, in dessen Prozess eingegriffen werden muss. Derzeit werden folgende unterst\u00fctzt:<\/p>\n<ul>\n<li> delve \u2013 f\u00fcr Anwendungen in Go;<\/li>\n<li> GDB \u2013 \u00fcber target remote + Portweiterleitung;<\/li>\n<li> Portweiterleitung JDWP zur Debugging von Java-Anwendungen.<\/li>\n<\/ul>\n<p>\nVon Seiten der IDE gibt es Unterst\u00fctzung lediglich in VScode (mithilfe des <noindex><a rel=\"nofollow\" href=\"https:\/\/marketplace.visualstudio.com\/items?itemName=ilevine.squash\">Erweiterung<\/a><\/noindex>), jedoch sind f\u00fcr das aktuelle Jahr (2019) Eclipse und Intellij geplant.<\/p>\n<p>F\u00fcr die Fehlersuche startet Squash auf den Knoten des Clusters einen privilegierten Container. Daher sollten Sie sich zun\u00e4chst mit den M\u00f6glichkeiten vertraut machen. <noindex><a rel=\"nofollow\" href=\"https:\/\/squash.solo.io\/secure_mode\/\">sicheren Modus<\/a><\/noindex> um Sicherheitsprobleme zu vermeiden.<\/p>\n<h2>Komplexe L\u00f6sungen<\/h2>\n<p>\nJetzt kommen wir zur schweren Artillerie \u2013 zu gr\u00f6\u00dferen Projekten, die dazu dienen, viele Bed\u00fcrfnisse der Entwickler auf einmal zu decken.<\/p>\n<p><i><b>NB<\/b>: In dieser Liste findet sich sicherlich auch unser Open Source-Tool <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/333682\/\"><b>werf<\/b><\/a><\/noindex> (ehemals bekannt als dapp). Wir haben bereits mehrfach dar\u00fcber geschrieben und berichtet, weshalb wir uns entschieden haben, es nicht in die \u00dcbersicht aufzunehmen. F\u00fcr diejenigen, die mehr \u00fcber seine M\u00f6glichkeiten erfahren m\u00f6chten, empfehlen wir, den Vortrag \"<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/460351\/\">werf \u2013 unser Werkzeug f\u00fcr CI\/CD in Kubernetes<\/a><\/noindex>\u00bb.<\/i><\/p>\n<h3>DevSpace<\/h3>\n<p><\/p>\n<ul>\n<li> Essenz: <b>f\u00fcr alle, die mit Kubernetes arbeiten m\u00f6chten, aber nicht tief in die Materie einsteigen wollen.<\/b>.<\/li>\n<li> <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/devspace-cloud\/devspace\">GitHub<\/a><\/noindex>.<\/li>\n<li> Kurze GH-Statistik: 630 Sterne, 1912 Commits, 13 Mitwirkende.<\/li>\n<li> Sprache: Go.<\/li>\n<li> Lizenz: Apache License 2.0.<\/li>\n<\/ul>\n<p>\nEine L\u00f6sung des gleichnamigen Unternehmens, das verwaltete Cluster mit Kubernetes f\u00fcr die Teamarbeit bereitstellt. Das Tool wurde f\u00fcr kommerzielle Cluster entwickelt, funktioniert jedoch auch hervorragend mit anderen.<\/p>\n<p>Beim Ausf\u00fchren des Befehls <code>devspace init<\/code> im Projektverzeichnis werden Ihnen (im interaktiven Modus) folgende Optionen angeboten:<\/p>\n<ul>\n<li> einen Arbeits-Kubernetes-Cluster auszuw\u00e4hlen,<\/li>\n<li> die vorhandenen nutzen <code>Dockerfile<\/code> oder einen neuen generieren, um einen Container auf dieser Basis zu erstellen,<\/li>\n<li> ein Repository f\u00fcr die Speicherung von Container-Images ausw\u00e4hlen usw.<\/li>\n<\/ul>\n<p>\nNach all diesen Vorbereitungen kann die Entwicklung beginnen, indem der Befehl <code>devspace dev<\/code>ausgef\u00fchrt wird. Dieser Befehl wird den Container bauen, ihn in das Repository hochladen, ein Deployment im Cluster durchf\u00fchren und den Port-Forwarding sowie die Synchronisation des Containers mit dem lokalen Verzeichnis starten.<\/p>\n<p>Optional wird angeboten, mit einem Terminal in den Container zu wechseln. Es lohnt sich nicht abzulehnen, denn tats\u00e4chlich startet der Container mit dem Befehl sleep, und f\u00fcr das echte Testen muss die Anwendung manuell gestartet werden.<\/p>\n<p>Schlie\u00dflich f\u00fchrt der Befehl <code>devspace deploy<\/code> die Anwendung und die zugeh\u00f6rige Infrastruktur im Cluster aus, wonach alles im produktiven Modus funktioniert.<\/p>\n<p>Die gesamte Projektkonfiguration wird in der Datei <code>devspace.yaml<\/code>gespeichert. Neben den Umgebungsparametern f\u00fcr die Entwicklung finden Sie darin auch eine Beschreibung der Infrastruktur, die den Standard-Manifests von Kubernetes \u00e4hnelt, jedoch stark vereinfacht ist.<\/p>\n<p><img decoding=\"async\" alt=\"Werkzeuge f\u00fcr Entwickler von Anwendungen, die in Kubernetes laufen\" src=\"\/wp-content\/uploads\/2019\/08\/7abbba3806facfb69ba4e3f9e0f18938.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>Architektur und grundlegende Schritte zur Arbeit mit DevSpace<\/i><\/p>\n<p>Dar\u00fcber hinaus l\u00e4sst sich ein vordefiniertes Element (z. B. die MySQL-Datenbank) oder ein Helm-Chart problemlos in das Projekt integrieren. Weitere Informationen finden Sie in <noindex><a rel=\"nofollow\" href=\"https:\/\/devspace.cloud\/docs\/\">Dokumentation.<\/a><\/noindex> \u2014 es ist einfach.<\/p>\n<h3>Skaffold nachdenken.<\/h3>\n<p><\/p>\n<ul>\n<li> <noindex><a rel=\"nofollow\" href=\"https:\/\/skaffold.dev\/\">Die Website<\/a><\/noindex>; <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/GoogleContainerTools\/skaffold\">GitHub<\/a><\/noindex>.<\/li>\n<li> Kurze Statistik zu GH: 7423 Sterne, 4173 Commits, 136 Mitwirkende.<\/li>\n<li> Sprache: Go.<\/li>\n<li> Lizenz: Apache License 2.0.<\/li>\n<\/ul>\n<p>\nDieses Tool von Google zielt darauf ab, alle Bed\u00fcrfnisse von Entwicklern abzudecken, deren Code im Kubernetes-Cluster ausgef\u00fchrt wird. Es ist nicht so einfach zu bedienen wie devspace: keine Interaktivit\u00e4t, keine Spracherkennung und keine automatische Erstellung. <code>Dockerfile<\/code> hier werden Sie nicht angeboten.<\/p>\n<p>Wenn Sie jedoch davon nicht abgeschreckt sind, hier sind die M\u00f6glichkeiten von Skaffold:<\/p>\n<ul>\n<li> \u00c4nderungen im Quellcode verfolgen.<\/li>\n<li> Synchronisieren Sie es mit dem Container des Pods, sofern er keinen Build erfordert.<\/li>\n<li> Container mit dem Code erstellen, wenn die Programmiersprache interpretiert ist, oder Artefakte kompilieren und in Container packen.<\/li>\n<li> Die entstandenen Images automatisch mit <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/GoogleContainerTools\/container-structure-test\">container-structure-test<\/a><\/noindex>.<\/li>\n<li> Taggen und Hochladen der Images in das Docker-Registry.<\/li>\n<li> Die Anwendung im Cluster mit kubectl, Helm oder kustomize bereitstellen.<\/li>\n<li> Ports weiterleiten.<\/li>\n<li> Anwendungen, die in Java, Node.js und Python geschrieben sind, debuggen.<\/li>\n<\/ul>\n<p>\nDer Workflow wird in verschiedenen Varianten deklarativ in der Datei <code>skaffold.yaml<\/code>. F\u00fcr das Projekt k\u00f6nnen mehrere Profile definiert werden, in denen die Build- und Deployment-Stufen teilweise oder vollst\u00e4ndig ge\u00e4ndert werden. Beispielsweise kann f\u00fcr die Entwicklung ein entwicklerfreundliches Basis-Image angegeben werden, w\u00e4hrend f\u00fcr Staging und Produktion ein minimales Image verwendet wird (+ Nutzung <code>securityContext<\/code> f\u00fcr Container oder um den Cluster zu \u00fcberschreiben, in dem die Anwendung bereitgestellt wird).<\/p>\n<p>Das Erstellen von Docker-Containern kann lokal oder remote erfolgen: in <noindex><a rel=\"nofollow\" href=\"https:\/\/cloud.google.com\/cloud-build\/\">Google Cloud Build<\/a><\/noindex> oder im Cluster mithilfe von <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/GoogleContainerTools\/kaniko\">Kaniko<\/a><\/noindex>. Auch Bazel und Jib Maven\/Gradle werden unterst\u00fctzt. F\u00fcr das Tagging unterst\u00fctzt Skaffold zahlreiche Strategien: nach git commit Hash, Datum\/Uhrzeit, sha256-Checksumme des Quellcodes usw.<\/p>\n<p>Separat sollte die M\u00f6glichkeit der Container-Tests hervorgehoben werden. Das bereits erw\u00e4hnte Framework container-structure-test bietet die folgenden Pr\u00fcfmethoden an:<\/p>\n<ul>\n<li> Ausf\u00fchrung von Befehlen im Kontext des Containers mit Verfolgung der Exit-Status und \u00dcberpr\u00fcfung der Textausgaben der Befehle.<\/li>\n<li> \u00dcberpr\u00fcfung des Vorhandenseins von Dateien im Container und der \u00dcbereinstimmung der Attribute mit den angegebenen.<\/li>\n<li> \u00dcberpr\u00fcfung des Inhalts von Dateien durch regul\u00e4re Ausdr\u00fccke.<\/li>\n<li> Abgleich der Metadaten des Images (<code>ENV<\/code>, <code>ENTRYPOINT<\/code>, <code>VOLUMES<\/code> usw.).<\/li>\n<li> \u00dcberpr\u00fcfung der Kompatibilit\u00e4t von Lizenzen.<\/li>\n<\/ul>\n<p>\nDie Synchronisierung von Dateien mit dem Container erfolgt nicht auf optimalste Weise: Skaffold erstellt einfach ein Archiv mit den Quelldateien, kopiert es und entpackt es im Container (tar muss installiert sein). Wenn Ihre Hauptaufgabe also das Synchronisieren von Code ist, sollten Sie besser eine spezialisierte L\u00f6sung (ksync) in Betracht ziehen.<\/p>\n<p><img decoding=\"async\" alt=\"Werkzeuge f\u00fcr Entwickler von Anwendungen, die in Kubernetes laufen\" src=\"\/wp-content\/uploads\/2019\/08\/a53647e9d3bf002c292dcae7a774e561.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>Wichtige Schritte bei der Arbeit mit Skaffold<\/i><\/p>\n<p>Generell erm\u00f6glicht das Tool keine Abstraktion von Kubernetes-Manifests und bietet keinerlei Interaktivit\u00e4t, was es schwierig machen kann, sich zurechtzufinden. Aber das ist auch sein Vorteil \u2014 es bietet gr\u00f6\u00dfere Freiheiten.<\/p>\n<h3>Garden<\/h3>\n<p><\/p>\n<ul>\n<li> <noindex><a rel=\"nofollow\" href=\"https:\/\/garden.io\/\">Die Website<\/a><\/noindex>; <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/garden-io\/garden\">GitHub<\/a><\/noindex>.<\/li>\n<li> Kurze GH-Statistik: 1063 Sterne, 1927 Commits, 17 Mitwirkende.<\/li>\n<li> Sprache: TypeScript <i>(Es ist geplant, das Projekt in mehrere Komponenten zu unterteilen, von denen einige in Go sein werden, sowie ein SDK zur Erstellung von Erweiterungen in TypeScript\/JavaScript und Go bereitzustellen.)<\/i>.<\/li>\n<li> Lizenz: Apache License 2.0.<\/li>\n<\/ul>\n<p>\nWie Skaffold ist auch Garden darauf ausgerichtet, die Prozesse zur Bereitstellung von Anwendungs-Code im K8s-Cluster zu automatisieren. Daf\u00fcr muss zun\u00e4chst die Struktur des Projekts in einer YAML-Datei beschrieben werden, bevor der Befehl <code>garden dev<\/code>ausgef\u00fchrt wird. Dieser wird die gesamte Magie entfalten:<\/p>\n<ul>\n<li> Es wird die Container mit verschiedenen Teilen des Projekts erstellen.<\/li>\n<li> F\u00fchrt Integrations- und Unit-Tests durch, sofern diese beschrieben wurden.<\/li>\n<li> Rollt alle Komponenten des Projekts in das Cluster aus.<\/li>\n<li> Im Falle von \u00c4nderungen am Quellcode wird die gesamte Pipeline neu gestartet.<\/li>\n<\/ul>\n<p>\nDer Fokus bei der Nutzung dieses Tools liegt auf der gemeinsamen Nutzung eines entfernten Clusters durch das Entwicklerteam. In diesem Fall, wenn bestimmte Phasen der Erstellung und des Testens bereits abgeschlossen sind, wird der gesamte Prozess erheblich beschleunigt, da Garden die zwischengespeicherten Ergebnisse nutzen kann.<\/p>\n<p>Ein Modul des Projekts kann ein Container, ein Maven-Container, ein Helm-Chart, ein Manifest f\u00fcr <code>kubectl apply<\/code> oder sogar eine OpenFaaS-Funktion sein. Dabei kann jedes Modul aus einem entfernten Git-Repository bezogen werden. Ein Modul kann (muss aber nicht) Dienste, Aufgaben und Tests definieren. Dienste und Aufgaben k\u00f6nnen Abh\u00e4ngigkeiten haben, was es erm\u00f6glicht, die Reihenfolge des Deployments eines bestimmten Dienstes sowie die Ausf\u00fchrung von Aufgaben und Tests zu bestimmen.<\/p>\n<p>Garden bietet dem Benutzer ein ansprechendes Dashboard (derzeit in <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/garden-io\/garden\/tree\/master\/dashboard\">experimentellem Zustand).<\/a><\/noindex>, in dem das Projekt-Diagramm angezeigt wird: Komponenten, Reihenfolge der Zusammenstellung, Durchf\u00fchrung von Aufgaben und Tests, deren Verbindungen und Abh\u00e4ngigkeiten. Direkt im Browser k\u00f6nnen Sie auch die Protokolle aller Projektkomponenten einsehen und \u00fcberpr\u00fcfen, was jede Komponente per HTTP ausgibt (sofern nat\u00fcrlich f\u00fcr sie eine Ingress-Ressource deklariert ist).<\/p>\n<p><img decoding=\"async\" alt=\"Werkzeuge f\u00fcr Entwickler von Anwendungen, die in Kubernetes laufen\" src=\"\/wp-content\/uploads\/2019\/08\/931b48a306fcce025e4dd8aa51d01552.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>Panel f\u00fcr Garden<\/i><\/p>\n<p>Dieses Tool verf\u00fcgt auch \u00fcber einen Hot-Reload-Modus, der \u00c4nderungen an den Skripten einfach mit dem Container im Cluster synchronisiert und dadurch den Debugging-Prozess erheblich beschleunigt. Garden bietet eine gute <noindex><a rel=\"nofollow\" href=\"https:\/\/docs.garden.io\/\">Dokumentation<\/a><\/noindex> und ansprechende <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/garden-io\/garden\/tree\/master\/examples\">Beispielbibliothek,<\/a><\/noindex>die es erm\u00f6glicht, sich schnell einzuarbeiten und loszulegen. \u00dcbrigens haben wir k\u00fcrzlich <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/459586\/\">eine \u00dcbersetzung des Artikels<\/a><\/noindex> von seinen Autoren ver\u00f6ffentlicht.<\/p>\n<h2>Fazit<\/h2>\n<p>\nNat\u00fcrlich beschr\u00e4nkt sich diese Liste nicht auf Tools zur Entwicklung und Debugging von Anwendungen in Kubernetes. Es gibt noch viele n\u00fctzliche und praktische Tools, die eines separaten Artikels w\u00fcrdig sind oder mindestens Erw\u00e4hnung verdienen. Erz\u00e4hlen Sie uns, welche Tools Sie nutzen, mit welchen Problemen Sie konfrontiert wurden und wie Sie diese gel\u00f6st haben!<\/p>\n<h2>P.S.<\/h2>\n<p>\nLesen Sie auch in unserem Blog:<\/p>\n<ul>\n<li> \u00ab<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/460351\/\">werf \u2014 unser Tool f\u00fcr CI\/CD in Kubernetes (\u00dcbersicht und Video des Vortrags)<\/a><\/noindex>\u00bb;<\/li>\n<li> \u00ab<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/459586\/\">Garden v0.10.0: Ihr Laptop ben\u00f6tigt kein Kubernetes mehr<\/a><\/noindex>\u00bb;<\/li>\n<li> \u00ab<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/446788\/\">Kubernetes Tipps &amp; Tricks: \u00fcber lokale Entwicklung und Telepresence<\/a><\/noindex>\u00bb;<\/li>\n<li> \u00ab<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/436112\/\">Das kubectl-debug-Plugin zur Fehlersuche in Kubernetes-Pods.<\/a><\/noindex>\u00bb.<\/li>\n<\/ul>\n<p>Quelle: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/462707\/\">habr.com<\/a><\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u0421\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0439 \u043f\u043e\u0434\u0445\u043e\u0434 \u043a \u044d\u043a\u0441\u043f\u043b\u0443\u0430\u0442\u0430\u0446\u0438\u0438 \u0440\u0435\u0448\u0430\u0435\u0442 \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u043e \u043d\u0430\u0441\u0443\u0449\u043d\u044b\u0445 \u043f\u0440\u043e\u0431\u043b\u0435\u043c \u0431\u0438\u0437\u043d\u0435\u0441\u0430. \u041a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u044b \u0438 \u043e\u0440\u043a\u0435\u0441\u0442\u0440\u0430\u0442\u043e\u0440\u044b \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044e\u0442 \u043b\u0435\u0433\u043a\u043e \u043c\u0430\u0441\u0448\u0442\u0430\u0431\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043f\u0440\u043e\u0435\u043a\u0442\u044b \u043b\u044e\u0431\u043e\u0439 \u0441\u043b\u043e\u0436\u043d\u043e\u0441\u0442\u0438, \u0443\u043f\u0440\u043e\u0449\u0430\u044e\u0442 \u0440\u0435\u043b\u0438\u0437\u044b \u043d\u043e\u0432\u044b\u0445 \u0432\u0435\u0440\u0441\u0438\u0439, \u0434\u0435\u043b\u0430\u044e\u0442 \u0438\u0445 \u0431\u043e\u043b\u0435\u0435 \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u043c\u0438, \u043d\u043e \u0432\u043c\u0435\u0441\u0442\u0435 \u0441 \u0442\u0435\u043c \u0441\u043e\u0437\u0434\u0430\u044e\u0442 \u0438 \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b \u0434\u043b\u044f \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u043e\u0432. \u041f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0441\u0442\u0430, \u0432 \u043f\u0435\u0440\u0432\u0443\u044e \u043e\u0447\u0435\u0440\u0435\u0434\u044c, \u0437\u0430\u0431\u043e\u0442\u0438\u0442 \u0435\u0433\u043e \u043a\u043e\u0434: \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0430, \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u043e, \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c, \u044d\u043b\u0435\u0433\u0430\u043d\u0442\u043d\u043e\u0441\u0442\u044c, \u2014 \u0430 \u043d\u0435 \u0442\u043e, \u043a\u0430\u043a \u043e\u043d \u043f\u043e\u0435\u0434\u0435\u0442 \u0432 [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":28120,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-37475","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-administrirovanie"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 4.9.10 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u0421\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0439 \u043f\u043e\u0434\u0445\u043e\u0434 \u043a \u044d\u043a\u0441\u043f\u043b\u0443\u0430\u0442\u0430\u0446\u0438\u0438 \u0440\u0435\u0448\u0430\u0435\u0442 \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u043e \u043d\u0430\u0441\u0443\u0449\u043d\u044b\u0445 \u043f\u0440\u043e\u0431\u043b\u0435\u043c \u0431\u0438\u0437\u043d\u0435\u0441\u0430. \u041a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u044b \u0438 \u043e\u0440\u043a\u0435\u0441\u0442\u0440\u0430\u0442\u043e\u0440\u044b \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044e\u0442 \u043b\u0435\u0433\u043a\u043e \u043c\u0430\u0441\u0448\u0442\u0430\u0431\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043f\u0440\u043e\u0435\u043a\u0442\u044b \u043b\u044e\u0431\u043e\u0439 \u0441\u043b\u043e\u0436\u043d\u043e\u0441\u0442\u0438, \u0443\u043f\u0440\u043e\u0449\u0430\u044e\u0442 \u0440\u0435\u043b\u0438\u0437\u044b \u043d\u043e\u0432\u044b\u0445 \u0432\u0435\u0440\u0441\u0438\u0439, \u0434\u0435\u043b\u0430\u044e\u0442 \u0438\u0445 \u0431\u043e\u043b\u0435\u0435 \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u043c\u0438, \u043d\u043e \u0432\u043c\u0435\u0441\u0442\u0435 \u0441 \u0442\u0435\u043c \u0441\u043e\u0437\u0434\u0430\u044e\u0442 \u0438 \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b \u0434\u043b\u044f \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u043e\u0432. \u041f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0441\u0442\u0430, \u0432 \u043f\u0435\u0440\u0432\u0443\u044e \u043e\u0447\u0435\u0440\u0435\u0434\u044c, \u0437\u0430\u0431\u043e\u0442\u0438\u0442 \u0435\u0433\u043e \u043a\u043e\u0434: \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0430, \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u043e, \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c, \u044d\u043b\u0435\u0433\u0430\u043d\u0442\u043d\u043e\u0441\u0442\u044c, \u2014 \u0430 \u043d\u0435 \u0442\u043e, \u043a\u0430\u043a \u043e\u043d \u043f\u043e\u0435\u0434\u0435\u0442 \u0432\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/de\/blog\/administrirovanie\/instrumenty-dlya-razrabotchikov-prilozhenij-zapuskaemyh-v-kubernetes\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 4.9.10\" \/>\n\t\t<meta property=\"og:locale\" content=\"de_DE\" \/>\n\t\t<meta property=\"og:site_name\" content=\"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\ud83e\udd47\u0418\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u044b \u0434\u043b\u044f \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u043e\u0432 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439, \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c\u044b\u0445 \u0432 Kubernetes | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u0421\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0439 \u043f\u043e\u0434\u0445\u043e\u0434 \u043a \u044d\u043a\u0441\u043f\u043b\u0443\u0430\u0442\u0430\u0446\u0438\u0438 \u0440\u0435\u0448\u0430\u0435\u0442 \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u043e \u043d\u0430\u0441\u0443\u0449\u043d\u044b\u0445 \u043f\u0440\u043e\u0431\u043b\u0435\u043c \u0431\u0438\u0437\u043d\u0435\u0441\u0430. \u041a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u044b \u0438 \u043e\u0440\u043a\u0435\u0441\u0442\u0440\u0430\u0442\u043e\u0440\u044b \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044e\u0442 \u043b\u0435\u0433\u043a\u043e \u043c\u0430\u0441\u0448\u0442\u0430\u0431\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043f\u0440\u043e\u0435\u043a\u0442\u044b \u043b\u044e\u0431\u043e\u0439 \u0441\u043b\u043e\u0436\u043d\u043e\u0441\u0442\u0438, \u0443\u043f\u0440\u043e\u0449\u0430\u044e\u0442 \u0440\u0435\u043b\u0438\u0437\u044b \u043d\u043e\u0432\u044b\u0445 \u0432\u0435\u0440\u0441\u0438\u0439, \u0434\u0435\u043b\u0430\u044e\u0442 \u0438\u0445 \u0431\u043e\u043b\u0435\u0435 \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u043c\u0438, \u043d\u043e \u0432\u043c\u0435\u0441\u0442\u0435 \u0441 \u0442\u0435\u043c \u0441\u043e\u0437\u0434\u0430\u044e\u0442 \u0438 \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b \u0434\u043b\u044f \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u043e\u0432. \u041f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0441\u0442\u0430, \u0432 \u043f\u0435\u0440\u0432\u0443\u044e \u043e\u0447\u0435\u0440\u0435\u0434\u044c, \u0437\u0430\u0431\u043e\u0442\u0438\u0442 \u0435\u0433\u043e \u043a\u043e\u0434: \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0430, \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u043e, \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c, \u044d\u043b\u0435\u0433\u0430\u043d\u0442\u043d\u043e\u0441\u0442\u044c, \u2014 \u0430 \u043d\u0435 \u0442\u043e, \u043a\u0430\u043a \u043e\u043d \u043f\u043e\u0435\u0434\u0435\u0442 \u0432\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/de\/blog\/administrirovanie\/instrumenty-dlya-razrabotchikov-prilozhenij-zapuskaemyh-v-kubernetes\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"350\" \/>\n\t\t<meta property=\"og:image:height\" content=\"350\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2019-10-31T19:17:51+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2019-10-31T19:17:51+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"\ud83e\udd47Entwicklertools f\u00fcr Anwendungen, die in Kubernetes ausgef\u00fchrt werden | ProHoster","description":"Ein moderner Ansatz f\u00fcr den Betrieb l\u00f6st viele dr\u00e4ngende Gesch\u00e4ftsprobleme. Container und Orchestratoren erm\u00f6glichen es, Projekte jeder Komplexit\u00e4t einfach zu skalieren, vereinfachen die Ver\u00f6ffentlichung neuer Versionen und erh\u00f6hen deren Zuverl\u00e4ssigkeit, schaffen jedoch gleichzeitig zus\u00e4tzliche Herausforderungen f\u00fcr Entwickler. Programmierer k\u00fcmmern sich in erster Linie um ihren Code: Architektur, Qualit\u00e4t, Leistung, Eleganz \u2013 und nicht darum, wie sie nach","canonical_url":"https:\/\/prohoster.info\/de\/blog\/administrirovanie\/instrumenty-dlya-razrabotchikov-prilozhenij-zapuskaemyh-v-kubernetes","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"de_DE","og:site_name":"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b","og:type":"article","og:title":"\ud83e\udd47\u0418\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u044b \u0434\u043b\u044f \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u043e\u0432 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439, \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c\u044b\u0445 \u0432 Kubernetes | ProHoster","og:description":"\u0421\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0439 \u043f\u043e\u0434\u0445\u043e\u0434 \u043a \u044d\u043a\u0441\u043f\u043b\u0443\u0430\u0442\u0430\u0446\u0438\u0438 \u0440\u0435\u0448\u0430\u0435\u0442 \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u043e \u043d\u0430\u0441\u0443\u0449\u043d\u044b\u0445 \u043f\u0440\u043e\u0431\u043b\u0435\u043c \u0431\u0438\u0437\u043d\u0435\u0441\u0430. \u041a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u044b \u0438 \u043e\u0440\u043a\u0435\u0441\u0442\u0440\u0430\u0442\u043e\u0440\u044b \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044e\u0442 \u043b\u0435\u0433\u043a\u043e \u043c\u0430\u0441\u0448\u0442\u0430\u0431\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043f\u0440\u043e\u0435\u043a\u0442\u044b \u043b\u044e\u0431\u043e\u0439 \u0441\u043b\u043e\u0436\u043d\u043e\u0441\u0442\u0438, \u0443\u043f\u0440\u043e\u0449\u0430\u044e\u0442 \u0440\u0435\u043b\u0438\u0437\u044b \u043d\u043e\u0432\u044b\u0445 \u0432\u0435\u0440\u0441\u0438\u0439, \u0434\u0435\u043b\u0430\u044e\u0442 \u0438\u0445 \u0431\u043e\u043b\u0435\u0435 \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u043c\u0438, \u043d\u043e \u0432\u043c\u0435\u0441\u0442\u0435 \u0441 \u0442\u0435\u043c \u0441\u043e\u0437\u0434\u0430\u044e\u0442 \u0438 \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b \u0434\u043b\u044f \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u043e\u0432. \u041f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0441\u0442\u0430, \u0432 \u043f\u0435\u0440\u0432\u0443\u044e \u043e\u0447\u0435\u0440\u0435\u0434\u044c, \u0437\u0430\u0431\u043e\u0442\u0438\u0442 \u0435\u0433\u043e \u043a\u043e\u0434: \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0430, \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u043e, \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c, \u044d\u043b\u0435\u0433\u0430\u043d\u0442\u043d\u043e\u0441\u0442\u044c, \u2014 \u0430 \u043d\u0435 \u0442\u043e, \u043a\u0430\u043a \u043e\u043d \u043f\u043e\u0435\u0434\u0435\u0442 \u0432","og:url":"https:\/\/prohoster.info\/de\/blog\/administrirovanie\/instrumenty-dlya-razrabotchikov-prilozhenij-zapuskaemyh-v-kubernetes","og:image":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:secure_url":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:width":350,"og:image:height":350,"article:published_time":"2019-10-31T19:17:51+00:00","article:modified_time":"2019-10-31T19:17:51+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"37475","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"seo_analyzer_scan_date":"2026-01-23 18:00:22","breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-03-01 01:26:27","updated":"2026-01-23 18:00:22"},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/posts\/37475","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/comments?post=37475"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/posts\/37475\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/media\/28120"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/media?parent=37475"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/categories?post=37475"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/tags?post=37475"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}