Rollbacks, graduelle Roll-outs und Traffic-Migration

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 Version durchführen, eine Version schrittweise bereitstellen und den Traffic auf mehrere Versionen aufteilen. Auf dieser Seite wird beschrieben, wie Sie den Traffic zu Ihren Cloud Run-Überarbeitungen mit diesem Feature verwalten.

Die Anpassung der Verkehrsführung erfolgt nicht sofort. 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.

Aufteilung des Traffics und Sitzungsaffinität

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.

Lebenszyklus von Traffic-Aufteilungen

Wenn Sie den Traffic auf mehrere Überarbeitungen aufteilen oder einer vorherigen Überarbeitung Traffic zuweisen, wird dieses Muster für die Aufteilung des Traffics für alle nachfolgenden Bereitstellungen verwendet. Wenn Sie wieder nur die neueste Version ohne Aufteilung des Traffics verwenden möchten, senden Sie den gesamten Traffic an die neueste Version.

Erforderliche Rollen

Um die Berechtigungen zu erhalten, die Sie zum Verwalten von Cloud Run-Diensten und ‑Überarbeitungen benötigen, bitten Sie Ihren Administrator, Ihnen die folgenden IAM-Rollen zuzuweisen:

  • Wenn Sie einen Dienst verwalten, der aus einem Container-Image bereitgestellt wurde:
  • Wenn Sie einen Dienst verwalten, der aus Quellcode bereitgestellt wurde:
    • Cloud Run Source Developer (roles/run.sourceDeveloper) für Ihr Projekt
    • Service Usage Consumer (roles/serviceusage.serviceUsageConsumer) für Ihr Projekt
    • Dienstkontonutzer (roles/iam.serviceAccountUser) für die Dienstidentität
    • Weisen Sie dem Cloud Build-Dienstkonto im Projekt außerdem die Rolle Cloud Run Builder (roles/run.builder) zu. Das Build-Dienstkonto ist für das Erstellen Ihres Dienstes verantwortlich und ist standardmäßig das Compute Engine-Standarddienstkonto.

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 mitCloud de Confiance -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

  1. Wechseln Sie in der Cloud de Confiance by S3NS Console zur Seite Cloud Run-Dienste:

    Zu Cloud Run

  2. Suchen Sie den Dienst in der Liste der Dienste und klicken Sie darauf.

  3. Klicken Sie auf den Tab Überarbeitungsverlauf, um eine Liste der aktuellen Überarbeitungen für diesen Dienst aufzurufen.

  4. Klicken Sie in der Liste der Überarbeitungen rechts neben der Überarbeitung, die Sie rückgängig machen möchten, auf das Auslassungssymbol:

  5. Klicken Sie auf Traffic verwalten, um die Optionen für die Traffic-Verwaltung aufzurufen.

  6. Wählen Sie Gesamten Traffic an eine Version senden und dann die Version aus dem Drop-down-Menü aus.

  7. 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

  1. 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
  2. Suchen Sie unter dem Attribut spec das Attribut traffic 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 Version, auf die Sie zurücksetzen möchten.
  3. Ersetzen Sie den Dienst mit dem folgenden Befehl durch die neue Konfiguration:

    gcloud run services replace service.yaml
  4. 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 Ressource google_cloud_run_v2_service in Ihrer Terraform-Konfiguration Folgendes hinzu:

resource "google_cloud_run_v2_service" "default" {
  name     = "my-service"
  location = "us-central1"

  deletion_protection = false # set to true to prevent destruction of the resource

  template {}

  traffic {
    percent = 100
    # This revision needs to already exist
    revision = "green"
    type     = "TRAFFIC_TARGET_ALLOCATION_TYPE_REVISION"

  }
}

Gestaffelter Rollout für Überarbeitungen

So führen Sie schrittweise ein Rollout einer neue Überarbeitung durch:

Console

  1. Rufen Sie in der Cloud de Confiance by S3NS Console die Seite Cloud Run-Dienste auf:

    Zu Cloud Run

  2. Wählen Sie einen Dienst in der Liste der Dienste aus.

  3. Konfigurieren Sie den Dienst nach Bedarf.

  4. Klicken Sie auf Unterschied ansehen und erneut bereitstellen.

  5. Achten Sie darauf, dass die Option Diese Überarbeitung sofort bereitstellen nicht ausgewählt ist.

  6. Klicken Sie auf Änderungen bereitstellen.

  7. Klicken Sie auf den Tab Überarbeitungsverlauf. Wenn die neue Version noch nicht aufgeführt ist, klicken Sie auf den Button zum Aktualisieren.

  8. Klicken Sie in der Liste der Überarbeitungen rechts neben der Überarbeitung, die Sie bereitstellen möchten, auf das Dreipunkt-Menü.

  9. Klicken Sie auf Traffic verwalten, um die Optionen zum Verwalten von Traffic aufzurufen.

  10. Klicken Sie auf Traffic auf mehrere Versionen aufteilen.

  11. Wählen Sie die Versionen aus, auf die der Traffic aufgeteilt werden soll, und den Prozentsatz des Traffics für jede Version.

  12. Klicken Sie auf Speichern.

gcloud

So stellen Sie einen Dienst aus einem Container-Image bereit:

  1. 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:

    • So stellen Sie einen Dienst aus Quellcode bereit:

      gcloud run deploy --image IMAGE --no-traffic

      Ersetzen Sie IMAGE durch das Image, das Sie bereitstellen.

    • So stellen Sie einen Dienst aus Quellcode bereit:

      gcloud run deploy SERVICE --source . --no-traffic

      Ersetzen Sie SERVICE durch den Namen Ihres Dienstes.

  2. 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.
  3. Wenn die Leistung der Überarbeitung zufriedenstellend ist, wiederholen Sie den vorherigen update-traffic-Schritt. Erhöhen Sie jedoch den Prozentsatz wie gewünscht.

YAML

  1. 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
  2. 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
    spec:
     template:
       metadata:
         annotations:
         ...
         name: REVISION-NAME
    

    Ersetzen

    • REVISION-NAME durch den Namen, den die neue Überarbeitung haben soll.
  3. Suchen und aktualisieren Sie unter dem Attribut spec das Attribut traffic, 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 Serving-Ü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
  4. 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 schrittweise von der vorherigen Überarbeitung zur neuesten Überarbeitung. Beachten Sie, dass für jede Trafficänderung ein weiteres terraform apply ausgeführt werden muss.

resource "google_cloud_run_v2_service" "default" {
  name     = "my-service"
  location = "us-central1"

  deletion_protection = false # set to true to prevent destruction of the resource

  template {
    containers {
      # Image or image tag must be different from previous revision
      image = "us-docker.pkg.dev/cloudrun/container/hello"
    }
  }

  # Define the traffic split for each revision
  # https://registry.terraform.io/providers/hashicorp/google/latest/docs/resources/cloud_run_v2_service#traffic
  traffic {
    percent = 100
    # This revision needs to already exist
    revision = "green"
    type     = "TRAFFIC_TARGET_ALLOCATION_TYPE_REVISION"
  }

  traffic {
    # Deploy new revision with 0% traffic
    percent = 0
    type    = "TRAFFIC_TARGET_ALLOCATION_TYPE_LATEST"
  }
}

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

  1. Wechseln Sie in der Cloud de Confiance by S3NS Console zur Seite Cloud Run-Dienste:

    Zu Cloud Run

  2. Suchen Sie den Dienst in der Liste der Dienste und klicken Sie darauf.

  3. Klicken Sie auf den Tab Überarbeitungsverlauf.

  4. Klicken Sie auf Traffic verwalten.

  5. Die derzeit bereitgestellte neue Version wird aufgeführt. Füllen Sie das Formular aus:

    1. Legen Sie den Prozentsatz der aktuell bereitgestellten Version auf den ausgewählten Split fest.
    2. Wählen Sie eine der vorherigen Versionen aus der Liste aus und legen Sie die gewünschte prozentuale Aufteilung fest.
    3. Wenn Sie den Traffic auf mehrere Überarbeitungen aufteilen möchten, klicken Sie auf Überarbeitung hinzufügen, wählen Sie die Überarbeitung aus und legen Sie den Prozentsatz für die gewünschte Aufteilung fest.
    4. 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

  1. 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
  2. Suchen und aktualisieren Sie unter dem Attribut spec das Attribut traffic, 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.
  3. Ersetzen Sie den Dienst mit dem folgenden Befehl durch die neue Konfiguration:

    gcloud run services replace service.yaml
  4. 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 Ihrer Terraform-Datei Folgendes hinzu:

resource "google_cloud_run_v2_service" "default" {
  name     = "my-service"
  location = "us-central1"

  deletion_protection = false # set to true to prevent destruction of the resource

  template {
    containers {
      image = "us-docker.pkg.dev/cloudrun/container/hello"
    }
    revision = "green"
  }

  # Define the traffic split for each revision
  # https://registry.terraform.io/providers/hashicorp/google/latest/docs/resources/cloud_run_v2_service#traffic
  traffic {
    percent  = 25
    revision = "green"
    type     = "TRAFFIC_TARGET_ALLOCATION_TYPE_REVISION"
  }

  traffic {
    percent = 75
    # This revision needs to already exist
    revision = "blue"
    type     = "TRAFFIC_TARGET_ALLOCATION_TYPE_REVISION"
  }
}

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

  1. Rufen Sie in der Cloud de Confiance by S3NS Console die Seite Cloud Run-Dienste auf:

    Zu Cloud Run

  2. Suchen Sie den Dienst in der Liste der Dienste und klicken Sie darauf.

  3. Konfigurieren Sie Ihren Dienst und klicken Sie dann auf Diff ansehen und noch einmal bereitstellen.

  4. Achten Sie darauf, dass das Kästchen Diese Überarbeitung sofort bereitstellen ausgewählt ist. Dadurch wird jede vorhandene Aufteilung des Traffics überschrieben und die neue Version verarbeitet 100 % des Traffics.

  5. Klicken Sie auf Änderungen 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

  1. 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
  2. Suchen Sie unter dem Attribut spec das Attribut traffic und aktualisieren Sie es so:

    apiVersion: serving.knative.dev/v1
    kind: Service
    metadata:
     name: SERVICE
    spec:
    ...
      traffic:
      - latestRevision: true
        percent: 100
    
  3. Ersetzen Sie den Dienst mit dem folgenden Befehl durch die neue Konfiguration:

    gcloud run services replace service.yaml
  4. 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 Ihrer Terraform-Datei Folgendes hinzu:

resource "google_cloud_run_v2_service" "default" {
  name     = "my-service"
  location = "us-central1"

  deletion_protection = false # set to true to prevent destruction of the resource

  template {}

  traffic {
    percent = 100
    type    = "TRAFFIC_TARGET_ALLOCATION_TYPE_LATEST"
  }
}

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:

  1. Führen Sie Einbindungstests für einen Container während der Entwicklung aus.
  2. Stellen Sie den Container in einem Cloud de Confiance by S3NS -Projekt bereit, das Sie nur für das Staging verwenden, ohne Traffic bereitzustellen, und testen Sie ihn mit einer getaggten Überarbeitung.
  3. Stellen Sie das Projekt für die Produktion bereit, ohne Traffic zu verarbeiten, und testen Sie es mit einer getaggten Überarbeitung in der Produktion.
  4. 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 Sie:

  • 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.s3nsrun.fr getestet.

YAML

  1. 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
  2. Suchen und aktualisieren Sie unter dem Attribut traffic das Attribut tag, das der Version entspricht, der Sie ein Tag hinzufügen möchten:

    apiVersion: serving.knative.dev/v1
    kind: Service
    metadata:
     name: SERVICE
    spec:
    ...
      traffic:
      - revisionName: REVISION
        percent: 100
      - revisionName: REVISION-A
        tag: TAG-A
      - revisionName: REVISION-B
        tag: TAG-B
      - revisionName: REVISION-C
        tag: TAG-C
    

    Ersetzen Sie:

    • TAG-A, TAG-B, TAG-C mit dem Tag, das jeder Überarbeitung zugeordnet ist.
    • REVISION durch den Namen einer vorhandenen Überarbeitung, an die Sie den gesamten Traffic senden möchten.
  3. Erstellen oder aktualisieren Sie den Dienst mit dem folgenden Befehl:

    gcloud run services replace service.yaml

    Der Befehl gcloud run services replace verwendet standardmäßig die Datei service.yaml, falls vorhanden.

Terraform

Fügen Sie Ihrer Terraform-Datei Folgendes hinzu und aktualisieren Sie den Traffic-Prozentsatz schrittweise von der alten Version auf die neueste Version mit dem neuen Tag. Beachten Sie, dass für jede Trafficänderung ein weiteres terraform apply ausgeführt werden muss.

