Funktionsweise von Flotten

Auf dieser Seite wird ausführlich erläutert, wie Sie mit Flotten Multi-Cluster-Bereitstellungen verwalten, einschließlich einiger wichtiger Begriffe und Konzepte für Flotten. Environs sind ein Google Cloud-Konzept für die logische Organisation von Clustern und anderen Ressourcen, mit dem Sie Multi-Cluster-Funktionen nutzen und verwalten sowie einheitliche Richtlinien auf Ihre Systeme anwenden können. Flotten sind ein wesentlicher Bestandteil der Multi-Cluster-Funktionalität für Unternehmen in Google Cloud.

Der Leitfaden richtet sich an technisch orientierte Leser, darunter Systemarchitekten, Plattformbetreiber und Dienstbetreiber, die mehrere Cluster und die zugehörige Infrastruktur nutzen möchten. Die Konzepte sind überall dort hilfreich, wo in Ihrer Organisation mehrere Cluster ausgeführt werden, ob in Google Cloud, für mehrere Cloud-Anbieter oder lokal.

Sie sollten mit grundlegenden Kubernetes-Konzepten wie Clustern und Namespaces vertraut sein. Ist dies nicht der Fall, finden Sie entsprechende Informationen unter Kubernetes-Grundlagen, in der GKE-Dokumentation und unter Anwendung für Anthos Service Mesh vorbereiten.

Weitere Informationen zur GKE Enterprise-Plattform und zu den Komponenten, für die Flotten verwendet werden, finden Sie in der technischen Übersicht zu GKE Enterprise und in der Anleitung zu GKE Enterprise. Sie müssen jedoch nicht mit GKE Enterprise vertraut sein, um dieser Anleitung folgen zu können.

Terminologie

Im Folgenden finden Sie einige wichtige Begriffe, die im Zusammenhang mit Flotten verwendet werden.

Flottenfähige Ressourcen

Flottenfähige Ressourcen sind Google Cloud-Projektressourcen, die logisch als Flotten gruppiert und verwaltet werden können. Derzeit können nur Kubernetes-Cluster Flottenmitglieder sein.

Flotten-Hostprojekt

Die Implementierung von Flotten erfolgt wie bei vielen anderen Google Cloud-Ressourcen in einem Google Cloud-Projekt, das als Flottenhostprojekt bezeichnet wird. Einem bestimmten Google Cloud-Projekt kann nur eine einzelne Flotte (oder keine Flotten) zugeordnet sein. Diese Einschränkung verstärkt die Verwendung von Google Cloud-Projekten, um eine stärkere Isolation zwischen Ressourcen zu ermöglichen, die nicht gemeinsam verwaltet oder genutzt werden.

Infrastruktur gruppieren

Das erste zentrale Konzept für Flotten ist das Konzept der Gruppierung. Dabei wird ausgewählt, welche Elemente von zugehörigen Flottenfähigen Ressourcen Teil einer Flotte sein sollen. Um festzulegen, welche Elemente gruppiert werden, müssen folgende Fragen beantwortet werden:

  • Sind die Ressourcen miteinander verbunden?
    • Ressourcen mit einem hohen Maß an dienstübergreifender Kommunikation profitieren am meisten von der gemeinsamen Verwaltung in einer Flotte.
    • Ressourcen in derselben Bereitstellungsumgebung (z. B. Ihre Produktionsumgebung) sollten in einer Flotte zusammen verwaltet werden.
  • Wer verwaltet die Ressourcen?
    • Eine einheitliche (oder zumindest als vertrauenswürdig eingestufte) Kontrolle der Ressourcen ist entscheidend für die Gewährleistung der Integrität der Flotte.

Zur Veranschaulichung dieses Aspekts betrachten wir eine Organisation mit mehreren Geschäftszweigen (Lines of Business, LOBs). In einem solchen Fall kommunizieren Dienste selten über LOB-Grenzen hinweg. Die Dienste in den verschiedenen LOBs werden in der Regel unterschiedlich verwaltet (z. B. können sich die Upgrade-Phasen von LOBs unterscheiden) und haben möglicherweise auch unterschiedliche Administratoren für jede LOB. In diesem Fall kann es sinnvoll sein, Flotten LOB-weise zu verwenden. Außerdem ist es möglich, dass jede LOB mehrere Flotte verwendet, um die Produktions- und Nicht-Produktionsdienste voneinander zu trennen.

