Mehrmandantenfähigen Cluster mit Terraform erstellen
Ein mehrmandantenfähiger Cluster in Google Kubernetes Engine ist ein Kubernetes-Cluster, der von mehreren verschiedenen Teams oder Nutzern gemeinsam genutzt wird. Diese werden als Mandanten bezeichnet. Jeder Mandant hat in der Regel eigene Ressourcen und Anwendungen im Cluster.
Mit dieser Terraform-Anleitung können Sie schnell einen GKE-Cluster erstellen, der von zwei Teams gemeinsam genutzt wird: backend und frontend. Diese Teams können teamspezifische Arbeitslasten im Cluster bereitstellen. In dieser Anleitung wird davon ausgegangen, dass Sie bereits mit Terraform vertraut sind. Wenn nicht, können Sie sich mit den folgenden Ressourcen mit den Grundlagen von Terraform vertraut machen:
Hinweis
Führen Sie folgende Schritte aus, um die Kubernetes Engine API zu aktivieren:
- Melden Sie sich in Ihrem Google Cloud -Konto an. Wenn Sie noch kein Google Cloud-Nutzer sind, erstellen Sie ein Konto, um zu sehen, wie sich unsere Produkte in realen Szenarien schlagen. Neukunden erhalten außerdem ein Guthaben von 300 $, um Arbeitslasten auszuführen, zu testen und bereitzustellen.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
Enable the GKE, GKE GKE Fleet, Cloud SQL, Resource Manager, IAM, Connect gateway APIs.
Roles required to enable APIs
To enable APIs, you need the
serviceusage.services.enablepermission. If you created the project, then you likely already have this permission through the Owner role (roles/owner). Otherwise, you can get this permission through the Service Usage Admin role (roles/serviceusage.serviceUsageAdmin). Learn how to grant roles.-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
Enable the GKE, GKE GKE Fleet, Cloud SQL, Resource Manager, IAM, Connect gateway APIs.
Roles required to enable APIs
To enable APIs, you need the
serviceusage.services.enablepermission. If you created the project, then you likely already have this permission through the Owner role (roles/owner). Otherwise, you can get this permission through the Service Usage Admin role (roles/serviceusage.serviceUsageAdmin). Learn how to grant roles.-
Sie benötigen die folgenden Rollen für das Projekt: roles/owner, roles/iam.serviceAccountTokenCreator
Rollen prüfen
-
Rufen Sie in der Google Cloud Console die Seite IAM auf.
IAM aufrufen - Wählen Sie das Projekt aus.
-
Suchen Sie in der Spalte Hauptkonto alle Zeilen, in denen Sie oder eine Gruppe, zu der Sie gehören, identifiziert werden. Wenden Sie sich an Ihren Administrator, um herauszufinden, zu welchen Gruppen Sie gehören.
- Prüfen Sie in allen Zeilen, in denen Sie angegeben sind oder in denen Sie enthalten sind, in der Rolle-Spalte, ob die Liste der Rollen die erforderlichen Rollen enthält.
Rollen zuweisen
-
Rufen Sie in der Google Cloud Console die Seite IAM auf.
IAM aufrufen - Wählen Sie das Projekt aus.
- Klicken Sie auf „“ Zugriffsrechte erteilen.
-
Geben Sie im Feld Neue Hauptkonten Ihre Nutzer-ID ein. Das ist in der Regel die E‑Mail-Adresse eines Google-Kontos.
- Klicken Sie auf Rolle auswählen und suchen Sie dann nach der Rolle.
- Klicken Sie auf Add another role, wenn Sie weitere Rollen zuweisen möchten.
- Klicken Sie auf Speichern.
-
Umgebung vorbereiten
In dieser Anleitung verwenden Sie Cloud Shell zum Verwalten von Ressourcen, die in gehostet werden
Google Cloud. Die
Software, die Sie für diese Anleitung benötigen, ist in Cloud Shell vorinstalliert. Dazu gehören Terraform, kubectl und die
die Google Cloud CLI.
Starten Sie eine Cloud Shell-Sitzung über die Google Cloud Console. Klicken Sie dazu auf das Symbol zur Aktivierung von Cloud Shell Cloud Shell aktivieren
. Dadurch wird eine Sitzung im unteren Bereich der Google Cloud Console gestartet.Die Dienstanmeldedaten, die dieser virtuellen Maschine zugeordnet sind, werden automatisch verwendet. Daher müssen Sie keinen Dienstkontoschlüssel einrichten oder herunterladen.
Bevor Sie Befehle ausführen, legen Sie Ihr Standardprojekt in der gcloud CLI mit dem folgenden Befehl fest:
gcloud config set project PROJECT_IDErsetzen Sie dabei
PROJECT_IDdurch Ihre Projekt-ID.Klonen Sie das GitHub-Repository:
git clone https://github.com/terraform-google-modules/terraform-docs-samples.git --single-branchWechseln Sie in das Arbeitsverzeichnis:
cd terraform-docs-samples/gke/quickstart/multitenant
Terraform-Dateien prüfen
Der Google Cloud Provider ist ein Plug-in, mit dem Sie Google Cloud Ressourcen mit Terraform verwalten und bereitstellen können. Es dient als Bindeglied zwischen Terraform-Konfigurationen und Google Cloud APIs, sodass Sie Infrastruktur ressourcen wie virtuelle Maschinen und Netzwerke deklarativ definieren können.
Prüfen Sie die Datei
main.tf, in der eine GKE-Clusterressource beschrieben wird:cat main.tfDie Ausgabe sieht etwa so aus:
Cluster und SQL-Datenbank erstellen
Führen Sie in Cloud Shell den folgenden Befehl aus, um zu prüfen, ob Terraform verfügbar ist:
terraformDie Ausgabe sollte in etwa so aussehen:
Usage: terraform [global options] <subcommand> [args] The available commands for execution are listed below. The primary workflow commands are given first, followed by less common or more advanced commands. Main commands: init Prepare your working directory for other commands validate Check whether the configuration is valid plan Show changes required by the current configuration apply Create or update infrastructure destroy Destroy previously-created infrastructureInitialisieren Sie Terraform:
terraform initOptional: Planen Sie die Terraform-Konfiguration:
terraform planWenden Sie die Terraform-Konfiguration an:
terraform applyGeben Sie bei Aufforderung
yesein, um die Aktionen zu bestätigen. Die Ausführung dieses Befehls kann mehrere Minuten dauern. Die Ausgabe sieht etwa so aus:Apply complete! Resources: 23 added, 0 changed, 0 destroyed.
Anwendung des Backend-Teams bereitstellen
Prüfen Sie die folgende Terraform-Datei:
cat backend.yamlDie Ausgabe sollte in etwa so aussehen:
In dieser Datei werden die folgenden Ressourcen beschrieben:
- Ein Deployment mit einer Beispielanwendung.
- Ein Dienst vom Typ LoadBalancer.
Der Dienst gibt das Deployment über Port 80 frei. Konfigurieren Sie einen externen Load-Balancer, um Ihre Anwendung im Internet freizugeben. Entfernen Sie dazu die Annotation
networking.gke.io/load-balancer-type.
Führen Sie in Cloud Shell den folgenden Befehl aus, um die Identität des Dienstkontos des Backend-Teams anzunehmen:
gcloud config set auth/impersonate_service_account backend@PROJECT_ID.iam.gserviceaccount.comErsetzen Sie
PROJECT_IDdabei durch Ihre Projekt-ID.Rufen Sie die Clusteranmeldedaten ab:
gcloud container fleet memberships get-credentials gke-enterprise-cluster --location us-central1Wenden Sie das Manifest des Backend-Teams auf den Cluster an:
kubectl apply -f backend.yaml
Funktion der Backend-Anwendung prüfen
Gehen Sie so vor, um zu prüfen, ob Ihr Cluster ordnungsgemäß ausgeführt wird:
Rufen Sie in der Google Cloud Console die Seite Arbeitslasten auf:
Klicken Sie auf die Arbeitslast
backend. Die Pod-Detailseite wird angezeigt. Diese Seite enthält Informationen zum Pod, z. B. Annotationen, auf dem Pod ausgeführte Container, Dienste, die den Pod verfügbar machen, und Messwerte, darunter CPU-, Arbeitsspeicher- und Laufwerknutzung.Klicken Sie auf den LoadBalancer-Dienst
backend. Die Detailseite des Dienstes wird angezeigt. Auf dieser Seite werden Informationen zum Dienst angezeigt, z. B. die mit dem Dienst verknüpften Pods und die von den Diensten verwendeten Ports.Klicken Sie im Abschnitt Endpunkte auf den Link IPv4, um Ihren Dienst im Browser aufzurufen. Die Ausgabe sieht etwa so aus:
Backend! Hostname: backendweb-765f6c4fc9-cl7jx Set Color: greenImmer wenn ein Nutzer auf den Backend-Endpunkt zugreift, wählt der Dienst zufällig eine Farbe aus Rot, Grün oder Blau aus und speichert sie in der freigegebenen Datenbank.
Anwendung des Frontend-Teams bereitstellen
Prüfen Sie die folgende Terraform-Datei:
cat frontend.yamlDie Ausgabe sollte in etwa so aussehen:
In dieser Datei werden die folgenden Ressourcen beschrieben:
- Ein Deployment mit einer Beispielanwendung.
- Ein Dienst vom Typ LoadBalancer.
Der Dienst gibt das Deployment über Port 80 frei. Konfigurieren Sie einen externen Load-Balancer, um Ihre Anwendung im Internet freizugeben. Entfernen Sie dazu die Annotation
networking.gke.io/load-balancer-type.
Führen Sie in Cloud Shell den folgenden Befehl aus, um die Identität des Dienstkontos des Frontend-Teams anzunehmen:
gcloud config set auth/impersonate_service_account frontend@PROJECT_ID.iam.gserviceaccount.comErsetzen Sie
PROJECT_IDdabei durch Ihre Projekt-ID.Rufen Sie die Clusteranmeldedaten ab:
gcloud container fleet memberships get-credentials gke-enterprise-cluster --location us-central1Wenden Sie das Manifest des Frontend-Teams auf den Cluster an:
kubectl apply -f frontend.yaml
Funktion der Frontend-Anwendung prüfen
Gehen Sie so vor, um zu prüfen, ob Ihr Cluster ordnungsgemäß ausgeführt wird:
Rufen Sie in der Google Cloud Console die Seite Arbeitslasten auf:
Klicken Sie auf die Arbeitslast
frontend. Die Pod-Detailseite wird angezeigt. Diese Seite enthält Informationen zum Pod, z. B. Annotationen, auf dem Pod ausgeführte Container, Dienste, die den Pod verfügbar machen, und Messwerte, darunter CPU-, Arbeitsspeicher- und Laufwerknutzung.Klicken Sie auf den LoadBalancer-Dienst
frontend. Die Detailseite des Dienstes wird angezeigt. Auf dieser Seite werden Informationen zum Dienst angezeigt, z. B. die mit dem Dienst verknüpften Pods und die von den Diensten verwendeten Ports.Klicken Sie im Abschnitt Endpunkte auf den Link IPv4, um Ihren Dienst im Browser aufzurufen. Die Ausgabe sieht etwa so aus:
Frontend! Hostname: frontendweb-5cd888d88f-gwwtc Got Color: green
Bereinigen
Mit den folgenden Schritten vermeiden Sie, dass Ihrem Google Cloud -Konto die auf dieser Seite verwendeten Ressourcen in Rechnung gestellt werden:
Führen Sie in Cloud Shell den folgenden Befehl aus, um die Identitätsübernahme des Dienstkontos aufzuheben:
gcloud config unset auth/impersonate_service_accountFühren Sie den folgenden Befehl aus, um die Terraform-Ressourcen zu löschen:
terraform destroy --auto-approve
Nächste Schritte
Die Terraform-Ressourcen für GKE ansehen
Zielgerichtete Konfigurationsbeispiele im Terraform GKE-Modul GitHub-Repository ansehen