Migrieren einer App Engine-Anwendung mit Standardumgebung zu Cloud Run

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.

Hier finden Sie weitere Informationen zu Regions-IDs.

In dieser Anleitung wird beschrieben, wie Sie eine vorhandene App Engine-Anwendung migrieren, die eine Verbindung zu einer Cloud SQL-Instanz mit einer öffentlichen IP-Adresse herstellt.

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

In diesem Leitfaden wird nicht beschrieben, wie Sie eine interne private IP-Verbindung verwenden, da Sie dazu 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 Gemeinsamkeiten und Unterschieden zwischen App Engine und Cloud Run, einschließlich der Vorteile für die Migration zu Cloud Run, finden Sie in der vergleichenden Zusammenfassung.

Hinweise

  1. Achten Sie darauf, dass Cloud Run Ihre Anwendungsanforderungen erfüllt. Sehen Sie sich den Vergleich zwischen der App Engine und Cloud Run an, um festzustellen, ob die Cloud Run-Ressourcen wie CPU und Arbeitsspeicher Ihren Anforderungen entsprechen.
  2. In diesem Leitfaden wird davon ausgegangen, dass Ihre App fehlerfrei ausgeführt wird.

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

  4. Prüfen Sie die folgenden Unterschiede in Cloud Run:

    • Cloud Run verwendet den Begriff Revision anstelle von Version, um jedes Mal darzustellen, wenn Sie Änderungen an einem bestimmten Dienst bereitstellen. Wenn Sie Ihre App zum ersten Mal in einem Cloud Run-Dienst bereitstellen, wird die erste Revision erstellt. Bei jeder nachfolgenden Bereitstellung eines Dienstes wird eine weitere Revision erstellt. Weitere Informationen zum Bereitstellen in Cloud Run

    • Sie können Ihren Quellcode mit der Google Cloud CLI oder der Google Cloud Console in Cloud Run bereitstellen, um die App-Einstellungen 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. Bei diesen Diensten müssen Sie sie für den öffentlichen (nicht authentifizierten) Zugriff konfigurieren.

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:

  1. Aktivieren der erforderlichen APIs
  2. Cloud Run-Dienstkonto konfigurieren
  3. Anwendung in Cloud Run bereitstellen

Aktivieren der erforderlichen APIs:

Bevor Sie Ihre Anwendung in Cloud Run bereitstellen können, müssen Sie zuerst die Cloud Run API und die Artifact Registry API aktivieren.

Aktivieren Sie die APIs in der Google Cloud Console:

Zu "APIs und Dienste"

Cloud Run-Dienstkonto konfigurieren

Sie können entweder ein neues Dienstkonto erstellen oder weiterhin dasselbe nutzerverwaltete Dienstkonto in Cloud Run verwenden, das Sie für App Engine verwenden. Für das Dienstkonto müssen die folgenden IAM-Rollen (Identity and Access Management) oder die entsprechenden Berechtigungen konfiguriert sein:

Für die Bereitstellung in Cloud Run benötigen Sie eines der folgenden Elemente:

  • 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:

Anwendung in Cloud Run bereitstellen

Für die Bereitstellung der App Engine-Anwendung in Cloud Run sind keine Änderungen am Code erforderlich.

In den folgenden Schritten stellen Sie Ihre App in einem neuen Dienst in Cloud Run bereit und konfigurieren diesen Dienst gleichzeitig für die Verbindung zu Cloud SQL.

Wie die App Engine-Standardumgebung unterstützt Cloud Run quellenbasierte Bereitstellungen. Sie benötigen Zugriff auf Ihr Quellcode-Repository.

Cloud Run verwendet intern Buildpacks und Cloud Build, um automatisch Container-Images aus Ihrem Quellcode zu erstellen. Sie müssen also keinen Container manuell erstellen oder ein Dockerfile angeben. Wenn jedoch ein Dockerfile vorhanden ist, wird es verwendet.

Da die Bereitstellung eines Cloud Run-Dienstes aus der Quelle Artifact Registry verwendet, ist diese Funktion 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:

  1. Wechseln Sie in das Quellverzeichnis, in dem sich der Quellcode Ihrer Anwendung befindet.

      cd YOUR_APPENGINE_CODE_DIR
    
  2. In Cloud Run bereitstellen

    Führen Sie den Bereitstellungsbefehl mit dem Flag --source aus, um Ihren Quellcode zu erstellen und Ihre Anwendung bereitzustellen. 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 --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 können den INSTANCE_CONNECTION_NAME mit dem folgenden Befehl finden:
        gcloud instances describe INSTANCE_NAME
    
    • DB_NAME durch den Namen Ihrer Datenbank.
    • DB_USER durch den Nutzernamen Ihrer Datenbank.
    • DB_PASS durch das Passwort Ihres Datenbanknutzers.
  3. Geben Sie einen Namen für den SERVICE ein, wenn Sie dazu aufgefordert werden.

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