Diese Seite enthält Informationen und Beispiele zum Herstellen einer Verbindung zu einer Cloud SQL-Instanz über einen Dienst, der in Cloud Run (vollständig verwaltet) ausgeführt wird.
Cloud SQL ist ein vollständig verwalteter Datenbankdienst, mit dem Sie Ihre relationalen Datenbanken in der Cloud einrichten, warten und verwalten können.
Cloud SQL-Instanz einrichten
- Aktivieren Sie die Cloud SQL Admin API in dem Projekt, über das Sie eine Verbindung herstellen, falls noch nicht geschehen:
- Cloud SQL for MySQL-Instanz erstellen
Standardmäßig weist Cloud SQL einer neuen Instanz eine öffentliche IP-Adresse zu. Sie können aber auch eine private IP-Adresse zuweisen. Weitere Informationen zu den Verbindungsoptionen für beide Möglichkeiten finden Sie auf der Seite Verbindungsübersicht.
Cloud Run konfigurieren (vollständig verwaltet)
Die Schritte zum Konfigurieren von Cloud Run (vollständig verwaltet) hängen vom Typ der IP-Adresse ab, die Sie Ihrer Cloud SQL-Instanz zugeordnet haben.Öffentliche IP-Adresse (Standard)
- Achten Sie darauf, dass die oben erstellte Instanz eine öffentliche IP-Adresse hat. Sie können dies in der Google Cloud Console auf der Seite Übersicht für Ihre Instanz nachprüfen. Eine Anleitung zum Hinzufügen einer IP-Adresse finden Sie auf der Seite Öffentliche IP-Verbindungen konfigurieren.
- Rufen Sie den INSTANCE_CONNECTION_NAME für Ihre Instanz ab. Sie finden ihn in der Google Cloud Console auf der Seite Übersicht für Ihre Instanz oder über folgenden Befehl:
gcloud sql instances describe [INSTANCE_NAME]
. - Konfigurieren Sie das Dienstkonto für Ihren Dienst. Achten Sie darauf, dass das Dienstkonto die entsprechenden Cloud SQL-Rollen und -Berechtigungen für die Verbindung mit Cloud SQL hat.
- Das Dienstkonto für Ihren Dienst benötigt eine der folgenden IAM-Rollen:
Cloud SQL Client
(bevorzugt)Cloud SQL Editor
Cloud SQL Admin
cloudsql.instances.connect
cloudsql.instances.get
Wenn das autorisierende Dienstkonto zu einem anderen Projekt gehört als die Cloud SQL-Instanz, müssen die Cloud SQL Admin API und die IAM-Berechtigungen für beide Projekte hinzugefügt werden.
Wie bei jeder Konfigurationsänderung führt das Festlegen einer neuen Konfiguration für die Cloud SQL-Verbindung zum Erstellen einer neuen Cloud Run-Überarbeitung. Nachfolgende Überarbeitungen erhalten dann automatisch ebenfalls diese Cloud SQL-Verbindung, sofern Sie sie nicht explizit ändern.
Console
-
Konfigurieren Sie den Dienst:
-
Wenn Sie eine Cloud SQL-Verbindung zu einem neuen Dienst hinzufügen:
-
Der Dienst muss containerisiert und in Container Registry hochgeladen worden sein. Wenn Sie noch keinen Dienst haben, lesen Sie die folgende Anleitung zum Erstellen und Bereitstellen eines Container-Images.
-
Klicken Sie auf DIENST ERSTELLEN.
-
-
Wenn Sie Cloud SQL-Verbindungen zu einem vorhandenen Dienst hinzufügen:
-
Klicken Sie auf den Dienstnamen.
-
Klicken Sie auf NEUE REVISION BEREITSTELLEN.
-
-
-
Verbindung zu einer Cloud SQL-Instanz aktivieren:
- Klicken Sie auf OPTIONALE EINSTELLUNGEN ANZEIGEN.
- Wenn Sie in Ihrem Projekt eine Verbindung zu einer Cloud SQL-Instanz hinzufügen, wählen Sie die gewünschte Cloud SQL-Instanz aus dem Drop-down-Menü aus.
-
Wenn Sie eine Cloud SQL-Instanz aus einem anderen Projekt verwenden möchten, wählen Sie im Drop-down-Menü die Option Benutzerdefinierter Verbindungsstring aus und geben Sie dann den vollständigen Namen der Instanzverbindung im Format PROJECT-ID:REGION:INSTANCE-ID ein.
-
Zum Löschen einer Verbindung bewegen Sie den Mauszeiger rechts neben die Verbindung, um das Papierkorbsymbol sichtbar zu machen, und klicken Sie darauf.
-
Klicken Sie auf Erstellen oder Bereitstellen.
Befehlszeile
Bevor Sie einen der unten aufgeführten Befehle verwenden, nehmen Sie die folgenden Ersetzungen vor:
- IMAGE durch das Image, das Sie bereitstellen
- SERVICE-NAME durch den Namen Ihres Cloud Run-Dienstes
-
INSTANCE-CONNECTION-NAME durch den Namen der Verbindung Ihrer Cloud SQL-Instanz oder eine durch Kommas getrennte Liste von Verbindungsnamen
Wenn Sie einen neuen Container bereitstellen, verwenden Sie den folgenden Befehl:
gcloud run deploy --image IMAGE \ --add-cloudsql-instances INSTANCE-CONNECTION-NAME \ --update-env-vars INSTANCE_CONNECTION_NAME="INSTANCE-CONNECTION-NAME"
Zum Aktualisieren eines vorhandenen Dienstes führen Sie den folgenden Befehl aus:gcloud run services update SERVICE-NAME \ --add-cloudsql-instances INSTANCE-CONNECTION-NAME \ --update-env-vars INSTANCE_CONNECTION_NAME="INSTANCE-CONNECTION-NAME"
Private IP-Adresse
Ein Connector für serverlosen VPC-Zugriff übernimmt die Kommunikation mit Ihrem VPC-Netzwerk. So stellen Sie eine direkte Verbindung mithilfe einer privaten IP-Adresse her:
- Achten Sie darauf, dass die oben erstellte Cloud SQL-Instanz eine private IP-Adresse hat. Eine Anleitung zum Hinzufügen einer IP-Adresse finden Sie auf der Seite Private IP-Adresse konfigurieren.
- Erstellen Sie einen Connector für serverlosen VPC-Zugriff im selben VPC-Netzwerk wie Ihre Cloud SQL-Instanz.
- Konfigurieren Sie Cloud Run (vollständig verwaltet) für die Verwendung des Connectors.
- Stellen Sie eine Verbindung über die private IP-Adresse der Instanz und den Port
3306
her.
Wenn Sie keine freigegebene VPC verwenden, muss sich ein Connector im selben Projekt und in derselben Region wie die Ressource befinden, von der er verwendet wird. Der Connector kann jedoch Traffic an Ressourcen in anderen Regionen senden.
Der serverlose VPC-Zugriff unterstützt die Kommunikation mit VPC-Netzwerken, die über Cloud VPN und VPC-Netzwerk-Peering verbunden sind.
Der serverlose VPC-Zugriff unterstützt keine Legacy-Netzwerke.
Verbindung zu Cloud SQL herstellen
Nachdem Sie Cloud Run (vollständig verwaltet) konfiguriert haben, können Sie eine Verbindung zu Ihrer Cloud SQL-Instanz herstellen.
Öffentliche IP-Adresse (Standard)
Für öffentliche IP-Pfade stellt App Engine Verbindungen mit Verschlüsselung und Autorisierung mit dem Cloud SQL-Proxy her.
Verbindung mit Unix Domain Sockets herstellen
Wenn alles richtig konfiguriert ist, können Sie den Dienst mit dem Unix Domain Socket der Cloud SQL-Instanz verbinden, auf den im Dateisystem der Umgebung unter folgendem Pfad zugegriffen wird: /cloudsql/INSTANCE_CONNECTION_NAME
. Sie finden ihn in der Google Cloud Console auf der Seite Übersicht für Ihre Instanz oder über folgenden Befehl: gcloud sql instances describe [INSTANCE_NAME]
.
Solche Verbindungen werden ohne zusätzliche Konfiguration automatisch verschlüsselt.
Die unten gezeigten Codebeispiele sind Auszüge aus umfassenderen Beispielen auf der GitHub-Website. Klicken Sie auf View on GitHub
, um mehr Code zu sehen.
Python
Wenn Sie dieses Snippet im Kontext einer Webanwendung sehen möchten, rufen Sie die README-Datei auf GitHub auf.
Java
Wenn Sie dieses Snippet im Kontext einer Webanwendung sehen möchten, rufen Sie die README-Datei auf GitHub auf.
Node.js
Wenn Sie dieses Snippet im Kontext einer Webanwendung sehen möchten, rufen Sie die README-Datei auf GitHub auf.
C#
Wenn Sie dieses Snippet im Kontext einer Webanwendung sehen möchten, rufen Sie die README-Datei auf GitHub auf.
Go
Wenn Sie dieses Snippet im Kontext einer Webanwendung sehen möchten, rufen Sie die README-Datei auf GitHub auf.
Ruby
Wenn Sie dieses Snippet im Kontext einer Webanwendung sehen möchten, rufen Sie die README-Datei auf GitHub auf.
PHP
Wenn Sie dieses Snippet im Kontext einer Webanwendung sehen möchten, rufen Sie die README-Datei auf GitHub auf.
Private IP-Adresse
Bei privaten IP-Pfaden stellt die Anwendung eine direkte Verbindung zu Ihrer Instanz über serverlosen VPC-Zugriff her.
Verbindung mit TCP herstellen
Stellen Sie eine direkte Verbindung über die private IP-Adresse und den Port 3306
für Ihre Instanz her.
Python
Wenn Sie dieses Snippet im Kontext einer Webanwendung sehen möchten, rufen Sie die README-Datei auf GitHub auf.
Java
Wenn Sie dieses Snippet im Kontext einer Webanwendung sehen möchten, rufen Sie die README-Datei auf GitHub auf.
Node.js
Wenn Sie dieses Snippet im Kontext einer Webanwendung sehen möchten, rufen Sie die README-Datei auf GitHub auf.
Go
Wenn Sie dieses Snippet im Kontext einer Webanwendung sehen möchten, rufen Sie die README-Datei auf GitHub auf.
C#
Wenn Sie dieses Snippet im Kontext einer Webanwendung sehen möchten, rufen Sie die README-Datei auf GitHub auf.
Ruby
Wenn Sie dieses Snippet im Kontext einer Webanwendung sehen möchten, rufen Sie die README-Datei auf GitHub auf.
PHP
Wenn Sie dieses Snippet im Kontext einer Webanwendung sehen möchten, rufen Sie die README-Datei auf GitHub auf.
Best Practices und weitere Informationen
Sie können für einen lokalen Test Ihrer Anwendung den Cloud SQL-Proxy verwenden. Eine detaillierte Anleitung dazu finden Sie im Schnellstart zur Verwendung des Proxys für lokale Tests.
Sie können lokale Tests auch mithilfe des Cloud SQL Proxy-Docker-Images ausführen.
Verbindungspools
Verbindungen zu den zugrunde liegenden Datenbanken können entweder vom Datenbankserver selbst oder von der Plattforminfrastruktur unterbrochen werden. Verwenden Sie eine Clientbibliothek, die Verbindungspools unterstützt. Diese Verbindungspools sollten unterbrochene Clientverbindungen wiederum automatisch wieder verbinden. Ausführlichere Beispiele zur Verwendung von Verbindungspools finden Sie unter Datenbankverbindungen verwalten.Verbindungseinschränkungen
Für die MySQL- und PostgreSQL-Editionen von Cloud SQL gilt eine maximale Anzahl gleichzeitiger Verbindungen. Die Limits können je nach verwendetem Datenbankmodul variieren. Weitere Informationen finden Sie auf der Seite Kontingente und Limits für Cloud SQL.Cloud Run-Dienste (vollständig verwaltet) sind auf 100 Verbindungen zu einer Cloud SQL-Datenbank beschränkt. Dieses Limit gilt pro Dienstinstanz. Das bedeutet, dass jede Instanz des (vollständig verwalteten) Cloud Run-Dienstes 100 Verbindungen zur Datenbank haben kann, und mit der Skalierung sich die Gesamtzahl der Verbindungen pro Bereitstellung erhöhen kann.
Sie können die maximale Anzahl der pro Instanz verwendeten Verbindungen mithilfe eines Verbindungspools begrenzen. Ausführlichere Beispiele zum Begrenzen der Anzahl von Verbindungen finden Sie auf der Seite Datenbankverbindungen verwalten.
API-Kontingentlimits
Cloud Run (vollständig verwaltet) bietet einen Mechanismus, der eine Verbindung über Cloud SQL Proxy herstellt, der die Cloud SQL Admin API verwendet. Für Cloud SQL Proxy gelten deshalb API-Kontingentlimits.Tipp
- Weitere Informationen zu Cloud Run
- Weitere Informationen zum Erstellen und Bereitstellen von Container-Images
- Vollständiges Beispiel für die Verwendung von Cloud Run mit MySQL in Python