App Engine-Anwendung in der flexiblen Umgebung in Cloud Run bereitstellen

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 diesem Leitfaden wird beschrieben, wie Sie Ihre vorhandenen Anwendungen in der flexiblen Umgebung in Cloud Run bereitstellen.

Die in diesem Leitfaden beschriebenen Schritte haben keine Auswirkungen auf die Funktionalität oder den Trafficfluss Ihrer vorhandenen App Engine-Anwendung. Der neu erstellte Cloud Run-Dienst ist ein Replikat des App Engine-Dienstes, das Sie unabhängig testen können.

Die flexible App Engine-Umgebung und Cloud Run sind beide vollständig verwaltete, containerbasierte Anwendungsplattformen, unterscheiden sich jedoch strukturell. 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.

Verwenden Sie die lokale Konfiguration Ihrer app.yaml-Datei, um die Bereitstellung in Cloud Run vorzunehmen. Dadurch wird ein Container-Image aus Ihrem lokalen Quellcode erstellt, sodass alle kürzlich vorgenommenen Änderungen an Ihrem Code oder Ihrer Konfiguration in der neuen Bereitstellung enthalten sind.

Hinweis

  1. Achten Sie darauf, dass Ihre App Engine-Anwendung fehlerfrei ausgeführt wird. Sie benötigen Zugriff auf Ihren App Engine-Quellcode, wenn Sie die Bereitstellung mit Ihrer lokalen Konfiguration vornehmen möchten.

  2. Aktivieren Sie die Cloud Run Admin API und die Artifact Registry API:

    APIs aktivieren

  3. Konfigurieren Sie Ihr Projekt und Ihre Region mit dem folgenden Befehl:

    gcloud auth login
    gcloud config set project PROJECT_ID
    gcloud config set run/region REGION
    gcloud components update
    

    Ersetzen Sie Folgendes:

    • PROJECT_ID: Projekt-ID in Google Cloud .
    • REGION: die Region, in der Sie Ihren Cloud Run-Dienst bereitstellen möchten.
  4. Prüfen Sie, ob in Ihrer Anwendung inkompatible Funktionen vorhanden sind, und entfernen Sie diese, bevor Sie zu Cloud Run migrieren. Führen Sie den folgenden Befehl aus, um Ihre Anwendung auf Inkompatibilität zu prüfen, ohne eine Migration oder Bereitstellung durchzuführen:

    gcloud beta app migrate-to-run --dry-run
    

    Prüfen Sie die Ergebnisse der Kompatibilitätsprüfung und nehmen Sie bei Bedarf die empfohlenen Änderungen vor.

  5. Sehen Sie sich die folgenden Cloud Run-Unterschiede an:

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

    • Sie können Ihren Quellcode mit der gcloud CLI in Cloud Run bereitstellen, um Ihre Anwendungseinstellungen zu konfigurieren und zu verwalten. Cloud Run erfordert keine dateibasierte Konfiguration. Die YAML-Konfiguration wird jedoch unterstützt.

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

Erforderliche Rollen

Sie können entweder ein neues Dienstkonto erstellen oder dasselbe nutzerverwaltete Dienstkonto in Cloud Run verwenden, das Sie für die flexible Umgebung verwenden. Sie oder Ihr Administrator müssen dem Deployer-Konto und dem Cloud Build-Dienstkonto die folgenden IAM-Rollen zuweisen.

Klicken, um die erforderlichen Rollen für das Deployer-Konto aufzurufen

Bitten Sie Ihren Administrator, Ihnen die folgenden IAM-Rollen zuzuweisen, um die Berechtigungen zu erhalten, die Sie zum Erstellen und Bereitstellen aus der Quelle benötigen:

Klicken, um die erforderlichen Rollen für das Cloud Build-Dienstkonto aufzurufen

Cloud Build verwendet automatisch das Compute Engine-Standarddienstkonto als Cloud Build-Standarddienstkonto, um Ihren Quellcode und Ihre Cloud Run-Ressource zu erstellen, sofern Sie dieses Verhalten nicht überschreiben. Damit Cloud Build Ihre Quellen erstellen kann, bitten Sie Ihren Administrator, dem Compute Engine-Standarddienstkonto in Ihrem Projekt die Rolle Cloud Run Builder (roles/run.builder) zuzuweisen:

  gcloud projects add-iam-policy-binding PROJECT_ID \
      --member=serviceAccount:PROJECT_NUMBER-compute@developer.gserviceaccount.com \
      --role=roles/run.builder
  

Ersetzen Sie PROJECT_NUMBER durch Ihre Google Cloud-Projektnummer und PROJECT_ID durch Ihre Google Cloud-Projekt-ID. Eine detaillierte Anleitung zum Ermitteln der Projekt-ID und der Projektnummer finden Sie unter Projekte erstellen und verwalten.

Es dauert einige Minuten, bis die Zuweisung der Rolle „Cloud Run-Builder“ für das Compute Engine-Standarddienstkonto übertragen wurde.

Eine Liste der IAM-Rollen und -Berechtigungen im Zusammenhang mit Cloud Run finden Sie unter IAM-Rollen für Cloud Run und IAM-Berechtigungen für Cloud Run. Wenn Ihr Cloud Run-Dienst mitGoogle Cloud -APIs wie Cloud-Clientbibliotheken verknüpft ist, lesen Sie die Konfigurationsanleitung für Dienstidentitäten. Weitere Informationen zum Zuweisen von Rollen finden Sie unter Bereitstellungsberechtigungen und Zugriff verwalten.

Lokale Konfiguration einer app.yaml-Datei verwenden

So stellen Sie Ihren Cloud Run-Dienst mit der lokalen app.yaml-Datei einer vorhandenen App Engine-Konfiguration bereit:

  1. Wechseln Sie in Ihrem Terminal in das Quellverzeichnis, in dem sich die Datei app.yaml befindet.

  2. Führen Sie den folgenden Befehl aus, um Ihren Dienst in Cloud Run bereitzustellen:

    gcloud beta app migrate-to-run
    

    Mit diesem Befehl wird die service.yaml-Dateikonfiguration für Cloud Run generiert und lokal im selben Verzeichnis wie die app.yaml-Datei gespeichert. Weitere Informationen finden Sie unter gcloud beta app migrate-to-run.

    • Geben Sie bei der Aufforderung Proceed with the deployment? den Wert Y ein, um ein Container-Image aus Ihrem Quellcode zu erstellen und den Dienst in Cloud Run bereitzustellen.
  3. Rufen Sie den bereitgestellten Cloud Run-Dienst auf. Dazu öffnen Sie in einem Webbrowser die Dienst-URL.

    Optional:

    • Wenn sich die Datei app.yaml in einem anderen Verzeichnis befindet, geben Sie den Pfad mit dem Flag --appyaml an:

      gcloud beta app migrate-to-run --appyaml=PATH
      

      Ersetzen Sie PATH durch den Pfad zur Datei app.yaml.

    • Führen Sie den folgenden Befehl aus, um die Cloud Run-Konfiguration service.yaml zu generieren und zu exportieren, ohne den Dienst bereitzustellen:

      gcloud beta app migrate-to-run --export-only=EXPORT_PATH
      

      Ersetzen Sie EXPORT_PATH durch das Verzeichnis oder den Pfad, in dem Sie die Datei service.yaml speichern möchten.

Inkompatible Features

Der Migrationsbefehl schlägt fehl, wenn Ihre app.yaml-Datei die folgende nicht unterstützte Konfiguration enthält:
  • Eingehende Dienste:

    inbound_services:
    - warmup
    

    Lösung: Löschen Sie den Abschnitt inbound_services aus der Datei app.yaml. Cloud Run wärmt Instanzen mithilfe des Container-Einstiegspunkts auf, sodass Sie keine Aufwärmanfragen konfigurieren müssen. Wenn Sie Initialisierungscode ausführen müssen, bevor Traffic verarbeitet wird, konfigurieren Sie Ihren Dienst so, dass er beim Start ausgeführt wird, bevor er auf Anfragen wartet, oder verwenden Sie Startprüfungen. Sie können auch Mindestinstanzen konfigurieren, um Instanzen einsatzbereit zu halten.

Nächste Schritte