Verbindung zu Cloud SQL for PostgreSQL mit Google Kubernetes Engine herstellen
Auf dieser Seite wird beschrieben, wie Sie eine Beispielanwendung in Google Kubernetes Engine (GKE) bereitstellen, die über die Google Cloud Console und eine Clientanwendung mit einer PostgreSQL-Instanz verbunden ist. Die in dieser Kurzanleitung erstellten Ressourcen kosten in der Regel weniger als einen Dollar (USD), vorausgesetzt, Sie führen die Schritte einschließlich der Bereinigung zeitnah aus.
Hinweis
- 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.
-
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.
-
Aktivieren Sie die Google Cloud APIs, die zum Ausführen einer Cloud SQL-Beispielanwendung in GKE erforderlich sind.
Console
Klicken Sie auf APIs aktivieren, um die für diese Kurzanleitung erforderlichen APIs zu aktivieren.
Dadurch werden die folgenden APIs aktiviert:
- Compute Engine API
- Cloud SQL Admin API
- Google Kubernetes Engine API
- Artifact Registry API
- Cloud Build API
gcloud
Klicken Sie auf die folgende Schaltfläche, um Cloud Shell zu öffnen, die Befehlszeilenzugriff auf Ihre Google Cloud-Ressourcen direkt über den Browser bietet. Mit Cloud Shell können Sie die in dieser Kurzanleitung vorgestellten
gcloud
-Befehle ausführen.Führen Sie den folgenden
gcloud services enable
-Befehl mit Cloud Shell aus, um die für diese Kurzanleitung erforderlichen APIs zu aktivieren:gcloud services enable compute.googleapis.com sqladmin.googleapis.com \ container.googleapis.com artifactregistry.googleapis.com cloudbuild.googleapis.com
Mit diesem Befehl werden die folgenden APIs aktiviert:
- Compute Engine API
- Cloud SQL Admin API
- GKE API
- Artifact Registry API
- Cloud Build API
Cloud SQL einrichten
Cloud SQL-Instanz erstellen
Datenbank erstellen
Console
-
Wechseln Sie in der Google Cloud Console zur Seite Cloud SQL-Instanzen.
- Wählen Sie
quickstart-instance
aus. - Wählen Sie im SQL-Navigationsmenü die Option Datenbanken aus.
- Klicken Sie auf Create database (Datenbank erstellen).
- Geben Sie im Feld Datenbankname des Dialogfelds Neue Datenbank
quickstart-db
ein. - Klicken Sie auf Erstellen.
gcloud
Führen Sie den Befehl gcloud
sql databases create
aus, um eine Datenbank zu erstellen.
gcloud sql databases create quickstart-db --instance=quickstart-instance
Nutzer erstellen
Console
-
Wechseln Sie in der Google Cloud Console zur Seite Cloud SQL-Instanzen.
- Klicken Sie auf den Instanznamen, um die Seite Übersicht einer Instanz zu öffnen.
- Wählen Sie im SQL-Navigationsmenü die Option Nutzer aus.
- Klicken Sie auf Nutzerkonto hinzufügen.
- Geben Sie auf der Seite Nutzerkonto zur Instanz instance_name hinzufügen die folgenden Informationen ein:
- Nutzername: Legen Sie
quickstart-user
fest. - Passwort: Geben Sie ein Passwort für Ihren Datenbanknutzer an. Notieren Sie dies zur Verwendung in einem späteren Schritt dieser Kurzanleitung.
- Nutzername: Legen Sie
- Klicken Sie auf Hinzufügen.
gcloud
Ersetzen Sie vor der Ausführung des Befehls DB_PASS durch ein Passwort für den Datenbanknutzer. Notieren Sie dies zur Verwendung in einem späteren Schritt dieser Kurzanleitung.
Führen Sie den Befehl gcloud sql users create
aus, um den Nutzer zu erstellen.
gcloud sql users create quickstart-user \ --instance=quickstart-instance \ --password=DB_PASS
Für Cloud SQL gelten die gleichen Längenbeschränkungen für Nutzernamen wie für lokales PostgreSQL.
GKE-Cluster erstellen
Console
-
Rufen Sie in der Google Cloud Console die Seite Google Kubernetes Engine auf.
- Klicken Sie auf Erstellen.
- Klicken Sie für GKE Autopilot auf Konfigurieren.
- Geben Sie für Name den Clusternamen als
gke-cloud-sql-quickstart
an. - Klicken Sie auf Erstellen.
gcloud
Führen Sie den Befehl gcloud container clusters create-auto
aus, um den Cluster zu erstellen.
gcloud container clusters create-auto gke-cloud-sql-quickstart \ --region us-central1
Cloud SQL-Beispielanwendung in Cloud Shell-Editor klonen
Mit einer Cloud SQL-Instanz, einer Datenbank und einem GKE-Cluster können Sie jetzt eine Beispielanwendung klonen und konfigurieren, um eine Verbindung zu Ihrer Cloud SQL-Instanz herzustellen. Für die verbleibenden Schritte in dieser Kurzanleitung müssen die gcloud
- und kubectl
-Befehlszeilentools verwendet werden. Beide Tools sind in Cloud Shell vorinstalliert.
Go
-
Öffnen Sie im Cloud Shell-Editor den Quellcode der Beispielanwendung.
Cloud Shell-Editor öffnen -
Klicken Sie im Dialog
Open in Cloud Shell
auf Bestätigen, um den Beispielanwendungscode herunterzuladen und das Beispielanwendungsverzeichnis im Cloud Shell-Editor zu öffnen.
Java
-
Öffnen Sie im Cloud Shell-Editor den Quellcode der Beispielanwendung.
Cloud Shell-Editor öffnen -
Klicken Sie im Dialog
Open in Cloud Shell
auf Bestätigen, um den Beispielanwendungscode herunterzuladen und das Beispielanwendungsverzeichnis im Cloud Shell-Editor zu öffnen.
Node.js
-
Öffnen Sie im Cloud Shell-Editor den Quellcode der Beispielanwendung.
Cloud Shell-Editor öffnen -
Klicken Sie im Dialog
Open in Cloud Shell
auf Bestätigen, um den Beispielanwendungscode herunterzuladen und das Beispielanwendungsverzeichnis im Cloud Shell-Editor zu öffnen.
Python
-
Öffnen Sie im Cloud Shell-Editor den Quellcode der Beispielanwendung.
Cloud Shell-Editor öffnen -
Klicken Sie im Dialog
Open in Cloud Shell
auf Bestätigen, um den Beispielanwendungscode herunterzuladen und das Beispielanwendungsverzeichnis im Cloud Shell-Editor zu öffnen.
GKE-Cluster aktivieren
Aktivieren Sie den gerade erstellten GKE-Cluster als Standardcluster, der für die verbleibenden Befehle in dieser Kurzanleitung verwendet werden soll.
gcloud container clusters get-credentials
so aus, um den GKE-Cluster zu aktivieren.
gcloud container clusters get-credentials gke-cloud-sql-quickstart \ --region us-central1
Dienstkonto einrichten
-
Führen Sie den Befehl
gcloud iam service-accounts create
so aus, um ein neues Dienstkonto zu erstellen:gcloud iam service-accounts create gke-quickstart-service-account \ --display-name="GKE Quickstart Service Account"
- Führen Sie den
gcloud projects add-iam-policy-binding
-Befehl so aus, um dem Google Cloud-Dienstkonto, das Sie gerade erstellt haben, die Rolle Cloud SQL-Client hinzuzufügen. Ersetzen Sie YOUR_PROJECT_ID durch die Projekt-ID.gcloud projects add-iam-policy-binding YOUR_PROJECT_ID \ --member="serviceAccount:gke-quickstart-service-account@YOUR_PROJECT_ID.iam.gserviceaccount.com" \ --role="roles/cloudsql.client"
- Die Beispielanwendung verwendet Logging. Führen Sie daher den Befehl
gcloud projects add-iam-policy-binding
wie unten beschrieben aus, um die Rolle Logautor dem soeben erstellten Google Cloud-Dienstkonto hinzuzufügen. Ersetzen Sie YOUR_PROJECT_ID durch die Projekt-ID.gcloud projects add-iam-policy-binding YOUR_PROJECT_ID \ --member="serviceAccount:gke-quickstart-service-account@YOUR_PROJECT_ID.iam.gserviceaccount.com" \ --role="roles/logging.logWriter"
- Das Dienstkonto muss Images aus dem Artifactory-Repository abrufen können. Führen Sie daher den folgenden Befehl aus:
gcloud projects add-iam-policy-binding
wie unten beschrieben, um die Artifact Registry-Leser Rolle dem Dienstkonto hinzuzufügen. Ersetzen Sie YOUR_PROJECT_ID durch die Projekt-ID.gcloud projects add-iam-policy-binding YOUR_PROJECT_ID \ --member="serviceAccount:gke-quickstart-service-account@YOUR_PROJECT_ID.iam.gserviceaccount.com" \ --role="roles/artifactregistry.reader"
- Erstellen Sie ein Kubernetes-Dienstkonto:
- Aktualisieren Sie die Datei
service-account.yaml
im Cloud Shell-Editor. Ersetzen Sie<YOUR-KSA-NAME>
durchksa-cloud-sql
. - Führen Sie den Befehl
kubectl apply
in Cloud Shell so aus:kubectl apply -f service-account.yaml
- Aktualisieren Sie die Datei
- Führen Sie den Befehl
gcloud iam service-accounts add-iam-policy-binding
so aus, um die IAM-Bindung des Google Cloud-Dienstkontos und des Kubernetes-Dienstkontos zu aktivieren. Ersetzen Sie die folgenden Werte:- YOUR_PROJECT_ID durch die Projekt-ID.
- YOUR_K8S_NAMESPACE durch
default
, dem Standard-Namespace für in GKE erstellte Cluster. - YOUR_KSA_NAME mit
ksa-cloud-sql
.
gcloud iam service-accounts add-iam-policy-binding \ --role="roles/iam.workloadIdentityUser" \ --member="serviceAccount:YOUR_PROJECT_ID.svc.id.goog[YOUR_K8S_NAMESPACE/YOUR_KSA_NAME]" \ gke-quickstart-service-account@YOUR_PROJECT_ID.iam.gserviceaccount.com
- Führen Sie den Befehl
kubectl annotate
so aus, um das Kubernetes-Dienstkonto mit IAM-Bindung zu annotieren. Ersetzen Sie die folgenden Werte:- YOUR_KSA_NAME mit
ksa-cloud-sql
. - YOUR_PROJECT_ID durch die Projekt-ID.
kubectl annotate serviceaccount \ YOUR_KSA_NAME \ iam.gke.io/gcp-service-account=gke-quickstart-service-account@YOUR_PROJECT_ID.iam.gserviceaccount.com
- YOUR_KSA_NAME mit
Secrets konfigurieren
Führen Sie den Befehl kubectl create secret generic
so aus, um Kubernetes-Secrets für die Datenbank, den Nutzer und das Nutzerpasswort zu erstellen, die von der Beispielanwendung verwendet werden sollen. Die Werte der einzelnen Secrets basieren auf den Werten, die in den vorherigen Schritten dieser Kurzanleitung angegeben wurden.
Ersetzen Sie DB_PASS durch das Passwort des quickstart-user
, den Sie im vorherigen Schritt Nutzer erstellen erstellt haben.
kubectl create secret generic gke-cloud-sql-secrets \ --from-literal=database=quickstart-db \ --from-literal=username=quickstart-user \ --from-literal=password=DB_PASS
Beispiel-App erstellen
Go
-
Führen Sie in Cloud Shell den folgenden
gcloud artifacts repositories create
-Befehl aus, um in der Artifact Registry mit dem Namen gke-cloud-sql-repo in derselben Region wie Ihr Cluster ein Repository zu erstellen. Ersetzen Sie YOUR_PROJECT_ID durch die Projekt-ID.gcloud artifacts repositories create gke-cloud-sql-repo \ --project=YOUR_PROJECT_ID \ --repository-format=docker \ --location=us-central1 \ --description="GKE Quickstart sample app"
-
Führen Sie den Befehl
gcloud builds submit
in Cloud Shell so aus, um einen Docker-Container zu erstellen und in der Artifact Registry zu veröffentlichen. Ersetzen Sie YOUR_PROJECT_ID durch die Projekt-ID.gcloud builds submit \ --tag us-central1-docker.pkg.dev/YOUR_PROJECT_ID/gke-cloud-sql-repo/gke-sql .
Java
-
Führen Sie in Cloud Shell den folgenden
gcloud artifacts repositories create
-Befehl aus, um in der Artifact Registry mit dem Namen gke-cloud-sql-repo in derselben Region wie Ihr Cluster ein Repository zu erstellen. Ersetzen Sie YOUR_PROJECT_ID durch die Projekt-ID.gcloud artifacts repositories create gke-cloud-sql-repo \ --project=YOUR_PROJECT_ID \ --repository-format=docker \ --location=us-central1 \ --description="GKE Quickstart sample app"
-
Führen Sie den Befehl
mvn
in Cloud Shell so aus, um einen Docker-Container zu erstellen und in der Artifact Registry zu veröffentlichen. Ersetzen Sie YOUR_PROJECT_ID durch die Projekt-ID.mvn clean package com.google.cloud.tools:jib-maven-plugin:2.8.0:build \ -Dimage=us-central1-docker.pkg.dev/YOUR_PROJECT_ID/gke-cloud-sql-repo/gke-sql \ -DskipTests -Djib.to.credHelper=gcloud
Node.js
-
Führen Sie in Cloud Shell den folgenden
gcloud artifacts repositories create
-Befehl aus, um in der Artifact Registry mit dem Namen gke-cloud-sql-repo in derselben Region wie Ihr Cluster ein Repository zu erstellen. Ersetzen Sie YOUR_PROJECT_ID durch die Projekt-ID.gcloud artifacts repositories create gke-cloud-sql-repo \ --project=YOUR_PROJECT_ID \ --repository-format=docker \ --location=us-central1 \ --description="GKE Quickstart sample app"
-
Führen Sie den Befehl
gcloud builds submit
in Cloud Shell so aus, um einen Docker-Container zu erstellen und in der Artifact Registry zu veröffentlichen. Ersetzen Sie YOUR_PROJECT_ID durch die Projekt-ID.gcloud builds submit \ --tag us-central1-docker.pkg.dev/YOUR_PROJECT_ID/gke-cloud-sql-repo/gke-sql .
Python
-
Führen Sie in Cloud Shell den folgenden
gcloud artifacts repositories create
-Befehl aus, um in der Artifact Registry mit dem Namen gke-cloud-sql-repo in derselben Region wie Ihr Cluster ein Repository zu erstellen. Ersetzen Sie YOUR_PROJECT_ID durch die Projekt-ID.gcloud artifacts repositories create gke-cloud-sql-repo \ --project=YOUR_PROJECT_ID \ --repository-format=docker \ --location=us-central1 \ --description="GKE Quickstart sample app"
-
Führen Sie den Befehl
gcloud builds submit
in Cloud Shell so aus, um einen Docker-Container zu erstellen und in der Artifact Registry zu veröffentlichen. Ersetzen Sie YOUR_PROJECT_ID durch die Projekt-ID.gcloud builds submit \ --tag us-central1-docker.pkg.dev/YOUR_PROJECT_ID/gke-cloud-sql-repo/gke-sql .
Beispiel-App bereitstellen
Bereinigen
Mit den folgenden Schritten vermeiden Sie, dass Ihrem Google Cloud-Konto die in dieser Anleitung verwendeten Ressourcen in Rechnung gestellt werden:
-
Wechseln Sie in der Google Cloud Console zur Seite Cloud SQL-Instanzen.
- Wählen Sie die Instanz
quickstart-instance
aus, um die Seite Instanzendetails zu öffnen. - Klicken Sie oben auf der Seite in der Symbolleiste auf Löschen.
- Geben Sie im Dialogfeld Instanz löschen
quickstart-instance
ein und klicken Sie dann auf Löschen, um die Instanz zu löschen. -
Rufen Sie in der Google Cloud Console die Seite Google Kubernetes Engine auf.
- Klicken Sie auf das Kästchen neben dem Dienstnamen
gke-cloud-sql-quickstart
. - Klicken Sie oben auf der Seite von Google Kubernetes Engine auf die Schaltfläche Löschen.
Optionale Bereinigungsschritte
Wenn Sie nicht das Google Cloud-Dienstkonto verwenden, das Sie für diese Kurzanleitung erstellt haben, können Sie es entfernen.
-
Öffnen Sie in der Google Cloud Console die Seite IAM.
- Klicken Sie auf das Kästchen für das IAM-Konto mit dem Namen
gke-quickstart-service-account
. - Klicken Sie auf Entfernen, um das Entfernen zu bestätigen.
Wenn Sie die APIs, die im Rahmen dieser Kurzanleitung aktiviert wurden, nicht verwenden, können Sie sie deaktivieren.
- APIs, die in dieser Kurzanleitung aktiviert wurden:
- Compute Engine API
- Cloud SQL Admin API
- Google Kubernetes Engine API
- Artifact Registry API
- Cloud Build API
Öffnen Sie in der Google Cloud Console die Seite APIs.
Wählen Sie eine API aus, die Sie deaktivieren möchten, und klicken Sie dann auf die Schaltfläche API deaktivieren.
Nächste Schritte
Je nach Bedarf können Sie sich eingehender über das Erstellen von Cloud SQL-Instanzen informieren.Sie können sich auch über das Erstellen von PostgreSQL-Nutzern und Datenbanken für Ihre Cloud SQL-Instanz informieren.
Sehen Sie sich auch Cloud SQL für MySQL – Preise an.
Mehr zu folgenden Themen:
- Alle Verbindungsoptionen in Cloud SQL
- Cloud SQL-Instanz mit einer öffentlichen IP-Adresse konfigurieren
- Cloud SQL-Instanz mit einer privaten IP-Adresse konfigurieren
Außerdem erfahren Sie, wie Sie von anderen Google Cloud-Anwendungen aus eine Verbindung zu einer Cloud SQL-Instanz herstellen können: