Rollbacks, graduelle Roll-outs und Traffic-Migration

Mit der Knative-Bereitstellung können Sie angeben, welche Versionen Traffic empfangen sollen, und den Traffic-Prozentsatz angeben, der von einer Überarbeitung empfangen wird. Mit diesem Feature können Sie ein Rollback zu einer vorherigen Überarbeitung durchführen, eine Überarbeitung schrittweise einführen (auch als Blau/Grün-Bereitstellung bezeichnet) und den Traffic auf mehrere Überarbeitungen aufteilen. Auf dieser Seite wird beschrieben, wie Sie mit diesem Feature den Traffic zu Ihren Knative-Bereitstellungsversionen verwalten.

Rollback zu einer vorherigen Überarbeitung durchführen

So führen Sie einen Rollback zu einer vorherigen Überarbeitung durch:

Console

  1. Rufen Sie in der Google Cloud Console die Knative-Bereitstellung auf:

    Zur Knative-Bereitstellung

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

  3. Klicken Sie auf den Tab Überarbeitungen, 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 das Formular zum Verwalten von Traffic aufzurufen:

    1. Wählen Sie in der Drop-down-Liste die vorherige Version aus, zu der Sie zurückkehren möchten.
    2. Legen Sie den Trafficprozentsatz der vorherigen Überarbeitung auf 100 fest.
    3. Legen Sie den Prozentsatz der derzeit Traffic bereitstellenden Überarbeitung auf 0 fest.
    4. Klicken Sie auf Speichern.

Befehlszeile

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

Sie können die Konfiguration eines vorhandenen Dienstes in eine YAML-Datei herunterladen – mit dem gcloud run services describe-Befehl mithilfe des Flags --format=export. Sie können diese YAML-Datei dann ändern und diese Änderungen mit dem Befehl gcloud run services replace bereitstellen. Sie müssen sicherstellen, dass Sie nur die angegebenen Attribute ändern.

  1. Laden Sie die Konfiguration des Dienstes in eine Datei mit dem Namen service.yaml im lokalen Arbeitsbereich herunter:

    gcloud run services describe SERVICE --format export > service.yaml

    Ersetzen Sie SERVICE durch den Namen Ihres Knative-Bereitstellungsdienstes.

  2. Aktualisieren Sie in Ihrer lokalen Datei das Attribut traffic, das sich unter spec befindet:

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

    Ersetzen Sie

    • REVISION durch den Namen der Überarbeitung, zu der Sie ein Rollback durchführen.
  3. Ersetzen Sie den Dienst mit dem folgenden Befehl durch die neue Konfiguration:

    gcloud run services replace service.yaml

Überarbeitung schrittweise einführen

So führen Sie schrittweise eine neue Überarbeitung ein (Blau/Grün-Bereitstellung):

Console

  1. Rufen Sie in der Google Cloud Console die Knative-Bereitstellung auf:

    Zur Knative-Bereitstellung

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

  3. Klicken Sie auf Neue Überarbeitung bereitstellen.

  4. Füllen Sie das Bereitstellungsformular wie gewünscht aus, aber stellen Sie sicher, dass das Kästchen Diese Überarbeitung sofort bereitstellen DEAKTIVIERT ist.

  5. Klicken Sie auf Bereitstellen.

  6. Klicken Sie auf Traffic verwalten.

  7. Die neue Überarbeitung wird aufgelistet, aber mit einem Prozentsatz von 0: Derzeit wird darüber kein Traffic bereitgestellt. Füllen Sie das Formular aus:

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

Befehlszeile

  1. Um die Überarbeitung, die Sie schrittweise ausrollen möchten, zuerst so einzustellen, dass sie keinen Traffic empfängt, verwenden Sie den update-Befehl mit dem Parameter --no-traffic an:

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

    Ersetzen Sie IMAGE durch das Image, das Sie bereitstellen.

  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

