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 diesem Leitfaden wird beschrieben, wie Sie Ihre vorhandenen Anwendungen in der Standardumgebung in Cloud Run bereitstellen. Die Anleitung gilt für Laufzeiten der zweiten Generation, die nicht die gebündelten Legacy-Dienste von App Engine verwenden.
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.
Cloud Run verwendet einen Großteil derselben Infrastruktur wie die App Engine-Standardumgebung, was zu vielen Ähnlichkeiten zwischen den Plattformen führt. 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. Wählen Sie eine der folgenden Strategien für die Bereitstellung in Cloud Run aus:Lokale Konfiguration einer
app.yaml-Datei verwenden (empfohlen): Wählen Sie diese Option aus, um ein Container-Image direkt aus Ihrem lokalen Quellcode zu erstellen und in Cloud Run bereitzustellen. So wird sichergestellt, dass alle kürzlich vorgenommenen lokalen Änderungen an Ihrem Code oder Ihrer Konfiguration in der neuen Bereitstellung enthalten sind.Zuvor erstelltes Image verwenden: Diese Option ist nützlich, wenn Sie keinen Zugriff auf den Quellcode haben. Wählen Sie diese Option aus, um eine exakte Kopie einer Version bereitzustellen, die bereits in App Engine ausgeführt wird, ohne das Container-Image neu zu erstellen. Das ist nützlich, wenn Sie das Verhalten der aktiven Bereitstellung ohne Codeänderungen prüfen möchten.
Hinweis
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.
Aktivieren Sie die Cloud Run Admin API und die Artifact Registry API:
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 updateErsetzen Sie Folgendes:
- PROJECT_ID: Projekt-ID in Google Cloud .
- REGION: die Region, in der Sie Ihren Cloud Run-Dienst bereitstellen möchten.
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-runPrüfen Sie die Ergebnisse der Kompatibilitätsprüfung und nehmen Sie bei Bedarf die empfohlenen Änderungen vor.
Sehen Sie sich die folgenden Cloud Run-Unterschiede an:
Cloud Run verwendet den Begriff
Revisionanstelle vonVersion, 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 RunSie können Ihren Quellcode mit der gcloud CLI oder der Google Cloud Console 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.appin 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 Standardumgebung 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:
- Cloud Run Source Developer (
roles/run.sourceDeveloper) für Ihr Projekt - Service Usage Consumer (
roles/serviceusage.serviceUsageConsumer) für Ihr Projekt - Dienstkontonutzer (
roles/iam.serviceAccountUser) für die Cloud Run-Dienstidentität
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
Stellen Sie Ihre lokale App Engine-Konfiguration mithilfe der Google Cloud Console oder der gcloud CLI in Cloud Run bereit.
Console
Rufen Sie in der Google Cloud Console die Seite App Engine auf.
Klicken Sie im Navigationsmenü auf Migrations-Hub, um Ihre App Engine-Anwendung in Cloud Run bereitzustellen. Im Migrations-Hub können Sie auch Ihre geschätzten Einsparungen bei Cloud Run für Kostenschätzungen und Empfehlungen prüfen.
Wählen Sie den Dienst aus, den Sie migrieren möchten, und klicken Sie auf Kompatibilität prüfen.
Wählen Sie Ihren Dienst und Ihre Version aus, um die Kompatibilitätsergebnisse zu sehen. Der Migrations-Hub führt einen Kompatibilitätscheck aus, um inkompatible Funktionen zu identifizieren.
Prüfen Sie die Ergebnisse, um sicherzustellen, dass Ihre Anwendung vollständig mit Cloud Run kompatibel ist, und klicken Sie auf Weiter, um zum Abschnitt Überprüfen und bereitstellen zu gelangen.
Kopieren Sie den Befehl im Abschnitt Über gcloud bereitstellen und führen Sie ihn in Ihrem Projektverzeichnis aus.
Klicken Sie auf Bereitgestellte Versionen ansehen, um Ihre in Cloud Run bereitgestellten App Engine-Dienste aufzurufen.
gcloud
So stellen Sie Ihren Cloud Run-Dienst mit der lokalen app.yaml-Datei einer vorhandenen App Engine-Konfiguration bereit:
Wechseln Sie in Ihrem Terminal in das Quellverzeichnis, in dem sich die Datei
app.yamlbefindet.Führen Sie den folgenden Befehl aus, um Ihren Dienst in Cloud Run bereitzustellen:
gcloud beta app migrate-to-runMit diesem Befehl wird die
service.yaml-Dateikonfiguration für Cloud Run generiert und lokal im selben Verzeichnis wie dieapp.yaml-Datei gespeichert. Weitere Informationen finden Sie untergcloud beta app migrate-to-run.- Geben Sie bei der Aufforderung
Proceed with the deployment?den WertYein, um ein Container-Image aus Ihrem Quellcode zu erstellen und den Dienst in Cloud Run bereitzustellen.
- Geben Sie bei der Aufforderung
Rufen Sie den bereitgestellten Cloud Run-Dienst auf. Dazu öffnen Sie in einem Webbrowser die Dienst-URL.
Optional:
Wenn sich die Datei
app.yamlin einem anderen Verzeichnis befindet, geben Sie den Pfad mit dem Flag--appyamlan:gcloud beta app migrate-to-run --appyaml=PATHErsetzen Sie PATH durch den Pfad zur Datei
app.yaml.Wenn Sie die Cloud Run-Konfiguration
service.yamlgenerieren und exportieren möchten, ohne den Dienst bereitzustellen, verwenden Sie das Flag--export-only:gcloud beta app migrate-to-run --export-only=EXPORT_PATHErsetzen Sie EXPORT_PATH durch das Verzeichnis oder den Pfad, in dem Sie die Datei
service.yamlspeichern möchten.
Zuvor erstelltes Image verwenden
So stellen Sie ein zuvor erstelltes Container-Image aus einer bereitgestellten App Engine-Version bereit, anstatt das Container-Image aus einer lokalen app.yaml-Datei neu zu erstellen:
Sie benötigen den Quellcode Ihrer Anwendung für diese Bereitstellung nicht.
Führen Sie den folgenden Befehl aus, um Ihren Dienst in Cloud Run bereitzustellen. Dieser Befehl verwendet das Container-Image einer aktiven App Engine-Bereitstellung und erfasst keine aktuellen Änderungen aus Ihrer lokalen
app.yaml-Datei, was zu einer veralteten Bereitstellung führen kann:gcloud beta app migrate-to-run --service=SERVICE --version=VERSION --from-imageErsetzen Sie Folgendes:
- SERVICE: der Name Ihres App Engine-Dienstes.
- VERSION: Die Versions-ID Ihres Dienstes.
Mit diesem Befehl wird die Konfiguration des angegebenen Dienstes und der angegebenen Version abgerufen, um die Datei
service.yamlfür Cloud Run zu generieren. Weitere Informationen finden Sie unter:gcloud beta app migrate-to-run- Wenn Sie zur Eingabe von
Proceed with the deployment?aufgefordert werden, geben SieYein, um Ihr vorhandenes App Engine-Container-Image zu exportieren und den Dienst in Cloud Run bereitzustellen.
Rufen Sie den bereitgestellten Cloud Run-Dienst auf. Dazu öffnen Sie in einem Webbrowser die Dienst-URL.
Optional:
Führen Sie den folgenden Befehl aus, um die Cloud Run-Konfiguration
service.yamlzu generieren, ohne den Dienst bereitzustellen:gcloud beta app migrate-to-run --service=SERVICE \ --version=VERSION \ --from-image \ --export-only=EXPORT_PATHErsetzen Sie EXPORT_PATH durch das Verzeichnis oder den Pfad, in dem Sie die Datei
service.yamlspeichern möchten.
Inkompatible Features
Der Migrationsbefehl schlägt fehl, wenn Ihreapp.yaml-Datei eine der folgenden nicht unterstützten Konfigurationen enthält:
Inbound-Dienste:
inbound_services: - warmupLösung: Löschen Sie den Abschnitt
inbound_servicesaus der Dateiapp.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.
Benutzerdefinierte Fehlerseiten:
error_handlers: - file: default_error.html - error_code: over_quota file: over_quota.htmlLösung: Löschen Sie den Abschnitt
error_handlersaus der Dateiapp.yamlund wenden Sie eine oder beide der folgenden Strategien an:- Implementieren Sie die Fehlerbehandlung direkt in Ihrem Anwendungscode. Fangen Sie Standard-HTTP-Fehlercodes wie
404oder500ab und stellen Sie Ihre benutzerdefinierten HTML-Fehlerseiten über Ihre Anwendungslogik bereit. - Wenn Sie Cloud Load Balancing mit Cloud Run verwenden, konfigurieren Sie benutzerdefinierte Fehlerantworten auf Load-Balancer-Ebene. So können Sie benutzerdefinierte Fehlerseiten aus Cloud Storage basierend auf dem Antwortcode Ihres Cloud Run-Dienstes bereitstellen.
- Implementieren Sie die Fehlerbehandlung direkt in Ihrem Anwendungscode. Fangen Sie Standard-HTTP-Fehlercodes wie
Gebündelte Dienste für Laufzeiten der zweiten Generation:
app_engine_apis: trueLösung: Löschen Sie die Einstellung
app_engine_apisaus der Dateiapp.yamlund migrieren Sie stattdessen zu Google Cloud -APIs oder Drittanbieteralternativen. Weitere Informationen finden Sie unter Von gebündelten Diensten migrieren.Laufzeiten der ersten Generation:
runtime: python27Lösung: Aktualisieren Sie Ihre Anwendung auf eine unterstützte Laufzeit der zweiten Generation. Weitere Informationen finden Sie unter Zu Laufzeiten der zweiten Generation migrieren.
Nächste Schritte
- Cloud Run-Dienste verwalten
- Informationen zu den Anforderungen und Verhaltensweisen von Containern in Cloud Run finden Sie im Cloud Run-Containerlaufzeitvertrag.
- Hier erfahren Sie, wie Sie Abhängigkeiten für Ihren Dienst mithilfe eines Secret Managers speichern, die API-Schlüssel, Passwörter oder andere vertrauliche Informationen erfordern.