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

  1. 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.
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  3. Die Abrechnung für das Google Cloud-Projekt muss aktiviert sein.

  4. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  5. Die Abrechnung für das Google Cloud-Projekt muss aktiviert sein.

  6. 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.

    APIs 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.

    Cloud Shell öffnen

    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

  1. Wechseln Sie in der Google Cloud Console zur Seite Cloud SQL-Instanzen.

    Cloud SQL-Instanzen aufrufen

  2. Wählen Sie quickstart-instance aus.
  3. Wählen Sie im SQL-Navigationsmenü die Option Datenbanken aus.
  4. Klicken Sie auf Create database (Datenbank erstellen).
    1. Geben Sie im Feld Datenbankname des Dialogfelds Neue Datenbank quickstart-db ein.
    2. 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

  1. Wechseln Sie in der Google Cloud Console zur Seite Cloud SQL-Instanzen.

    Cloud SQL-Instanzen aufrufen

  2. Klicken Sie auf den Instanznamen, um die Seite Übersicht einer Instanz zu öffnen.
  3. Wählen Sie im SQL-Navigationsmenü die Option Nutzer aus.
  4. Klicken Sie auf Nutzerkonto hinzufügen.
  5. Geben Sie auf der Seite Nutzerkonto zur Instanz Instanzname 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.
  6. Klicken Sie auf Add.

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

  1. Rufen Sie in der Google Cloud Console die Seite Google Kubernetes Engine auf.

    Zur Seite "Google Kubernetes Engine"

  2. Klicken Sie auf Erstellen.
  3. Klicken Sie für GKE Autopilot auf Konfigurieren.
  4. Geben Sie für Name den Clusternamen als gke-cloud-sql-quickstart an.
  5. 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

  1. Öffnen Sie im Cloud Shell-Editor den Quellcode der Beispielanwendung.
    Cloud Shell-Editor öffnen
  2. 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

  1. Öffnen Sie im Cloud Shell-Editor den Quellcode der Beispielanwendung.
    Cloud Shell-Editor öffnen
  2. 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

  1. Öffnen Sie im Cloud Shell-Editor den Quellcode der Beispielanwendung.
    Cloud Shell-Editor öffnen
  2. 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

  1. Öffnen Sie im Cloud Shell-Editor den Quellcode der Beispielanwendung.
    Cloud Shell-Editor öffnen
  2. 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.

Führen Sie den Befehl 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

Erstellen und konfigurieren Sie ein Google Cloud-Dienstkonto, das von GKE verwendet werden soll, damit es die Rolle Cloud SQL-Client mit Berechtigungen zum Herstellen einer Verbindung zu Cloud SQL hat.
  1. 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"
  2. 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"
  3. 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"
  4. 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, das für den Zugriff auf Cloud SQL konfiguriert ist. Binden Sie es dazu mithilfe von Workload Identity an das Google Cloud-Dienstkonto.
  1. Erstellen Sie ein Kubernetes-Dienstkonto:
    1. Aktualisieren Sie die Datei service-account.yaml im Cloud Shell-Editor. Ersetzen Sie <YOUR-KSA-NAME> durch ksa-cloud-sql.
    2. Führen Sie den Befehl kubectl apply in Cloud Shell so aus:
      kubectl apply -f service-account.yaml
  2. 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
  3. 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

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

  1. 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"
  2. 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

  1. 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"
  2. 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

  1. 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"
  2. 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

  1. 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"
  2. 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:

  1. Wechseln Sie in der Google Cloud Console zur Seite Cloud SQL-Instanzen.

    Cloud SQL-Instanzen aufrufen

  2. Wählen Sie die Instanz quickstart-instance aus, um die Seite Instanzendetails zu öffnen.
  3. Klicken Sie oben auf der Seite in der Symbolleiste auf Löschen.
  4. Geben Sie im Dialogfeld Instanz löschen quickstart-instance ein und klicken Sie dann auf Löschen, um die Instanz zu löschen.
  5. Rufen Sie in der Google Cloud Console die Seite Google Kubernetes Engine auf.

    Zur Seite "Google Kubernetes Engine"

  6. Klicken Sie auf das Kästchen neben dem Dienstnamen gke-cloud-sql-quickstart.
  7. 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.

  1. Öffnen Sie in der Google Cloud Console die Seite IAM.

    IAM aufrufen

  2. Klicken Sie auf das Kästchen für das IAM-Konto mit dem Namen gke-quickstart-service-account.
  3. 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
  1. Öffnen Sie in der Google Cloud Console die Seite APIs.

    Zu „APIs“

  2. 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:

Außerdem erfahren Sie, wie Sie von anderen Google Cloud-Anwendungen aus eine Verbindung zu einer Cloud SQL-Instanz herstellen können: