Container-Images bereitstellen

Auf dieser Seite wird beschrieben, wie Sie neue Dienste und neue Überarbeitungen in Cloud Run bereitstellen.

Für das Deployment erforderliche Berechtigungen

Sie benötigen EINES von Folgendem:

  • Inhaber
  • Bearbeiter
  • Sowohl die Rolle Cloud Run-Administrator als auch die Rolle Dienstkontonutzer,
  • Jede benutzerdefinierte Rolle, die diese bestimmte Liste von Berechtigungen enthält.

Unterstützte Container Registries und Images

Es gibt keine Größenbeschränkung für Container-Images, die Sie bereitstellen können.

Sie können in Container Registry oder Artifact Registry gespeicherte Container-Images bereitstellen. Sie können nur die folgenden Arten von Container-Images verwenden:

Wenn Sie Container-Images in einem anderen Typ von Container Registry speichern, folgen Sie der Anleitung unter Images aus nicht unterstützten Registries bereitstellen.

Neuen Dienst bereitstellen

Sie können ein Container-Image mit einem Tag (z. B. gcr.io/my-project/my-image:latest) oder mit einem genauen Digest (z. B. gcr.io/my-project/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 stellt anschließend immer diesen speziellen Digest bereit.

Sie können einen Container über die Cloud Console, die gcloud-Befehlszeile oder eine YAML-Konfigurationsdatei bereitstellen.

Klicken Sie auf den Tab, um eine Anleitung zum gewünschten Tool zu erhalten.

Console

So stellen Sie ein Container-Image bereit:

  1. Öffnen Sie Cloud Run.

  2. Klicken Sie auf Dienst erstellen, um die entsprechende Seite aufzurufen.

    create-service-image

    Im Formular:

    1. Wählen Sie die Region aus, in der sich Ihr Dienst befinden soll. Die Regionsauswahl gibt die Preisstufe, die Verfügbarkeit von Domainzuordnungen und Eventarc an und hebt Regionen mit dem niedrigste CO2-Auswirkungen hervor.

    2. Geben Sie den gewünschten Dienstnamen ein. Dienstnamen dürfen pro Region und Projekt oder pro Cluster nur einmal vorkommen. Ein Dienstname kann später nicht mehr geändert werden und ist bei Verwendung von Cloud Run öffentlich sichtbar.

  3. Klicken Sie auf Weiter, um zur Seite Erste Überarbeitung des Dienstes konfigurieren zu gelangen:

    Bild

  4. Füllen Sie das Formular aus:

    1. Wenn Sie einen Container manuell bereitstellen möchten, wählen Sie Überarbeitung aus einem vorhandenen Container-Image bereitstellen aus.
    2. 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.
    3. Optional können Sie auf Erweiterte Einstellungen und die nachfolgenden Tabs klicken, um diese Einstellungen vorzunehmen:
  5. Klicken Sie auf Weiter, um zur Seite Konfigurieren, wie dieser Dienst ausgelöst wird zu gelangen:

    Bild

    1. Legen Sie die Ingress-Einstellungen wie gewünscht im Formular fest.

    2. Unter Authentifizierung:

      • Wenn Sie eine öffentliche API oder Website erstellen, wählen Sie Nicht authentifizierte Aufrufe 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.
  6. Klicken Sie auf Erstellen, um das Image in Cloud Run bereitzustellen. Warten Sie, bis die Bereitstellung abgeschlossen ist.

  7. Klicken Sie auf den angezeigten URL-Link, um den nur einmal vorkommenden und stabilen Endpunkt des bereitgestellten Dienstes zu öffnen.

Befehlszeile

So stellen Sie ein Container-Image bereit:

  1. Führen Sie diesen Befehl aus:

    gcloud run deploy SERVICE --image IMAGE_URL

    • Ersetzen Sie SERVICE durch den Namen des Dienstes, für den Sie die Bereitstellung vornehmen möchten. 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.
    • Ersetzen Sie IMAGE_URL durch einen Verweis auf das Container-Image, z. B. gcr.io/myproject/my-image:latest. 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 nicht authentifizierte Aufrufe zulassen. Dadurch wird allUsers die IAM-Rolle Cloud Run Invoker zugewiesen. Sie können auch --no-allow-unauthenticated angeben, um keine nicht authentifizierten Aufrufe zuzuzulassen. Wenn Sie keines dieser Flags angeben, werden Sie aufgefordert, zu bestätigen, ob nicht authentifizierte Aufrufe zugelassen werden sollen, wenn der Befehl deploy ausgeführt wird.

  2. 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-Attributen run/region angegeben haben, verwenden Sie Folgendes:

  • gcloud run deploy SERVICE --region REGION

YAML

Sie können Ihre Dienstspezifikation in einer YAML-Datei speichern und dann über die gcloud-Befehlszeile bereitstellen.

  1. Erstellen Sie eine neue service.yaml-Datei mit folgendem Inhalt:

    apiVersion: serving.knative.dev/v1
    kind: Service
    metadata:
      name: SERVICE
    spec:
      template:
        spec:
          containers:
          - image: IMAGE

    Ersetzen Sie

    • SERVICE durch den Namen Ihres Cloud Run-Dienstes
    • IMAGE durch die URL Ihres Container-Images

    Sie können auch weitere Konfigurationen angeben, z. B. Umgebungsvariablen oder Speicherlimits.

  2. Stellen Sie den neuen Dienst mit dem folgenden Befehl bereit:

    gcloud run services replace service.yaml
  3. Optional: Veröffentlichen Sie Ihren Dienst, wenn Sie den nicht authentifizierten Zugriff auf den Dienst zulassen möchten.

Cloud Code

Lesen Sie für die Bereitstellung mit Cloud Code die Anleitungen zu IntelliJ und Visual Studio Code.

Terraform

Wenn Sie Terraform verwenden, können Sie den Dienst in einer Terraform-Konfiguration definieren. Dabei verwenden Sie die Ressource google_cloud_run_service des Google Cloud Platform-Anbieters.

  1. Erstellen Sie eine neue main.tf-Datei mit dem folgendem Inhalt:

    provider "google" {
        project = "PROJECT-ID"
    }
    
    resource "google_cloud_run_service" "default" {
        name     = "SERVICE"
        location = "REGION"
    
        metadata {
          annotations = {
            "run.googleapis.com/client-name" = "terraform"
          }
        }
    
        template {
          spec {
            containers {
              image = "gcr.io/PROJECT-ID/IMAGE"
            }
          }
        }
     }
    
     data "google_iam_policy" "noauth" {
       binding {
         role = "roles/run.invoker"
         members = ["allUsers"]
       }
     }
    
     resource "google_cloud_run_service_iam_policy" "noauth" {
       location    = google_cloud_run_service.default.location
       project     = google_cloud_run_service.default.project
       service     = google_cloud_run_service.default.name
    
       policy_data = data.google_iam_policy.noauth.policy_data
    }
    

    Ersetzen Sie

    • PROJECT-ID durch die Google Cloud-Projekt-ID
    • REGION durch die Google Cloud-Region
    • SERVICE durch den Namen Ihres Cloud Run-Dienstes
    • IMAGE durch den Namen Ihres Container-Images

    Die oben genannte Konfiguration lässt öffentlichen Zugriff zu (entspricht --allow-unauthenticated). Wenn Sie den Dienst privat machen möchten, entfernen Sie die Absätze google_iam_policy und google_cloud_run_service_iam_policy.

  2. Initialisieren Sie Terraform:

    terraform init
  3. Wenden Sie die Terraform-Konfiguration an:

    terraform apply

    Bestätigen Sie, dass Sie die beschriebenen Aktionen anwenden möchten, indem Sie yes eingeben.

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 liegt, aber Sie sollten den Standort der anderen Google Cloud-Produkte berücksichtigen, die von Ihrem Cloud Run-Dienst verwendet werden. 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

Unterliegt Preisstufe 2

  • asia-east2 (Hongkong)
  • asia-northeast3 (Seoul, Südkorea)
  • asia-southeast1 (Singapur)
  • asia-southeast2 (Jakarta)
  • asia-south1 (Mumbai, Indien)
  • asia-south2 (Delhi, Indien)
  • australia-southeast1 (Sydney)
  • australia-southeast2 (Melbourne)
  • europe-central2 (Warschau, Polen)
  • europe-west2 (London, Vereinigtes Königreich)
  • europe-west3 (Frankfurt, Deutschland)
  • europe-west6 (Zürich, Schweiz) Blattsymbol Niedriger CO2-Wert
  • northamerica-northeast1 (Montreal) Blattsymbol Niedriger CO2-Wert
  • northamerica-northeast2 (Toronto)
  • southamerica-east1 (Sao Paulo, Brasilien) Blattsymbol Niedriger CO2-Wert
  • us-west2 (Los Angeles)
  • us-west3 (Las Vegas)
  • us-west4 (Salt Lake City)

Wenn Sie bereits einen Cloud Run-Dienst erstellt haben, können Sie die Region in der Cloud Console im Cloud Run-Dashboard aufrufen.

Beim Bereitstellen muss der Dienst-Agent von Cloud Run auf den bereitgestellten Container zugreifen können, was standardmäßig der Fall ist.

Jeder Dienst hat eine eindeutige und permanente URL, die sich im Laufe der Zeit nicht ändert, wenn Sie neue Überarbeitungen bereitstellen.

Neue Überarbeitung eines vorhandenen Dienstes bereitstellen

Sie können eine neue Überarbeitung über die 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.

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:

  1. Öffnen Sie Cloud Run.

  2. Klicken Sie in der Übersicht auf den zu aktualisierenden Dienst, um dessen Details anzuzeigen.

  3. Klicken Sie auf NEUE ÜBERARBEITUNG BEARBEITEN UND BEREITSTELLEN. Dadurch wird das Formular für die Bereitstellung der Überarbeitung angezeigt:

    Bild

  4. Geben Sie bei Bedarf die URL des neu bereitzustellenden Container-Images an.

  5. Optional können Sie auf den Tabs Folgendes festlegen:

  6. Um den gesamten Traffic an die neue Überarbeitung zu senden, aktivieren Sie das Kästchen Diese Überarbeitung sofort bereitstellen. Wenn Sie eine neue Überarbeitung nach und nach einführen möchten, entfernen Sie das Häkchen aus diesem Kästchen. Dadurch erhalten Sie eine Bereitstellung, bei der kein Traffic an die neue Überarbeitung gesendet wird. Folgen Sie der Anleitung für schrittweise Einführungen nach der Bereitstellung.

  7. Klicken Sie auf BEREITSTELLEN und warten Sie, bis die Bereitstellung abgeschlossen ist.

Befehlszeile

Um die Befehlszeile zu verwenden, müssen Sie bereits die gcloud-Befehlszeile eingerichtet haben.

So stellen Sie ein Container-Image bereit:

  1. Führen Sie diesen Befehl aus:

    gcloud run deploy SERVICE --image IMAGE_URL

    • Ersetzen Sie SERVICE durch den Namen des für die Bereitstellung verwendeten Dienstes. Sie können diesen Parameter auch weglassen, werden dann jedoch nach dem Dienstnamen gefragt.
    • Ersetzen Sie IMAGE_URL durch einen Verweis auf das Container-Image, z. B. gcr.io/myproject/my-image:latest.

      Das Überarbeitungssuffix wird neuen Überarbeitungen automatisch zugewiesen. Wenn Sie ein eigenes Überarbeitungssuffix angeben möchten, verwenden Sie den gcloud-Befehlszeilenparameter --revision-suffix.

  2. Warten Sie, bis die Bereitstellung abgeschlossen ist. Nach erfolgreichem Abschluss wird eine Bestätigung zusammen mit der URL des bereitgestellten Dienstes angezeigt.

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

Sie müssen Terraform bereits gemäß dem Beispiel Neuen Dienst bereitstellen eingerichtet haben.

  1. Nehmen Sie eine Änderung an der Konfigurationsdatei vor.

  2. Wenden Sie die Terraform-Konfiguration an:

    terraform apply

    Bestätigen Sie, dass Sie die beschriebenen Aktionen anwenden möchten, indem Sie yes eingeben.

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 liegt, aber Sie sollten den Standort der anderen Google Cloud-Produkte berücksichtigen, die von Ihrem Cloud Run-Dienst verwendet werden. 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

Unterliegt Preisstufe 2

  • asia-east2 (Hongkong)
  • asia-northeast3 (Seoul, Südkorea)
  • asia-southeast1 (Singapur)
  • asia-southeast2 (Jakarta)
  • asia-south1 (Mumbai, Indien)
  • asia-south2 (Delhi, Indien)
  • australia-southeast1 (Sydney)
  • australia-southeast2 (Melbourne)
  • europe-central2 (Warschau, Polen)
  • europe-west2 (London, Vereinigtes Königreich)
  • europe-west3 (Frankfurt, Deutschland)
  • europe-west6 (Zürich, Schweiz) Blattsymbol Niedriger CO2-Wert
  • northamerica-northeast1 (Montreal) Blattsymbol Niedriger CO2-Wert
  • northamerica-northeast2 (Toronto)
  • southamerica-east1 (Sao Paulo, Brasilien) Blattsymbol Niedriger CO2-Wert
  • us-west2 (Los Angeles)
  • us-west3 (Las Vegas)
  • us-west4 (Salt Lake City)

Wenn Sie bereits einen Cloud Run-Dienst erstellt haben, können Sie die Region in der Cloud Console im Cloud Run-Dashboard aufrufen.

Images aus anderen Google Cloud-Projekten bereitstellen

Sie können Container-Images aus anderen Google Cloud-Projekten bereitstellen, wenn Sie die richtigen IAM-Berechtigungen festlegen:

  1. Öffnen Sie in der Cloud Console das Projekt für Ihren Cloud Run-Dienst.

  2. Zur IAM-Seite

  3. Klicken Sie auf das Kästchen Von Google bereitgestellte Rollenzuweisungen hinzufügen.

  4. Kopieren Sie die E-Mail des Cloud Run-Dienst-Agents. Sie hat das Suffix @serverless-robot-prod.iam.gserviceaccount.com

  5. Öffnen Sie das Projekt mit der gewünschten Container Registry.

  6. Zur IAM-Seite

  7. Klicken Sie auf Hinzufügen, um ein neues Mitglied hinzuzufügen.

  8. Fügen Sie in das Textfeld Neue Mitglieder die zuvor kopierte E-Mail-Adresse des Dienstkontos ein.

  9. Wählen Sie in der Drop-down-Liste Rolle auswählen die Rolle Storage -> Storage-Objekt-Betrachter aus, wenn Sie Container Registry verwenden. Wenn Sie Artifact Registry verwenden, wählen Sie die Rolle Artifact Registry -> Artifact Registry-Leser aus.

  10. Stellen Sie das Container-Image für das Projekt bereit, das den Cloud Run-Dienst enthält.

Images aus nicht unterstützten Registries bereitstellen

Wenn Sie Container-Images in einer nicht unterstützten öffentlichen oder privaten Container Registry speichern, können Sie diese vorübergehend mit docker push in Artifact Registry übertragen, 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 mit docker image rm aus Artifact Registry löschen.

Nächste Schritte

Nachdem Sie einen neuen Dienst bereitgestellt haben, können Sie Folgendes tun:

Mithilfe von Cloud Build-Triggern können Sie die Builds und Bereitstellungen Ihrer Cloud Run-Dienste automatisieren.