Erstellen Sie einen hochsicheren Google Kubernetes Engine-Cluster (GKE) und eine für die Produktion optimierte Arbeitslast. In dieser Anleitung werden die folgenden Vorlagen beschrieben, mit denen Sie eine Webanwendung für die Produktion bereitstellen können:
GKE-Produktionsclustervorlage für Unternehmen: Erstellen Sie die grundlegende Infrastruktur, die für eine Produktionsanwendung erforderlich ist. Mit dieser Vorlage wird ein sicherer, privater GKE-Cluster eingerichtet, der für Integrität, erweitertes Networking und Notfallwiederherstellung optimiert ist.
GKE-Arbeitslast für die Produktion auf Unternehmensniveau (Vorabversion): Stellen Sie ein Helm-Diagramm bereit, das die Konfiguration für eine hochverfügbare, zustandslose Webanwendung enthält. Die Arbeitslast ist so konfiguriert, dass Sicherheit, Zuverlässigkeit und Kontinuität des Dienstes verbessert werden.
Sie können die Cluster- und Arbeitslastvorlagen beispielsweise bereitstellen, um die folgenden geschäftlichen Anforderungen zu erfüllen:
| Beispiel | Geschäftliche Anforderung | Implementierung |
|---|---|---|
| Globale Handelsplattform | Ein Finanzinstitut benötigt eine global verteilte Handelsplattform mit niedriger Latenz, maximaler Betriebszeit, strengen Sicherheitsmaßnahmen und prüfbarer Compliance, um Hochfrequenzhandel zu ermöglichen. | Verwenden Sie global verteilte, multiregionale Cluster mit erweiterten Netzwerkfunktionen, um für extrem niedrige Latenz und Ausfallsicherheit zu sorgen. Implementieren Sie strenge Netzwerkrichtlinien, private Clusterkonfigurationen und erweiterte Sicherheitsfunktionen für Datenschutz und Einhaltung regulatorischer Anforderungen. |
| Mehrmandantenfähige SaaS-Plattform | Ein Software-as-a-Service-Anbieter (SaaS) muss eine hochgradig skalierbare, sichere und kostenoptimierte Plattform für Tausende von Unternehmenskunden hosten. Dies erfordert eine strikte Mandantenisolation, eine dynamische Ressourcenzuweisung und die kontinuierliche Bereitstellung neuer Funktionen ohne Ausfallzeiten. | Verwenden Sie Multi-Tenant-Cluster mit robuster Namespace-Isolation, Netzwerksegmentierung und Kontingentverwaltung, um eine faire Ressourcenfreigabe und Sicherheit zwischen Mandanten zu gewährleisten. |
| Inferenz in Echtzeit für kritische Vorgänge | Ein Unternehmen muss KI-/ML-Modelle für die Inferenz in Echtzeit in unternehmenskritischen Anwendungen zur Betrugserkennung bereitstellen. Dies erfordert eine extrem niedrige Latenz, einen hohen Durchsatz und die Möglichkeit, sich schnell an neue Modellversionen mit vollständiger Prüfbarkeit anzupassen. | Konfigurieren Sie Cluster mit speziellen Knotenpools für die KI-Inferenz. Sorgen Sie für eine Netzwerkverbindung mit geringer Latenz und ermöglichen Sie ein effizientes Traffic-Routing zu Inferenzendpunkten. |
Architektur
Das folgende Bild zeigt die Komponenten und Verbindungen in der Vorlage:
Im Folgenden werden die Komponentenkonfigurationen in dieser Vorlage beschrieben:
GKE-Standardcluster: Ein Cluster, in dem Ihre Arbeitslast ausgeführt wird.
In der folgenden Tabelle wird die Clusterkonfiguration in dieser Vorlage beschrieben:
Konfiguration Zweck location: us-central1Sorgt für Datenlokalität und Compliance innerhalb einer geografischen Grenze. Eine multizonale Einrichtung innerhalb der Region bietet Hochverfügbarkeit. network: projects/PROJECT_ID/global/networks/enterprise-vpcGibt eine vorhandene VPC an, die in der Regel für Netzwerksegmentierung und ‑konnektivität konzipiert ist. subnetwork: projects/PROJECT_ID/regions/us-central1/subnetworks/gke-subnetGibt ein Subnetzwerk für den Cluster in der VPC an, das in der Regel mit einer geeigneten IP-Zuweisung und Netzwerkisolation konfiguriert ist. master_authorized_networks_config: [{"cidr_block": "10.0.0.0/8", "display_name": "Internal Network"}]Beschränkt den Zugriff auf den Endpunkt der Steuerungsebene auf bestimmte, vertrauenswürdige IP-CIDR-Blöcke. So wird der unbefugte Zugriff auf Clusterverwaltungs-APIs verhindert. private_cluster_config.enable_private_endpoint: trueSorgt dafür, dass auf die Steuerungsebene nur über interne IP-Adressen innerhalb der VPC oder autorisierter Netzwerke zugegriffen werden kann. Das erhöht die Sicherheit, da die Daten nicht öffentlich zugänglich sind. private_cluster_config.enable_private_nodes: trueSorgt dafür, dass alle Worker-Knoten nur private IP-Adressen haben. Dadurch werden sie vom öffentlichen Internet isoliert und die Angriffsfläche wird verringert. release_channel: STABLEVorhersehbare und gründlich getestete Updates sorgen für Stabilität in einer Produktionsumgebung. network_policy.enabled: trueAktiviert die Kubernetes-Netzwerkrichtlinie, die die Pod-zu-Pod-Kommunikation für erweiterte Sicherheitsfunktionen und Mikrosegmentierung steuert. binary_authorization: trueErzwingt Bereitstellungsrichtlinien, sodass nur vertrauenswürdige und signierte Container-Images im Cluster ausgeführt werden können. database_encryption: {"state": "ENCRYPTED_WITH_CMEK", "key_name": "projects/PROJECT_ID/locations/us-central1/keyRings/gke-keyring/cryptoKeys/gke-etcd-key"}Mit kundenverwalteten Verschlüsselungsschlüsseln (Customer-Managed Encryption Keys, CMEK) wird die Datenbank verschlüsselt, was für Datensicherheit sorgt und Compliance-Anforderungen erfüllt. workload_identity_config: {"enabled": true}Ermöglicht es Kubernetes-Dienstkonten, als Google Cloud -Dienstkonten zu fungieren, wodurch ein detaillierter, sicherer Zugriff auf Ressourcen mit IAM möglich ist. logging_configundmonitoring_configsind auf{"component_config": {"enable_components": ["SYSTEM_COMPONENTS", "WORKLOADS"]}}gesetzt.Die Integration in Cloud Logging und Cloud Monitoring sorgt für umfassende Beobachtbarkeit, Überwachung und Benachrichtigungen für Produktionsarbeitslasten. maintenance_policy: {"daily_maintenance_window": {"start_time": "03:00"}, "recurring_window": {"start_time": "00:00", "end_time": "04:00", "recurrence": "FREQ=WEEKLY;BYDAY=SAT,SUN"}}Mit Wartungsfenstern können Sie steuern, wann GKE automatische Upgrades ausführt, um Unterbrechungen kritischer Anwendungen zu minimieren. enable_shielded_nodes: trueShielded GKE-Knoten bieten Sicherheitsfunktionen wie Secure Boot und Integritätsüberwachung, um vor Rootkits und Malware auf Boot-Ebene zu schützen. gateway_api_config: {"channel": "CHANNEL_STANDARD"}Erweiterte Traffic-Verwaltung für komplexes Routing, Load Balancing und API-Verwaltung in Unternehmensanwendungen. security_posture_config: {"mode": "ENTERPRISE", "vulnerability_mode": "VULNERABILITY_ENTERPRISE"}Erweiterte Verwaltung der Sicherheitslage, einschließlich Scannen auf Sicherheitslücken und Erzwingen von Richtlinien. GKE-Knotenpool: Eine Gruppe von Worker-Knoten, auf denen die Container der Anwendung ausgeführt werden.
In der folgenden Tabelle werden die Knotenpoolkonfigurationen in dieser Vorlage beschrieben:
Konfiguration Zweck location: us-central1.Gibt die Region an, in der dieser Knotenpool erstellt wird. Ähnlich wie beim Speicherort des Clusters wird so dafür gesorgt, dass sich die Knotenpoolressourcen in einem einzigen geografischen Bereich befinden. autoscaling: {"max_node_count":3, "min_node_count":1}.Konfiguriert den Cluster Autoscaler für diesen Knotenpool. Dadurch wird sichergestellt, dass der Knotenpool immer mindestens einen Knoten enthält, und die Obergrenze wird auf drei Knoten festgelegt, um Kosten und Ressourcenverbrauch zu kontrollieren. node_config: {"machine_type":"e2-medium", "oauth_scopes":["https://www.googleapis.com/auth/cloud-platform"], "shielded_instance_config":{"enable_secure_boot":true}}.Gruppenkonfigurationen für die Knoten in diesem Pool. Der Maschinentyp bietet ein ausgewogenes Verhältnis von CPU und Arbeitsspeicher, das für Arbeitslasten für allgemeine Zwecke geeignet ist. Definiert den Zugriff, der dem Dienstkonto gewährt wird. Aktiviert Secure Boot für die Shielded VM-Instanzen und schützt so vor Malware auf Boot-Ebene.
Helm-Diagrammkonfiguration
In der folgenden Tabelle sind die Helm-Chart-Konfigurationen aufgeführt, die für die Bereitstellung und Skalierung einer einfachen Webanwendung in GKE angepasst wurden.
| Konfiguration | Zweck |
|---|---|
replicaCount: 3 |
Erstellt drei anfängliche Replikate, um ein anfängliches Maß an Redundanz und grundlegende Hochverfügbarkeit für die Anwendung zu schaffen. |
image.repository: gcr.io/google-samples/hello-app |
Verwendet ein einfaches Webserver-Docker-Image als Platzhalter. |
resources.requests: {"cpu": "100m", "memory": "128Mi"} |
Gibt die Mindestmenge an CPU und Arbeitsspeicher an, die für jeden Pod reserviert sind, um verfügbare Ressourcen und eine effiziente Planung zu gewährleisten. |
resources.limits: {"cpu": "250m", "memory": "256Mi"} |
Gibt die maximale Menge an CPU und Arbeitsspeicher an, die für jeden Pod reserviert sind, um zu verhindern, dass ein einzelner Pod Ressourcen monopolisiert. |
networkPolicy.enabled: true |
Aktiviert Kubernetes-Netzwerkrichtlinien für die Anwendung. Damit können Sie Regeln dafür definieren, wie Pods miteinander und mit anderen Netzwerkendpunkten kommunizieren. So wird die Netzwerksegmentierung und ‑isolation erzwungen. |
service: {"type": "ClusterIP", "port": 80} |
Konfiguriert den Dienst für den internen Zugriff innerhalb des Clusters über den Standard-HTTP-Port. |
pdb: {"enabled": true, "minAvailable": 1} |
Ermöglicht ein Budget für Pod-Störungen, um sicherzustellen, dass während freiwilliger Unterbrechungen mindestens ein Replikat verfügbar bleibt und eine Hochverfügbarkeit aufrechterhalten wird. |
Webanwendung erstellen
Verwenden Sie die Vorlagen Enterprise-grade production GKE-Cluster and workload (GKE-Produktionscluster und ‑Arbeitslast auf Unternehmensniveau), um Ihre Webanwendung bereitzustellen.
Webinfrastruktur bereitstellen
Konfigurieren und stellen Sie die Vorlage GKE-Produktionscluster der Enterprise-Klasse bereit, um die grundlegende Infrastruktur zu erstellen, auf der Ihre Web-Arbeitslast ausgeführt wird.
Duplizieren und stellen Sie die Vorlage GKE-Produktionscluster für Unternehmen als Anwendung bereit.
Im ausgewählten Deployment-Projekt wird ein GKE-Cluster erstellt.
Konfigurieren Sie die Komponenten. Hier finden Sie weitere Informationen:
Klicken Sie auf Bereitstellen. Die Anwendung wird nach einigen Minuten bereitgestellt.
Klicken Sie im Bereich Anwendungsdetails auf den Tab Ausgaben.
Ermitteln Sie die cluster_id für Ihre Anwendung. Sie verwenden diese Informationen, wenn Sie Ihr Helm-Diagramm bereitstellen.
Webarbeitslast bereitstellen
Verwenden Sie die Vorlage GKE-Arbeitslast für die Produktion auf Unternehmensniveau, um Ihre Webarbeitslast in dem von Ihnen erstellten Cluster bereitzustellen. Sie stellen ein Helm-Chart bereit, das die Konfiguration Ihrer Web-Arbeitslast enthält.
Klicken Sie auf der Seite Google-Katalog in der Vorlage GKE-Arbeitslast für die Produktion auf Unternehmensniveau auf Neue Anwendung erstellen.
Geben Sie im Feld Name einen eindeutigen Namen für Ihre Anwendung ein.
Führen Sie im Bereich GKE-Bereitstellungsziel die folgenden Schritte aus:
Wählen Sie in der Projektliste das Projekt aus, in dem Sie den GKE-Cluster über Ihre Anwendung GKE-Cluster für die Produktion auf Unternehmensniveau bereitgestellt haben.
Wählen Sie in der Liste Region die Region aus, in der Sie den GKE-Cluster bereitgestellt haben.
Wählen Sie in der Liste Cluster den bereitgestellten GKE-Cluster aus.
Geben Sie in der Liste Namespace den Namespace für Ihre Arbeitslast ein. Wenn Sie den Namen nicht geändert haben, geben Sie
defaultein.Klicken Sie auf Anwendung erstellen.
Die Anwendung wird erstellt und die Konfigurationsdateien werden angezeigt.
Führen Sie im Bereich Helm-Diagramm folgende Schritte aus:
Konfigurationsdetails prüfen
Optional: Passen Sie die Konfiguration an Ihre individuellen Anforderungen an.
Klicken Sie auf Bereitstellen, um das Helm-Diagramm in Ihrem Cluster bereitzustellen.
Eine detaillierte Anleitung finden Sie unter Anwendungen bereitstellen.
Nach einigen Minuten wird die Helm-Chart-Konfiguration in Ihrem GKE-Cluster bereitgestellt.
Nächste Schritte
- Sie können diese Vorlage duplizieren und anpassen, indem Sie Google-Vorlagen verwenden.
- Sie können eigene Konfigurationen definieren, indem Sie Anwendungsvorlagen erstellen.
- Allgemeine Best Practices für die Architektur mit dem Google Cloud Architecture Framework identifizieren