In den folgenden Abschnitten werden weitere Flottenkonzepte erläutert. Je nach den spezifischen Anforderungen an Ihre Organisation kann es weitere Gründe für das Erstellen mehrerer Flotten geben.

Gleichheit

Ein wichtiges Konzept bei Flotten ist das Konzept der Gleichheit. Damit ist gemeint, dass einige Kubernetes-Objekte, z. B. Namespaces, mit demselben Namen in unterschiedlichen Clustern identisch behandelt werden. Diese Normalisierung soll die Verwaltung von Flotten-Ressourcen vereinfachen. Sie dient als Hilfsmittel zum Einrichten von Namespaces, Diensten und Identitäten. Dabei wird auch berücksichtigt, was die meisten Organisationen selbst implementieren.

Namespace-Gleichheit

Das grundlegende Beispiel für Gleichheit in einer Flotte ist die Namespace-Gleichheit. Namespaces mit dem gleichen Namen in unterschiedlichen Clustern werden von vielen Komponenten als identisch eingestuft. Für dieses Attribut muss beachtet werden, dass ein Namespace logisch für eine komplette Flotte definiert wird, auch wenn die Instanziierung des Namespace nur in einer Teilmenge der Flottenressourcen erfolgt.

Betrachten wir das folgende backend-Namespace-Beispiel. Obwohl der Namespace nur in den Clustern A und B instanziiert wird, wird er implizit für Cluster C reserviert (damit ist es erlaubt, dass ein Dienst im Namespace backend auch in Cluster C terminiert wird, falls nötig). Dies bedeutet, dass Namespaces der gesamten Flotte und nicht einzelnen Cluster zugewiesen werden. Daher erfordert die Namespace-Gleichheit einheitliche Namespace-Eigentumsrechte in der gesamten Flotte.

Diagramm zur Veranschaulichung der Namespace-Gleichheit in einer Flotte
Namespace-Gleichheit in einer Flotte

Dienstgleichheit

Anthos Service Mesh und Multi-Cluster-Ingress nutzen das Prinzip der Gleichheit von Diensten innerhalb eines Namespace. Ebenso wie bei der Namespace-Gleichheit bedeutet dies, dass Dienste mit dem gleichen Namespace und Dienstnamen als ein Dienst behandelt werden.

Die Dienstendpunkte können im Fall von Anthos Service Mesh für das gesamte Netzwerk zusammengeführt werden. Bei Multi-Cluster-Ingress macht eine MCS-Ressource (MultiClusterService) das Zusammenführen der Endpunkte expliziter. Wir empfehlen aber die Verwendung ähnlicher Verfahren unter Berücksichtigung der Benennung. Deshalb sollten Sie dafür sorgen, dass identisch benannte Dienste innerhalb eines Namespace tatsächlich identisch sind.

Im folgenden Beispiel wird für den Internettraffic über einen gleichnamigen Dienst im Namespace frontend ein Load-Balancing in den Clustern B und C ausgeführt. Ebenso kann der Dienst im Namespace frontend mithilfe der Service Mesh-Attribute innerhalb der Flotte den identisch benannten Dienst im Namespace auth in den Clustern A und C erreichen.

Diagramm zur Veranschaulichung der Dienstgleichheit in einer Flotte
Dienstgleichheit in einer Flotte

Identitätsgleichheit beim Zugriff auf externe Ressourcen

Dienste innerhalb einer Flotte können eine gemeinsame Identität nutzen, wenn sie auf externe Ressourcen wie Google Cloud-Dienste, Objektspeicher usw. zugreifen. Diese gemeinsame Identität ermöglicht es den Diensten in einer Flotte einmal auf eine externe Ressource und nicht auf jeden Cluster einzeln zuzugreifen.

Das folgende Beispiel veranschaulicht diesen Aspekt. Die Cluster A, B und C sind mit einer gemeinsamen Identität innerhalb ihrer Flotte registriert. Wenn Dienste im Namespace backend auf Google Cloud-Ressourcen zugreifen, werden ihre Identitäten einem allgemeinen Google Cloud-Dienstkonto namens back zugeordnet. Das Google Cloud-Dienstkonto back kann von beliebig vielen verwalteten Diensten autorisiert werden, von Cloud Storage bis Cloud SQL. Wenn neue Flotten-Ressourcen wie Cluster zum Namespace backend hinzugefügt werden, übernehmen sie automatisch die Gleichheitsattribute der Arbeitslastidentität.

