Auf dieser Seite erfahren Sie, wie Sie neue Dienste und neue Überarbeitungen in Cloud Run direkt aus dem Quellcode mithilfe des einzelnen Befehls gcloud run deploy
der gcloud CLI mit dem Flag --source
bereitstellen. Eine Beispiel-Schritt-für-Schritt-Anleitung für die Bereitstellung eines Hello World-Dienstes finden Sie unter Kurzanleitungen für die Bereitstellung aus der Quelle.
Im Hintergrund verwendet dieser Befehl Google Cloud-Buildpacks und Cloud Build, um automatisch Container-Images aus Ihrem Quellcode zu erstellen, ohne Docker auf Ihrem Computer installieren oder Buildpacks oder Cloud Build einrichten zu müssen. Das heißt, der einzige oben beschriebene Befehl würde die Befehle gcloud builds submit
und gcloud run deploy
ausführen.
Beachten Sie, dass Quellbereitstellungen Artifact Registry zum Speichern von erstellten Containern verwenden. Wenn Ihr Projekt noch kein Artifact Registry-Repository mit dem Namen cloud-run-source-deploy
in der Region hat, in der Sie die Bereitstellung durchführen, erstellt dieses Feature automatisch ein Artifact Registry-Repository mit dem Namen cloud-run-source-deploy
.
Wenn im Quellcodeverzeichnis ein Dockerfile vorhanden ist, wird der hochgeladene Quellcode mit diesem Dockerfile erstellt. Wenn im Quellcodeverzeichnis kein Dockerfile vorhanden ist, erkennt Google Cloud-Buildpacks die von Ihnen verwendete Sprache automatisch und ruft die Abhängigkeiten des Codes ab, um ein produktionsfähiges Container-Image zu erstellen, wobei ein von Google verwaltetes sicheres Basis-Image verwendet wird.
Standardmäßig werden Sicherheitskorrekturen nur angewendet, wenn der Dienst bereitgestellt wird. Wenn Sie automatische Sicherheitsupdates für einen Dienst aktivieren, erhält dieser Dienst automatisch und ohne Ausfallzeit Patches. Weitere Informationen zum Konfigurieren von Sicherheitsupdates
Unterstützte Sprachen
Zusätzlich zu den Quellen bei einem Dockerfile wird die Bereitstellung aus der Quelle in den folgenden Sprachen unterstützt:
Weitere Informationen zu Sprachversionen, die von den Buildpacks von Google Cloud unterstützt werden.
Beschränkungen dieser Funktion
- Da die Bereitstellung aus der Quelle Artifact Registry verwendet, ist dieses Feature nur in von Artifact Registry unterstützten Regionen verfügbar.
- Die Bereitstellung aus der Quelle mithilfe von
gcloud run deploy --source
ist eine praktische Funktion, die keine vollständige Anpassung des Builds zulässt. Für eine bessere Kontrolle erstellen Sie das Container-Image mit Cloud Build, z. B. mitgcloud builds submit
, und stellen dann das Container-Image bereit, z. B. mitgcloud run deploy --image
. - Bei der Bereitstellung aus der Quelle mit Google Cloud Buildpacks wird das Datum der letzten Änderung der Quelldateien auf den 1. Januar 1980 festgelegt. Dies ist das Standardverhalten von Buildpacks und wurde entwickelt, um reproduzierbare Builds zu unterstützen. Je nach Sprachframework kann sich dies auf das browserseitige Caching statischer Dateien auswirken. Wenn Ihre Anwendung davon betroffen ist, empfiehlt Google, die HTTP-Header
etag
undLast-Modified
in Ihrer Anwendung zu deaktivieren. - Für die Bereitstellung aus der Quelle mit Google Cloud Buildpacks wird immer
gcr.io/buildpacks/builder:latest
verwendet. Wenn Ihre bevorzugte Sprache oder Betriebssystemkonfiguration inlatest
nicht verfügbar ist, verwenden Sie einen bestimmten Builder, um ein Anwendungs-Image mit Ihrem bevorzugten Builder zu erstellen. Sie können Ihren Dienst aus der Quelle mit Kotlin und anderen JVM-Sprachen wie Java bereitstellen. Die verwendete Sprache muss den folgenden Regeln entsprechen:
- Sie können die Anwendung mit Maven oder Gradle erstellen.
- Die Build-Datei enthält alle Plug-ins, die für Produktklassen erforderlich sind.
Hinweis
- Prüfen Sie, ob Sie ein neues Projekt für Cloud Run eingerichtet haben, wie auf der Seite Einrichtung beschrieben.
Wenn Sie einer Domaineinschränkung zur Organisation nicht eingeschränkter Aufrufe für Ihr Projekt unterliegen, müssen Sie auf Ihren bereitgestellten Dienst zugreifen, wie unter Private Dienste testen beschrieben.
Erforderliche Rollen
Bitten Sie Ihren Administrator, Ihnen die folgenden IAM-Rollen für das Projekt zuzuweisen, um die Berechtigungen zu erhalten, die Sie zum Bereitstellen aus der Quelle benötigen:
- Cloud Run Source Developer (
roles/run.sourceDeveloper
) -
Service Account User (
roles/iam.serviceAccountUser
)
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 Service mit Google 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.
Dem Compute Engine-Standarddienstkonto die Rolle „Cloud Build-Dienstkonto“ zuweisen
Aktivieren Sie die Cloud Run Admin API und die Cloud Build API:
gcloud services enable run.googleapis.com \ cloudbuild.googleapis.com
Nachdem die Cloud Run Admin API aktiviert wurde, wird das Compute Engine-Standarddienstkonto automatisch erstellt.
- Damit Cloud Build Ihre Quellen erstellen kann, müssen Sie dem Compute Engine-Standarddienstkonto die Rolle Cloud Build-Dienstkonto zuweisen. Führen Sie dazu den folgenden Befehl aus:
gcloud projects add-iam-policy-binding PROJECT_ID \ --member=serviceAccount:PROJECT_NUMBER-compute@developer.gserviceaccount.com \ --role=roles/cloudbuild.builds.builder
Ersetzen Sie
PROJECT_NUMBER
durch Ihre Google Cloud-Projektnummer undPROJECT_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 Build-Dienstkonto“ für das Compute Engine-Standarddienstkonto übertragen wurde.
Wird bereitgestellt
So stellen Sie aus Quellcode bereit:
Wechseln Sie in Ihr Quellverzeichnis. Beachten Sie, dass das Quellverzeichnis kein Dockerfile erfordert. Wenn aber ein Dockerfile vorhanden ist, wird es verwendet.
Erstellen Sie Ihre Anwendung und stellen Sie sie bereit:
gcloud run deploy SERVICE --source .
Ersetzen Sie
SERVICE
durch den gewünschten Dienstnamen.Beantworten Sie die Aufforderungen, die erforderlichen APIs zu installieren, indem Sie nach Aufforderung
y
antworten. Dies ist nur einmal für ein Projekt erforderlich. Antworten Sie auf andere Aufforderungen, indem Sie die Plattform und Region angeben, sofern Sie diese nicht wie auf der Einrichtungsseite beschrieben eingerichtet haben.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://my-app-texampleq-uc.a.run.app
Nach der Bereitstellung stellt diese Serviceüberarbeitung 100 % des Traffics bereit.
Build aus der Quelle automatisieren
Als Best Practice zur Vermeidung nicht versionierter Änderungen in der lokalen Quelle empfiehlt Google die Bereitstellung automatisch, wenn Änderungen per Push-Befehl an Ihr Git-Repository übertragen werden. Damit dies einfacher wird, können Sie eine kontinuierliche Bereitstellung mit Ihrem Cloud Run-Dienst verbinden und konfigurieren. Wenn Sie Ihre GitHub-Repositories mit Cloud Run verbinden, können Sie Builds konfigurieren und Ihre Repositories bereitstellen, ohne Dockerfiles schreiben oder Dateien erstellen zu müssen.
Wenn Sie automatisierte Builds konfigurieren möchten, richten Sie die Automatisierung wie auf der Seite für kontinuierliche Builds beschrieben ein. Achten Sie dabei darauf, dass Sie die Option zum Erstellen von Quellcode mit Buildpacks auswählen.
Nächste Schritte
Nachdem Sie einen neuen Dienst bereitgestellt haben, können Sie Folgendes tun:
- Schrittweise Rollouts, Rollback für Überarbeitungen, Traffic-Migration
- Dienstlogs ansehen
- Leistung von Diensten überwachen
- Speicherlimits festlegen
- Umgebungsvariablen festlegen
- Gleichzeitigkeit von Diensten ändern
- Dienste verwalten
- Dienstüberarbeitungen verwalten
Mithilfe von Cloud Build-Triggern können Sie die Builds und Bereitstellungen Ihrer Cloud Run-Dienste automatisieren.