Regions-ID
REGION_ID
ist ein abgekürzter Code, den Google anhand der Region zuweist, die Sie beim Erstellen Ihrer Anwendung ausgewählt haben. Der Code bezieht sich nicht auf ein Land oder eine Provinz, auch wenn einige Regions-IDs häufig verwendeten Länder- und Provinzcodes ähneln können. Bei Anwendungen, die nach Februar 2020 erstellt wurden, ist REGION_ID.r
in den App Engine-URLs enthalten. Bei Anwendungen, die vor diesem Datum erstellt wurden, ist die Regions-ID in der URL optional.
In dieser Anleitung wird beschrieben, wie Sie eine vorhandene App Engine-Anwendung migrieren, die über eine öffentliche IP-Adresse eine Verbindung zu einer Cloud SQL-Instanz herstellt.
Im Allgemeinen wird an den Schritten in diesem Leitfaden gezeigt, wie Sie denselben Anwendungsquellcode in Cloud Run bereitstellen und dann für die Verwendung desselben Cloud SQL-Datenbanknutzers zur Verbindung Ihrer vorhandenen Instanz und Datenbank konfigurieren.
Die Schritte in dieser Anleitung enthalten nicht, wie eine interne private IP-Verbindung verwendet werden muss, da Sie zuerst Ihren Anwendungscode ändern müssen. Nachdem Sie Ihre Anwendung jedoch für Cloud Run bereitgestellt haben, können Sie die Schritte unter Über Cloud Run mit Cloud SQL verbinden ausführen, um die Anforderungen und die Verwendung von privaten IP-Adressen zu erfahren.
Weitere Informationen zu den Ähnlichkeiten und Unterschieden zwischen App Engine und Cloud Run, einschließlich der Vorteile der Migration zu Cloud Run, finden Sie in der Vergleichsübersicht.
Hinweise
- Achten Sie darauf, dass Cloud Run Ihre Anwendungsanforderungen erfüllt. Prüfen Sie den Vergleich von App Engine und Cloud Run, um festzustellen, ob die Cloud Run-Ressourcen wie CPU und Arbeitsspeicher Ihren Anforderungen entsprechen.
In dieser Anleitung wird davon ausgegangen, dass Ihre Anwendung fehlerfrei ausgeführt wird.
Sie benötigen Zugriff auf Ihre Cloud SQL-Instanz, einschließlich des Datenbank-Nutzernamens und des Passworts für die Verbindung der Anwendung. Cloud Run verwendet Verschlüsselung und stellt die Verbindung über den Cloud SQL Auth-Proxy entweder über Unix-Sockets oder Cloud SQL-Konnektoren her.
Prüfen Sie die folgenden Cloud Run-Unterschiede:
Cloud Run verwendet den Begriff
Revision
anstelle vonVersion
, um jedes Mal darzustellen, wenn Sie Änderungen an einem bestimmten Dienst bereitstellen. Wenn Sie die Anwendung zum ersten Mal in einem Dienst in Cloud Run bereitstellen, wird die erste Überarbeitung erstellt. Bei jeder nachfolgenden Bereitstellung eines Dienstes wird eine weitere Überarbeitung erstellt. Weitere Informationen zur Bereitstellung in Cloud RunSie können Ihren Quellcode mithilfe des Google Cloud CLI oder der Google Cloud Console in Cloud Run bereitstellen, um die Anwendungseinstellungen zu konfigurieren und zu verwalten. Cloud Run erfordert keine dateibasierte Konfiguration. Die YAML-Konfiguration wird jedoch unterstützt und Sie können das
app2run
-Tool verwenden, um Ihre vorhandene App Engine-Datei für Cloud Run zu übersetzen.Jeder Dienst, den Sie in Cloud Run bereitstellen, verwendet die Domain run.app in der URL, um öffentlich auf den Dienst zuzugreifen.
Im Gegensatz zu standardmäßig öffentlichen App Engine-Diensten sind Cloud Run-Dienste standardmäßig privat und müssen für den öffentlichen (nicht authentifizierten) Zugriff konfiguriert werden.
Anwendung zu Cloud Run migrieren
Im Großen und Ganzen setzt sich die Migration Ihrer App Engine-Anwendung zu Cloud Run aus den folgenden Schritten zusammen:
- Aktivieren der erforderlichen APIs
- Cloud Run-Dienstkonto konfigurieren
- Anwendung in Cloud Run bereitstellen
Aktivieren der erforderlichen APIs:
Bevor Sie Ihre Anwendung in Cloud Run bereitstellen können, müssen Sie zuerst die APIs für Cloud Run und Artifact Registry aktivieren.
Verwenden Sie die Google Cloud Console, um die APIs zu aktivieren:
Cloud Run-Dienstkonto konfigurieren
Sie können entweder ein neues Dienstkonto erstellen oder weiterhin das gleiche nutzerverwaltete Dienstkonto in Cloud Run verwenden, das Sie für App Engine verwenden. Im Dienstkonto müssen Sie dafür sorgen, dass die folgenden IAM-Rollen (Identity and Access Management) oder die entsprechenden Berechtigungen konfiguriert sind:
Für die Bereitstellung in Cloud Run benötigen Sie eine der folgenden Optionen:
- Inhaber
- Bearbeiter
- Sowohl die Rolle Cloud Run-Administrator als auch die Rolle Dienstkontonutzer
- Entsprechende Cloud Run-Berechtigungen
Für öffentliche IP-Verbindungen zu Cloud SQL benötigen Sie eine der folgenden Optionen:
- Cloud SQL-Client (bevorzugt)
- Cloud SQL-Administrator
- Entsprechende Cloud SQL-Berechtigungen
Anwendung in Cloud Run bereitstellen
Für die Bereitstellung der App Engine-Anwendung in Cloud Run sind keine Codeänderungen erforderlich.
In den folgenden Schritten stellen Sie Ihre Anwendung für einen neuen Dienst in Cloud Run bereit und konfigurieren diesen Dienst gleichzeitig für die Verbindung mit Cloud SQL.
Wie die flexible App Engine-Umgebung unterstützt Cloud Run sowohl container- als auch quellenbasierte Bereitstellungen. Sie benötigen Zugriff auf Ihr Container-Image oder das Quellcode-Repository, je nach verwendeter Bereitstellungsmethode.
Container-Images bereitstellen
Wenn Ihre App Engine-Dienste mit einem manuell erstellten Container bereitgestellt werden, können Sie Ihren Dienst auch über dasselbe Container-Image in Cloud Run bereitstellen. So stellen Sie das App Engine-Container-Image in Cloud Run bereit:
Notieren Sie sich die Registry-URL, unter der sich Ihr Container-Image befindet. Dies ist dieselbe URL, die Sie im Flag
--image-url
für die Bereitstellung in App Engine angeben.Stellen Sie das Container-Image bereit:
Console
Wechseln Sie in der Google Cloud Console zur Seite Cloud Run.
Klicken Sie auf Dienst erstellen.
Klicken Sie im Feld Container-Image-URL auf die Schaltfläche Auswählen und wählen Sie das Container-Image aus, das Sie für App Engine bereitgestellt haben.
Geben Sie einen Namen für den Dienst ein. Wählen Sie einen eindeutigen Namen, der die bereitzustellende Anwendung darstellt.
Wählen Sie im Bereich Authentifizierung die Option Nicht authentifizierte Aufrufe zulassen aus.
Sie müssen für Cloud Run dieselben Umgebungsvariablen erstellen, die Sie in der Datei
app.yaml
Ihrer App Engine-Anwendung definiert haben. Maximieren Sie den Bereich Container, Netzwerk, Sicherheit und erstellen Sie die folgenden Umgebungsvariablen, indem Sie unter Umgebungsvariablen auf Variable hinzufügen klicken.Fügen Sie für Unix-Sockets Folgendes hinzu:
INSTANCE_UNIX_SOCKET: /cloudsql/INSTANCE_CONNECTION_NAME
Fügen Sie für Cloud SQL-Connectors Folgendes hinzu:
INSTANCE_CONNECTION_NAME:INSTANCE_CONNECTION_NAME
Ersetzen Sie dabei INSTANCE_CONNECTION_NAME durch Ihre Projekt-ID, Region und Instanz im Format
project:region:instance-id
. Sie finden ihn in der Google Cloud Console auf der Seite Übersicht für Ihre Instanz.Solche Verbindungen werden ohne zusätzliche Konfiguration automatisch verschlüsselt.
DB_NAME
: der Name Ihrer DatenbankDB_USER
: Nutzername Ihres DatenbanknutzersDB_PASS
: Passwort, das Sie beim Erstellen der Datenbank angegeben haben.
Klicken Sie im Abschnitt Cloud SQL-Verbindungen auf die Schaltfläche Verbindung hinzufügen und wählen Sie die Instanz aus, die Sie zuvor für App Engine erstellt haben.
Klicken Sie auf Bereitstellen. Wenn der Cloud Run-Dienst bereitgestellt ist, wird oben auf der Seite Dienstdetails eine URL angezeigt. Klicken Sie auf den Link URL, um in Cloud Run die bereitgestellte Anwendung zu sehen, die mit Cloud SQL verbunden ist.
gcloud
Führen Sie den folgenden Befehl aus, um einen neuen Dienst in Cloud Run zu erstellen. Sie müssen Konfigurations-Flags festlegen, um dieselben SQL-Verbindungsumgebungsvariablen einzuschließen, die in der
app.yaml
-Datei Ihrer App Engine-Anwendung definiert sind:gcloud run deploy run-sql --image IMAGE \ --allow-unauthenticated \ --add-cloudsql-instances INSTANCE_CONNECTION_NAME\ --set-env-vars INSTANCE_UNIX_SOCKET="/cloudsql/INSTANCE_CONNECTION_NAME" \ --set-env-vars INSTANCE_CONNECTION_NAME="INSTANCE_CONNECTION_NAME" \ --set-env-vars DB_NAME="DB_NAME" \ --set-env-vars DB_USER="DB_USER" \ --set-env-vars DB_PASS="DB_PASS"
Ersetzen Sie:
- IMAGE durch das Image, das Sie bereitstellen
INSTANCE_CONNECTION_NAME durch den Namen der Verbindung Ihrer Cloud SQL-Instanz oder eine durch Kommas getrennte Liste von Verbindungsnamen. Sie finden den
INSTANCE_CONNECTION_NAME
, indem Sie folgenden Befehl ausführen:gcloud instances describe INSTANCE_NAME
DB_NAME durch den Namen der Datenbank.
DB_USER durch den Nutzernamen der Datenbank.
DB_PASS durch das Passwort Ihres Datenbanknutzers.
Quellcode bereitstellen
Cloud Run verwendet intern Buildpacks und Cloud Build, um automatisch Container-Images aus Ihrem Quellcode zu erstellen, ohne dass Sie manuell einen Container erstellen müssen oder geben Sie ein Dockerfile an. Wenn jedoch ein Dockerfile vorhanden ist, wird es verwendet.
Wenn Sie einen Cloud Run-Dienst aus der Quelle bereitstellen, wird Artifact Registry verwendet. Dieses Feature ist nur in Regionen verfügbar, die von Artifact Registry unterstützt werden.
So stellen Sie denselben Quellcode bereit, den Sie zuvor in App Engine bereitgestellt haben:
Wechseln Sie in das Quellverzeichnis, in dem sich der Quellcode der Anwendung befindet.
cd YOUR_APPENGINE_CODE_DIR
In Cloud Run bereitstellen
Führen Sie den Bereitstellungsbefehl mit dem Flag
--source
aus, um den Quellcode zu erstellen und die Anwendung bereitzustellen. Sie müssen Konfigurations-Flags so festlegen, dass sie dieselben Variablen für die SQL-Verbindungsumgebungsvariablen enthalten, die in der Dateiapp.yaml
Ihrer App Engine-Anwendung definiert sind:gcloud run deploy run-sql --source SOURCE \ --allow-unauthenticated \ --add-cloudsql-instances INSTANCE_CONNECTION_NAME\ --set-env-vars INSTANCE_UNIX_SOCKET="/cloudsql/INSTANCE_CONNECTION_NAME" \ --set-env-vars INSTANCE_CONNECTION_NAME="INSTANCE_CONNECTION_NAME" \ --set-env-vars DB_NAME="DB_NAME" \ --set-env-vars DB_USER="DB_USER" \ --set-env-vars DB_PASS="DB_PASS"
Ersetzen Sie:
- SOURCE durch den Pfad zu Ihrem App Engine-Quellverzeichnis
- INSTANCE_CONNECTION_NAME durch den Namen der Verbindung Ihrer Cloud SQL-Instanz oder eine durch Kommas getrennte Liste von Verbindungsnamen Sie finden den
INSTANCE_CONNECTION_NAME
, indem Sie folgenden Befehl ausführen:
gcloud instances describe INSTANCE_NAME
- DB_NAME durch den Namen der Datenbank.
- DB_USER durch den Nutzernamen der Datenbank.
- DB_PASS durch das Passwort Ihres Datenbanknutzers.
Geben Sie einen Namen des SERVICE ein, wenn Sie dazu aufgefordert werden.
Beantworten Sie die Aufforderungen, die erforderlichen APIs zu installieren, indem Sie nach Aufforderung
y
antworten. Dies ist nur einmal für ein Projekt erforderlich. Warten Sie, bis der Build und die Bereitstellung abgeschlossen sind. Anschließend wird eine Meldung wie die folgende angezeigt:Service [my-app] revision [my-app-00000-xxx] has been deployed and is serving 100 percent of traffic. Service URL: https://sample.run.app
Weitere Informationen zum Bereitstellen von Quellcode in Cloud Run finden Sie unter Aus Quellcode bereitstellen.
Nächste Schritte
- Best Practices für Cloud SQL zum Verbinden Ihrer Cloud SQL-Instanz mit Cloud Run.
- Erfahren Sie, wie Sie Abhängigkeiten für Ihren Dienst speichern, die API-Schlüssel, Passwörter oder andere vertrauliche Informationen mithilfe eines Secret Managers benötigen.
- Informationen zum Verwalten Ihrer Cloud Run-Dienste.
- Weitere Informationen zu den Anforderungen und Verhaltensweisen von Containern in Cloud Run finden Sie im Vertrag der Cloud Run-Container.