Aufgrund der Identitätsgleichheit ist es wichtig, dass alle Ressourcen in einer Flotte vertrauenswürdig sind und richtig kontrolliert werden. Wenn im vorherigen Beispiel Cluster C zu einem separaten, nicht vertrauenswürdigen Team gehört, kann dieses auch einen backend-Namespace erstellen und auf verwaltete Dienste zugreifen, als wäre es backend in Cluster A oder B.

Diagramm zur Identitätsgleichheit beim Zugriff auf Ressourcen außerhalb einer Flotte
Identitätsgleichheit, die außerhalb eines Gerätepools auf Ressourcen zugreift

Identitätsgleichheit innerhalb einer Flotte

Die Identitätsgleichheit wird innerhalb der Flotte wie die zuvor erläuterte externe Identitätsgleichheit angewendet. So wie Flotten-Dienste einmal für einen externen Dienst autorisiert werden, können sie ebenfalls intern autorisiert werden.

Im folgenden Beispiel wird Anthos Service Mesh verwendet, um ein Multi-Cluster-Service Mesh zu erstellen, in dem frontend Zugriff auf backend hat. Bei Anthos Service Mesh und Flotten müssen Sie nicht angeben, dass frontend in den Clustern B und C auf backend in den Clustern A und B zugreifen kann. Stattdessen geben wir einfach an, dass frontend in der Flotte auf backend in der Flotte zugreifen kann. Durch dieses Attribut wird nicht nur die Autorisierung einfacher, auch die Ressourcengrenzen werden flexibler. Arbeitslasten können jetzt ganz einfach von Cluster zu Cluster verschoben werden, ohne dass sich dies auf ihre Autorisierung auswirkt. Wie bei der Gleichheit der Workload Identity ist die Governance der Flottenressourcen für die Integrität der Dienst-zu-Dienst-Kommunikation entscheidend.

Diagramm zur Veranschaulichung der Identitätsgleichheit in einer Flotte
Identitätsgleichheit in einer Flotte

Exklusivität

Flottenfähige Ressourcen können jeweils immer nur einer einzigen Flotte angehören. Diese Beschränkung wird von Google Cloud-Tools und -Komponenten erzwungen. Sie gewährleistet, dass es für die Steuerung eines Clusters nur eine einzige Quelle gibt. Ohne Exklusivität werden selbst die einfachsten Komponenten zu komplex für die Verwendung. Ihre Organisation müsste dann festlegen, wie verschiedene Komponenten aus verschiedenen Flotten miteinander kommunizieren.

Hohe Vertrauensebene

Dienstgleichheit, Gleichheit der Arbeitslastidentität und Gleichheit der Mesh- Identität basieren auf dem Prinzip einer hohen Vertrauensebene zwischen Mitgliedern einer Flotte. Dieses Vertrauen ermöglicht eine optimierte Verwaltung dieser Ressourcen für die gesamte Flotte, anstatt sie ressourcenweise zu verwalten, also clusterweise für Kubernetes-Ressourcen. Außerdem spielen dann auch Clustergrenzen eine geringere Rolle.

Anders ausgedrückt bieten Cluster innerhalb einer Flotte Schutz vor „Blast-Radius“-Problemen, Verfügbarkeit (sowohl der Steuerungsebene als auch der zugrunde liegenden Infrastruktur), Schutz vor Noisy Neighbor-Effekten und vieles mehr. Sie bilden jedoch keine strikte Trenngrenze für Richtlinien und Governance, da Administratoren eines Mitglieds in einer Flotte den Betrieb der Dienste in anderen Mitgliedern der Flotte potenziell beeinflussen können.

Aus diesem Grund empfehlen wir, dass Clustern, die vom Flotten-Administrator als nicht vertrauenswürdig eingestuft werden, in einer eigenen Flotte platziert werden, um sie zu isolieren. Bei Bedarf können einzelne Dienste über die Flotten-Grenze hinaus autorisiert werden.

Teambereiche

Ein Teambereich ist ein Mechanismus, mit dem Sie Ihre Flotte in Gruppen von Clustern unterteilen können, um die flottenrelevanten Ressourcen zu definieren, die einem bestimmten href="/kubernetes-engine/fleet-management/docs/team-management">Anwendungsteam zugewiesen sind. Je nach Anwendungsfall kann ein einzelner Cluster eines Flottenmitglieds ohne Teams, einem Team oder mehreren Teams zugeordnet werden, sodass mehrere Teams Cluster gemeinsam nutzen können. Sie können Teambereiche auch verwenden, um Roll-outs von Clusterupgrades innerhalb Ihrer Flotte auszuführen. Allerdings muss jeder Cluster nur einem einzelnen Team zugeordnet sein.

Mit einem Teambereich können explizit definierte Flotten-Namespaces verknüpft sein, wobei der Namespace im gesamten Bereich als identisch angesehen wird. Dies gibt Ihnen eine detailliertere Kontrolle über Namespaces als die standardmäßige Namespace-Gleichheit, die von Flotten allein bereitgestellt wird.

Flottenbasierte Komponenten

Die folgenden GKE Enterprise- und GKE-Komponenten nutzen Flottenkonzepte wie die Gleichheit von Namespaces und Identitäten, um die Arbeit mit Ihren Clustern und Diensten zu vereinfachen. Informationen zu den aktuellen Anforderungen oder Einschränkungen für die Verwendung von Flotten mit den einzelnen Komponenten finden Sie unter Komponentenanforderungen.

  • Workload Identity-Pools
    Eine Flotte bietet einen gemeinsamen href="/kubernetes-engine/fleet-management/docs/use-workload-identity">Workload Identity-Pool, der zur einheitlichen Authentifizierung und Autorisierung von Arbeitslasten innerhalb eines Service Mesh und an externe Dienste verwendet werden kann.

  • Anthos Service Mesh
    Anthos Service Mesh besteht aus einer Reihe von Tools, mit denen Sie ein zuverlässiges Service Mesh in Google Cloud, lokal und in anderen unterstützte Umgebungen überwachen und verwalten können. Sie können ein Service Mesh für alle Cluster bilden, die Teil derselben Flotte sind.

  • Config Sync
    Mit Config Sync können Sie deklarative Konfigurationspakete für Ihr System bereitstellen und überwachen, die in einer zentralen Datenquelle wie einem Git-Repository gespeichert sind. Dabei werden zentrale Kubernetes-Konzepte wie Namespaces, Labels und Annotationen genutzt. Mit Config Sync wird die Konfiguration für die gesamte Flotte definiert, aber lokal in jeder Mitgliedsressource angewendet und erzwungen.

  • Policy Controller
    Mit Policy Controller können Sie deklarative Richtlinien für Ihre Kubernetes-Cluster anwenden und erzwingen. Diese Richtlinien dienen als Schutzmaßnahmen und können Sie beim Verwalten von Best Practices, der Sicherheit und der Compliance in Ihren Clustern und Ihrer Flotte unterstützen.

  • Multi-Cluster-Ingress
    Multi-Cluster-Ingress verwendet die Flotte, um Cluster und Dienstendpunkte zu definieren, für die ein Load-Balancing des Traffics erfolgen kann. Dies ermöglicht eine niedrige Latenz und Dienste mit Hochverfügbarkeit.

  • Cloud Run for Anthos
    Cloud Run for Anthos ist eine von Google verwaltete und unterstützte Knative-Entwicklerplattform, die die Komplexität der zugrunde liegenden Infrastruktur abstrahiert und das Erstellen, Bereitstellen und Verwalten von Anwendungen und Diensten in den Clustern Ihrer Flotte vereinfacht.

Nächste Schritte

  • Weitere Informationen dazu, wann es sich empfiehlt, mehrere Cluster zu verwenden, um Ihre technischen und geschäftlichen Anforderungen zu erfüllen, finden Sie unter href="/kubernetes-engine/fleet-management/docs/multi-cluster-use-cases">Multi-Cluster-Anwendungsfälle.
  • Möchten Sie diese Konzepte für Ihre Systeme anwenden? Weitere Informationen finden Sie unter Anforderungen für Flotten und Best Practices.