Mit Cloud Run können Sie zustandslose Container in einer serverlosen Umgebung ausführen. Mit Cloud Build können Sie Container-Images aus Container Registry (eingestellt) und Artifact Registry in Cloud Run bereitstellen. Sie können ein vorhandenes Image bereitstellen, ein Image erstellen und bereitstellen oder die Bereitstellung automatisieren.
Hinweise
-
Cloud Build, Cloud Run, Container Registry, and Resource Manager APIs aktivieren.
Halten Sie den Quellcode Ihrer Anwendung bereit. Ihr Quellcode muss in einem Repository wie Cloud Source Repositories, GitHub oder Bitbucket gespeichert sein.
Installieren Sie die Google Cloud CLI, um die
gcloud
-Befehle auf dieser Seite auszuführen.
Erforderliche IAM-Berechtigungen
Wenn das Image im selben Google Cloud-Projekt gespeichert ist, in dem Sie es bereitstellen möchten, oder wenn es in Container Registry öffentlich ist, benötigen Sie die folgenden IAM-Berechtigungen:
Weisen Sie zum Bereitstellen in Cloud Run dem Dienstkonto, das Sie für den Build verwenden, die Rollen „Cloud Run-Administrator“ und „Dienstkontonutzer“ zu:
Öffnen Sie die Seite mit den Cloud Build-Einstellungen in der Google Cloud Console:
Wählen Sie in der Drop-down-Liste das Dienstkonto aus, dessen Rollen Sie ändern möchten.
Legen Sie im Bereich "Dienstkontoberechtigungen" den Status der Rolle Cloud Run-Administrator auf AKTIVIERT fest:
Klicken Sie im zusätzlichen Pop-up-Fenster "Zusätzliche Schritte" auf Zugriff auf alle Dienstkonten gewähren.
Container erstellen und bereitstellen
Mit Cloud Build können Sie das Container-Image erstellen, das erstellte Image in Container Registry speichern und es anschließend für Cloud Run bereitstellen.
So erstellen Sie ein Container-Image und stellen es anschließend bereit:
Erstellen Sie im Stammverzeichnis des Projekts eine Konfigurationsdatei mit dem Namen
cloudbuild.yaml
.Fügen Sie in der Build-Konfigurationsdatei
docker
Build-Schritte hinzu, um das Image zu erstellen und an Container Registry zu übertragen. Fügen Sie dann den Build-Schrittgcloud
hinzu, um den Befehlgcloud run deploy
aufzurufen und das Image in Cloud Run bereitzustellen:steps: # Build the container image - name: 'gcr.io/cloud-builders/docker' args: ['build', '-t', 'gcr.io/PROJECT_ID/IMAGE', '.'] # Push the container image to Container Registry - name: 'gcr.io/cloud-builders/docker' args: ['push', 'gcr.io/PROJECT_ID/IMAGE'] # Deploy container image to Cloud Run - name: 'gcr.io/google.com/cloudsdktool/cloud-sdk' entrypoint: gcloud args: ['run', 'deploy', 'SERVICE_NAME', '--image', 'gcr.io/PROJECT_ID/IMAGE', '--region', 'SERVICE_REGION'] images: - gcr.io/PROJECT_ID/IMAGE
Wobei:
SERVICE_NAME
ist der Name des Cloud Run-Dienstes.SERVICE_REGION
ist die Region des Cloud Run-Dienstes, den Sie bereitstellen.PROJECT_ID
ist die Google Cloud-Projekt-ID, unter der Ihr Image gespeichert ist.IMAGE
ist der Name des Images in Container Registry.
Rufen Sie das Stammverzeichnis Ihres Projekts auf und führen Sie den folgenden Befehl aus, wobei
BUILD_REGION
eine der unterstützten Build-Regionen ist, um den Build auszuführen:gcloud builds submit --region=BUILD_REGION
Nach erfolgreichem Abschluss wird eine Nachricht zusammen mit der URL des bereitgestellten Dienstes angezeigt.
Kontinuierliche Bereitstellung
Sie können die Bereitstellung Ihrer Software in Cloud Run automatisieren, indem Sie Cloud Build-Trigger erstellen. Sie können die Trigger so konfigurieren, dass Images immer dann erstellt und bereitgestellt werden, wenn Sie den Quellcode aktualisieren.
So automatisieren Sie die Bereitstellung:
Fügen Sie im Stammverzeichnis Ihres Repositorys eine Konfigurationsdatei namens
cloudbuild.yaml
mit Schritten zum Erstellen des Images hinzu, übertragen Sie das Image per Push in die Container Registry und rufen Sie dann den Befehlgcloud run deploy
auf:steps: # Build the container image - name: 'gcr.io/cloud-builders/docker' args: ['build', '-t', 'gcr.io/$PROJECT_ID/SERVICE_NAME:$COMMIT_SHA', '.'] # Push the container image to Container Registry - name: 'gcr.io/cloud-builders/docker' args: ['push', 'gcr.io/$PROJECT_ID/SERVICE_NAME:$COMMIT_SHA'] # Deploy container image to Cloud Run - name: 'gcr.io/google.com/cloudsdktool/cloud-sdk' entrypoint: gcloud args: - 'run' - 'deploy' - 'SERVICE_NAME' - '--image' - 'gcr.io/$PROJECT_ID/SERVICE_NAME:$COMMIT_SHA' - '--region' - 'SERVICE_REGION' images: - 'gcr.io/$PROJECT_ID/SERVICE_NAME:$COMMIT_SHA'
Wobei:
SERVICE_NAME
ist der Name des Cloud Run-Dienstes.SERVICE_REGION
ist die Region des Cloud Run-Dienstes, den Sie bereitstellen.
Die Substitutionsvariable
$COMMIT_SHA
wird von Cloud Build ersetzt, wenn sie von einem Git-Repository ausgelöst wird.Erstellen Sie einen Build-Trigger mit der im vorherigen Schritt erstellten Konfigurationsdatei:
Seite "Trigger" aufrufen
Klicken Sie auf Trigger erstellen.
Geben Sie im Feld Name einen Namen für den Trigger ein.
Wählen Sie unter Region die Region für Ihren Trigger aus.
Wählen Sie unter Ereignis das Repository-Ereignis aus, um den Trigger zu starten.
Wählen Sie unter Quelle Ihr Repository und den Branch- oder Tag-Namen aus, der den Trigger auslöst. Weitere Informationen zum Angeben, welche Branches automatisch erstellt werden sollen, finden Sie unter Build-Trigger erstellen.
Wählen Sie unter Konfiguration die Option Cloud Build-Konfigurationsdatei (YAML oder JSON) aus.
Geben Sie im Feld Speicherort der Cloud Build-Konfigurationsdatei
cloudbuild.yaml
nach/
ein.Klicken Sie auf Erstellen, um den Build-Trigger zu speichern.
Fertig! Von nun an werden bei jeder Übertragung in Ihr Repository automatisch ein Build und eine Bereitstellung für Ihren Dienst ausgelöst.
Jedes Mal, wenn Sie neuen Code in Ihr Repository übertragen, lösen Sie automatisch einen Build aus und stellen diesen in Ihrem Cloud Run-Dienst bereit.
Weitere Informationen zum Erstellen von Cloud Build-Triggern finden Sie unter Build-Trigger erstellen und verwalten.
Minimale IAM-Berechtigungen verwenden
Wenn ein Container in einem Cloud Run-Dienst bereitgestellt wird, wird er mit der Identität des Laufzeitdienstkontos dieses Cloud Run-Dienstes ausgeführt. Da Cloud Build neue Container automatisch bereitstellen kann, muss Cloud Build als Laufzeitdienstkonto Ihres Cloud Run-Dienstes fungieren können.
So gewähren Sie Cloud Build eingeschränkten Zugriff für die Bereitstellung in einem Cloud Run-Dienst:
Console
Rufen Sie in der Google Cloud Console die Seite Dienstkonten auf:
Klicken Sie auf die E-Mail-Adresse des Laufzeitdienstkontos Ihres Cloud Run-Dienstes (standardmäßig
PROJECT_NUMBER-compute@developer.gserviceaccount.com
).Klicken Sie auf den Tab Berechtigungen.
Klicken Sie auf
Zugriff erlauben.Geben Sie das Cloud Build-Dienstkonto ein (
PROJECT_NUMBER@cloudbuild.gserviceaccount.com
).Wählen Sie im Drop-down-Menü Rolle auswählen die Rolle Dienstkonten > Dienstkontonutzer aus.
Klicken Sie auf Speichern.
gcloud
Verwenden Sie den Befehl gcloud iam service-accounts add-iam-policy-binding
, wobei PROJECT_NUMBER
die numerische ID Ihres Projekts ist:
gcloud iam service-accounts add-iam-policy-binding \ PROJECT_NUMBER-compute@developer.gserviceaccount.com \ --member="serviceAccount:PROJECT_NUMBER@cloudbuild.gserviceaccount.com" \ --role="roles/iam.serviceAccountUser"
Ersetzen Sie PROJECT_NUMBER durch die numerische ID Ihres Projekts.
Wenn Sie Cloud Run mit einer benutzerdefinierten Dienstidentität verwenden, ersetzen Sie PROJECT_NUMBER-compute@developer.gserviceaccount.com
durch die Adresse Ihres Dienstkontos.
Weitere Informationen finden Sie unter Bereitstellungsberechtigungen.
Codebeispiele
Im Folgenden finden Sie einige Beispiel-Repositories, die jeweils eine Beispielanwendung und eine Build-Konfigurationsdatei zum Erstellen der Anwendung in Cloud Run enthalten:
- deploy-prebuilt ein Codebeispiel, das zeigt, wie ein vordefiniertes Image in Cloud Run bereitgestellt wird.
- run-example-builddeploy: ein Codebeispiel, das zeigt, wie ein Image in Cloud Run erstellt und bereitgestellt wird
Nächste Schritte
- Mit Cloud Deploy in Cloud Run bereitstellen
- Mehr zum Bereitstellen in GKE.
- Mehr zum Bereitstellen in Cloud Functions.
- Mehr zum Bereitstellen in App Engine.
- Mehr zum Bereitstellen in Firebase.
- Blau/Grün-Bereitstellungen in Compute Engine ausführen
- Build-Fehler beheben