Mit Cloud Run können Sie zustandslose Images in einer serverlosen Umgebung ausführen. Mit Cloud Build können Sie Images aus Artifact Registry in Cloud Run bereitstellen. Sie können ein vorhandenes Image bereitstellen, ein Image erstellen und bereitstellen oder das Deployment automatisieren.
Hinweise
-
Enable the Cloud Build, Cloud Run, Artifact Registry, and Resource Manager APIs.
Halten Sie den Quellcode Ihrer Anwendung bereit. Ihr Quellcode muss in einem Repository wie GitHub oder Bitbucket gespeichert sein.
Zum Ausführen der
gcloud
-Befehle auf dieser Seite müssen Sie die Google Cloud CLI installieren.Wenn Sie VPC Service Controls verwenden, richten Sie einen privaten Pool im VPC Service Controls-Perimeter ein. Sie müssen auch Cloud Run für VPC Service Controls konfigurieren.
Erforderliche IAM-Berechtigungen (Identity and Access Management)
Bitten Sie Ihren Administrator, Ihnen die folgenden IAM-Rollen für das Standarddienstkonto von Cloud Build zuzuweisen, um die Berechtigungen zu erhalten, die Sie für die Bereitstellung in Cloud Run mit Cloud Build benötigen:
-
Cloud Run Developer (
roles/run.developer
) -
Log-Autor (
roles/logging.logWriter
) -
Artifact Registry-Autor (
roles/artifactregistry.writer
) -
Dienstkontonutzer (
roles/iam.serviceAccountUser
) -
Storage-Administrator (
roles/storage.admin
)
Weitere Informationen zum Zuweisen von Rollen finden Sie unter Zugriff auf Projekte, Ordner und Organisationen verwalten.
Sie können die erforderlichen Berechtigungen auch über benutzerdefinierte Rollen oder andere vordefinierte Rollen erhalten.
Image erstellen und bereitstellen
Mit Cloud Build können Sie ein Image erstellen, das erstellte Image in Artifact Registry speichern und es anschließend für Cloud Run bereitstellen.
So erstellen und stellen Sie ein Image 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 in Artifact Registry hochzuladen. Fügen Sie dann einengcloud
-Build-Schritt hinzu, um den Befehlgcloud run deploy
aufzurufen und das Image in Cloud Run bereitzustellen:steps: # Build the image - name: 'gcr.io/cloud-builders/docker' args: ['build', '-t', 'LOCATION-docker.pkg.dev/PROJECT_ID/REPOSITORY/IMAGE', '.'] # Push the image to Artifact Registry - name: 'gcr.io/cloud-builders/docker' args: ['push', 'LOCATION-docker.pkg.dev/PROJECT_ID/REPOSITORY/IMAGE'] # Deploy image to Cloud Run - name: 'gcr.io/google.com/cloudsdktool/cloud-sdk' entrypoint: gcloud args: ['run', 'deploy', 'SERVICE_NAME', '--image', 'LOCATION-docker.pkg.dev/PROJECT_ID/REPOSITORY/IMAGE', '--region', 'SERVICE_REGION'] images: - 'LOCATION-docker.pkg.dev/PROJECT_ID/REPOSITORY/IMAGE'
Wobei:
REPOSITORY
ist der Name des Artifact Registry-Repositorys, aus dem Sie Ihr Image bereitstellen.LOCATION
ist der Speicherort Ihres Artifact Registry-Repositorys, z. B.us-east1
.PROJECT_ID
ist die Google Cloud-Projekt-ID, unter der Ihr Image gespeichert ist.SERVICE_NAME
ist der Name des Cloud Run-Dienstes.SERVICE_REGION
ist die Region des Cloud Run-Dienstes, den Sie bereitstellen.IMAGE
ist der Name des Images in Artifact Registry.
Navigieren Sie zum Stammverzeichnis Ihres Projekts und führen Sie den folgenden Befehl aus. Dabei ist
LOCATION
eine der unterstützten Build-Regionen, in denen der Build ausgeführt werden soll:gcloud builds submit --region=LOCATION
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 mit dem Namen
cloudbuild.yaml
mit Schritten hinzu, um das Image zu erstellen, es in Artifact Registry hochzuladen und anschließend den Befehlgcloud run deploy
aufzurufen:steps: # Build the image - name: 'gcr.io/cloud-builders/docker' args: ['build', '-t', 'LOCATION-docker.pkg.dev/PROJECT_ID/REPOSITORY/IMAGE/SERVICE_NAME:$COMMIT_SHA', '.'] # Push the image to Artifact Registry - name: 'gcr.io/cloud-builders/docker' args: ['push', 'LOCATION-docker.pkg.dev/PROJECT_ID/REPOSITORY/IMAGE/SERVICE_NAME:$COMMIT_SHA'] # Deploy image to Cloud Run - name: 'gcr.io/google.com/cloudsdktool/cloud-sdk' entrypoint: gcloud args: - 'run' - 'deploy' - 'SERVICE_NAME' - '--image' - 'LOCATION-docker.pkg.dev/PROJECT_ID/REPOSITORY/IMAGE/SERVICE_NAME:$COMMIT_SHA' - '--region' - 'SERVICE_REGION' images: - 'LOCATION-docker.pkg.dev/PROJECT_ID/REPOSITORY/IMAGE/SERVICE_NAME:$COMMIT_SHA'
Wobei:
REPOSITORY
ist der Name des Artifact Registry-Repositorys, aus dem Sie Ihr Image bereitstellen.LOCATION
ist der Speicherort Ihres Artifact Registry-Repositorys, z. B.us-east1
.PROJECT_ID
ist die Google Cloud-Projekt-ID, unter der Ihr Image gespeichert ist.SERVICE_NAME
ist der Name des Cloud Run-Dienstes.SERVICE_REGION
ist die Region des Cloud Run-Dienstes, den Sie bereitstellen.IMAGE
ist der Name des Images in Artifact Registry.
Die Substitutionsvariable
$COMMIT_SHA
wird von Cloud Build ersetzt, wenn sie von einem Git-Repository ausgelöst wird.Erstellen Sie mit der im vorherigen Schritt erstellten Konfigurationsdatei einen Build-Trigger:
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.
Wenn Sie jetzt neuen Code in Ihr Repository übertragen, ruft Cloud Build einen Build auf und stellt den Dienst in Cloud Run bereit.
Weitere Informationen zum Erstellen von Cloud Build-Triggern finden Sie unter Build-Trigger erstellen und verwalten.
Minimale IAM-Berechtigungen verwenden
Wenn ein Image in einem Cloud Run-Dienst bereitgestellt wird, wird es mit der Identität des Laufzeitdienstkontos des Cloud Run-Dienstes ausgeführt. Da Cloud Build neue Images 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[email protected]
).Klicken Sie auf den Tab Berechtigungen.
Klicken Sie auf
Zugriff erlauben.Geben Sie das Cloud Build-Dienstkonto ein (
[email protected]
).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[email protected] \ --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 [email protected]
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
- Cloud Deploy zum Bereitstellen in Cloud Run verwenden
- Mehr zum Bereitstellen in GKE.
- Weitere Informationen zum Bereitstellen von Cloud Run Functions
- Mehr zum Bereitstellen in App Engine.
- Mehr zum Bereitstellen in Firebase.
- Blau/Grün-Bereitstellungen in Compute Engine durchführen
- Build-Fehler beheben