Mit Cloud Run können Sie angeben, welche Überarbeitungen Traffic empfangen sollen. Sie können den von einer Überarbeitung empfangenen Traffic auch als Prozentsatz angeben. Mit diesem Feature können Sie ein Rollback zu einer vorherigen Überarbeitung durchführen, ein Rollout einer Überarbeitung schrittweise vornehmen und den Traffic auf mehrere Überarbeitungen aufteilen. Auf dieser Seite wird beschrieben, wie Sie den Traffic zu Ihren Cloud Run-Überarbeitungen mit diesem Feature verwalten.
Beachten Sie, dass Anpassungen des Traffic-Routings nicht sofort erfolgen. Wenn Sie den Traffic für Überarbeitungen ändern, werden alle aktuell verarbeiteten Anfragen fortgesetzt, bis sie abgeschlossen sind. InFlight-Anfragen werden nicht verworfen und können während der Übergangsphase entweder an eine neue Überarbeitung oder an eine vorherige Überarbeitung weitergeleitet werden.
Wenn Sie Traffic zwischen mehreren Überarbeitungen mit aktivierter Sitzungsaffinität aufteilen, finden Sie unter Sitzungsaffinität und Trafficaufteilung Details zu den Auswirkungen der Sitzungsaffinität auf die Trafficaufteilung.
Erforderliche Rollen
Bitten Sie Ihren Administrator, Ihnen die folgenden IAM-Rollen zu gewähren, um die Berechtigungen zu erhalten, die Sie zum Verwalten von Cloud Run-Diensten und -Überarbeitungen benötigen:
-
Cloud Run Entwickler (
roles/run.developer
) im Cloud Run-Job -
Dienstkontonutzer (
roles/iam.serviceAccountUser
) 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 Service mit Google 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.
Rollback zu einer vorherigen Überarbeitung durchführen
So führen Sie einen Rollback zu einer vorherigen Überarbeitung durch:
Console
Suchen Sie den Dienst in der Liste der Dienste und klicken Sie darauf.
Klicken Sie auf den Tab Überarbeitungen, um eine Liste der aktuellen Überarbeitungen für diesen Dienst aufzurufen.
Klicken Sie in der Liste der Überarbeitungen rechts neben der Überarbeitung, die Sie rückgängig machen möchten, auf das Auslassungssymbol:
Klicken Sie auf Traffic verwalten, um das Formular zum Verwalten von Traffic aufzurufen:
- Wählen Sie in der Drop-down-Liste die vorherige Version aus, zu der Sie zurückkehren möchten.
- Legen Sie den Trafficprozentsatz der vorherigen Überarbeitung auf 100 fest.
- Legen Sie den Prozentsatz der derzeit Traffic bereitstellenden Überarbeitung auf 0 fest.
- Klicken Sie auf Speichern.
gcloud
Verwenden Sie den folgenden Befehl:
gcloud run services update-traffic SERVICE --to-revisions REVISION=100
- Ersetzen Sie SERVICE durch den Namen des Dienstes.
- Ersetzen Sie REVISION durch den Namen der Überarbeitung, zu der Sie einen Rollback durchführen.
YAML
Wenn Sie einen neuen Dienst erstellen, überspringen Sie diesen Schritt. Wenn Sie einen vorhandenen Dienst aktualisieren, laden Sie die zugehörige YAML-Konfiguration herunter:
gcloud run services describe SERVICE --format export > service.yaml
Suchen Sie unter dem Attribut
spec
das Attributtraffic
und aktualisieren Sie es so:apiVersion: serving.knative.dev/v1 kind: Service metadata: name: SERVICE spec: ... traffic: - revisionName: REVISION percent: 100
Ersetzen
- REVISION durch den Namen der Überarbeitung, zu der Sie ein Rollback durchführen.
Ersetzen Sie den Dienst mit dem folgenden Befehl durch die neue Konfiguration:
gcloud run services replace service.yaml
Warten Sie, bis die Aktualisierung abgeschlossen ist: Sie sollten eine Meldung sehen, dass die Überarbeitung, von der aus Sie das Rollback ausführen, bereitgestellt wurde und
0
% des Traffics verarbeitet.
Terraform
Informationen zum Anwenden oder Entfernen einer Terraform-Konfiguration finden Sie unter Grundlegende Terraform-Befehle.
Fügen Sie der Datei .tf
Folgendes hinzu:
Gestaffelter Rollout für Überarbeitungen
So führen Sie schrittweise ein Rollout einer neue Überarbeitung durch:
Console
Suchen Sie den Dienst in der Liste der Dienste und klicken Sie darauf.
Klicken Sie auf Neue Überarbeitung bereitstellen.
Füllen Sie das Bereitstellungsformular wie gewünscht aus, aber stellen Sie sicher, dass das Kästchen Diese Überarbeitung sofort bereitstellen DEAKTIVIERT ist.
Klicken Sie auf Bereitstellen.
Klicken Sie auf Traffic verwalten.
Die neue Überarbeitung wird aufgelistet, aber mit einem Prozentsatz von 0: Derzeit wird darüber kein Traffic bereitgestellt. Füllen Sie das Formular aus:
- Legen Sie dafür den gewünschten Prozentsatz fest, z. B. 5. Beachten Sie, dass der Prozentsatz der aktuell bereitstellenden Version automatisch um diese Menge reduziert wird.
- Klicken Sie auf Speichern.
- Wiederholen Sie diese Schritte unter Traffic verwalten, aber mit geänderten Prozentsätzen, um den Prozentsatz für die neue Überarbeitung zu erhöhen. Sie müssen die Bereitstellung nicht noch einmal ausführen, um die Trafficprozentsätze zu ändern.
gcloud
Stellen Sie die Überarbeitung bereit, für die sie eine schrittweise Einführung vornehmen möchten, und legen Sie die Einstellungen zuerst so fest, dass sie keinen Traffic erhält:
gcloud run deploy --image IMAGE --no-traffic
Ersetzen Sie IMAGE durch das Image, das Sie bereitstellen.
Geben Sie den Prozentsatz des Traffics an, den die neue Überarbeitung verarbeiten soll, z. B. 5 %:
gcloud run services update-traffic SERVICE --to-revisions REVISION=PERCENTAGE
- Ersetzen Sie SERVICE durch den Namen des Dienstes.
- Ersetzen Sie REVISION durch den Namen der Überarbeitung, die Sie schrittweise einführen. Sie können
LATEST
verwenden, um die neueste Überarbeitung anzugeben, z. B.LATEST=5
. - Ersetzen Sie PERCENTAGE durch den Prozentsatz des Traffics, den Sie an die neue Überarbeitung senden möchten, z. B.
5
, um 5 % des Traffics zu senden.
Wenn die Leistung der Überarbeitung zufriedenstellend ist, wiederholen Sie den vorherigen
update-traffic
-Schritt. Erhöhen Sie jedoch den Prozentsatz wie gewünscht.
YAML
Wenn Sie einen neuen Dienst erstellen, überspringen Sie diesen Schritt. Wenn Sie einen vorhandenen Dienst aktualisieren, laden Sie die zugehörige YAML-Konfiguration herunter:
gcloud run services describe SERVICE --format export > service.yaml
Nehmen Sie die gewünschten Konfigurationsänderungen am Dienst vor und geben Sie den gewünschten Überarbeitungsnamen für die neue Überarbeitung an:
apiVersion: serving.knative.dev/v1 kind: Service metadata: name: SERVICE template: metadata: annotations: ... name: REVISION-NAME
Ersetzen
- REVISION-NAME durch den Namen, den die neue Überarbeitung haben soll.
Suchen und aktualisieren Sie unter dem Attribut
spec
das Attributtraffic
, damit die neue Überarbeitung nur eine geringe Menge an Traffic verarbeitet:apiVersion: serving.knative.dev/v1 kind: Service metadata: name: SERVICE spec: ... traffic: - revisionName: REVISION-NEW percent: PERCENT-NEW - revisionName: REVISION-FORMER percent: PERCENT-FORMER
Beachten Sie, dass die Prozentsätze insgesamt 100 ergeben müssen. Ersetzen
- REVISION-NEW durch den Namen der Überarbeitung, die Sie schrittweise einführen.
- REVISION-FORMER durch den Namen der aktuell bereitstellenden Überarbeitung.
- PERCENT-NEW durch den Traffic-Prozentsatz, den Sie an die neue Überarbeitung senden möchten. Verwenden Sie beispielsweise
10
, um 10 % des Traffics an diese Überarbeitung zu senden. - PERCENT-FORMER durch den Traffic-Prozentsatz, den Sie an die alte Überarbeitung senden möchten
Warten Sie, bis die Aktualisierung abgeschlossen ist: Sie sollten eine Meldung sehen, dass die neue Überarbeitung, die Sie schrittweise einführen, bereitgestellt wurde und den von Ihnen eingegebenen Traffic-Prozentsatz verarbeitet.
Terraform
Fügen Sie der Datei .tf
Folgendes hinzu und aktualisieren Sie den Trafficprozentsatz von der vorherigen Überarbeitung nach und nach auf die neueste Überarbeitung:
Beachten Sie, dass für jede Trafficänderung ein weiteres terraform apply
ausgeführt werden muss.
Um die Änderungen anzuwenden, geben Sie terraform apply
ein.
Traffic auf mehrere Überarbeitungen aufteilen
So teilen Sie den Traffic auf zwei oder mehr Überarbeitungen auf:
Console
Suchen Sie den Dienst in der Liste der Dienste und klicken Sie darauf.
Klicken Sie auf Traffic verwalten.
Die derzeit bereitstellende neue Überarbeitung wird aufgelistet. Füllen Sie das Formular aus:
- Legen Sie den Prozentsatz der derzeit bereitstellenden Überarbeitung auf die gewünschte Aufteilung fest.
- Wählen Sie mithilfe der Drop-down-Liste eine der vorherigen Überarbeitungen aus und legen Sie die gewünschte prozentuale Aufteilung fest.
- Klicken Sie auf Überarbeitung hinzufügen, wählen Sie die gewünschte Überarbeitung aus und legen Sie den Prozentsatz für die gewünschte Aufteilung fest, um den Traffic auf mehrere Überarbeitungen aufzuteilen.
- Klicken Sie auf Speichern.
gcloud
Geben Sie die Überarbeitungen und den Prozentsatz des Traffics für jede Überarbeitung in einer durch Kommas getrennten Liste an:
gcloud run services update-traffic SERVICE --to-revisions LIST
- Ersetzen Sie SERVICE durch den Namen des Dienstes.
- Ersetzen Sie LIST durch eine durch Kommas getrennte Liste von Überarbeitungen und Prozentsätzen:
REVISION1 = PERCENTAGE1, REVISION2 = PERCENTAGE2, REVISIONn = PERCENTAGEx
Beispiel:hello2-00005-red=25,hello2-00001-bod=25,hello2-00002-nan=50
.
YAML
Wenn Sie einen neuen Dienst erstellen, überspringen Sie diesen Schritt. Wenn Sie einen vorhandenen Dienst aktualisieren, laden Sie die zugehörige YAML-Konfiguration herunter:
gcloud run services describe SERVICE --format export > service.yaml
Suchen und aktualisieren Sie unter dem Attribut
spec
das Attributtraffic
, damit die neue Überarbeitung nur eine geringe Menge an Traffic verarbeitet:apiVersion: serving.knative.dev/v1 kind: Service metadata: name: SERVICE spec: ... traffic: - revisionName: REVISION-A percent: PERCENT-A - revisionName: REVISION-B percent: PERCENT-B - revisionName: REVISION-C percent: PERCENT-C
Beachten Sie, dass die Prozentsätze insgesamt 100 ergeben müssen. Ersetzen
- REVISION-A, REVISION-B, REVISION-C durch die Überarbeitungen, denen Sie Traffic zuweisen.
- PERCENT-A, PERCENT-B, PERCENT-C durch den jeweiligen Prozentsatz der entsprechenden Überarbeitung.
Ersetzen Sie den Dienst mit dem folgenden Befehl durch die neue Konfiguration:
gcloud run services replace service.yaml
Warten Sie, bis die Aktualisierung abgeschlossen ist: Sie sollten eine Meldung sehen, dass die neue Überarbeitung, die Sie schrittweise einführen, bereitgestellt wurde und
5
% (oder den von Ihnen angegebenen schrittweisen Wert) des Traffics verarbeitet.
Terraform
Fügen Sie der Datei .tf
Folgendes hinzu:
Um die Änderungen anzuwenden, geben Sie terraform apply
ein.
Gesamten Traffic an die neueste Überarbeitung senden
Wenn Sie eine neue Überarbeitung bereitstellen, können Sie diese Überarbeitung und alle zukünftigen Überarbeitungen anweisen, so schnell wie möglich 100 % des Traffics bereitzustellen. Damit werden alle bestehenden Trafficaufteilungen überschrieben:
Console
Suchen Sie den Dienst in der Liste der Dienste und klicken Sie darauf.
Klicken Sie auf Neue Überarbeitung bereitstellen.
Füllen Sie das Bereitstellungsformular wie gewünscht aus und aktivieren Sie das Kästchen Diese Überarbeitung sofort bereitstellen. Dadurch wird die gegebenenfalls vorhandene Trafficaufteilung überschrieben, wobei die neue Überarbeitung 100 % des Traffics bereitstellt.
Klicken Sie auf Bereitstellen.
gcloud
So senden Sie den gesamten Traffic an die zuletzt bereitgestellte Überarbeitung:
gcloud run services update-traffic SERVICE --to-latest
Ersetzen Sie SERVICE durch den Namen des Dienstes.
YAML
Wenn Sie einen neuen Dienst erstellen, überspringen Sie diesen Schritt. Wenn Sie einen vorhandenen Dienst aktualisieren, laden Sie die zugehörige YAML-Konfiguration herunter:
gcloud run services describe SERVICE --format export > service.yaml
Suchen Sie unter dem Attribut
spec
das Attributtraffic
und aktualisieren Sie es so:apiVersion: serving.knative.dev/v1 kind: Service metadata: name: SERVICE spec: ... traffic: - latestRevision: true percent: 100
Ersetzen Sie den Dienst mit dem folgenden Befehl durch die neue Konfiguration:
gcloud run services replace service.yaml
Warten Sie, bis die Aktualisierung abgeschlossen ist: Sie sollten eine Meldung sehen, dass die (neueste) Überarbeitung bereitgestellt wurde und
100
% des Traffics verarbeitet.
Terraform
Fügen Sie der Datei .tf
Folgendes hinzu:
Um die Änderungen anzuwenden, geben Sie terraform apply
ein.
Tags für Tests, Trafficmigration und Rollbacks verwenden
Verwenden Sie Mindestanzahl an instanzen auf Dienstebene oder entfernen Sie Tags für Überarbeitungen, wenn Sie sie nicht mehr benötigen, um Abrechnungskosten für getaggte Überarbeitungen zu vermeiden.
Ein häufiger Anwendungsfall für dieses Feature ist der Test und die Prüfung einer neuen Dienstüberarbeitung, bevor Traffic bereitgestellt wird. Dazu sind beispielhaft folgende Schritte in dieser Reihenfolge erforderlich:
- Führen Sie Einbindungstests für einen Container während der Entwicklung aus.
- Stellen Sie den Container in einem Google Cloud-Projekt bereit, das Sie nur für das Staging ohne Trafficbereitstellung verwenden, und testen Sie es mit einer getaggten Überarbeitung.
- Stellen Sie das Projekt für die Produktion bereit, ohne Traffic zu verarbeiten, und testen Sie es mit einer getaggten Überarbeitung in der Produktion.
- Migrieren Sie den Traffic zur getaggten Überarbeitung.
Neue getaggte Überarbeitung bereitstellen
So stellen Sie eine neue Überarbeitung eines vorhandenen Dienstes für die Produktion bereit:
gcloud
gcloud run deploy myservice --image IMAGE_URL --no-traffic --tag TAG_NAME
Ersetzen
- IMAGE_URL durch die URL Ihres Images.
- TAG_NAME durch den Tag-Namen in Kleinbuchstaben.
Mit dem Tag können Sie die neue Überarbeitung direkt mit einer bestimmten URL testen, ohne Traffic bereitzustellen. Die URL beginnt mit dem von Ihnen angegebenen Tag-Namen. Wenn Sie beispielsweise den Tag-Namen green
für den Dienst myservice
verwendet haben, wird die getaggte Überarbeitung unter der URL https://green---myservice-abcdef.a.run.app
getestet.
Terraform
Fügen Sie der Datei .tf
Folgendes hinzu und aktualisieren Sie den Trafficprozentsatz nach und nach von der alten Überarbeitung auf die neueste Überarbeitung mit dem neuen Tag.
Beachten Sie, dass für jede Trafficänderung ein weiteres terraform apply
ausgeführt werden muss.
Um die Änderungen anzuwenden, geben Sie terraform apply
ein.
Tag entfernen
So entfernen Sie ein Tag von einer Überarbeitung:
Console
Suchen Sie den Dienst in der Liste der Dienste und klicken Sie darauf.
Gehen Sie im gewünschten Dienst zum Abschnitt Revisions und wählen Sie die Überarbeitung aus, für die Sie das vorhandene Tag entfernen möchten.
Bewegen Sie den Mauszeiger auf die Spalte Überarbeitungs-URLs (Tags) und klicken Sie auf das Stiftsymbol (siehe unten).
Klicken Sie im Pop-up-Menü Überarbeitungs-URLs auf das Papierkorbsymbol, um das aktuelle Tag zu entfernen, das in Ihrer Überarbeitung verwendet wird.
Klicken Sie auf Speichern.
gcloud
So entfernen Sie ein Überarbeitungs-Tag:
gcloud run services update-traffic SERVICE --remove-tags TAG_NAME
Ersetzen
- TAG_NAME durch den Namen des Tags, zu dem Sie Traffic migrieren.
- SERVICE durch den Namen des Dienstes, von dem Sie das Tag entfernen
YAML
Wenn Sie einen neuen Dienst erstellen, überspringen Sie diesen Schritt. Wenn Sie einen vorhandenen Dienst aktualisieren, laden Sie die zugehörige YAML-Konfiguration herunter:
gcloud run services describe SERVICE --format export > service.yaml
Nehmen Sie die gewünschten Konfigurationsänderungen am Dienst vor.
Suchen und entfernen Sie unter dem Attribut
spec
das Attributtag
für die getaggte Überarbeitung:apiVersion: serving.knative.dev/v1 kind: Service metadata: name: SERVICE spec: ... traffic: - revisionName: REVISION tag: TAG_NAME percent: PERCENT-NEW
Ersetzen Sie den Dienst mit dem folgenden Befehl durch die neue Konfiguration:
gcloud run services replace service.yaml
Terraform
Fügen Sie der Datei .tf
Folgendes hinzu:
Um die Änderungen anzuwenden, geben Sie terraform apply
ein.
Traffic zu einer getaggten Überarbeitung migrieren
Nachdem Sie geprüft haben, ob die neue Überarbeitung ordnungsgemäß funktioniert, können Sie den Traffic mithilfe der Google Cloud Console, der gcloud-Befehlszeile, Terraform oder einer YAML-Datei dorthin migrieren:
Console
Suchen Sie den Dienst in der Liste der Dienste und klicken Sie darauf:
Wählen Sie die getaggte Überarbeitung aus, an die Sie Traffic senden möchten:
Klicken Sie auf Traffic verwalten.
Suchen Sie nach dem Namen der getaggten Überarbeitung. Dieser ist aufgeführt, aber mit einem Prozentsatz von 0. Derzeit wird darüber also kein Traffic bereitgestellt. Gehen Sie im Formular Traffic verwalten* so vor:
- Legen Sie dafür den gewünschten Prozentsatz fest, z. B. 5. Beachten Sie, dass der Prozentsatz der aktuell bereitstellenden Version automatisch um diese Menge reduziert wird.
- Klicken Sie auf Speichern.
- Wiederholen Sie nach Bedarf innerhalb von Stunden oder Tagen die Schritte zur Verwaltung des Traffics. Erhöhen Sie dabei jeweils den Prozentsatz für die getaggte Überarbeitung. Sie müssen die Bereitstellung nicht noch einmal ausführen, um die Trafficprozentsätze zu ändern.
gcloud
So migrieren Sie Traffic zu einem bestimmten Überarbeitungs-Tag:
gcloud run services update-traffic myservice --to-tags TAG_NAME=TRAFFIC_PERCENT
Ersetzen
- TAG_NAME durch den Namen des Tags, zu dem Sie Traffic migrieren.
- TRAFFIC_PERCENT durch den Prozentsatz des Traffics, den Sie für die getaggte Überarbeitung bereitstellen möchten, z. B.
1
.
YAML
Wenn Sie einen neuen Dienst erstellen, überspringen Sie diesen Schritt. Wenn Sie einen vorhandenen Dienst aktualisieren, laden Sie die zugehörige YAML-Konfiguration herunter:
gcloud run services describe SERVICE --format export > service.yaml
Nehmen Sie die gewünschten Konfigurationsänderungen am Dienst vor.
Suchen und aktualisieren Sie unter dem Attribut
spec
das Attributtraffic
für die getaggte Überarbeitung, damit sie nur wenig Traffic verarbeitet:apiVersion: serving.knative.dev/v1 kind: Service metadata: name: SERVICE spec: ... traffic: - revisionName: REVISION tag: TAG_NAME percent: PERCENT-NEW - revisionName: REVISION-FORMER percent: PERCENT-FORMER
Die Prozentsätze müssen insgesamt 100 ergeben. Ersetzen
- REVISION durch den Namen der getaggten Überarbeitung.
- TAG_NAME durch den Namen des Tags, das Sie schrittweise einführen.
- PERCENT-NEW durch den Prozentsatz des Traffics, den Sie an die getaggte Überarbeitung senden möchten, beispielsweise
10
, um 10 % des Traffics an diese Überarbeitung zu senden. - REVISION-FORMER durch den Namen der aktuell bereitstellenden Überarbeitung.
- PERCENT-FORMER durch den Traffic-Prozentsatz, den Sie an die alte Überarbeitung senden möchten.
Ersetzen Sie den Dienst mit dem folgenden Befehl durch die neue Konfiguration:
gcloud run services replace service.yaml
Warten Sie, bis die Aktualisierung abgeschlossen ist: Sie sollten eine Meldung sehen, dass die neue Überarbeitung, die Sie schrittweise einführen, bereitgestellt wurde und den von Ihnen eingegebenen Traffic-Prozentsatz verarbeitet.
Terraform
Fügen Sie der Datei .tf
Folgendes hinzu:
Aktualisieren Sie nach Bedarf innerhalb von Stunden oder Tagen nach und nach von einem Tag zum anderen und erhöhen Sie dabei den Prozentsatz für die getaggte Überarbeitung.
Geben nach jeder Änderung terraform apply
ein, um die Änderungen anzuwenden.
Nächste Schritte
- Mehr dazu, wie Sie mit Cloud Deploy eine Continuous Delivery-Pipeline für die Bereitstellung in Cloud Run einrichten