Warum ist Containerorchestrierung wichtig?
- 7 Minuten
In dieser Lektion können Sie dem Tailspin-Team folgen, während sie Strategien für die Umsetzung einer neuen Direktive vom Management aus untersuchen. Das Team untersucht, wie Kubernetes bei ihrem Übergang zu einer Microservices-Architektur helfen können.
Die Zukunft ist kleiner
Bei Tailspin geht es bergauf. Bei einer kürzlich durchgeführten Management-Offsite präsentierte Andy die jüngsten Erfolge seines Teams mit Azure DevOps, die gut empfangen wurden. Andy präsentierte außerdem eine Demo des kürzlich durchgeführten Proof-of-Concept-Projekts des Teams mithilfe von Docker-Containern. Diese Demonstrationen führten zu einer Reihe produktiver Gespräche über die technische Zukunft der Organisation. Am nächsten Tag kehrt Andy zurück, um die Neuigkeiten mit dem Space Game-Webteam zu teilen.
Andy: Die Dinge sind gestern bei meiner Offsite-Präsentation wirklich gut gelaufen. Das Management ist beeindruckt von der bisher geleisteten Arbeit und hat uns eine besondere Aufgabe erteilt.
Tim: Uh oh. Ich bin schon lange genug dabei, um eine solche Falle aus weiter Entfernung zu erkennen.
Andy: Nein, das ist eine großartige Gelegenheit für uns. Die Verwaltung liebte unsere Docker-Containerdemo und möchte, dass wir eine Microservices-Architektur einführen.
Amita: Microservices? Mögen Sie Apps für Smartphones und Uhren?
Andy: Nein, Microservices sind typische Apps wie unsere Web-App. Der Hauptunterschied besteht darin, dass wir anstelle der Erstellung und Bereitstellung einer einzelnen monolithischen App alle Komponenten umgestalten, die besser verwaltet und als autonome Dienste verwaltet werden würden. Anschließend entwickeln wir diese Dienste so, dass sie in ihrem Bereich kompetent sind, und setzen sie unabhängig ein.
Tim: Ich bin mir nicht sicher, dass ich den Sound davon mag. Ich arbeite bereits mit so vielen Diensten in unseren Umgebungen. Ich weiß nicht, ob ich mehr auf meinem Teller möchte.
Andy: Das ist eine verständliche Sorge. Glücklicherweise gibt es einige großartige Tools zum Verwalten einer Vielzahl von Containern in einer bestimmten Umgebung. Wir wurden gebeten, eine Multi-Container-Lösung für unsere Web-App auszuprobieren, die mit Kubernetes koordiniert wird. Sie möchten auch wissen, wie sich dies auf unseren DevOps-Prozess auswirkt.
Mara: Ich habe mich über Kubernetes informiert. Azure unterstützt es über den Azure Kubernetes Service, und es gibt Unterstützung für Pipelines in Azure DevOps.
Amita: Dieser Prozess klingt so, als würde es komplex werden. Wie wirkt sich dies auf Tests aus?
Mara: Es sollte keine bedeutende Änderung sein. Kubernetes bietet eine Möglichkeit für die Bereitstellung in verschiedenen Namespaces. Dies ermöglicht es uns, unsere Bereitstellungen zu partitionieren, sodass wir über ganze Umgebungen verfügen können, die für Tests im Vergleich zur Produktion vorgesehen sind. Und da sie alle im selben Cluster laufen und dieselben Container verwenden, sollte die Testerfahrung das bieten, was wir in der Produktion erwarten.
Amita: Wird es schwierig sein, nachzuverfolgen, welche Umgebung wo ist?
Mara: Nein, wir können Azure DevOps-Umgebungen verwenden, um all das zu erledigen. Sie können herausfinden, wo sich jeder Dienst befindet und wie er über das Portal dorthin gelangt ist. Es ist alles automatisiert über die Pipeline, so dass es nichts gibt, das wir manuell nachverfolgen müssen. Die einzige Sorge, die ich jetzt habe, ist, wie viel Einfluss es auf unsere Entwicklungserfahrung haben wird, um dies aufzubauen.
Andy: Die gute Nachricht ist, dass die Auswirkung minimal ist. Sobald wir unsere Projekte zum Erstellen von Docker-Containern eingerichtet haben, benötigen wir für die Bereitstellung in Kubernetes lediglich einige Manifestdateien, die die Dienste und deren Bereitstellungen beschreiben.
Mara: Haben Sie darüber nachgedacht, was wir als zweiten Container umgestalten werden? Ich weiß, dass mehrere Teams uns gebeten haben, unser Leaderboard über eine Web-API verfügbar zu machen.
Andy: Ich bin ein Schritt voraus. Ich habe letzte Nacht das Docker-Projekt geforkt und die Leaderboard-Datenfunktionalität in einen eigenen Microservice umgestaltet. Dies lässt uns einen Container für die Website und eine andere für eine Leaderboard-API zu. Beide Container sind so konfiguriert, dass sie über eigene öffentliche Endpunkte verfügen, die wir für alle Personen freigeben können, die die Website oder API verwenden möchten, unabhängig davon, welche Technologiestapel ihre App verwendet. Wenn die Last für beides erheblich wächst, können wir ihre Container unabhängig voneinander skalieren.
Mara: Dieses Projekt klingt großartig! Beginnen wir mit der Aktualisierung der Releasepipeline.
Was ist Kubernetes?
Kubernetes ist eine Open-Source-Containerorchestrierungsplattform, die die Bereitstellung, Skalierung und Verwaltung containerisierter Anwendungen automatisiert. Es bietet ein Framework für die Ausführung verteilter Systeme auf deklarative, reaktionsfähige Weise und kann Container auf mehreren Hosts ausführen, wodurch ressourceneffizient genutzt und die Zuverlässigkeit erhöht wird.
Das Tailspin-Team hat Kubernetes für dieses Szenario ausgewählt, da es alle ihre Anforderungen erfüllt:
Komplexität von Bereitstellungen mit mehreren Containern: Kubernetes wurde in erster Linie entwickelt, um die Prozesse rund um die Bereitstellung und Wartung von Containerbereitstellungen zu automatisieren.
Konsistenz zwischen Umgebungen und Phasen: Ebenso wie Container eine konsistente Bereitstellung für die darin enthaltenen Apps gewährleisten, stellt Kubernetes eine konsistente Bereitstellung für die Container sicher, die ein Cluster verwaltet.
Azure DevOps-Unterstützung: Azure DevOps bietet erstklassige Unterstützung für die Arbeit mit Kubernetes.
Erleichterte Entwicklung: Die Auswirkungen von Kubernetes auf ein Quellprojekt sind vergleichbar mit dem Hinzufügen der Docker-Unterstützung, die minimal und auf deklarative Konfiguration beschränkt ist.
Durch die Einführung von Kubernetes wird der Prozess der Einführung einer Microservices-Architektur vereinfacht, die mehrere Docker-Container nutzt.