Bereitstellungsoptionen und Ressourcenmodell

In diesem Dokument werden die verschiedenen Bereitstellungsoptionen in Cloud Run beschrieben und die verfügbaren Cloud Run-Ressourcen erläutert.

Bereitstellungsoptionen

Cloud Run bietet mehrere Bereitstellungsoptionen. Nach der Bereitstellung werden alle Optionen als Sandbox-Containerinstanzen in der vollständig verwalteten und hoch skalierbaren Infrastruktur von Cloud Run ausgeführt.

Bereitstellbare Container-Images

Sie können jedes Container-Image, das dem Container-Laufzeitvertrag von Cloud Run entspricht, in einem Cloud Run Dienst, Job oder Worker-Pool bereitstellen.

Über Quellcode bereitstellen

Mit Cloud Run können Sie Quellcode mit einem einzigen Befehl erstellen und bereitstellen. Weitere Informationen finden Sie unter Dienste aus Quellcode bereitstellen und Worker-Pools aus Quellcode bereitstellen.

Wenn Sie aus Quellcode bereitstellen, wandelt Cloud Build den Code in ein Container-Image um, das in Artifact Registry gespeichert wird. Sie können Quellcode bereitstellen, der ein Dockerfile enthält oder eine der unterstützten Sprachlaufzeiten verwendet.

Funktionen

Sie können Funktionen, die einem einzigen Zweck dienen, bereitstellen, die auf Ereignisse reagieren, die von Ihrer Cloud-Infrastruktur und Ihren Diensten ausgegeben werden. Cloud Run löst Ihre Funktion aus, wenn ein überwachtes Ereignis ausgelöst wird.

Eine Funktionsbereitstellung ist eine spezielle Art der Quellcodebereitstellung, bei der Sie nur den Funktionscode angeben müssen. Sie können Cloud Run-Funktionen mit einer Reihe von unterstützten Programmiersprachen schreiben.

Durch die Bereitstellung einer Funktion wird ein Cloud Run Dienst erstellt.

Kontinuierliche Bereitstellung von Quellcode aus Git

Mit Cloud Run können Sie die kontinuierliche Bereitstellung aus Git konfigurieren. Wie bei Quellcodebereitstellungen können Sie Quellcode bereitstellen, der ein Dockerfile enthält oder in einer der unterstützten Sprachlaufzeiten geschrieben wurde.

Die kontinuierliche Bereitstellung aus Git ist für Cloud Run Dienste verfügbar. Sie können sie in Cloud Build manuell für Cloud Run Jobs konfigurieren.

Cloud Run-Dienste

Dienste sind eine der wichtigsten Ressourcen von Cloud Run. Jeder Dienst befindet sich in einer bestimmten Google Cloud Region. Um Redundanz und Failover zu gewährleisten, repliziert Cloud Run Dienste automatisch in mehreren Zonen innerhalb einer Region. In einem bestimmten Google Cloud Projekt können viele Dienste in verschiedenen Regionen ausgeführt werden.

Jeder Dienst stellt einen eindeutigen Endpunkt bereit. Standardmäßig skaliert Cloud Run automatisch, um eingehende Anfragen zu verarbeiten. Bei Bedarf können Sie das Skalierungsverhalten optional in die manuelle Skalierung ändern. Sie können einen Dienst aus einem Container, Repository oder Quellcode bereitstellen.

Das folgende Diagramm zeigt das Cloud Run-Ressourcenmodell für Dienste:

Cloud Run-Dienste und Überarbeitungen

Das Diagramm zeigt ein Google Cloud Projekt mit drei Cloud Run-Diensten, Dienst A, Dienst B und Dienst C, zu denen es jeweils mehrere Überarbeitungen gibt:

  • Dienst A empfängt mehrere Anfragen, daher hat Cloud Run mehrere Instanzen gestartet, um die Last zu verarbeiten. Auf jeder dieser Instanzen wird nur ein Container ausgeführt (der Container der Anwendung).

  • Dienst B hat keine Anfragen, ist also inaktiv und Cloud Run führt keine Instanzen aus.

  • Dienst C hat Anfragen und wurde skaliert, um die Last zu verarbeiten, indem mehrere Instanzen erstellt wurden. In diesem Fall wird auf jeder dieser Instanzen eine Reihe von mehreren Containern ausgeführt. In jeder Reihe empfängt nur der Ingress-Container die Anfrage, aber die anderen Container helfen bei der Bearbeitung der Anfrage.

