{"id":83787,"date":"2020-06-03T07:42:26","date_gmt":"2020-06-03T05:42:26","guid":{"rendered":"https:\/\/prohoster.info\/blog\/administrirovanie\/devoxx-uk-kubernetes-v-prodakshene-blue-green-deployment-avtomasshtabirovanie-i-avtomatizacziya-razvertyvaniya-chast-2"},"modified":"2020-06-03T07:42:26","modified_gmt":"2020-06-03T05:42:26","slug":"devoxx-uk-kubernetes-v-prodakshene-blue-green-deployment-avtomasshtabirovanie-i-avtomatizacziya-razvertyvaniya-chast-2","status":"publish","type":"post","link":"https:\/\/prohoster.info\/de\/blog\/administrirovanie\/devoxx-uk-kubernetes-v-prodakshene-blue-green-deployment-avtomasshtabirovanie-i-avtomatizacziya-razvertyvaniya-chast-2","title":{"rendered":"DEVOXX UK. Kubernetes in der Produktion: Blue\/Green Deployment, Auto-Scaling und Automatisierung von Deployments. Teil 2.","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>Kubernetes ist ein hervorragendes Werkzeug zum Starten von Docker-Containern in einer clusterbasierten Produktionsumgebung. Es gibt jedoch Aufgaben, die Kubernetes nicht l\u00f6sen kann. Bei h\u00e4ufigen Bereitstellungen in der Produktionsumgebung ben\u00f6tigen wir ein vollst\u00e4ndig automatisiertes Blue\/Green Deployment, um Ausfallzeiten in diesem Prozess zu vermeiden, wobei auch externe HTTP-Anfragen verarbeitet und SSL-Uploads durchgef\u00fchrt werden m\u00fcssen. Dies erfordert eine Integration mit einem Lastenausgleichssystem, wie zum Beispiel ha-proxy. Ein weiteres Anliegen ist das halbautomatische Scaling des Kubernetes-Clusters in einer Cloud-Umgebung, wie zum Beispiel das teilweise Reduzieren der Clustergr\u00f6\u00dfe w\u00e4hrend der Nacht.<\/p>\n<p>Obwohl Kubernetes diese Funktionen nicht direkt \u201eout of the box\u201c bietet, stellt es eine API zur Verf\u00fcgung, die zur L\u00f6sung solcher Aufgaben genutzt werden kann. Werkzeuge f\u00fcr automatisiertes Blue\/Green Deployment und das Skalieren von Kubernetes-Clustern wurden im Rahmen des Cloud RTI-Projekts entwickelt, das auf Open-Source basiert.<\/p>\n<p>In diesem Artikel zur Videoentzifferung erfahren Sie, wie Sie Kubernetes zusammen mit anderen Open-Source-Komponenten einrichten, um eine produktionsbereite Umgebung zu schaffen, die ohne Ausfallzeiten im Produktionsbetrieb Code von einem git commit verarbeitet.<\/p>\n<p><img decoding=\"async\" alt=\"DEVOXX UK. Kubernetes in der Produktion: Blue\/Green Deployment, Auto-Scaling und Automatisierung von Deployments. Teil 2.\" src=\"\/wp-content\/uploads\/2020\/06\/43a4ba56526a91b6f3d1fb16c159cc1b.jpg\" style=\"display:block;margin: 0 auto;\" \/><noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/ua-hosting\/blog\/504666\/\">DEVOXX UK. Kubernetes in der Produktion: Blue\/Green Deployment, automatisches Skalieren und Bereitstellungsautomatisierung. Teil 1<\/a><\/noindex><\/p>\n<p>Sobald Sie Zugang zu Ihren Anwendungen aus der Au\u00dfenwelt erhalten haben, k\u00f6nnen Sie mit der vollst\u00e4ndigen Automatisierung beginnen. Das bedeutet, dass Sie die Automatisierung so weit vorantreiben, dass Sie einen git commit ausf\u00fchren k\u00f6nnen und sicher sein k\u00f6nnen, dass dieser git commit in der Produktion endet. Nat\u00fcrlich m\u00f6chten wir bei der Umsetzung dieser Schritte und beim Deployment keine Ausfallzeiten erleben. Somit beginnt jede Automatisierung in Kubernetes mit der API. <\/p>\n<p><img decoding=\"async\" alt=\"DEVOXX UK. Kubernetes in der Produktion: Blue\/Green Deployment, Auto-Scaling und Automatisierung von Deployments. Teil 2.\" src=\"\/wp-content\/uploads\/2020\/06\/aa470c1562e49d98a164e0485196426e.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nKubernetes ist nicht das Tool, das man produktiv \"out of the box\" verwenden kann. Nat\u00fcrlich k\u00f6nnen Sie es so tun, kubectl verwenden und dergleichen, aber die API ist das Interessanteste und N\u00fctzlichste an dieser Plattform. Indem Sie die API als Funktionsset nutzen, k\u00f6nnen Sie nahezu alles, was Sie in Kubernetes tun m\u00f6chten, ansteuern. Kubectl selbst verwendet ebenfalls die REST-API. <\/p>\n<p>Es handelt sich um eine REST-API, sodass Sie jede beliebige Sprache und jedes Tool zur Arbeit mit dieser API verwenden k\u00f6nnen, aber benutzerdefinierte Bibliotheken werden Ihnen das Leben erheblich erleichtern. Mein Team hat zwei solche Bibliotheken geschrieben: eine f\u00fcr Java \/ OSGi und eine f\u00fcr Go. Letztere wird nicht h\u00e4ufig verwendet, aber diese n\u00fctzlichen Dinge stehen Ihnen auf jeden Fall zur Verf\u00fcgung. Sie sind Teil eines teilweise lizenzierten Open-Source-Projekts. Es gibt zahlreiche solcher Bibliotheken f\u00fcr verschiedene Sprachen, sodass Sie die am besten geeigneten ausw\u00e4hlen k\u00f6nnen. <\/p>\n<p><img decoding=\"async\" alt=\"DEVOXX UK. Kubernetes in der Produktion: Blue\/Green Deployment, Auto-Scaling und Automatisierung von Deployments. Teil 2.\" src=\"\/wp-content\/uploads\/2020\/06\/808865e4cda6023c6775ec9e581fc46e.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nBevor Sie mit der Automatisierung der Bereitstellung beginnen, ist es entscheidend, sicherzustellen, dass dieser Prozess keine Ausfallzeiten verursacht. Unsere Team f\u00fchrt beispielsweise Produktionsbereitstellungen tags\u00fcber durch, wenn die Nutzung der Anwendungen am h\u00f6chsten ist. Daher ist es von gro\u00dfer Bedeutung, Verz\u00f6gerungen in diesem Prozess zu vermeiden. Um Ausfallzeiten zu verhindern, stehen zwei Methoden zur Verf\u00fcgung: Blue\/Green-Bereitstellung oder Rolling Update. Letzteres bedeutet, dass, wenn Sie 5 Replikate Ihrer Anwendung haben, diese nacheinander aktualisiert werden. Diese Methode funktioniert ausgezeichnet, eignet sich jedoch nicht, wenn w\u00e4hrend der Bereitstellung verschiedene Versionen der Anwendung gleichzeitig laufen. In diesem Fall k\u00f6nnte das Benutzerinterface aktualisiert werden, w\u00e4hrend das Backend noch mit der alten Version arbeitet, was zu einer Unterbrechung des Anwendungsbetriebs f\u00fchren w\u00fcrde. Daher gestaltet sich die Programmierung unter diesen Bedingungen als herausfordernd. <\/p>\n<p>Das ist einer der Gr\u00fcnde, warum wir Blue\/Green-Deployment bevorzugen, um die Bereitstellung unserer Anwendungen zu automatisieren. Bei dieser Methode m\u00fcssen Sie sicherstellen, dass zu einem bestimmten Zeitpunkt nur eine Version der Anwendung aktiv ist. <\/p>\n<p>Der Mechanismus des Blue\/Green-Deployments funktioniert folgenderma\u00dfen: Wir erhalten den Datenverkehr f\u00fcr unsere Anwendungen \u00fcber HA-Proxy, der ihn an die laufenden Replikate der Anwendung mit derselben Version weiterleitet. <\/p>\n<p>Wenn ein neues Deployment stattfindet, verwenden wir Deployer, dem die neuen Komponenten zur Verf\u00fcgung gestellt werden, und dieser f\u00fchrt das Deployment der neuen Version durch. Das Deployment einer neuen Version der Anwendung bedeutet, dass ein neuer Satz von Replikaten ''hochgefahren'' wird, nachdem diese Replikate der neuen Version in einem separaten, neuen Pod gestartet werden. Allerdings wei\u00df HA-Proxy noch nichts \u00fcber diese und leitet vorerst keine Arbeitslast an sie weiter.<\/p>\n<p>Daher ist es zun\u00e4chst erforderlich, die neuen Versionen mit einem Health-Check zu \u00fcberpr\u00fcfen, um sicherzustellen, dass die Replikate bereit sind, die Last zu \u00fcbernehmen.<\/p>\n<p><img decoding=\"async\" alt=\"DEVOXX UK. Kubernetes in der Produktion: Blue\/Green Deployment, Auto-Scaling und Automatisierung von Deployments. Teil 2.\" src=\"\/wp-content\/uploads\/2020\/06\/6134f89567ac3627197883b2f4c768d4.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nAlle Bereitstellungskomponenten sollten eine Form von Health Check unterst\u00fctzen. Dies kann ein ganz einfacher HTTP-Check sein, bei dem Sie einen Statuscode von 200 erhalten, oder ein tiefgehenderer Check, bei dem Sie die Verbindung der Replikate zur Datenbank und zu anderen Diensten sowie die Stabilit\u00e4t der Verbindungen in der dynamischen Umgebung \u00fcberpr\u00fcfen. Dabei wird sichergestellt, dass alles gestartet wird und korrekt funktioniert. Dieser Prozess kann recht komplex sein. <\/p>\n<p><img decoding=\"async\" alt=\"DEVOXX UK. Kubernetes in der Produktion: Blue\/Green Deployment, Auto-Scaling und Automatisierung von Deployments. Teil 2.\" src=\"\/wp-content\/uploads\/2020\/06\/fdc537599187b32ab97bc00970283e1a.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nSobald das System die Funktionsf\u00e4higkeit aller aktualisierten Replikate best\u00e4tigt hat, wird der Deployer die Konfiguration aktualisieren und das passende confd \u00fcbergeben, welches ha-proxy neu konfiguriert. <\/p>\n<p><img decoding=\"async\" alt=\"DEVOXX UK. Kubernetes in der Produktion: Blue\/Green Deployment, Auto-Scaling und Automatisierung von Deployments. Teil 2.\" src=\"\/wp-content\/uploads\/2020\/06\/099240482096c2ac4aafe7e803409511.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nErst danach wird der Verkehr auf den Pod mit den Replikaten der neuen Version geleitet, w\u00e4hrend der alte Pod verschwindet. <\/p>\n<p><img decoding=\"async\" alt=\"DEVOXX UK. Kubernetes in der Produktion: Blue\/Green Deployment, Auto-Scaling und Automatisierung von Deployments. Teil 2.\" src=\"\/wp-content\/uploads\/2020\/06\/f656b3a3adfc27e782e5d9785b8b615e.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nDieser Mechanismus ist kein spezifisches Merkmal von Kubernetes. Das Konzept des Blue\/Green Deployments gibt es schon lange, und es hat immer einen Lastenausgleich verwendet. Zun\u00e4chst leiten Sie den gesamten Verkehr zur alten Version der Anwendung, und nach dem Update leiten Sie ihn vollst\u00e4ndig zur neuen Version um. Dieses Prinzip wird nicht nur in Kubernetes angewandt.<\/p>\n<p>Jetzt pr\u00e4sentiere ich Ihnen eine neue Bereitstellungskomponente \u2013 Deployer, die die Funktionsf\u00e4higkeit \u00fcberpr\u00fcft, den Proxy neu konfiguriert und so weiter. Dies ist ein Konzept, das nicht mit der Au\u00dfenwelt verbunden ist und innerhalb von Kubernetes existiert. Ich werde Ihnen zeigen, wie Sie Ihr eigenes Deployer-Konzept mit Open-Source-Tools erstellen k\u00f6nnen. <\/p>\n<p>Das erste, was Deployer tut, ist die Erstellung eines Replication Controllers (RC) unter Verwendung der Kubernetes-API. Diese API erstellt Pods und Services f\u00fcr die weitere Bereitstellung, also einen komplett neuen Cluster f\u00fcr unsere Anwendungen. Sobald der RC sichergestellt hat, dass die Replikate gestartet wurden, f\u00fchrt er einen Health-Check durch. Daf\u00fcr wird im Deployer der Befehl GET \/health verwendet. Dieser Befehl startet die entsprechenden \u00dcberpr\u00fcfungskomponenten und \u00fcberpr\u00fcft alle Elemente, die den Betrieb des Clusters gew\u00e4hrleisten. <\/p>\n<p><img decoding=\"async\" alt=\"DEVOXX UK. Kubernetes in der Produktion: Blue\/Green Deployment, Auto-Scaling und Automatisierung von Deployments. Teil 2.\" src=\"\/wp-content\/uploads\/2020\/06\/f2ef0232e17bc69f0b70ea9eabc2f456.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nNachdem alle Pods ihren \"Status\" gemeldet haben, erstellt Deployer ein neues Konfigurationselement: einen verteilten etcd-Speicher, der innerhalb von Kubernetes verwendet wird, unter anderem zur Speicherung der Konfiguration des Lastenausgleichs. Wir speichern Daten in etcd, und ein kleines Tool namens confd \u00fcberwacht etcd auf neue Daten. <\/p>\n<p>Wenn es \u00c4nderungen in der urspr\u00fcnglichen Konfiguration entdeckt, wird eine neue Konfigurationsdatei generiert und an den ha-proxy \u00fcbergeben. In diesem Fall wird der ha-proxy neu gestartet, ohne dass Verbindungen verloren gehen, und leitet die Last an die neuen Services weiter, die die neue Version unserer Anwendungen unterst\u00fctzen. <\/p>\n<p><img decoding=\"async\" alt=\"DEVOXX UK. Kubernetes in der Produktion: Blue\/Green Deployment, Auto-Scaling und Automatisierung von Deployments. Teil 2.\" src=\"\/wp-content\/uploads\/2020\/06\/bef1536c2b8dee6b0da710fc6c6fda99.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nWie Sie sehen, ist trotz der Vielzahl an Komponenten nichts kompliziert. Sie m\u00fcssen lediglich mehr Aufmerksamkeit auf die API und etcd richten. Ich m\u00f6chte Ihnen \u00fcber den Open-Source-Deploy-Manager berichten, den wir selbst verwenden \u2013 den Amdatu Kubernetes Deployer.<\/p>\n<p><img decoding=\"async\" alt=\"DEVOXX UK. Kubernetes in der Produktion: Blue\/Green Deployment, Auto-Scaling und Automatisierung von Deployments. Teil 2.\" src=\"\/wp-content\/uploads\/2020\/06\/34124e093d2e16fcbb80fd112c7d223f.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nEs ist ein Tool zur Orchestrierung von Kubernetes-Bereitstellungen mit Funktionen wie: <\/p>\n<ul>\n<li>Blue\/Green-Deployment;<\/li>\n<li>Konfiguration eines externen Lastenausgleichs;<\/li>\n<li>Verwaltung von Bereitstellungsdeskriptoren;<\/li>\n<li>Verwaltung der tats\u00e4chlichen Bereitstellung;<\/li>\n<li>Health Checks w\u00e4hrend der Bereitstellung \u00fcberpr\u00fcfen;<\/li>\n<li>Umgebungsvariablen in Pods implementieren.<\/li>\n<\/ul>\n<p>\nDieser Deployer basiert auf der Kubernetes API und bietet ein REST API zur Verwaltung von Deskriptoren und Bereitstellungen sowie ein Websocket API f\u00fcr Live-Logs w\u00e4hrend der Bereitstellung.<\/p>\n<p>Er speichert die Konfigurationsdaten des Lastenausgleichs in etcd, sodass Sie ha-proxy nicht direkt verwenden m\u00fcssen, sondern einfach Ihre eigene Konfigurationsdatei f\u00fcr den Lastenausgleich nutzen k\u00f6nnen. Amdatu Deployer ist in Go geschrieben, wie auch Kubernetes selbst, und unterliegt der Apache-Lizenz.<\/p>\n<p>Vor der Anwendung dieser Version des Deployers habe ich den folgenden Bereitstellungsdeskriptor verwendet, der die ben\u00f6tigten Parameter enth\u00e4lt. <\/p>\n<p><img decoding=\"async\" alt=\"DEVOXX UK. Kubernetes in der Produktion: Blue\/Green Deployment, Auto-Scaling und Automatisierung von Deployments. Teil 2.\" src=\"\/wp-content\/uploads\/2020\/06\/14e9ecca6ad772a43afcf95a4950fad8.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nEin wichtiges Element dieses Codes ist die Aktivierung des Flags \u201euseHealthCheck\u201c. Wir m\u00fcssen angeben, dass w\u00e4hrend des Deployments eine Verf\u00fcgbarkeitspr\u00fcfung durchgef\u00fchrt werden soll. Dieses Parameter kann deaktiviert werden, wenn im Deployment Containern von Drittanbietern verwendet werden, die keiner \u00dcberpr\u00fcfung bed\u00fcrfen. In diesem Deskriptor sind auch die Anzahl der Replikate und die URL des Frontends angegeben, die f\u00fcr ha-proxy ben\u00f6tigt wird. Am Ende wird das \u201epodspec\u201c-Flag erw\u00e4hnt, das sich an Kubernetes wendet, um Informationen zur Konfiguration von Ports, Abbildungen usw. abzurufen. Dies ist ein relativ einfacher Deskriptor im JSON-Format. <\/p>\n<p>Ein weiteres Werkzeug, das Teil des Open-Source-Projekts Amdatu ist, ist Deploymentctl. Es bietet eine Benutzeroberfl\u00e4che (UI) zur Konfiguration von Deployments, speichert die Deployment-Historie und enth\u00e4lt Webhooks f\u00fcr R\u00fcckrufe von Drittanbietern und Entwicklern. Sie k\u00f6nnen die UI auch weglassen, da der Amdatu Deployer selbst eine REST-API ist, aber dieses Interface kann Ihnen das Deployment erheblich erleichtern, ohne dass Sie irgendeine API verwenden m\u00fcssen. Deploymentctl ist in OSGi\/Vertx unter Verwendung von Angular 2 geschrieben. <\/p>\n<p>Ich werde jetzt das oben Gesagte auf dem Bildschirm demonstrieren, indem ich eine vorab aufgezeichnete Sitzung verwende, damit Sie nicht warten m\u00fcssen. Wir werden eine einfache Anwendung in Go bereitstellen. Keine Sorge, wenn Sie zuvor nichts mit Go zu tun hatten, diese Anwendung ist sehr einfach, sodass alles klar sein sollte. <\/p>\n<p><img decoding=\"async\" alt=\"DEVOXX UK. Kubernetes in der Produktion: Blue\/Green Deployment, Auto-Scaling und Automatisierung von Deployments. Teil 2.\" src=\"\/wp-content\/uploads\/2020\/06\/ab61ada396143e980d73a0bb8ff95076.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nHier erstellen wir einen HTTP-Server, der nur auf \/health antwortet. Diese Anwendung \u00fcberpr\u00fcft also nur die Funktionsf\u00e4higkeit eines Health Checks und nichts weiter. Wenn der Check besteht, wird die unten gezeigte JSON-Struktur verwendet. Sie enth\u00e4lt die Version der Anwendung, die vom Deployer bereitgestellt wird, und eine Nachricht, die Sie oben in der Datei sehen, sowie einen booleschen Datentyp \u2013 ob unsere Anwendung funktionsf\u00e4hig ist oder nicht.<\/p>\n<p>Mit der letzten Zeile habe ich ein wenig geschummelt, weil ich oben in der Datei einen festen booleschen Wert gesetzt habe, der mir sp\u00e4ter helfen wird, sogar eine \u00abnicht gesunde\u00bb Anwendung bereitzustellen. Darauf werden wir sp\u00e4ter zur\u00fcckkommen. <\/p>\n<p>Also, fangen wir an. Zuerst \u00fcberpr\u00fcfen wir, ob laufende Pods vorhanden sind, indem wir den Befehl ~ kubectl get pods verwenden, und anhand des fehlenden Frontend-URLs stellen wir sicher, dass derzeit keine Bereitstellungen stattfinden. <\/p>\n<p><img decoding=\"async\" alt=\"DEVOXX UK. Kubernetes in der Produktion: Blue\/Green Deployment, Auto-Scaling und Automatisierung von Deployments. Teil 2.\" src=\"\/wp-content\/uploads\/2020\/06\/4da1ae467993d6e60ec539ae5ff136ff.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nAuf dem Bildschirm sehen Sie jetzt die von mir erw\u00e4hnte Deploymentctl-Oberfl\u00e4che, in der die Bereitstellungsparameter festgelegt werden: Namespace, Anwendungsname, Bereitstellungsversion, Anzahl der Replikate, Frontend-URL, Containername, Image, Ressourcengrenzen, Portnummer f\u00fcr den Health-Check usw. Die Ressourcengrenzen sind sehr wichtig, da sie die maximale Ausnutzung der Hardware erm\u00f6glichen. Hier k\u00f6nnen Sie auch das Bereitstellungsprotokoll einsehen.<\/p>\n<p><img decoding=\"async\" alt=\"DEVOXX UK. Kubernetes in der Produktion: Blue\/Green Deployment, Auto-Scaling und Automatisierung von Deployments. Teil 2.\" src=\"\/wp-content\/uploads\/2020\/06\/edf6a02b336f1abce61f0a323edeee9d.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nWenn Sie jetzt den Befehl ~ kubectl get pods erneut ausf\u00fchren, erkennen Sie, dass das System f\u00fcr 20 Sekunden \"stillsteht\", w\u00e4hrend es das ha-proxy neu konfiguriert. Danach wird das Pod gestartet und unsere Replik kann im Bereitstellungsprotokoll gesehen werden. <\/p>\n<p><img decoding=\"async\" alt=\"DEVOXX UK. Kubernetes in der Produktion: Blue\/Green Deployment, Auto-Scaling und Automatisierung von Deployments. Teil 2.\" src=\"\/wp-content\/uploads\/2020\/06\/c6c8f6335e00d3a9cfcf4d4792ecf795.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nIch habe die 20-sek\u00fcndige Wartezeit aus dem Video herausgeschnitten, und jetzt sehen Sie auf dem Bildschirm, dass die erste Version der Anwendung bereitgestellt wurde. All dies wurde ausschlie\u00dflich \u00fcber die Benutzeroberfl\u00e4che durchgef\u00fchrt. <\/p>\n<p><img decoding=\"async\" alt=\"DEVOXX UK. Kubernetes in der Produktion: Blue\/Green Deployment, Auto-Scaling und Automatisierung von Deployments. Teil 2.\" src=\"\/wp-content\/uploads\/2020\/06\/d21fa9ad71e22b2bb9efdfc7bc9c8771.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nJetzt versuchen wir die zweite Version. Dazu \u00e4ndere ich die Nachricht der Anwendung von \u201eHello, Kubernetes!\u201c in \u201eHello, Deployer!\u201c. Das System erstellt dieses Image und speichert es im Docker-Repository, danach klicken wir einfach erneut auf die Schaltfl\u00e4che \u201eDeploy\u201c im Fenster Deploymentctl. Gleichzeitig wird das Deployment-Log automatisch gestartet, genau wie beim Deployment der ersten Version der Anwendung. <\/p>\n<p><img decoding=\"async\" alt=\"DEVOXX UK. Kubernetes in der Produktion: Blue\/Green Deployment, Auto-Scaling und Automatisierung von Deployments. Teil 2.\" src=\"\/wp-content\/uploads\/2020\/06\/e4ef784649fd18b1580d2562b318ac0f.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nDer Befehl ~ kubectl get pods zeigt, dass derzeit 2 Versionen der Anwendung ausgef\u00fchrt werden, jedoch zeigt das Frontend, dass immer noch Version 1 aktiv ist. <\/p>\n<p><img decoding=\"async\" alt=\"DEVOXX UK. Kubernetes in der Produktion: Blue\/Green Deployment, Auto-Scaling und Automatisierung von Deployments. Teil 2.\" src=\"\/wp-content\/uploads\/2020\/06\/1d4a9c91f836007325a2a2c833da8eff.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nDer Lastenausgleich wartet, bis die Health-Checks durchgef\u00fchrt wurden, und leitet dann den Datenverkehr zur neuen Version weiter. Nach 20 Sekunden wechseln wir zu curl und sehen, dass jetzt die Version 2 der Anwendung bereitgestellt wurde, w\u00e4hrend die erste entfernt wurde. <\/p>\n<p><img decoding=\"async\" alt=\"DEVOXX UK. Kubernetes in der Produktion: Blue\/Green Deployment, Auto-Scaling und Automatisierung von Deployments. Teil 2.\" src=\"\/wp-content\/uploads\/2020\/06\/e123618251e9fcb1c14829772634b6e8.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nDies war das Deployment einer \"gesunden\" Anwendung. Lassen Sie uns sehen, was passiert, wenn ich f\u00fcr die neue Version der Anwendung den Parameter Healthy von true auf false \u00e4ndere, also versuche, eine ungesunde Anwendung zu deployen, die den Health-Check nicht bestanden hat. Dies kann vorkommen, wenn w\u00e4hrend der Entwicklung Fehler in der Konfiguration der Anwendung gemacht wurden und sie so in die Produktion geschickt wurde. <\/p>\n<p>Wie Sie sehen, durchl\u00e4uft das Deployment alle oben genannten Phasen, und ~ kubectl get pods zeigt, dass beide Pods gestartet wurden. Im Gegensatz zum vorherigen Deployment zeigt das Protokoll jedoch den Status 'timeout'. Das bedeutet, dass die neue Version der Anwendung aufgrund eines fehlgeschlagenen Health-Checks nicht bereitgestellt werden kann. Infolgedessen sehen Sie, dass das System zur Verwendung der alten Version der Anwendung zur\u00fcckgekehrt ist und die neue Version einfach gel\u00f6scht wurde. <\/p>\n<p><img decoding=\"async\" alt=\"DEVOXX UK. Kubernetes in der Produktion: Blue\/Green Deployment, Auto-Scaling und Automatisierung von Deployments. Teil 2.\" src=\"\/wp-content\/uploads\/2020\/06\/4542761328603596704f21cef4c9d4a3.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nDer Vorteil ist, dass selbst bei einer gro\u00dfen Anzahl gleichzeitiger Anfragen an die Anwendung keine Unterbrechung w\u00e4hrend des Deployments bemerkbar ist. Wenn Sie diese Anwendung mit dem Gatling-Framework testen, das ihr eine maximale Anzahl an Anfragen sendet, wird keine einzige dieser Anfragen abgelehnt. Das bedeutet, dass unsere Benutzer Aktualisierungen der Version in Echtzeit gar nicht wahrnehmen. Sollte das Deployment fehlschlagen, wird weiterhin die alte Version betrieben, und im Erfolgsfall wechseln die Benutzer zur neuen Version. <\/p>\n<p>Es gibt nur eine Sache, die zu einem Fehlschlag f\u00fchren kann \u2013 wenn der Health Check erfolgreich war, aber die Anwendung zusammenbricht, sobald die Arbeitslast eintrifft, also der Kollaps nach Abschluss der Bereitstellung auftritt. In diesem Fall m\u00fcssen Sie manuell auf die \u00e4ltere Version zur\u00fccksetzen. Wir haben also betrachtet, wie man Kubernetes mit den daf\u00fcr vorgesehenen Open-Source-Tools verwendet. Der Bereitstellungsprozess wird erheblich einfacher, wenn Sie diese Tools in Ihre Build\/Deploy-Pipelines integrieren. Dabei k\u00f6nnen Sie sowohl die Benutzeroberfl\u00e4che zur Ausl\u00f6sung der Bereitstellung verwenden als auch diesen Prozess vollst\u00e4ndig automatisieren, indem Sie beispielsweise einen Commit zum Master verwenden. <\/p>\n<p><img decoding=\"async\" alt=\"DEVOXX UK. Kubernetes in der Produktion: Blue\/Green Deployment, Auto-Scaling und Automatisierung von Deployments. Teil 2.\" src=\"\/wp-content\/uploads\/2020\/06\/43b638be9d334c6c4f8e9f4fc00ce2f9.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nUnser Build-Server erstellt ein Docker-Image und f\u00fcgt es in den Docker Hub oder ein anderes von Ihnen verwendetes Registry ein. Docker Hub unterst\u00fctzt Webhooks, sodass wir eine Remote-Bereitstellung \u00fcber Deployer \u00fcber den oben gezeigten Weg starten k\u00f6nnen. So kann die Bereitstellung der Anwendung in eine potenzielle Produktionsumgebung vollst\u00e4ndig automatisiert werden. <\/p>\n<p>Kommen wir zum n\u00e4chsten Thema \u2013 der Skalierung von Kubernetes-Clustern. Ich m\u00f6chte darauf hinweisen, dass das Kommando \u201ekubectl\u201c f\u00fcr die Skalierung zust\u00e4ndig ist. Damit k\u00f6nnen Sie ganz einfach die Anzahl der Replikate in Ihrem bestehenden Cluster erh\u00f6hen. Allerdings m\u00f6chten wir in der Praxis meistens die Anzahl der Knoten und nicht der Pods erh\u00f6hen. <\/p>\n<p><img decoding=\"async\" alt=\"DEVOXX UK. Kubernetes in der Produktion: Blue\/Green Deployment, Auto-Scaling und Automatisierung von Deployments. Teil 2.\" src=\"\/wp-content\/uploads\/2020\/06\/890f436b4bc52c81f5db5b35e64e7e18.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nDabei kann es w\u00e4hrend der Arbeitszeiten notwendig sein, die Anzahl zu erh\u00f6hen, w\u00e4hrend es nachts, um die Kosten f\u00fcr Amazon zu senken, n\u00f6tig sein kann, die Anzahl der laufenden Anwendungsinstanzen zu reduzieren. Das bedeutet nicht, dass es ausreicht, lediglich die Anzahl der Pods zu skalieren, denn selbst wenn einer der Knoten ungenutzt bleibt, m\u00fcssen Sie weiterhin f\u00fcr diesen Knoten an Amazon zahlen. Das hei\u00dft, Sie m\u00fcssen neben der Skalierung der Pods auch die Anzahl der verwendeten Maschinen skalieren. <\/p>\n<p>Das kann Herausforderungen mit sich bringen, denn unabh\u00e4ngig davon, ob wir Amazon oder einen anderen Cloud-Dienst nutzen, wei\u00df Kubernetes nichts \u00fcber die Anzahl der verwendeten Maschinen. Es fehlt ein Werkzeug, um das System auf Knotenebene zu skalieren. <\/p>\n<p><img decoding=\"async\" alt=\"DEVOXX UK. Kubernetes in der Produktion: Blue\/Green Deployment, Auto-Scaling und Automatisierung von Deployments. Teil 2.\" src=\"\/wp-content\/uploads\/2020\/06\/2f00b19f1cb665d8e7bd896fa419554c.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nDeshalb m\u00fcssen wir uns sowohl um die Nodes als auch um die Pods k\u00fcmmern. Wir k\u00f6nnen die Bereitstellung neuer Nodes problemlos \u00fcber die AWS API und die Auto Scaling-Gruppe verwalten, um die Anzahl der Arbeitsknoten in Kubernetes zu konfigurieren. Au\u00dferdem l\u00e4sst sich cloud-init oder ein \u00e4hnliches Skript verwenden, um die Nodes im Kubernetes-Cluster zu registrieren. <\/p>\n<p>Ein neuer Server startet in der Scaling-Gruppe, registriert sich als Knoten, wird im Master-Registry eingetragen und beginnt zu arbeiten. Danach kann die Anzahl der Replikate erh\u00f6ht werden, um die neu entstandenen Knoten zu nutzen. Das Verringern der Skalierung erfordert mehr Aufwand, da sichergestellt werden muss, dass dieser Schritt nicht zur Zerst\u00f6rung bereits laufender Anwendungen f\u00fchrt, nachdem \"nicht ben\u00f6tigte\" Maschinen abgeschaltet wurden. Um ein solches Szenario zu verhindern, m\u00fcssen die Knoten in den Status \"unschedulable\" versetzt werden. Das bedeutet, dass der Standard-Planer beim Planen der DaemonSet-Pods diese Knoten ignorieren wird. Der Planer wird nichts von diesen Servern entfernen, aber auch keine neuen Container dort starten. Der n\u00e4chste Schritt besteht darin, den Knoten zu drainen, das hei\u00dft, die laufenden Pods auf eine andere Maschine oder andere Knoten mit ausreichender Kapazit\u00e4t zu verschieben. Sobald sichergestellt ist, dass auf diesen Knoten keine Container mehr laufen, k\u00f6nnen sie aus Kubernetes entfernt werden. Danach existieren sie f\u00fcr Kubernetes einfach nicht mehr. Anschlie\u00dfend muss die AWS API genutzt werden, um die nicht ben\u00f6tigten Knoten oder Maschinen abzuschalten. <br \/>\nSie k\u00f6nnen Amdatu Scalerd verwenden \u2013 ein weiteres Open-Source-Tool zur Skalierung, das dem AWS API \u00e4hnlich ist. Es bietet eine CLI zum Hinzuf\u00fcgen oder Entfernen von Knoten im Cluster. Eine interessante Funktion ist die M\u00f6glichkeit, den Scheduler \u00fcber die folgende JSON-Datei anzupassen. <\/p>\n<p><img decoding=\"async\" alt=\"DEVOXX UK. Kubernetes in der Produktion: Blue\/Green Deployment, Auto-Scaling und Automatisierung von Deployments. Teil 2.\" src=\"\/wp-content\/uploads\/2020\/06\/f70c7c722cacb4792c316e9f80a7500a.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nDer dargestellte Code halbiert die Kapazit\u00e4t des Clusters w\u00e4hrend der Nachtstunden. Er ist so konfiguriert, dass sowohl die Anzahl der vorhandenen Replikate als auch die gew\u00fcnschte Kapazit\u00e4t des Amazon-Clusters eingestellt werden. Die Verwendung dieses Schedulers reduziert automatisch die Anzahl der Knoten nachts und erh\u00f6ht sie am Morgen, wodurch Kosten f\u00fcr die Nutzung von Knoten eines Cloud-Dienstes wie Amazon eingespart werden. Diese Funktion ist nicht in Kubernetes integriert, aber die Nutzung von Scalerd erm\u00f6glicht es Ihnen, diese Plattform nach Belieben zu skalieren. <\/p>\n<p>Ich m\u00f6chte Ihre Aufmerksamkeit darauf lenken, dass mir viele Menschen sagen: \"Das ist alles gut und sch\u00f6n, aber was ist mit meiner Datenbank, die in der Regel in einem statischen Zustand ist?\" Wie kann man so etwas in einer dynamischen Umgebung wie Kubernetes zum Laufen bringen? Meiner Meinung nach sollten Sie das nicht tun und nicht versuchen, ein Datenspeicher in Kubernetes zu organisieren. Technisch ist es m\u00f6glich, und es gibt Anleitungen dazu im Internet, aber es wird Ihr Leben erheblich komplizierter machen. <\/p>\n<p>Ja, in Kubernetes gibt es das Konzept von persistenten Speichern, und Sie k\u00f6nnen versuchen, solche Datenspeicher wie Mongo oder MySQL zu betreiben, aber das ist eine ziemlich m\u00fchsame Aufgabe. Das liegt daran, dass Datenspeicher nicht vollst\u00e4ndig f\u00fcr die Interaktion mit einer dynamischen Umgebung ausgelegt sind. Die meisten Datenbanken erfordern erhebliche Konfigurationen, einschlie\u00dflich manuellem Cluster-Setup, und m\u00f6gen kein automatisches Scaling und \u00e4hnliche Dinge nicht. <br \/>\nDeshalb sollten Sie sich das Leben nicht unn\u00f6tig erschweren, indem Sie versuchen, einen Daten-Storage in Kubernetes zu starten. Organisieren Sie deren Betrieb auf herk\u00f6mmliche Weise mit bew\u00e4hrten Diensten und erm\u00f6glichen Sie Kubernetes einfach deren Nutzung.<\/p>\n<p><img decoding=\"async\" alt=\"DEVOXX UK. Kubernetes in der Produktion: Blue\/Green Deployment, Auto-Scaling und Automatisierung von Deployments. Teil 2.\" src=\"\/wp-content\/uploads\/2020\/06\/129e8d403f42b7aa6fb022b386955e9e.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nZum Abschluss m\u00f6chte ich Ihnen die Cloud RTI-Plattform auf Basis von Kubernetes vorstellen, an der mein Team arbeitet. Sie bietet eine zentrale Protokollierung, \u00dcberwachung von Anwendungen und Clustern und verf\u00fcgt \u00fcber viele weitere n\u00fctzliche Funktionen, die Ihnen von Nutzen sein werden. Verschiedene Open-Source-Tools wie Grafana werden zur Anzeige der \u00dcberwachung eingesetzt.<\/p>\n<p><img decoding=\"async\" alt=\"DEVOXX UK. Kubernetes in der Produktion: Blue\/Green Deployment, Auto-Scaling und Automatisierung von Deployments. Teil 2.\" src=\"\/wp-content\/uploads\/2020\/06\/a0e79033dbc0a2683e3567934c9ba014.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n<img decoding=\"async\" alt=\"DEVOXX UK. Kubernetes in der Produktion: Blue\/Green Deployment, Auto-Scaling und Automatisierung von Deployments. Teil 2.\" src=\"\/wp-content\/uploads\/2020\/06\/2b1b7ba139053fc492c7ad25e96f362f.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nEs stellte sich die Frage, warum man mit Kubernetes einen Lastenausgleichsmechanismus wie ha-proxy verwenden sollte. Eine berechtigte Frage, denn derzeit gibt es zwei Ebenen der Lastenverteilung. Kubernetes-Dienste befinden sich nach wie vor auf virtuellen IP-Adressen. Sie k\u00f6nnen diese nicht f\u00fcr die Ports externer Hosts verwenden, da sich die Adresse \u00e4ndern k\u00f6nnte, wenn Amazon sein Cloud-Hosting \u00fcberlastet. Deshalb platzieren wir ha-proxy vor den Diensten, um eine stabilere Struktur f\u00fcr die kontinuerliche Interaktion des Traffics mit Kubernetes zu schaffen. <\/p>\n<p>Eine weitere interessante Frage ist, wie man \u00c4nderungen am Datenbankschema bei einem Blue\/Green Deployment handhaben kann. Das Problem ist, dass das \u00c4ndern des Datenbankschemas, unabh\u00e4ngig von der Nutzung von Kubernetes, eine komplexe Herausforderung darstellt. Sie m\u00fcssen sicherstellen, dass die alte und die neue Schema-Version kompatibel sind, bevor Sie die Datenbank aktualisieren und anschlie\u00dfend die Anwendungen selbst aktualisieren k\u00f6nnen. Man kann ein 'Hot Swapping' der Datenbank durchf\u00fchren und danach die Anwendungen aktualisieren. Ich kenne Leute, die einen v\u00f6llig neuen Datenbank-Cluster mit einem neuen Schema eingerichtet haben, was eine m\u00f6gliche L\u00f6sung ist, wenn Sie eine schemalose Datenbank wie Mongo verwenden. Aber so oder so ist das keine einfache Aufgabe. Wenn es keine weiteren Fragen gibt, danke f\u00fcr Ihre Aufmerksamkeit!<\/p>\n<p><center><div class=\"youtube-placeholder\" data-id=\"-Ci4vd4rh4M\" onclick=\"loadVideo(this)\">\r\n        <img decoding=\"async\" src=\"https:\/\/img.youtube.com\/vi\/-Ci4vd4rh4M\/hqdefault.jpg\" alt=\"Video abspielen\" loading=\"lazy\" width=\"480\" height=\"360\" style=\"width:100%;height:auto;\">\r\n        <div class=\"play-button\"><\/div>\r\n    <\/div><\/center><\/p>\n<h3>Ein wenig Werbung \ud83d\ude42<\/h3>\n<p>\nDanke, dass Sie bei uns bleiben. Gefallen Ihnen unsere Artikel? M\u00f6chten Sie mehr interessante Inhalte sehen? Unterst\u00fctzen Sie uns, indem Sie eine Bestellung aufgeben oder uns Ihren Freunden empfehlen. <noindex><a rel=\"nofollow\" href=\"https:\/\/ua-hosting.company\/cloudvps\/nl\">Cloud-VPS f\u00fcr Entwickler ab 4,99 $<\/a><\/noindex>, <b>eine einzigartige Alternative zu Einsteiger-Servern, die wir f\u00fcr Sie entwickelt haben:<\/b> <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/company\/ua-hosting\/blog\/347386\/\">Alles \u00fcber VPS (KVM) E5-2697 v3 (6 Kerne) 10GB DDR4 480GB SSD 1Gbps ab 19 $ oder wie man einen Server richtig teilt?<\/a><\/noindex> (Verf\u00fcgbar sind Optionen mit RAID1 und RAID10, bis zu 24 Kerne und bis zu 40GB DDR4).<\/p>\n<p><b>Dell R730xd im Equinix Tier IV Rechenzentrum in Amsterdam zum halben Preis?<\/b> Nur bei uns <b><noindex><a rel=\"nofollow\" href=\"https:\/\/ua-hosting.company\/serversnl\">2 x Intel TetraDeca-Core Xeon 2x E5-2697v3 2.6GHz 14C 64GB DDR4 4x960GB SSD 1Gbps 100 TB ab 199 $<\/a><\/noindex> in den Niederlanden! <b>Dell R420 \u2014 2x E5-2430 2.2GHz 6C 128GB DDR3 2x960GB SSD 1Gbps 100TB \u2014 ab 99 $!<\/b><\/b> Lesen Sie dar\u00fcber <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/company\/ua-hosting\/blog\/329618\/\">Wie man eine Unternehmenskosten-Infrastruktur mit Dell R730xd E5-2650 v4-Servern f\u00fcr ein paar Euro aufbaut?<\/a><\/noindex><br \/>\n<br \/>Quelle: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/ua-hosting\/blog\/504672\/\">habr.com<\/a> <\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>Kubernetes \u2014 \u044d\u0442\u043e \u043e\u0442\u043b\u0438\u0447\u043d\u044b\u0439 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442 \u0434\u043b\u044f \u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u043e\u0432 Docker \u0432 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0438\u0437\u043e\u0432\u0430\u043d\u043d\u043e\u0439 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0439 \u0441\u0440\u0435\u0434\u0435. \u041e\u0434\u043d\u0430\u043a\u043e \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0442 \u0437\u0430\u0434\u0430\u0447\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 Kubernetes \u0440\u0435\u0448\u0438\u0442\u044c \u043d\u0435 \u0432 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0438. \u041f\u0440\u0438 \u0447\u0430\u0441\u0442\u043e\u043c \u0440\u0430\u0437\u0432\u0435\u0440\u0442\u044b\u0432\u0430\u043d\u0438\u0438 \u0432 \u0440\u0430\u0431\u043e\u0447\u0435\u0439 \u0441\u0440\u0435\u0434\u0435 \u043c\u044b \u043d\u0443\u0436\u0434\u0430\u0435\u043c\u0441\u044f \u0432 \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u043c Blue\/Green deployment, \u0447\u0442\u043e\u0431\u044b \u0438\u0437\u0431\u0435\u0436\u0430\u0442\u044c \u043f\u0440\u043e\u0441\u0442\u043e\u0435\u0432 \u0432 \u0434\u0430\u043d\u043d\u043e\u043c \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0435, \u043f\u0440\u0438 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u0442\u0430\u043a\u0436\u0435 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u043e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0442\u044c \u0432\u043d\u0435\u0448\u043d\u0438\u0435 HTTP-\u0437\u0430\u043f\u0440\u043e\u0441\u044b \u0438 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0442\u044c \u0432\u044b\u0433\u0440\u0443\u0437\u043a\u0443 SSL. \u042d\u0442\u043e \u0442\u0440\u0435\u0431\u0443\u0435\u0442 \u0438\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u0438 [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":83788,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-83787","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=\"Kubernetes \u2014 \u044d\u0442\u043e \u043e\u0442\u043b\u0438\u0447\u043d\u044b\u0439 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442 \u0434\u043b\u044f \u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u043e\u0432 Docker \u0432 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0438\u0437\u043e\u0432\u0430\u043d\u043d\u043e\u0439 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0439 \u0441\u0440\u0435\u0434\u0435. \u041e\u0434\u043d\u0430\u043a\u043e \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0442 \u0437\u0430\u0434\u0430\u0447\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 Kubernetes \u0440\u0435\u0448\u0438\u0442\u044c \u043d\u0435 \u0432 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0438. \u041f\u0440\u0438 \u0447\u0430\u0441\u0442\u043e\u043c \u0440\u0430\u0437\u0432\u0435\u0440\u0442\u044b\u0432\u0430\u043d\u0438\u0438 \u0432 \u0440\u0430\u0431\u043e\u0447\u0435\u0439 \u0441\u0440\u0435\u0434\u0435 \u043c\u044b \u043d\u0443\u0436\u0434\u0430\u0435\u043c\u0441\u044f \u0432 \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u043c Blue\/Green deployment, \u0447\u0442\u043e\u0431\u044b \u0438\u0437\u0431\u0435\u0436\u0430\u0442\u044c \u043f\u0440\u043e\u0441\u0442\u043e\u0435\u0432 \u0432 \u0434\u0430\u043d\u043d\u043e\u043c \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0435, \u043f\u0440\u0438 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u0442\u0430\u043a\u0436\u0435 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u043e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0442\u044c \u0432\u043d\u0435\u0448\u043d\u0438\u0435 HTTP-\u0437\u0430\u043f\u0440\u043e\u0441\u044b \u0438 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0442\u044c \u0432\u044b\u0433\u0440\u0443\u0437\u043a\u0443 SSL. \u042d\u0442\u043e \u0442\u0440\u0435\u0431\u0443\u0435\u0442 \u0438\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u0438\" \/>\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\/devoxx-uk-kubernetes-v-prodakshene-blue-green-deployment-avtomasshtabirovanie-i-avtomatizacziya-razvertyvaniya-chast-2\" \/>\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\udd47DEVOXX UK. Kubernetes \u0432 \u043f\u0440\u043e\u0434\u0430\u043a\u0448\u0435\u043d\u0435: Blue\/Green deployment, \u0430\u0432\u0442\u043e\u043c\u0430\u0441\u0448\u0442\u0430\u0431\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0438 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0437\u0430\u0446\u0438\u044f \u0440\u0430\u0437\u0432\u0435\u0440\u0442\u044b\u0432\u0430\u043d\u0438\u044f. \u0427\u0430\u0441\u0442\u044c 2 | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"Kubernetes \u2014 \u044d\u0442\u043e \u043e\u0442\u043b\u0438\u0447\u043d\u044b\u0439 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442 \u0434\u043b\u044f \u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u043e\u0432 Docker \u0432 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0438\u0437\u043e\u0432\u0430\u043d\u043d\u043e\u0439 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0439 \u0441\u0440\u0435\u0434\u0435. \u041e\u0434\u043d\u0430\u043a\u043e \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0442 \u0437\u0430\u0434\u0430\u0447\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 Kubernetes \u0440\u0435\u0448\u0438\u0442\u044c \u043d\u0435 \u0432 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0438. \u041f\u0440\u0438 \u0447\u0430\u0441\u0442\u043e\u043c \u0440\u0430\u0437\u0432\u0435\u0440\u0442\u044b\u0432\u0430\u043d\u0438\u0438 \u0432 \u0440\u0430\u0431\u043e\u0447\u0435\u0439 \u0441\u0440\u0435\u0434\u0435 \u043c\u044b \u043d\u0443\u0436\u0434\u0430\u0435\u043c\u0441\u044f \u0432 \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u043c Blue\/Green deployment, \u0447\u0442\u043e\u0431\u044b \u0438\u0437\u0431\u0435\u0436\u0430\u0442\u044c \u043f\u0440\u043e\u0441\u0442\u043e\u0435\u0432 \u0432 \u0434\u0430\u043d\u043d\u043e\u043c \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0435, \u043f\u0440\u0438 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u0442\u0430\u043a\u0436\u0435 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u043e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0442\u044c \u0432\u043d\u0435\u0448\u043d\u0438\u0435 HTTP-\u0437\u0430\u043f\u0440\u043e\u0441\u044b \u0438 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0442\u044c \u0432\u044b\u0433\u0440\u0443\u0437\u043a\u0443 SSL. \u042d\u0442\u043e \u0442\u0440\u0435\u0431\u0443\u0435\u0442 \u0438\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u0438\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/de\/blog\/administrirovanie\/devoxx-uk-kubernetes-v-prodakshene-blue-green-deployment-avtomasshtabirovanie-i-avtomatizacziya-razvertyvaniya-chast-2\" \/>\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=\"2020-06-03T05:42:26+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2020-06-03T05:42:26+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\udd47DEVOXX UK. Kubernetes in der Produktion: Blue\/Green-Bereitstellung, Automatisierung und Autoskalierung. Teil 2 | ProHoster","description":"Kubernetes ist ein hervorragendes Werkzeug zum Betreiben von Docker-Containern in einer clusterbasierten Produktionsumgebung. Es gibt jedoch Aufgaben, die Kubernetes nicht bew\u00e4ltigen kann. Bei h\u00e4ufigen Eins\u00e4tzen in Produktionsumgebungen ben\u00f6tigen wir ein vollst\u00e4ndig automatisiertes Blue\/Green Deployment, um Ausfallzeiten zu vermeiden. Dabei m\u00fcssen auch externe HTTP-Anfragen verarbeitet und SSL-Verbindungen sicher beendet werden. Dies erfordert eine Integration.","canonical_url":"https:\/\/prohoster.info\/de\/blog\/administrirovanie\/devoxx-uk-kubernetes-v-prodakshene-blue-green-deployment-avtomasshtabirovanie-i-avtomatizacziya-razvertyvaniya-chast-2","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\udd47DEVOXX UK. Kubernetes \u0432 \u043f\u0440\u043e\u0434\u0430\u043a\u0448\u0435\u043d\u0435: Blue\/Green deployment, \u0430\u0432\u0442\u043e\u043c\u0430\u0441\u0448\u0442\u0430\u0431\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0438 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0437\u0430\u0446\u0438\u044f \u0440\u0430\u0437\u0432\u0435\u0440\u0442\u044b\u0432\u0430\u043d\u0438\u044f. \u0427\u0430\u0441\u0442\u044c 2 | ProHoster","og:description":"Kubernetes \u2014 \u044d\u0442\u043e \u043e\u0442\u043b\u0438\u0447\u043d\u044b\u0439 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442 \u0434\u043b\u044f \u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u043e\u0432 Docker \u0432 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0438\u0437\u043e\u0432\u0430\u043d\u043d\u043e\u0439 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0439 \u0441\u0440\u0435\u0434\u0435. \u041e\u0434\u043d\u0430\u043a\u043e \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0442 \u0437\u0430\u0434\u0430\u0447\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 Kubernetes \u0440\u0435\u0448\u0438\u0442\u044c \u043d\u0435 \u0432 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0438. \u041f\u0440\u0438 \u0447\u0430\u0441\u0442\u043e\u043c \u0440\u0430\u0437\u0432\u0435\u0440\u0442\u044b\u0432\u0430\u043d\u0438\u0438 \u0432 \u0440\u0430\u0431\u043e\u0447\u0435\u0439 \u0441\u0440\u0435\u0434\u0435 \u043c\u044b \u043d\u0443\u0436\u0434\u0430\u0435\u043c\u0441\u044f \u0432 \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u043c Blue\/Green deployment, \u0447\u0442\u043e\u0431\u044b \u0438\u0437\u0431\u0435\u0436\u0430\u0442\u044c \u043f\u0440\u043e\u0441\u0442\u043e\u0435\u0432 \u0432 \u0434\u0430\u043d\u043d\u043e\u043c \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0435, \u043f\u0440\u0438 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u0442\u0430\u043a\u0436\u0435 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u043e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0442\u044c \u0432\u043d\u0435\u0448\u043d\u0438\u0435 HTTP-\u0437\u0430\u043f\u0440\u043e\u0441\u044b \u0438 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0442\u044c \u0432\u044b\u0433\u0440\u0443\u0437\u043a\u0443 SSL. \u042d\u0442\u043e \u0442\u0440\u0435\u0431\u0443\u0435\u0442 \u0438\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u0438","og:url":"https:\/\/prohoster.info\/de\/blog\/administrirovanie\/devoxx-uk-kubernetes-v-prodakshene-blue-green-deployment-avtomasshtabirovanie-i-avtomatizacziya-razvertyvaniya-chast-2","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":"2020-06-03T05:42:26+00:00","article:modified_time":"2020-06-03T05:42:26+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"83787","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":null,"breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-02-28 15:11:01","updated":"2022-09-28 11:45:41"},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/posts\/83787","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=83787"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/posts\/83787\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/media\/83788"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/media?parent=83787"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/categories?post=83787"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/tags?post=83787"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}