Auf dieser Seite wird beschrieben, wie Sie Container-Images für einen neuen Cloud Run-Dienst oder eine neue Überarbeitung eines vorhandenen Cloud Run-Dienstes bereitstellen.
Das Container-Image wird von Cloud Run importiert, wenn es bereitgestellt wird. Cloud Run behält diese Kopie des Container-Images so lange bei, wie sie von einer Serving-Revision verwendet wird. Container-Images werden nicht aus dem Container-Repository abgerufen, wenn eine neue Cloud Run-Instanz gestartet wird.
Eine Beispielanleitung für die Bereitstellung eines neuen Dienstes finden Sie unter Kurzanleitung für einen Beispielcontainer bereitstellen.
Hinweis
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 zuzuweisen, um die Berechtigungen zu erhalten, die Sie zum Bereitstellen von Cloud Run-Diensten benötigen:
-
Cloud Run-Entwickler (
roles/run.developer
) im Cloud Run-Dienst -
Dienstkontonutzer (
roles/iam.serviceAccountUser
) für die Dienstidentität -
Artifact Registry Reader (
roles/artifactregistry.reader
) für das Artifact Registry-Repository des bereitgestellten Container-Images -
Wenn Sie ein projektübergreifendes Dienstkonto zum Bereitstellen eines Dienstes verwenden:
Ersteller von Dienstkonto-Token (
roles/iam.serviceAccountTokenCreator
) für die Dienstidentität
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.
Unterstützte Container Registries und Images
Sie können direkt in Artifact Registry oder Docker Hub gespeicherte Container-Images verwenden. Google empfiehlt die Verwendung von Artifact Registry. Docker Hub-Images werden bis zu einer Stunde lang im Cache gespeichert.
Sie können Container-Images aus anderen öffentlichen oder privaten Registries (z. B. JFrog Artifactory, Nexus oder GitHub Container Registry) verwenden. Dazu richten Sie ein Remote-Repository von Artifact Registry ein.
Sie sollten Docker Hub nur für die Bereitstellung gängiger Container-Images wie Offizielle Docker-Images oder Docker gesponserte OSS-Images in Betracht ziehen. Für eine höhere Verfügbarkeit empfiehlt Google, diese Docker Hub-Images über ein Artifact Registry-Remote-Repository bereitzustellen.
Cloud Run unterstützt keine Container-Image-Ebenen, die größer als 9,9 GB sind, wenn die Bereitstellung über Docker Hub oder ein Artifact Registry-Remote-Repository mit einer externen Registry erfolgt.
Neuen Dienst bereitstellen
Sie können ein Container-Image mit einem Tag (z. B. us-docker.pkg.dev/my-project/container/my-image:latest
) oder mit einem genauen Digest (z. B. us-docker.pkg.dev/my-project/container/my-image@sha256:41f34ab970ee...
) angeben.
Wenn Sie einen Dienst zum ersten Mal bereitstellen, wird die erste Überarbeitung erstellt. Überarbeitungen können nach der Erstellung nicht mehr geändert werden. Wenn Sie den Dienst aus einem Container-Image-Tag bereitstellen, wird er in einen Digest aufgelöst. Die Überarbeitung bedient anschließend immer diesen speziellen Digest.
Klicken Sie auf den Tab, um eine Anleitung zum gewünschten Tool zu erhalten.
Console
So stellen Sie ein Container-Image bereit:
Rufen Sie in der Google Cloud Console die Seite „Cloud Run“ auf:
Wählen Sie im Menü Dienste aus und klicken Sie auf Container bereitstellen, um das Formular Dienst erstellen aufzurufen.
Wählen Sie im Formular die Bereitstellungsoption aus:
Wenn Sie einen Container manuell bereitstellen möchten, wählen Sie Eine Überarbeitung aus dem vorhandenen Container-Image bereitstellen aus und geben Sie das Container-Image an.
Wenn Sie die kontinuierliche Bereitstellung automatisieren möchten, wählen Sie Kontinuierlich neue Überarbeitungen aus einem Quell-Repository bereitstellen aus und folgen Sie der Anleitung für kontinuierliche Bereitstellungen.
Geben Sie den erforderlichen Dienstnamen ein. Dienstnamen dürfen maximal 49 Zeichen lang sein und pro Region und Projekt nur einmal vorkommen. Ein Dienstname kann später nicht mehr geändert werden und ist öffentlich sichtbar.
Wählen Sie die Region aus, in der sich Ihr Dienst befinden soll. Die Regionsauswahl gibt die Preisstufe, die Verfügbarkeit von Domainzuordnungen an und hebt Regionen mit den niedrigsten CO2-Auswirkungen hervor.
Richten Sie die Abrechnung nach Bedarf ein.
Wenn Sie unter Dienstskalierung das standardmäßige Autoscaling von Cloud Run verwenden, können Sie optional die Mindestanzahl von Instanzen angeben. Wenn Sie die manuelle Skalierung verwenden, geben Sie die Anzahl der Instanzen für den Dienst an.
Legen Sie die Ingress-Einstellungen wie gewünscht im Formular fest.
Konfigurieren Sie unter Authentifizierung Folgendes:
- Wenn Sie eine öffentliche API oder Website erstellen, wählen Sie Öffentlichen Zugriff zulassen aus. Durch Anklicken des Kästchens wird der Sonderkennzeichnung
allUser
die Rolle "IAM-Invoker" zugewiesen. Sie können die Einstellung mit IAM bearbeiten, nachdem Sie den Dienst erstellt haben. - Wenn Sie einen durch Authentifizierung geschützten sicheren Dienst wünschen, wählen Sie Authentifizierung erforderlich aus.
- Wenn Sie eine öffentliche API oder Website erstellen, wählen Sie Öffentlichen Zugriff zulassen aus. Durch Anklicken des Kästchens wird der Sonderkennzeichnung
Klicken Sie auf Container, Volumes, Netzwerk, Sicherheit, um weitere optionale Einstellungen in den entsprechenden Tabs festzulegen:
Wenn Sie die Konfiguration Ihres Dienstes abgeschlossen haben, klicken Sie auf Erstellen, um das Image in Cloud Run bereitzustellen. Warten Sie, bis das Deployment abgeschlossen ist.
Klicken Sie auf den angezeigten URL-Link, um den nur einmal vorkommenden und stabilen Endpunkt des bereitgestellten Dienstes zu öffnen.
gcloud
-
In the Google Cloud console, activate Cloud Shell.
At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.
So stellen Sie ein Container-Image bereit:
Führen Sie dazu diesen Befehl aus:
gcloud run deploy SERVICE --image IMAGE_URL
Ersetzen Sie Folgendes:
- SERVICE: Der Name des Dienstes, für den Sie die Bereitstellung ausführen möchten. Dienstnamen dürfen maximal 49 Zeichen lang sein und pro Region und Projekt nur einmal vorkommen. Wenn der Dienst noch nicht vorhanden ist, erstellt dieser Befehl den Dienst während der Bereitstellung. Sie können diesen Parameter auch weglassen, werden dann jedoch nach dem Dienstnamen gefragt.
- IMAGE_URL: ein Verweis auf das Container-Image, z. B.
us-docker.pkg.dev/cloudrun/container/hello:latest
Wenn Sie Artifact Registry verwenden, muss das Repository REPO_NAME bereits erstellt sein. Die URL hat das FormatLOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG
. Wenn Sie das Flag--image
nicht angeben, wird mit dem Bereitstellungsbefehl versucht, aus dem Quellcode bereitzustellen.
Wenn Sie eine öffentliche API oder Website erstellen, können Sie mit dem Flag
--allow-unauthenticated
öffentlichen Zugriff auf Ihren Dienst zulassen. Dadurch wirdallUsers
die IAM-Rolle Cloud Run Invoker zugewiesen. Sie können auch--no-allow-unauthenticated
angeben, um den öffentlichen Zugriff zu verbieten. Wenn Sie keines dieser Flags angeben, werden Sie aufgefordert, zu bestätigen, ob nicht authentifizierte Aufrufe zugelassen werden sollen, wenn der Befehldeploy
ausgeführt wird.Warten Sie, bis die Bereitstellung abgeschlossen ist. Nach erfolgreichem Abschluss wird eine Bestätigung zusammen mit der URL des bereitgestellten Dienstes angezeigt.
Wenn Sie an einem anderen Standort bereitstellen möchten, als Sie in den
gcloud
-Attributenrun/region
angegeben haben, verwenden Sie Folgendes:gcloud run deploy SERVICE --region REGION
Erstellen Sie eine neue Datei vom Typ
service.yaml
mit folgendem Inhalt:apiVersion: serving.knative.dev/v1 kind: Service metadata: name: SERVICE spec: template: spec: containers: - image: IMAGE
Ersetzen Sie Folgendes:
- SERVICE: Der Name Ihres Cloud Run-Dienstes. Dienstnamen dürfen maximal 49 Zeichen lang sein und pro Region und Projekt nur einmal vorkommen.
- IMAGE: die URL Ihres Container-Images
Sie können auch weitere Konfigurationen angeben, z. B. Umgebungsvariablen oder Speicherlimits.
Stellen Sie den neuen Dienst mit dem folgenden Befehl bereit:
gcloud run services replace service.yaml
Optional: Veröffentlichen Sie Ihren Dienst, wenn Sie den nicht authentifizierten Zugriff auf den Dienst zulassen möchten.
- PROJECT-ID: die Google Cloud Projekt-ID
- REGION: die Google Cloud Region
- SERVICE: Der Name Ihres Cloud Run-Dienstes. Dienstnamen dürfen maximal 49 Zeichen lang sein und pro Region und Projekt nur einmal vorkommen.
- IMAGE_URL: ein Verweis auf das Container-Image, z. B.
us-docker.pkg.dev/cloudrun/container/hello:latest
Wenn Sie Artifact Registry verwenden, muss das Repository REPO_NAME bereits erstellt sein. Die URL hat das FormatLOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG
. - ACCESS_TOKEN: Ein gültiges Zugriffstoken für ein Konto, das die IAM-Berechtigungen zum Bereitstellen von Diensten hat.
Wenn Sie beispielsweise in gcloud angemeldet sind, können Sie ein Zugriffstoken mit
gcloud auth print-access-token
abrufen. Innerhalb einer Cloud Run-Containerinstanz können Sie ein Zugriffstoken über den Metadatenserver der Containerinstanz abrufen. - IMAGE_URL: ein Verweis auf das Container-Image, z. B.
us-docker.pkg.dev/cloudrun/container/hello:latest
Wenn Sie Artifact Registry verwenden, muss das Repository REPO_NAME bereits erstellt sein. Die URL hat das FormatLOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG
. - SERVICE: Der Name des Dienstes, in dem Sie die Bereitstellung vornehmen möchten. Dienstnamen dürfen maximal 49 Zeichen lang sein und pro Region und Projekt nur einmal vorkommen.
- REGION: die Google Cloud Region des Dienstes.
- PROJECT-ID: die Google Cloud Projekt-ID.
YAML
Sie können Ihre Dienstspezifikation in einer YAML
-Datei speichern und dann mit der gcloud CLI bereitstellen.
Terraform
Informationen zum Anwenden oder Entfernen einer Terraform-Konfiguration finden Sie unter Grundlegende Terraform-Befehle.
Fügen Sie einergoogle_cloud_run_v2_service
-Ressource in Ihrer Terraform-Konfiguration Folgendes hinzu: provider "google" {
project = "PROJECT-ID"
}
resource "google_cloud_run_v2_service" "default" {
name = "SERVICE"
location = "REGION"
client = "terraform"
template {
containers {
image = "IMAGE_URL"
}
}
}
resource "google_cloud_run_v2_service_iam_member" "noauth" {
location = google_cloud_run_v2_service.default.location
name = google_cloud_run_v2_service.default.name
role = "roles/run.invoker"
member = "allUsers"
}
Ersetzen Sie Folgendes:
Diese Konfiguration ermöglicht öffentlichen Zugriff (entspricht --allow-unauthenticated
). Wenn Sie den Dienst privat machen möchten, entfernen Sie die google_cloud_run_v2_service_iam_member
-Stanza.
Clientbibliotheken
So stellen Sie einen neuen Dienst aus Code bereit:
REST API
Senden Sie zum Bereitstellen eines neuen Dienstes eine POST
-HTTP-Anfrage an den Endpunkt service
der Cloud Run Admin API.
Verwenden Sie zum Beispiel curl
:
curl -H "Content-Type: application/json" \ -H "Authorization: Bearer ACCESS_TOKEN" \ -X POST \ -d '{template: {containers: [{image: "IMAGE_URL"}]}}' \ https://run.googleapis.com/v2/projects/PROJECT_ID/locations/REGION/services?serviceId=SERVICE
Ersetzen Sie Folgendes:
Cloud Run-Standorte
Cloud Run ist regional. Die Infrastruktur, in der die Cloud Run-Dienste ausgeführt werden, befindet sich demnach in einer bestimmten Region. Aufgrund der Verwaltung durch Google sind die Anwendungen in allen Zonen innerhalb dieser Region redundant verfügbar.
Bei der Auswahl der Region, in der Ihre Cloud Run-Dienste ausgeführt werden, ist vorrangig, dass die Anforderungen hinsichtlich Latenz, Verfügbarkeit oder Langlebigkeit erfüllt werden.
Sie können im Allgemeinen die Region auswählen, die Ihren Nutzern am nächsten ist. Sie sollten dabei jedoch auch den Standort der anderen Google Cloud-Produkte berücksichtigen, die der Cloud Run-Dienst verwendet.
Die gemeinsame Nutzung von Google Cloud Produkten an mehreren Standorten kann sich auf die Latenz und die Kosten des Dienstes auswirken.
Cloud Run ist in diesen Regionen verfügbar:
Unterliegt Preisstufe 1
asia-east1
(Taiwan)asia-northeast1
(Tokio)asia-northeast2
(Osaka)asia-south1
(Mumbai, Indien)europe-north1
(Finnland)Niedriger CO2-Wert
europe-north2
(Stockholm)Niedriger CO2-Ausstoß
europe-southwest1
(Madrid)Niedriger CO2-Ausstoß
europe-west1
(Belgien)Niedriger CO2-Ausstoß
europe-west4
(Niederlande)Niedriger CO2-Ausstoß
europe-west8
(Mailand)europe-west9
(Paris)Niedriger CO2-Ausstoß
me-west1
(Tel Aviv)northamerica-south1
(Mexiko)us-central1
(Iowa)Niedriger CO2-Ausstoß
us-east1
(South Carolina)us-east4
(Northern Virginia)us-east5
(Columbus)us-south1
(Dallas)Niedriger CO2-Ausstoß
us-west1
(Oregon)Niedriger CO2-Ausstoß
Unterliegt Preisstufe 2
africa-south1
(Johannesburg)asia-east2
(Hongkong)asia-northeast3
(Seoul, Südkorea)asia-southeast1
(Singapur)asia-southeast2
(Jakarta)asia-south2
(Delhi, Indien)australia-southeast1
(Sydney)australia-southeast2
(Melbourne)europe-central2
(Warschau, Polen)europe-west10
(Berlin)europe-west12
(Turin)europe-west2
(London, Vereinigtes Königreich)Niedriger CO2-Ausstoß
europe-west3
(Frankfurt, Deutschland)europe-west6
(Zürich, Schweiz)Niedriger CO2-Ausstoß
me-central1
(Doha)me-central2
(Dammam)northamerica-northeast1
(Montreal)Niedriger CO2-Ausstoß
northamerica-northeast2
(Toronto)Niedriger CO2-Ausstoß
southamerica-east1
(Sao Paulo, Brasilien)Niedriger CO2-Ausstoß
southamerica-west1
(Santiago, Chile)Niedriger CO2-Ausstoß
us-west2
(Los Angeles)us-west3
(Salt Lake City)us-west4
(Las Vegas)
Wenn Sie bereits einen Cloud Run-Dienst erstellt haben, können Sie dessen Region im Cloud Run-Dashboard der Google Cloud Console aufrufen.
Neue Überarbeitung eines vorhandenen Dienstes bereitstellen
Sie können eine neue Überarbeitung über die Google Cloud Console, die gcloud
-Befehlszeile oder eine YAML-Konfigurationsdatei bereitstellen.
Beachten Sie, dass beim Ändern von Konfigurationseinstellungen eine neue Überarbeitung erstellt wird, auch wenn das Container-Image nicht geändert wird. Überarbeitungen können nach der Erstellung nicht mehr geändert werden.
Das Container-Image wird von Cloud Run importiert, wenn es bereitgestellt wird. Cloud Run behält diese Kopie des Container-Images so lange bei, wie sie von einer Serving-Revision verwendet wird.
Klicken Sie auf den Tab, um eine Anleitung zum gewünschten Tool zu erhalten.
Console
So stellen Sie eine neue Überarbeitung eines vorhandenen Dienstes bereit:
Rufen Sie in der Google Cloud Console die Seite „Cloud Run“ auf:
Klicken Sie in der Übersicht auf den zu aktualisierenden Dienst, um dessen Details anzuzeigen.
Klicken Sie auf Neue Überarbeitung bearbeiten und bereitstellen, um das Formular für die Bereitstellung der Überarbeitung aufzurufen.
Geben Sie bei Bedarf die URL des neu bereitzustellenden Container-Images an.
Konfigurieren Sie den Container nach Bedarf.
Richten Sie die Abrechnung nach Bedarf ein.
Geben Sie unter „Kapazität” Speicherlimits und CPU-Limits an.
Geben Sie nach Bedarf Zeitlimit für Anfragen und Gleichzeitigkeit an.
Geben Sie nach Bedarf die Ausführungsumgebung an.
Geben Sie unter Autoscaling die minimale und die maximale Anzahl an Instanzen an.
Verwenden Sie nach Bedarf die anderen Tabs, um Folgendes zu konfigurieren:
Wählen Sie Diese Version sofort bereitstellen aus, um den gesamten Traffic an die neue Version zu senden. Wenn Sie eine neue Version nach und nach einführen möchten, entfernen Sie das Häkchen aus diesem Kästchen. Dies führt zu einer Bereitstellung, bei der kein Traffic an die neue Version gesendet wird. Folgen Sie der Anleitung für schrittweise Rollouts nach der Bereitstellung.
Klicken Sie auf Bereitstellen und warten Sie, bis die Bereitstellung abgeschlossen ist.
gcloud
-
In the Google Cloud console, activate Cloud Shell.
At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.
So stellen Sie ein Container-Image bereit:
Führen Sie diesen Befehl aus:
gcloud run deploy SERVICE --image IMAGE_URL
Ersetzen Sie Folgendes:
- SERVICE: der Name des Dienstes, in dem Sie die Bereitstellung vornehmen. Sie können diesen Parameter auch weglassen, werden dann jedoch nach dem Dienstnamen gefragt.
- IMAGE_URL: ein Verweis auf das Container-Image, z. B.
us-docker.pkg.dev/cloudrun/container/hello:latest
Wenn Sie Artifact Registry verwenden, muss das Repository REPO_NAME bereits erstellt sein. Die URL hat das FormatLOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG
.
Das Überarbeitungssuffix wird neuen Überarbeitungen automatisch zugewiesen. Wenn Sie Ihr eigenes Überarbeitungssuffix angeben möchten, verwenden Sie den gcloud CLI-Parameter --revision-suffix.
Warten Sie, bis die Bereitstellung abgeschlossen ist. Nach erfolgreichem Abschluss wird eine Bestätigung zusammen mit der URL des bereitgestellten Dienstes angezeigt.
Nehmen Sie eine Änderung an der Konfigurationsdatei vor.
Wenden Sie die Terraform-Konfiguration an:
terraform apply
Bestätigen Sie, dass Sie die beschriebenen Aktionen anwenden möchten, indem Sie
yes
eingeben.- ACCESS_TOKEN: Ein gültiges Zugriffstoken für ein Konto, das die IAM-Berechtigungen zum Bereitstellen von Überarbeitungen hat.
Wenn Sie beispielsweise in gcloud angemeldet sind, können Sie ein Zugriffstoken mit
gcloud auth print-access-token
abrufen. Innerhalb einer Cloud Run-Containerinstanz können Sie ein Zugriffstoken über den Metadatenserver der Containerinstanz abrufen. - IMAGE_URL: ein Verweis auf das Container-Image, z. B.
us-docker.pkg.dev/cloudrun/container/hello:latest
Wenn Sie Artifact Registry verwenden, muss das Repository REPO_NAME bereits erstellt sein. Die URL hat das FormatLOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG
. - SERVICE: der Name des Dienstes, in dem Sie die Bereitstellung vornehmen.
- REGION: die Google Cloud Region des Dienstes.
- PROJECT-ID: die Google Cloud Projekt-ID.
YAML
Wenn Sie die Konfiguration eines vorhandenen Dienstes herunterladen oder aufrufen müssen, speichern Sie die Ergebnisse mit dem folgenden Befehl in einer YAML-Datei:
gcloud run services describe SERVICE --format export > service.yaml
Ändern Sie in einer YAML-Dienstkonfigurationsdatei alle untergeordneten spec.template
-Attribute wie gewünscht, um die Überarbeitungseinstellungen zu aktualisieren, und stellen Sie dann die neue Überarbeitung bereit:
gcloud run services replace service.yaml
Cloud Code
Weitere Informationen zum Bereitstellen einer neuen Version eines vorhandenen Dienstes mit Cloud Code finden Sie in den Anleitungen zu IntelliJ und Visual Studio Code.
Terraform
Achten Sie darauf, dass Sie Terraform wie im Beispiel Neuen Dienst bereitstellen eingerichtet haben.
Clientbibliotheken
So stellen Sie eine neue Code-Version bereit:
REST API
Senden Sie zum Bereitstellen einer neuen Überarbeitung eine HTTP-Anfrage PATCH
an den Endpunkt service
der Cloud Run Admin API.
Verwenden Sie zum Beispiel curl
:
curl -H "Content-Type: application/json" \ -H "Authorization: Bearer ACCESS_TOKEN" \ -X PATCH \ -d '{template: {containers: [{image: "IMAGE_URL"}]}}' \ https://run.googleapis.com/v2/projects/PROJECT_ID/locations/REGION/services/SERVICE
Ersetzen Sie Folgendes:
Cloud Run-Standorte
Cloud Run ist regional. Die Infrastruktur, in der die Cloud Run-Dienste ausgeführt werden, befindet sich demnach in einer bestimmten Region. Aufgrund der Verwaltung durch Google sind die Anwendungen in allen Zonen innerhalb dieser Region redundant verfügbar.
Bei der Auswahl der Region, in der Ihre Cloud Run-Dienste ausgeführt werden, ist vorrangig, dass die Anforderungen hinsichtlich Latenz, Verfügbarkeit oder Langlebigkeit erfüllt werden.
Sie können im Allgemeinen die Region auswählen, die Ihren Nutzern am nächsten ist. Sie sollten dabei jedoch auch den Standort der anderen Google Cloud-Produkte berücksichtigen, die der Cloud Run-Dienst verwendet.
Die gemeinsame Nutzung von Google Cloud Produkten an mehreren Standorten kann sich auf die Latenz und die Kosten des Dienstes auswirken.
Cloud Run ist in diesen Regionen verfügbar:
Unterliegt Preisstufe 1
asia-east1
(Taiwan)asia-northeast1
(Tokio)asia-northeast2
(Osaka)asia-south1
(Mumbai, Indien)europe-north1
(Finnland)Niedriger CO2-Wert
europe-north2
(Stockholm)Niedriger CO2-Ausstoß
europe-southwest1
(Madrid)Niedriger CO2-Ausstoß
europe-west1
(Belgien)Niedriger CO2-Ausstoß
europe-west4
(Niederlande)Niedriger CO2-Ausstoß
europe-west8
(Mailand)europe-west9
(Paris)Niedriger CO2-Ausstoß
me-west1
(Tel Aviv)northamerica-south1
(Mexiko)us-central1
(Iowa)Niedriger CO2-Ausstoß
us-east1
(South Carolina)us-east4
(Northern Virginia)us-east5
(Columbus)us-south1
(Dallas)Niedriger CO2-Ausstoß
us-west1
(Oregon)Niedriger CO2-Ausstoß
Unterliegt Preisstufe 2
africa-south1
(Johannesburg)asia-east2
(Hongkong)asia-northeast3
(Seoul, Südkorea)asia-southeast1
(Singapur)asia-southeast2
(Jakarta)asia-south2
(Delhi, Indien)australia-southeast1
(Sydney)australia-southeast2
(Melbourne)europe-central2
(Warschau, Polen)europe-west10
(Berlin)europe-west12
(Turin)europe-west2
(London, Vereinigtes Königreich)Niedriger CO2-Ausstoß
europe-west3
(Frankfurt, Deutschland)europe-west6
(Zürich, Schweiz)Niedriger CO2-Ausstoß
me-central1
(Doha)me-central2
(Dammam)northamerica-northeast1
(Montreal)Niedriger CO2-Ausstoß
northamerica-northeast2
(Toronto)Niedriger CO2-Ausstoß
southamerica-east1
(Sao Paulo, Brasilien)Niedriger CO2-Ausstoß
southamerica-west1
(Santiago, Chile)Niedriger CO2-Ausstoß
us-west2
(Los Angeles)us-west3
(Salt Lake City)us-west4
(Las Vegas)
Wenn Sie bereits einen Cloud Run-Dienst erstellt haben, können Sie dessen Region im Cloud Run-Dashboard der Google Cloud Console aufrufen.
Images aus anderen Google Cloud Projekten bereitstellen
Wenn Sie Images aus anderen Google Cloud -Projekten bereitstellen möchten, müssen Sie oder Ihr Administrator dem Bereitstellerkonto und dem Cloud Run-Dienst-Agenten die erforderlichen IAM-Rollen zuweisen.
Informationen zu den erforderlichen Rollen für das Bereitstellerkonto finden Sie unter Erforderliche Rollen.
So weisen Sie dem Cloud Run-Dienst-Agent die erforderlichen Rollen zu:
Öffnen Sie in der Google Cloud Console das Projekt für Ihren Cloud Run-Dienst.
Wählen Sie Von Google bereitgestellte Rollenzuweisungen einschließen aus.
Kopieren Sie die E-Mail des Cloud Run-Dienst-Agents. Sie hat das Suffix @serverless-robot-prod.iam.gserviceaccount.com.
Öffnen Sie das Projekt mit der gewünschten Container Registry.
Klicken Sie auf Hinzufügen, um ein neues Hauptkonto hinzuzufügen.
Fügen Sie in das Feld Neue Hauptkonten die zuvor kopierte E-Mail-Adresse des Dienstkontos ein.
Klicken Sie im Drop-down-Menü Rolle auswählen auf Artifact Registry -> Artifact Registry-Leser.
Stellen Sie das Container-Image für das Projekt bereit, das den Cloud Run-Dienst enthält.
Images aus anderen Registries bereitstellen
Um öffentliche oder private Container-Images bereitzustellen, die nicht in Artifact Registry oder Docker Hub gespeichert sind, richten Sie ein Artifact Registry-Remote-Repository ein.
Die Remote-Repositories von Artifact Registry ermöglichen Ihnen Folgendes:
- Stellen Sie ein beliebiges öffentliches Container-Image bereit, z. B. GitHub Container Registry (
ghcr.io
). - Container-Images aus privaten Repositories bereitstellen, für die eine Authentifizierung erforderlich ist, z. B. JFrog Artifactory oder Nexus
Wenn die Verwendung eines Remote-Repositorys in Artifact Registry nicht möglich ist, können Sie Container-Images vorübergehend mit docker push
in Artifact Registry herunter- und hochladen, um sie in Cloud Run bereitzustellen.
Das Container-Image wird von Cloud Run importiert, wenn es bereitgestellt wird. Nach der Bereitstellung können Sie das Image also aus Artifact Registry löschen.
Mehrere Container für einen Dienst bereitstellen (Sidecars)
In einer Cloud Run-Bereitstellung mit Sidecars gibt es einen eingehenden Container, der alle eingehenden HTTPS-Anfragen an dem von Ihnen angegebenen Container-PORT verarbeitet, und einen oder mehrere Sidecar-Container. Die Sidecars können nicht auf eingehende HTTP-Anfragen am Ingress-Containerport warten, aber sie können über einen Localhost-Port miteinander und mit dem Ingress-Container kommunizieren. Der verwendete Localhost-Port hängt von den verwendeten Containern ab.
Im folgenden Diagramm kommuniziert der Ingress-Container mit dem Sidecar über localhost:5000
.
Sie können bis zu 10 Container pro Instanz bereitstellen, einschließlich des Ingress-Containers. Alle Container innerhalb einer Instanz teilen sich denselben Netzwerk-Namespace und können Dateien auch über ein freigegebenes In-Memory-Volume freigeben, wie im Diagramm dargestellt.
Sie können mehrere Container entweder in der ersten oder zweiten Generation der Ausführungsumgebung bereitstellen.
Wenn Sie die anfragebasierte Abrechnung verwenden (die Cloud Run-Standardeinstellung), wird Sidecars nur in den folgenden Fällen CPU zugewiesen:
- Die Instanz verarbeitet mindestens eine Anfrage.
- Der Ingress-Container wird gestartet.
Wenn Ihre Sidecar-Datei außerhalb der Anfrageverarbeitung CPU verwenden soll (z. B. für die Erfassung von Messwerten), konfigurieren Sie die Abrechnungseinstellung für Ihren Dienst auf instanzbasierte Abrechnung. Weitere Informationen finden Sie unter Abrechnungseinstellungen (Dienste).
Wenn Sie die anfragebasierte Abrechnung verwenden, konfigurieren Sie eine Startprüfung, damit die CPU Ihres Sidecars beim Starten nicht gedrosselt wird.
Sie können festlegen, dass für alle Bereitstellungen eine bestimmte Sidecar-Datei verwendet werden muss, indem Sie benutzerdefinierte Organisationsrichtlinien erstellen.
Anwendungsfälle
Anwendungsfälle für Sidecars in einem Cloud Run-Dienst:
- Anwendungsmonitoring, ‑logging und ‑tracing
- Nginx, Envoy oder Apache2 als Proxy vor Ihrem Anwendungscontainer verwenden
- Authentifizierungs- und Autorisierungsfilter hinzufügen (z. B. Open Policy Agent)
- Ausgehende Verbindungsproxys ausführen, z. B. den Alloy DB Auth-Proxy
Dienst mit Sidecar-Containern bereitstellen
Sie können mehrere Sidecars für einen Cloud Run-Dienst mithilfe derGoogle Cloud Console, der Google Cloud CLI, YAML oder Terraform bereitstellen.
Klicken Sie auf den Tab, um eine Anleitung zum gewünschten Tool zu erhalten.
Console
Rufen Sie in der Google Cloud Console die Seite „Cloud Run“ auf:
- Wenn Sie einen vorhandenen Dienst bereitstellen möchten, suchen Sie ihn in der Dienstliste, klicken Sie darauf, um ihn zu öffnen, und klicken Sie dann auf Neue Überarbeitung bearbeiten und bereitstellen, um das Formular für die Bereitstellung der Überarbeitung aufzurufen.
- Wählen Sie im Menü Dienste aus und klicken Sie auf Container bereitstellen, um das Formular Dienst erstellen aufzurufen.
Bei einem neuen Dienst,
- geben Sie den Dienstnamen und die URL zum Ingress-Container-Image an, das Sie bereitstellen möchten.
- Klicken Sie auf Container, Volumes, Netzwerk, Sicherheit.
Konfigurieren Sie den Container für eingehenden Traffic auf der Karte Container bearbeiten nach Bedarf.
Klicken Sie auf Container hinzufügen und konfigurieren Sie einen Sidecar-Container, den Sie neben dem Container für eingehenden Traffic hinzufügen möchten. Wenn der Sidecar von einem anderen Container im Dienst abhängt, geben Sie dies im Drop-down-Menü Containerstartreihenfolge an. Wiederholen Sie diesen Schritt für jeden Sidecar-Container, den Sie bereitstellen.
Wählen Sie Diese Version sofort bereitstellen aus, um den gesamten Traffic an die neue Version zu senden. Entfernen Sie für einen graduellen Rollout das Häkchen. Dies führt zu einer Bereitstellung, bei der kein Traffic an die neue Version gesendet wird. Folgen Sie der Anleitung für schrittweise Rollouts nach der Bereitstellung.
Klicken Sie für einen neuen Dienst auf Erstellen oder für einen vorhandenen Dienst auf Bereitstellen. Warten Sie dann, bis die Bereitstellung abgeschlossen ist.
gcloud
-
In the Google Cloud console, activate Cloud Shell.
At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.
Führen Sie den folgenden Befehl aus, um mehrere Container in einem Dienst bereitzustellen:
gcloud run deploy SERVICE \ --container INGRESS_CONTAINER_NAME \ --image='INGRESS_IMAGE' \ --port='CONTAINER_PORT' \ --container SIDECAR_CONTAINER_NAME \ --image='SIDECAR_IMAGE'
Ersetzen Sie Folgendes:
- SERVICE: der Name des Dienstes, in dem Sie die Bereitstellung vornehmen. Sie können diesen Parameter auch weglassen, werden dann jedoch nach dem Dienstnamen gefragt.
- INGRESS_CONTAINER_NAME: ein Name für den Container, der Anfragen empfängt, z. B.
app
. - INGRESS_IMAGE: Ein Verweis auf das Container-Image, das Anfragen erhalten soll, z. B.
us-docker.pkg.dev/cloudrun/container/hello:latest
. - CONTAINER_PORT: Der Port, an dem der Ingress-Container auf eingehende Anfragen wartet. Im Gegensatz zu einem Dienst mit einem einzelnen Container gibt es für einen Dienst mit Sidecars keinen Standardport für den Ingress-Container. Sie müssen den Containerport für den Ingress-Container explizit konfigurieren. Nur ein Container kann den Port freigegeben haben.
- SIDECAR_CONTAINER_NAME: ein Name für den Sidecar-Container, z. B.
sidecar
. - SIDECAR_IMAGE: ein Verweis auf das Sidecar-Container-Image
Wenn Sie jeden Container im Bereitstellungsbefehl konfigurieren möchten, geben Sie die Konfiguration jedes Containers nach den Parametern
container
an. Beispiel:gcloud run deploy SERVICE \ --container CONTAINER_1_NAME \ --image='INGRESS_IMAGE' \ --set-env-vars=KEY=VALUE \ --port='CONTAINER_PORT' \ --container SIDECAR_CONTAINER_NAME \ --image='SIDECAR_IMAGE' \ --set-env-vars=KEY_N=VALUE_N
Warten Sie, bis die Bereitstellung abgeschlossen ist. Nach erfolgreichem Abschluss wird eine Bestätigung zusammen mit der URL des bereitgestellten Dienstes angezeigt.
- SERVICE: Der Name Ihres Cloud Run-Dienstes. Dienstnamen dürfen maximal 49 Zeichen lang sein.
- CONTAINER_PORT: Der Port, an dem der Ingress-Container auf eingehende Anfragen wartet. Im Gegensatz zu einem Dienst mit einem einzelnen Container gibt es für einen Dienst mit Sidecars keinen Standardport für den Ingress-Container. Sie müssen den Containerport für den Ingress-Container explizit konfigurieren. Nur ein Container kann den Port freigegeben haben.
- INGRESS_IMAGE: Ein Verweis auf das Container-Image, das Anfragen erhalten soll, z. B.
us-docker.pkg.dev/cloudrun/container/hello:latest
. - SIDECAR_IMAGE: ein Verweis auf das Sidecar-Container-Image. Sie können mehrere Sidecars angeben, indem Sie dem Array
containers
in der YAML-Datei weitere Elemente hinzufügen.
YAML
Diese Anleitung enthält eine einfache YAML-Datei für Ihren Cloud Run-Dienst mit Sidecars.
Erstellen Sie eine Datei mit dem Namen service.yaml
und fügen Sie ihr Folgendes hinzu:
apiVersion: serving.knative.dev/v1 kind: Service metadata: annotations: name: SERVICE spec: template: spec: containers: - image: INGRESS_IMAGE ports: - containerPort: CONTAINER_PORT - image: SIDECAR_IMAGE
Ersetzen Sie Folgendes:
Nachdem Sie die YAML-Datei aktualisiert haben, um die Ingress- und Sidecar-Container aufzunehmen, stellen Sie in Cloud Run den folgenden Befehl bereit:
gcloud run services replace service.yaml
Terraform
Informationen zum Anwenden oder Entfernen einer Terraform-Konfiguration finden Sie unter Grundlegende Terraform-Befehle.
Fügen Sie einergoogle_cloud_run_v2_service
-Ressource in Ihrer Terraform-Konfiguration Folgendes hinzu:resource "google_cloud_run_v2_service" "default" {
name = "SERVICE"
location = "REGION"
ingress = "INGRESS_TRAFFIC_ALL"
template {
containers {
name = "INGRESS_CONTAINER_NAME"
ports {
container_port = CONTAINER_PORT
}
image = "INGRESS_IMAGE"
depends_on = ["SIDECAR_CONTAINER_NAME"]
}
containers {
name = "SIDECAR_CONTAINER_NAME"
image = "SIDECAR_IMAGE"
}
}
}
CONTAINER_PORT steht für den Port, an dem der Ingress-Container auf eingehende Anfragen wartet. Im Gegensatz zu einem Dienst mit einem einzelnen Container gibt es für einen Dienst mit Sidecars keinen Standardport für den Ingress-Container. Sie müssen den Containerport für den Ingress-Container explizit konfigurieren. Nur ein Container kann den Port freigegeben haben.
Wichtige Features, die für Bereitstellungen mit Sidecars zur Verfügung stehen
Sie können die Reihenfolge für den Containerstart in einer Bereitstellung mit mehreren Containern festlegen, wenn Sie Abhängigkeiten haben, die es erfordern, dass einige Container vor den anderen Containern in der Bereitstellung gestartet werden.
Wenn Sie Container haben, die von anderen Containern abhängen, müssen Sie in Ihrer Bereitstellung Systemdiagnosen verwenden. Wenn Sie Systemdiagnosen verwenden, folgt Cloud Run der Startreihenfolge des Containers und prüft die Integrität jedes Containers. So kann sichergestellt werden, dass jeder Container erfolgreich ausgeführt wird, bevor Cloud Run den nächsten Container in der Reihenfolge startet. Wenn Sie keine Systemdiagnosen verwenden, werden fehlerfreie Container gestartet, auch wenn die Container, von denen sie abhängen, nicht ausgeführt werden.
Mehrere Container innerhalb einer einzelnen Instanz können auf ein freigegebenes In-Memory-Volume zugreifen, das für jeden Container über die von Ihnen erstellten Bereitstellungspunkte zugänglich ist.
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
- Cloud Run-Beispiel für OpenTelemetry-Sidecar
- Nur vertrauenswürdige Images mit Binärautorisierung bereitstellen (Vorschau)
Mithilfe von Cloud Build-Triggern können Sie die Builds und Bereitstellungen Ihrer Cloud Run-Dienste automatisieren.
Sie können auch Cloud Deploy verwenden, um eine CD-Pipeline (Continuous Delivery) zum Bereitstellen von Cloud Run-Diensten in mehreren Umgebungen einzurichten.