Architektur

Last reviewed 2023-12-20 UTC

Das folgende Diagramm zeigt die allgemeine Architektur, die durch den Blueprint für eine einzelne Umgebung bereitgestellt wird. Sie stellen diese Architektur in drei separaten Umgebungen bereit: Produktion, Nicht-Produktion und Entwicklung.

Die Blueprint-Architektur.

Dieses Diagramm enthält Folgendes:

  • Cloud Load Balancing verteilt den Anwendungstraffic regionenübergreifend auf Kubernetes-Dienstobjekte. Hinter jedem Dienst befindet sich eine logische Gruppierung verwandter Pods.
  • Mit Anthos Service Mesh können Kubernetes-Dienste miteinander kommunizieren.
  • Kubernetes-Dienste werden in Mandanten gruppiert, die als Kubernetes-Namespaces dargestellt werden. Mandanten sind eine Abstraktion, die mehrere Nutzer und Arbeitslasten darstellt, die in einem Cluster ausgeführt werden, mit separatem RBAC für die Zugriffssteuerung. Jeder Mandant hat auch ein eigenes Projekt für mandantenspezifische Cloud-Ressourcen wie Datenbanken, Storage-Buckets und Pub/Sub-Abos.
  • Namespaces mit eigenen Identitäten für den Zugriff auf Peer-Dienste und Cloud-Ressourcen. Die Identität ist aufgrund von Workload Identity für Flotten im selben Namespace in verschiedenen Clustern konsistent. Jede Umgebung hat einen separaten Workload Identity-Pool, um die Rechteausweitung zwischen Umgebungen zu minimieren.
  • Jeder Dienst hat eine dedizierte Pipeline, die diesen Dienst erstellt und bereitstellt. Die gleiche Pipeline wird verwendet, um den Dienst in der Entwicklungsumgebung bereitzustellen. Anschließend wird der Dienst in der Nicht-Produktionsumgebung bereitgestellt und schließlich in der Produktionsumgebung.

Wichtige Architekturentscheidungen für die Entwicklerplattform

In der folgenden Tabelle werden die vom Blueprint implementierten Architekturentscheidungen beschrieben.

Entscheidungsbereich Entscheidungs- Begründung

Bereitstellungs-Archetyp

Stellen Sie in mehreren Regionen bereit.

Lassen Sie die Verfügbarkeit von Anwendungen bei regionalen Ausfällen zu.

Organisationsarchitektur

Stellen Sie zusätzlich zum Blueprint für Unternehmensgrundlagen bereit.

Verwenden Sie die Organisationsstruktur und Sicherheitskontrollen der Basis.

Verwenden Sie die drei Umgebungsordner, die in der Grundlage eingerichtet sind: development, nonproduction und production.

Isolieren Sie für Umgebungen mit unterschiedlichen Zugriffssteuerungen.

Architektur der Entwicklerplattformcluster

Verpacken Sie Anwendungen als Container und stellen Sie sie bereit.

Unterstützen Sie die Trennung von Verantwortlichkeiten, effizienten Vorgänge und der Portabilität von Anwendungen

Führen Sie Anwendungen in GKE-Clustern aus.

Verwenden Sie einen verwalteten Containerdienst, der vom Unternehmen erstellt wurde, das Container eingeführt hat.

Replizieren Sie Anwendungscontainer in einer Aktiv-Aktiv-Konfiguration und führen Sie sie aus.

Erreichen Sie eine höhere Verfügbarkeit und schnelle progressive Rollouts, um die Entwicklungsgeschwindigkeit zu erhöhen.

Stellen Sie die Produktionsumgebung mit zwei GKE-Clustern in zwei verschiedenen Regionen bereit.

Erreichen Sie eine höhere Verfügbarkeit als eine einzelne Cloud-Region.

Stellen Sie die Nicht-Produktionsumgebung mit zwei GKE-Clustern in zwei verschiedenen Regionen bereit.

Ändern Sie vor der Bereitstellung in der Produktion die Änderungen an regionenübergreifenden Einstellungen wie Load Balancern.

Stellen Sie die Entwicklungsumgebung mit einer einzelnen GKE-Clusterinstanz bereit.

Reduziert die Kosten.

Konfigurieren Sie hochverfügbare Steuerungsebenen für jeden GKE-Cluster.

Achten Sie darauf, dass die Steuerungsebene des Clusters während des Upgrades und der Größenanpassung verfügbar ist.

Verwenden Sie das Konzept der Gleichheit für Namespaces, Dienste und Identität in jedem GKE-Cluster.

Achten Sie darauf, dass Kubernetes-Objekte mit demselben Namen in verschiedenen Clustern gleich behandelt werden. Diese Normalisierung vereinfacht die Verwaltung von Flottenressourcen.

Aktivieren Sie private IP-Adressbereiche für GKE-Cluster über den Private Service Connect-Zugriff auf die Steuerungsebene und private Knotenpools.

Sie können dabei helfen, die Kubernetes Cluster API vor Scanangriffen zu schützen.

Aktivieren Sie den Administratorzugriff auf die GKE-Cluster über das Connect-Gateway.

Verwenden Sie einen Befehl, um Anmeldedaten für den Zugriff auf mehrere Cluster abzurufen. Verwenden Sie Gruppen und Identitätsanbieter von Drittanbietern, um den Clusterzugriff zu verwalten.

Verwenden Sie Cloud NAT, um GKE-Pods Zugriff auf Ressourcen mit öffentlichen IP-Adressen zu gewähren.

Die allgemeine Sicherheitslage des Clusters kann verbessert werden, da Pods nicht direkt mit dem Internet verbunden sind, aber trotzdem auf Internetressourcen zugreifen können.

