Warum ist Containerorchestrierung wichtig?

Abgeschlossen

In dieser Lektion können Sie das Tailspin-Team dabei begleiten, wie es Strategien zur Umsetzung einer neuen Anweisung der Geschäftsführung erkundet. Das Team untersucht, wie Kubernetes bei der Umstellung auf eine Microservicesarchitektur helfen kann.

Die Zukunft ist kleiner

Es geht aufwärts bei Tailspin. Bei einem kürzlichen Offsite-Meeting des Managements hat Andy die letzten Erfolge seines Teams mit Azure DevOps vorgestellt, die gut angekommen sind. Andy hat auch eine Demo des letzten Proof-of-Concept-Projekts des Teams mit Docker-Containern vorgestellt. Diese Demos haben eine Reihe produktiver Gespräche über die technische Zukunft der Organisation eingeleitet. Am nächsten Tag kehrt Andy zurück, um dem Space Game-Webteam die Neuigkeiten mitzuteilen.

Andy: Meine Offsite-Präsentation gestern ist sehr gut gelaufen. Das Management ist von unserer bisherigen Arbeit beeindruckt und hat uns einen Sonderauftrag erteilt.

Tim: Ah oh. Ich bin schon lange genug dabei, um den Braten zu riechen.

Andy: Nein, das ist eine tolle Chance für uns. Dem Management hat unsere Docker-Containerdemo gefallen, und es möchte, dass wir die Einführung einer Microservicearchitektur untersuchen.

Amita: Microservices? Wie Apps für Smartphones und Uhren?

Andy: Nein, Microservices sind typische Apps wie unsere Web-App. Der Hauptunterschied besteht darin, dass wir alle Komponenten, die als autonome Dienste besser verwaltet und verwaltet werden können, umgestalten und keine einzelne monolithische App erstellen und bereitstellen. Anschließend erstellen wir diese Services so, dass sie gut für ihre Aufgabe geeignet sind, und stellen sie für einen unabhängigen Betrieb bereit.

Tim: Ich bin mir nicht sicher, ob sich das gut anhört. Ich arbeite bereits mit so vielen Services in unseren Umgebungen. Ich weiß nicht, ob ich noch mehr davon haben will.

Andy: Diese Sorge ist verständlich. Glücklicherweise gibt es einige hervorragende Tools zum Verwalten einer Vielzahl von Containern in einer bestimmten Umgebung. Wir wurden gebeten, eine Multicontainerlösung für unsere Web-App zu entwickeln, die mit Kubernetes orchestriert wird. Das Management möchte auch wissen, wie sich das auf unseren DevOps-Prozess auswirkt.

Mara: Ich informiere mich gerade über Kubernetes. Azure bietet eine hervorragende Unterstützung durch Azure Kubernetes Service, und ich weiß, dass es dafür Pipelineunterstützung in Azure DevOps gibt.

Amita: Dieser Prozess scheint komplex zu werden. Wie wirkt er sich auf das Testen aus?

Mara: Das sollte keine wesentliche Änderung darstellen. Kubernetes bietet eine Möglichkeit für die Bereitstellung in verschiedenen Namespaces. Dadurch können wir unsere Bereitstellungen so partitionieren, dass wir ganze Umgebungen den Tests (im Gegensatz zur Produktion) zuordnen können. Und da sie alle im selben Cluster ausgeführt werden und dieselben Container verwenden, sollten die Erfahrungen beim Testen mit den erwarteten Ergebnissen in der Produktion vergleichbar sein.

Amita: Ist es nicht schwierig, den Überblick darüber zu behalten, um welche Umgebung es sich jeweils handelt?

Mara: Nein, wir können für alles Azure DevOps-Umgebungen nutzen. Mithilfe des Portals können wir herausfinden, wo sich jeder Dienste befindet und wie er dorthin gelangt ist. Das alles wird durch die Pipeline automatisiert, sodass wir nichts manuell nachverfolgen müssen. Die einzige Sorge, die ich aktuell habe, ist, wie sehr sich dieses Erstellen auf unsere Entwicklungserfahrung auswirken wird.

Andy: Die gute Nachricht ist, dass die Auswirkungen minimal sind. Wenn wir unsere Projekte für die Erstellung von Docker-Containern eingerichtet haben, brauchen wir nur noch einige Manifestdateien in Kubernetes bereitzustellen, welche die Dienste und zugehörigen Bereitstellungen beschreiben.

Mara: Haben Sie schon darüber nachgedacht, was wir bei der Umgestaltung als zweiten Container nehmen? Ich weiß, dass uns mehrere Teams gebeten haben, unser Leaderboard über eine Web-API zur Verfügung zu stellen.

Andy: Ich bin schon einen Schritt weiter. Ich habe das Docker-Projekt letzte Nacht aufgespalten und die Leaderboard-Datenfunktionalität als eigenen Microservice abgespalten. Dadurch erhalten wir einen Container für die Website und einen anderen für eine Leaderboard-API. Beide Container sind so konfiguriert, dass sie über eigene öffentliche Endpunkte verfügen, die wir für alle freigeben können, die die Website oder API verwenden möchten, und zwar unabhängig davon, welchen Technologiestapel die jeweilige App verwendet. Wenn die Last für einen der beiden Container erheblich zunimmt, können wir die Container unabhängig voneinander skalieren.

Mara: Dieses Projekt hört sich super an! Lasst uns mit dem Aktualisieren der Releasepipeline beginnen.

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 in einer deklarativen, reaktionsschnellen Weise und kann Container auf mehreren Hosts ausführen, was eine effiziente Ressourcennutzung und höhere Zuverlässigkeit ermöglicht.

Das Tailspin-Team hat Kubernetes für dieses Szenario ausgewählt, da diese Lösung alle Anforderungen erfüllt:

  • Komplexität von Bereitstellungen mit mehreren Containern: Kubernetes ist vor allem darauf ausgelegt, die Prozesse rund um Bereitstellung und Verwaltung von Containerbereitstellungen zu automatisieren.

  • Einheitlichkeit zwischen Umgebungen und Phasen: Ebenso wie Container eine einheitliche Bereitstellung für die in ihnen enthaltenen Apps gewährleisten, stellt Kubernetes eine einheitliche Bereitstellung für die in einem Cluster verwalteten Container sicher.

  • Unterstützung für Azure DevOps: Azure DevOps bietet erstklassige Unterstützung für das Arbeiten mit Kubernetes.

  • Einfache Entwicklung: Die Auswirkungen von Kubernetes auf ein Quellprojekt sind vergleichbar mit denen des Hinzufügens von Docker-Unterstützung. Sie sind minimal und auf die deklarative Konfiguration beschränkt.

Die Einführung von Kubernetes vereinfacht drastisch den Prozess der Einführung einer Microservicearchitektur, die mehrere Docker-Container nutzt.

Überprüfen Sie Ihr Wissen

1.

Welche der folgenden Anwendungen ist kein guter Grund für die Verwendung von Microservices?

2.

Worin ähneln sich Docker und Kubernetes?

3.

Angenommen, Ihr Team verfügt über mehrere .NET Core-Projekte in einer Projektmappe, die mehrere Docker-Container erzeugt. Wie viel Aufwand ist mit dem Hinzufügen der Kubernetes-Unterstützung verbunden?