Cloud Run-Dienstüberarbeitungen

Bei jedem Deployment in einem Dienst wird eine Überarbeitung erstellt. Eine Überarbeitung besteht aus einem oder mehreren Container-Images sowie Konfigurationseinstellungen wie Umgebungsvariablen, Arbeitsspeicherlimits oder einem Wert für die Nebenläufigkeit von Anfragen.

Eine Überarbeitung kann nach der Erstellung nicht mehr geändert werden. Wenn Sie beispielsweise ein Container-Image für einen neuen Dienst bereitstellen, erstellt Cloud Run die erste Überarbeitung. Wenn Sie anschließend für denselben Dienst ein anderes Container-Image bereitstellen, erstellt Cloud Run eine zweite Überarbeitung. Wenn Sie später eine Umgebungsvariable festlegen, erstellt Cloud Run eine dritte Überarbeitung. Im Laufe der Zeit entfernt Cloud Run ältere, nicht verwendete Überarbeitungen.

Cloud Run leitet Anfragen automatisch so schnell wie möglich an die neueste fehlerfreie Dienstüberarbeitung weiter.

Cloud Run-Dienstinstanzen

Cloud Run skaliert jede Dienstüberarbeitung, die Anfragen empfängt, automatisch auf die Anzahl der Instanzen, die zur Verarbeitung aller Anfragen nötig sind. Instanzen können viele Anfragen gleichzeitig empfangen. Mit der Einstellung für die Nebenläufigkeit von Anfragen können Sie die maximale Anzahl von Anfragen festlegen, die parallel an jede Instanz einer Version gesendet werden können.

Cloud Run-Jobs

Jeder Job befindet sich in einer bestimmten Google Cloud Region und besteht aus einer oder mehreren Jobaufgaben, die ausgeführt werden, um einen oder mehrere Container auszuführen. Jobaufgaben sind unabhängig und können in einer bestimmten Jobausführung parallel ausgeführt werden.

Cloud Run-Jobausführungen

Wenn ein Job ausgeführt wird, wird eine Jobausführung erstellt, in der alle Jobaufgaben gestartet werden. Alle Aufgaben einer Jobausführung müssen erfolgreich abgeschlossen werden, damit die Jobausführung erfolgreich ist. Sie können Zeitlimits für Aufgaben festlegen und die Anzahl der Wiederholungen im Fall von Aufgabenfehlern angeben.

Wenn eine Aufgabe die maximale Anzahl von Wiederholungsversuchen überschreitet, markiert Cloud Run diese Aufgabe und den Job als fehlgeschlagen. Standardmäßig werden maximal 100 Aufgaben parallel ausgeführt. Sie können aber auch ein niedrigeres Maximum festlegen, wenn Ihre Sicherungsressourcen, z. B. eine Datenbank, dies erfordern.

Cloud Run-Jobaufgaben

Bei jeder Jobausführung werden mehrere Aufgaben parallel ausgeführt, wobei jede Aufgabe eine Instanz ausführt. Cloud Run versucht automatisch, alle fehlgeschlagenen Aufgaben noch einmal auszuführen, je nach Konfiguration des Jobs für „maxRetries“.

Cloud Run-Worker-Pools

Worker-Pools sind eine Cloud Run-Ressource, die speziell für Arbeitslasten ohne Anfragen entwickelt wurde, z. B. Pull-Warteschlangen. Worker-Pools haben die folgenden Funktionen nicht:

  • Kein Endpunkt/keine URL
  • Keine Anforderung, dass der bereitgestellte Container Anfragen an einem Port überwacht
  • Kein Autoscaling

Ähnlich wie bei einem Cloud Run-Dienst wird durch die Bereitstellung oder Aktualisierung eines Worker-Pools eine neue Überarbeitung erstellt.

Worker-Pool-Instanzen können bei Bedarf manuell skaliert werden, um genügend Instanzen für die Arbeitslasten zu skalieren. Bei Bedarf können Sie jedoch einen eigenen Autoscaler erstellen. Ein Beispiel dafür ist der Kafka-Autoscaler, der die Skalierung für Arbeitslasten verarbeitet, die aus der Kafka-Nachrichtenwarteschlange stammen.

Wenn eine Verbindung zu einem VPC-Netzwerk besteht, erhält jede Worker-Pool-Instanz eine IP-Adresse im VPC-Netzwerk und kann Traffic an und von diesem VPC senden und empfangen.