Konfigurieren Sie Knoten für die Verwendung von Container-Optimized OS und Shielded GKE-Knoten.

Begrenzen Sie die Angriffsfläche der Knoten.

Ordnen Sie jede Umgebung einer GKE-Flotte zu.

Ermöglicht die Verwaltung von Gruppen von GKE-Clustern als Einheit.

Verwenden Sie Grundlageninfrastruktur-Pipeline um die Anwendungsfabrik, die Flotten-Pipeline und die Pipeline für mehrere Mandanten bereitzustellen.

Stellen Sie einen steuerbaren, prüfbaren und wiederholbaren Mechanismus zum Bereitstellen der Anwendungsinfrastruktur bereit.

Konfigurieren Sie GKE-Cluster mithilfe der GKE Enterprise-Konfigurations- und -Richtlinienverwaltung.

Stellen Sie einen Dienst bereit, der die Konfiguration als Code für GKE-Cluster zulässt.

Verwenden Sie eine Anwendungs-Factory, um die im Blueprint verwendeten CI/CD-Pipelines der Anwendung bereitzustellen.

Geben Sie ein wiederholbares Muster an, um Anwendungspipelines einfacher bereitzustellen.

Verwenden Sie eine CI-/CD-Pipeline der Anwendung, um die Blueprint-Anwendungskomponenten zu erstellen und bereitzustellen.

Stellen Sie einen steuerbaren, prüfbaren und wiederholbaren Mechanismus zum Bereitstellen von Anwendungen bereit.

Konfigurieren Sie die CI/CD-Pipeline der Anwendung für die Verwendung von Cloud Build, Cloud Deploy und Artifact Registry.

Optimieren Sie die Sicherheit, Skalierbarkeit und Nutzerfreundlichkeit mit verwalteten Build- und Bereitstellungsdiensten.

Verwenden Sie unveränderliche Container in allen Umgebungen und signieren Sie die Container mit der Binärautorisierung.

Stellen Sie eine klare Codeherkunft bereit und prüfen Sie, ob Code in allen Umgebungen getestet wurde.

Verwenden Sie Google Cloud Observability, einschließlich Cloud Logging und Cloud Monitoring.

Vereinfachen Sie Vorgänge mithilfe eines integrierten verwalteten Dienstes von Google Cloud.

Aktivieren Sie Container Threat Detection (einen Dienst in Security Command Center), um die Integrität von Containern zu überwachen.

Verwenden Sie einen verwalteten Dienst, der die Sicherheit verbessert, indem Sie Container kontinuierlich überwachen.

Steuern Sie den Zugriff auf die GKE-Cluster mithilfe der rollenbasierten Zugriffssteuerung von Kubernetes (Role-based Access Control, RBAC), die auf Google Groups for GKE basiert.

Verbessern Sie die Sicherheit, indem Sie die Zugriffssteuerung mit Google Cloud-Identitäten verknüpfen.

Dienstarchitektur

Verwenden Sie für jeden Kubernetes-Dienst ein eindeutiges Kubernetes-Dienstkonto. Dieses Konto fungiert als IAM-Dienstkonto mithilfe von Workload Identity.

Erhöhen Sie die Sicherheit, indem Sie die Berechtigungen minimieren, die jeder Dienst bereitstellen muss.

Machen Sie Dienste über die GKE Gateway API verfügbar.

Vereinfachen Sie die Konfigurationsverwaltung, indem Sie einen deklarativen und ressourcenbasierten Ansatz für die Verwaltung von Regeln für eingehenden Traffic und Load Balancing bereitstellen.

Dienste können als verteilte Dienste über Anthos Service Mesh mit Certificate Authority Service ausgeführt werden.

Steigern Sie die Sicherheit durch Erzwingen von Authentifizierung zwischen Diensten sowie automatische Fehlertoleranz, indem Sie Traffic von fehlerhaften Diensten wegleiten.

Verwenden Sie eine regionenübergreifende Replikation für AlloyDB for PostgreSQL.

Sorgen Sie für Hochverfügbarkeit auf der Datenbankebene.

Netzwerkarchitektur

Freigegebene VPC-Instanzen werden in jeder Umgebung konfiguriert und GKE-Cluster werden in Dienstprojekten erstellt.

Eine freigegebene VPC bietet eine zentralisierte Verwaltung der Netzwerkkonfiguration bei gleichzeitiger Trennung der Umgebungen.

Verwenden Sie Cloud Load Balancing in einer Multi-Cluster-Konfiguration für mehrere Regionen.

Geben Sie eine einzelne Anycast-IP-Adresse an, um auf regionale GKE-Cluster für Hochverfügbarkeit und Dienste mit niedriger Latenz zuzugreifen.

Verwenden Sie HTTPS-Verbindungen für den Clientzugriff auf Dienste. Leiten Sie alle Client-HTTP-Anfragen an HTTPS weiter.

Schützen Sie sensible Daten bei der Übertragung und verhindern Sie Person-in-the-middle-Angriffe.

Verwenden Sie Certificate Manager, um öffentliche Zertifikate zu verwalten.

Verwalten Sie Zertifikate auf einheitliche Weise.

Schützen Sie die Weboberfläche mit Google Cloud Armor.

Erhöhen Sie die Sicherheit, indem Sie sie vor gängigen Sicherheitslücken von Webanwendungen und volumetrischen Angriffen schützen.

Ihre Entscheidungen können vom Blueprint abweichen. Informationen zu Alternativen finden Sie unter Alternativen zu Standardempfehlungen.

Wie geht es weiter?