resource "google_cloud_run_v2_service" "default" {
  name     = "my-service"
  location = "us-central1"

  deletion_protection = false # set to "true" in production

  template {
    containers {
      # image or tag must be different from previous revision
      image = "us-docker.pkg.dev/cloudrun/container/hello"
    }
    revision = "blue"
  }

  # Define the traffic split for each revision
  # https://registry.terraform.io/providers/hashicorp/google/latest/docs/resources/cloud_run_v2_service#traffic
  traffic {
    percent = 100
    # This revision needs to already exist
    revision = "green"
    type     = "TRAFFIC_TARGET_ALLOCATION_TYPE_REVISION"
  }

  traffic {
    # Deploy new revision with 0% traffic
    percent  = 0
    revision = "blue"
    tag      = "tag-name"
    type     = "TRAFFIC_TARGET_ALLOCATION_TYPE_REVISION"
  }
}

Um die Änderungen anzuwenden, geben Sie terraform apply ein.

Tag entfernen

So entfernen Sie ein Tag von einer Version:

Console

  1. Rufen Sie in der Cloud de Confiance by S3NS Console die Seite Cloud Run-Dienste auf:

    Zu Cloud Run

  2. Wählen Sie einen Dienst in der Liste der Dienste aus.

  3. Rufen Sie den Tab Überarbeitungsverlauf auf.

  4. Klicken Sie neben dem Tag, das Sie löschen möchten, auf das Symbol Versions-Tags verwalten.

  5. Klicken Sie auf das Symbol Löschen, um das aktuelle Tag zu entfernen, das in Ihrer Überarbeitung verwendet wird.

  6. 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

  1. 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
  2. Nehmen Sie die gewünschten Konfigurationsänderungen am Dienst vor.

  3. Suchen und entfernen Sie unter dem Attribut spec das Attribut tag 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
    
  4. Ersetzen Sie den Dienst mit dem folgenden Befehl durch die neue Konfiguration:

    gcloud run services replace service.yaml

Terraform

Fügen Sie Ihrer Terraform-Datei Folgendes hinzu:

resource "google_cloud_run_v2_service" "default" {
  name     = "my-service"
  location = "us-central1"

  deletion_protection = false # set to true to prevent destruction of the resource

  template {}

  # Define the traffic split for each revision
  # https://registry.terraform.io/providers/hashicorp/google/latest/docs/resources/cloud_run_v2_service#traffic
  traffic {
    percent = 100
    # This revision needs to already exist
    revision = "green"
    type     = "TRAFFIC_TARGET_ALLOCATION_TYPE_REVISION"
  }

  traffic {
    # No tags for this revision
    # Keep revision at 0% traffic
    percent = 0
    # This revision needs to already exist
    revision = "blue"
    type     = "TRAFFIC_TARGET_ALLOCATION_TYPE_REVISION"
  }
}

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 Cloud de Confiance Console, der Google Cloud CLI-Befehlszeile, Terraform oder einer YAML-Datei dorthin migrieren:

Console

  1. Wechseln Sie in der Cloud de Confiance by S3NS Console zur Seite Cloud Run-Dienste:

    Zu Cloud Run

  2. Suchen Sie den Dienst in der Liste der Dienste und klicken Sie darauf.

  3. Wählen Sie die getaggte Überarbeitung aus, an die Sie Traffic senden möchten.

  4. Klicken Sie auf Traffic verwalten.

  5. Klicken Sie auf Gesamten Traffic an eine Version senden, wenn die Version 100% des Traffics erhalten soll, oder auf Traffic auf mehrere Versionen aufteilen, um den Traffic auf mehrere Versionen zu verteilen.

  6. Wählen Sie die Versionen aus dem Menü aus und geben Sie gegebenenfalls den Prozentsatz des Traffics an.

  7. Klicken Sie auf Speichern. 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

  1. 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
  2. Nehmen Sie die gewünschten Konfigurationsänderungen am Dienst vor.

  3. Suchen und aktualisieren Sie unter dem Attribut spec das Attribut traffic 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.
  4. Ersetzen Sie den Dienst mit dem folgenden Befehl durch die neue Konfiguration:

    gcloud run services replace service.yaml
  5. 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:

resource "google_cloud_run_v2_service" "default" {
  name     = "my-service"
  location = "us-central1"

  deletion_protection = false # set to true to prevent destruction of the resource

  template {}

  # Define the traffic split for each revision
  # https://registry.terraform.io/providers/hashicorp/google/latest/docs/resources/cloud_run_v2_service#traffic
  traffic {
    # Update revision to 50% traffic
    percent = 50
    # This revision needs to already exist
    revision = "green"
    type     = "TRAFFIC_TARGET_ALLOCATION_TYPE_REVISION"
  }

  traffic {
    # Update tag to 50% traffic
    percent = 50
    # This tag needs to already exist
    tag = "tag-name"
  }
}

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