Читать книгу Kubernetes - Kelsey Hightower - Страница 19
1.3Abstrahieren Sie Ihre Infrastruktur
ОглавлениеDas Ziel der öffentlichen Cloud ist das Bereitstellen einer einfach zu nutzenden Self-Service-Infrastruktur, die durch Entwickler eingesetzt werden kann. Allerdings orientieren sich Cloud-APIs viel zu häufig an der Infrastruktur, die die IT erwartet, und nicht an den Konzepten (zum Beispiel »virtuelle Maschinen« statt »Anwendungen«), die Entwickler gerne nutzen wollen. Zudem bringt die Cloud in vielen Fällen bestimmte Implementierungs-Details oder -Services mit, die für den Cloud-Provider spezifisch sind. Ein direkter Einsatz dieser APIs erschwert das Ausführen Ihrer Anwendung in mehreren Umgebungen oder ein Verteilen zwischen der Cloud und »echten« Rechnern.
Der Wechsel zu anwendungsorientierten Container-APIs wie Kubernetes bringt zwei konkrete Vorteile mit sich. Zum einen trennt es wie schon beschrieben die Entwickler von bestimmten Rechnern. Dadurch wird nicht nur die maschinenorientierte IT-Rolle vereinfacht, weil sich Rechner einfach hinzufügen lassen, um ein Cluster zu skalieren, auch im Kontext der Cloud ist so eine größere Portierbarkeit gegeben, weil die Entwickler eine API auf höherem Level nutzen, die auf Basis der spezifischen Cloud-Infrastruktur-APIs implementiert ist.
Wenn Ihre Entwickler ihre Anwendungen mithilfe von Container-Images bauen und sie über die portable Kubernetes-API deployen, ist ein Wechsel Ihrer Anwendung zwischen Umgebungen oder sogar das Ausführen in hybriden Umgebungen nur eine Frage des Übertragens der deklarativen Konfiguration an ein neues Cluster. Kubernetes bringt eine Reihe von Plug-ins mit, mit denen Sie von einer bestimmten Cloud wegabstrahieren können. So wissen Kubernetes-Services zum Beispiel, wie sie auf allen großen, öffentlichen Clouds, aber auch für diverse private und physische Infrastruktur Load Balancer anlegen. Genauso können PersistentVolumes und Persistent-VolumeClaims von Kubernetes genutzt werden, um Ihre Anwendung von einer spezifischen Storage-Implementierung abzukoppeln. Um diese Portierbarkeit zu erreichen, müssen Sie natürlich Cloud-managed Services vermeiden (zum Beispiel DynamoDB von Amazon, CosmosDB von Azure oder Cloud Spanner von Google) und stattdessen Storage-Lösungen in Open Source einsetzen, wie zum Beispiel Cassandra, MySQL oder MongoDB.
Zusammengefasst: Durch ein Aufbauen auf Kubernetes’ anwendungsorientierter Abstraktion wird sichergestellt, dass Ihre Aufwände für das Bauen, Deployen und Managen Ihrer Anwendung über einen großen Bereich von Umgebungen hinweg portabel sind.