Mehrfachnutzercluster mit Terraform erstellen
Ein mehrmandantenfähiger Cluster in der Google Kubernetes Engine (GKE) Enterprise-Version ist ein Kubernetes-Cluster, der von mehreren verschiedenen Teams oder Nutzern gemeinsam genutzt wird, die als Mandanten bezeichnet werden. Jeder Mandant hat in der Regel seine eigenen Ressourcen und Anwendungen innerhalb des Clusters.
In diesem Terraform-Tutorial können Sie schnell einen GKE Enterprise-Cluster erstellen, der von zwei Teams, backend
und frontend
, gemeinsam genutzt wird und auf dem teamspezifische Arbeitslasten bereitgestellt werden können. In dieser Anleitung wird davon ausgegangen, dass Sie mit Terraform vertraut sind. Falls nicht, können Sie sich mit den folgenden Ressourcen mit den Grundlagen von Terraform vertraut machen:
Hinweise
Führen Sie folgende Schritte aus, um die Kubernetes Engine API zu aktivieren:
- Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the GKE, GKE Hub, Cloud SQL, Resource Manager, IAM, Connect gateway APIs.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the GKE, GKE Hub, Cloud SQL, Resource Manager, IAM, Connect gateway APIs.
-
Make sure that you have the following role or roles on the project: roles/owner, roles/iam.serviceAccountTokenCreator
Check for the roles
-
In the Google Cloud console, go to the IAM page.
Go to IAM - Select the project.
-
In the Principal column, find all rows that identify you or a group that you're included in. To learn which groups you're included in, contact your administrator.
- For all rows that specify or include you, check the Role column to see whether the list of roles includes the required roles.
Grant the roles
-
In the Google Cloud console, go to the IAM page.
IAM aufrufen - Wählen Sie das Projekt aus.
- Klicken Sie auf Zugriff erlauben.
-
Geben Sie im Feld Neue Hauptkonten Ihre Nutzer-ID ein. Dies ist in der Regel die E-Mail-Adresse eines Google-Kontos.
- Wählen Sie in der Liste Rolle auswählen eine Rolle aus.
- Wenn Sie weitere Rollen hinzufügen möchten, klicken Sie auf Weitere Rolle hinzufügen und fügen Sie weitere Rollen hinzu.
- Klicken Sie auf Speichern.
-
Umgebung vorbereiten
In dieser Anleitung verwenden Sie Cloud Shell zum Verwalten von Ressourcen, die inGoogle Cloudgehostet werden. Die Software, die Sie für diese Anleitung benötigen, ist in Cloud Shell vorinstalliert, einschließlich Terraform, kubectl
und der Google Cloud CLI.
Starten Sie eine Cloud Shell-Sitzung über die Google Cloud -Konsole. Klicken Sie dazu auf das Symbol zum Aktivieren von Cloud Shell Cloud Shell aktivieren . Dadurch wird im unteren Bereich der Google Cloud Console eine Sitzung 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_ID
Ersetzen Sie dabei
PROJECT_ID
durch Ihre Projekt-ID.Klonen Sie das GitHub-Repository:
git clone https://github.com/terraform-google-modules/terraform-docs-samples.git --single-branch
Wechseln Sie in das Arbeitsverzeichnis:
cd terraform-docs-samples/gke/quickstart/multitenant
Terraform-Dateien prüfen
Der Google Cloud -Anbieter ist ein Plug-in, mit dem Sie Google Cloud -Ressourcen mit Terraform verwalten und bereitstellen können. Es dient als Bindeglied zwischen Terraform-Konfigurationen undGoogle Cloud APIs, sodass Sie Infrastrukturressourcen wie virtuelle Maschinen und Netzwerke deklarativ definieren können.
Prüfen Sie die Datei
main.tf
, in der eine GKE Enterprise-Clusterressource beschrieben wird:cat main.tf
Die Ausgabe sieht in 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:
terraform
Die 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 infrastructure
Initialisieren Sie Terraform:
terraform init
Optional: Planen Sie die Terraform-Konfiguration:
terraform plan
Wenden Sie die Terraform-Konfiguration an:
terraform apply
Geben Sie
yes
ein, wenn Sie aufgefordert werden, die Aktionen zu bestätigen. Die Ausführung dieses Befehls kann mehrere Minuten dauern. Die Ausgabe sieht in etwa so aus:Apply complete! Resources: 23 added, 0 changed, 0 destroyed.
Backend-Teamanwendung bereitstellen
Sehen Sie sich die folgende Terraform-Datei an:
cat backend.yaml
Die Ausgabe sollte in etwa so aussehen:
In dieser Datei werden die folgenden Ressourcen beschrieben:
- Eine Bereitstellung mit einer Beispielanwendung.
- Einen 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 sich als das Dienstkonto des Backend-Teams auszugeben:
gcloud config set auth/impersonate_service_account backend@PROJECT_ID.iam.gserviceaccount.com
Ersetzen Sie dabei
PROJECT_ID
durch Ihre Projekt-ID.Rufen Sie die Clusteranmeldedaten ab:
gcloud container fleet memberships get-credentials gke-enterprise-cluster --location us-central1
Wenden Sie das Manifest des Backend-Teams auf den Cluster an:
kubectl apply -f backend.yaml
Prüfen, ob die Backend-Anwendung funktioniert
So prüfen Sie, ob der Cluster ordnungsgemäß ausgeführt wird:
Rufen Sie in der Google Cloud Console die Seite Arbeitslasten auf:
Klicken Sie auf die Arbeitslast
backend
. Die Seite mit den Pod-Details 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 Seite mit den Dienstdetails 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 Bereich Endpunkte auf den IPv4-Link, um den Dienst im Browser aufzurufen. Die Ausgabe sieht in etwa so aus:
Backend! Hostname: backendweb-765f6c4fc9-cl7jx Set Color: green
Wenn ein Nutzer auf den Back-End-Endpunkt zugreift, wählt der Dienst zufällig eine Farbe aus (rot, grün oder blau) und speichert sie in der freigegebenen Datenbank.
Frontend-Teamanwendung bereitstellen
Sehen Sie sich die folgende Terraform-Datei an:
cat frontend.yaml
Die Ausgabe sollte in etwa so aussehen:
In dieser Datei werden die folgenden Ressourcen beschrieben:
- Eine Bereitstellung mit einer Beispielanwendung.
- Einen 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 sich als das Dienstkonto des Frontend-Teams auszugeben:
gcloud config set auth/impersonate_service_account frontend@PROJECT_ID.iam.gserviceaccount.com
Ersetzen Sie dabei
PROJECT_ID
durch Ihre Projekt-ID.Rufen Sie die Clusteranmeldedaten ab:
gcloud container fleet memberships get-credentials gke-enterprise-cluster --location us-central1
Wenden Sie das Manifest des Frontend-Teams auf den Cluster an:
kubectl apply -f frontend.yaml
Prüfen, ob die Front-End-Anwendung funktioniert
So prüfen Sie, ob der Cluster ordnungsgemäß ausgeführt wird:
Rufen Sie in der Google Cloud Console die Seite Arbeitslasten auf:
Klicken Sie auf die Arbeitslast
frontend
. Die Seite mit den Pod-Details 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 Seite mit den Dienstdetails 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 Bereich Endpunkte auf den IPv4-Link, um den Dienst im Browser aufzurufen. Die Ausgabe sieht in etwa so aus:
Frontend! Hostname: frontendweb-5cd888d88f-gwwtc Got Color: green
Bereinigen
Mit den folgenden Schritten vermeiden Sie, dass Ihrem Google Cloud -Konto die in dieser Anleitung verwendeten Ressourcen in Rechnung gestellt werden:
Führen Sie in Cloud Shell den folgenden Befehl aus, um die Identitätsdiebstahl-Funktion für Dienstkonten zurückzusetzen:
gcloud config unset auth/impersonate_service_account
Führen Sie den folgenden Befehl aus, um die Terraform-Ressourcen zu löschen:
terraform destroy --auto-approve
Nächste Schritte
Im GitHub-Repository für Terraform GKE-Module finden Sie zielgerichtete Konfigurationsbeispiele.