Sie können die Konfiguration eines vorhandenen Dienstes in eine YAML-Datei herunterladen – mit dem gcloud run services describe-Befehl mithilfe des Flags --format=export. Sie können diese YAML-Datei dann ändern und diese Änderungen mit dem Befehl gcloud run services replace bereitstellen. Sie müssen sicherstellen, dass Sie nur die angegebenen Attribute ändern.

  1. Laden Sie die Konfiguration des Dienstes in eine Datei mit dem Namen service.yaml im lokalen Arbeitsbereich herunter:

    gcloud run services describe SERVICE --format export > service.yaml

    Ersetzen Sie SERVICE durch den Namen Ihres Knative-Bereitstellungsdienstes.

  2. Nehmen Sie die gewünschten Änderungen an der Konfiguration des Dienstes vor, wie auf den verschiedenen Konfigurationsseiten beschrieben, und geben Sie den Namen an, den Sie für die neue Überarbeitung verwenden möchten:

    apiVersion: serving.knative.dev/v1
    kind: Service
    metadata:
     name: SERVICE
    template:
      metadata:
        annotations:
          ...
        name: REVISION-NAME
     ```
    
    Replace
    
    • 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 Sie

    • 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

Traffic auf mehrere Überarbeitungen aufteilen

So teilen Sie den Traffic auf zwei oder mehr Überarbeitungen auf:

Console

  1. Rufen Sie in der Google Cloud Console die Knative-Bereitstellung auf:

    Zur Knative-Bereitstellung

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

  3. Klicken Sie auf Traffic verwalten.

  4. Die derzeit bereitstellende neue Überarbeitung wird aufgelistet. Füllen Sie das Formular aus:

    1. Legen Sie den Prozentsatz der derzeit bereitstellenden Überarbeitung auf die gewünschte Aufteilung fest.
    2. Wählen Sie mithilfe der Drop-down-Liste eine der vorherigen Überarbeitungen aus und legen Sie die gewünschte prozentuale Aufteilung fest.
    3. 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.
    4. Klicken Sie auf Speichern.

Befehlszeile

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.
  • LIST mit einer durch Kommas getrennten Liste von Überarbeitungen, die Traffic erhalten sollen, und dem entsprechenden Prozentsatz des Traffics, der sich auf 100 % summiert:
    REVISION1=PERCENTAGE1,REVISION2=PERCENTAGE2,REVISIONn=PERCENTAGEn
    zum Beispiel hello2-00005-red=25,hello2-00001-bod=25,hello2-00002-nan=50.

YAML

Sie können die Konfiguration eines vorhandenen Dienstes in eine YAML-Datei herunterladen – mit dem gcloud run services describe-Befehl mithilfe des Flags --format=export. Sie können diese YAML-Datei dann ändern und diese Änderungen mit dem Befehl gcloud run services replace bereitstellen. Sie müssen sicherstellen, dass Sie nur die angegebenen Attribute ändern.

  1. Laden Sie die Konfiguration des Dienstes in eine Datei mit dem Namen service.yaml im lokalen Arbeitsbereich herunter:

    gcloud run services describe SERVICE --format export > service.yaml

    Ersetzen Sie SERVICE durch den Namen Ihres Knative-Bereitstellungsdienstes.

  2. Aktualisieren Sie in Ihrer lokalen Datei das Attribut traffic, sodass mit der neuen Überarbeitung nur wenig Traffic verarbeitet wird:

    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 Sie

    • 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

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 Google Cloud Console die Knative-Bereitstellung auf:

    Zur Knative-Bereitstellung

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

  3. Klicken Sie auf Neue Überarbeitung bereitstellen.

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

  5. Klicken Sie auf Bereitstellen.

Befehlszeile

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

Sie können die Konfiguration eines vorhandenen Dienstes in eine YAML-Datei herunterladen – mit dem gcloud run services describe-Befehl mithilfe des Flags --format=export. Sie können diese YAML-Datei dann ändern und diese Änderungen mit dem Befehl gcloud run services replace bereitstellen. Sie müssen sicherstellen, dass Sie nur die angegebenen Attribute ändern.

  1. Laden Sie die Konfiguration des Dienstes in eine Datei mit dem Namen service.yaml im lokalen Arbeitsbereich herunter:

    gcloud run services describe SERVICE --format export > service.yaml

    Ersetzen Sie SERVICE durch den Namen Ihres Knative-Bereitstellungsdienstes.

  2. Aktualisieren Sie in Ihrer lokalen Datei das Attribut traffic, das sich unter spec befindet:

    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

Tags für Tests, Trafficmigration und Rollbacks verwenden

Nachdem Sie einen Dienst bereitgestellt haben, können Sie eine neue Überarbeitung erstellen und dafür ein Tag zuweisen. Damit lässt sich unter einer bestimmten URL auf die Überarbeitung zugreifen, ohne Traffic bereitzustellen. Mit diesem Tag können Sie dann den Traffic schrittweise zur getaggten Überarbeitung migrieren und für eine mit Tags gekennzeichnete Überarbeitung ein Rollback ausführen.

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 Google Cloud-Projekt bereit, das Sie nur für das Staging ohne Trafficbereitstellung verwenden, und testen Sie es 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 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 Test-URL beginnt mit dem von Ihnen angegebenen Tag-Namen: http://{TAG_NAME}---{SERVICE_NAME}.{NAMESPACE}.kuberun.{EXTERNAL_IP}.nip.io

Wenn Sie beispielsweise den Tag-Namen green für den Dienst myservice verwendet haben, würden Sie die getaggte Version unter der folgenden URL testen: https://green---myservice.default.kuberun.11.111.11.111.nip.io

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 oder einer YAML-Datei dorthin migrieren:

Console

  1. Rufen Sie in der Google Cloud Console die Knative-Bereitstellung auf:

    Zur Knative-Bereitstellung

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

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

Befehlszeile

So migrieren Sie Traffic zu einem bestimmten Überarbeitungs-Tag:

gcloud run deploy update-traffic myservice --tag TAG_NAME=TRAFFIC_PERCENT

Ersetzen Sie

  • 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

Sie können die Konfiguration eines vorhandenen Dienstes in eine YAML-Datei herunterladen – mit dem gcloud run services describe-Befehl mithilfe des Flags --format=export. Sie können diese YAML-Datei dann ändern und diese Änderungen mit dem Befehl gcloud run services replace bereitstellen. Sie müssen sicherstellen, dass Sie nur die angegebenen Attribute ändern.

  1. Laden Sie die Konfiguration des Dienstes in eine Datei mit dem Namen service.yaml im lokalen Arbeitsbereich herunter:

    gcloud run services describe SERVICE --format export > service.yaml

    Ersetzen Sie SERVICE durch den Namen Ihres Knative-Bereitstellungsdienstes.

  2. Nehmen Sie die gewünschten Konfigurationsänderungen an dem Dienst vor, wie auf den verschiedenen Konfigurationsseiten beschrieben.

  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