Benutzerdefinierte Canary-Deployments

In diesem Dokument wird beschrieben, wie Sie benutzerdefinierte Canary-Bereitstellungen konfigurieren und verwenden, um Ihre Anwendungen mit Cloud Deploy in alle Zieltypen bereitzustellen.

Funktionsweise von benutzerdefinierten Canary-Bereitstellungen

Wenn Sie die Bereitstellung mit einer benutzerdefinierten Canary-Bereitstellungsstrategie vornehmen, ändert Cloud Deploy Ihre Manifeste nicht, um die ausgewählte Konfiguration für den Lastausgleich zu ermöglichen. Stattdessen sind Sie dafür verantwortlich, Manifeste bereitzustellen, die für jede Canary-Phase auf Ihre Ziel-Laufzeit angewendet werden.

Prüfen, ob Sie die erforderlichen Berechtigungen haben

Zusätzlich zu anderen Identity and Access Management-Berechtigungen, die Sie für die Verwendung von Cloud Deploy benötigen, sind die folgenden Berechtigungen erforderlich, um zusätzliche Aktionen auszuführen, die möglicherweise für eine Canary-Bereitstellung erforderlich sind:

  • clouddeploy.rollouts.advance
  • clouddeploy.rollouts.ignoreJob
  • clouddeploy.rollouts.cancel
  • clouddeploy.rollouts.retryJob
  • clouddeploy.jobRuns.get
  • clouddeploy.jobRuns.list
  • clouddeploy.jobRuns.terminate

Weitere Informationen dazu, welche verfügbaren Rollen diese Berechtigungen enthalten, finden Sie unter IAM-Rollen und -Berechtigungen.

skaffold.yaml vorbereiten

In der Datei skaffold.yaml wird definiert, wie Ihre Manifeste gerendert und bereitgestellt werden. Bei einer benutzerdefinierten Canary-Bereitstellung müssen Sie Profile definieren, die jeder Canary-Phase zugeordnet sind, um die ausgewählte Konfiguration für den Lastausgleich zu ermöglichen. Diese Profile werden Phasen in der Konfiguration der Bereitstellungspipeline-Strategie zugeordnet.

Hier sehen Sie ein Beispiel für eine skaffold.yaml-Konfiguration, die von einem benutzerdefinierten Canary verwendet wird:

apiVersion: skaffold/v4beta7
kind: Config
profiles:
- name: canary-25
  manifests:
    rawYaml:
    - canary-25-resources.yaml
- name: canary-50
  manifests:
    rawYaml:
    - canary-50-resources.yaml
- name: stable
  manifests:
    rawYaml:
    - stable-resources.yaml

Benutzerdefiniertes Canary-Release konfigurieren

Mit der benutzerdefinierten Canary-Konfiguration geben Sie in der Definition Ihrer Bereitstellungspipeline Folgendes an:

  • Namen der Roll-out-Phasen

    Bei einem vollständig automatisierten Canary-Release benennt Cloud Deploy die Phasen für Sie (z. B. canary-25, canary-75, stable). Bei einem benutzerdefinierten Canary können Sie jeder Phase einen beliebigen Namen geben, solange er unter allen Phasen für diese Canary-Phase eindeutig ist und die Einschränkungen für Ressourcen-IDs eingehalten werden. Der Name der letzten Phase (100%) muss stable sein.

  • Prozentuale Ziele für jede Phase

    Geben Sie die Prozentsätze für jede Phase separat an.

  • Skaffold-Profile, die für die Phase verwendet werden sollen

    Sie können für jede Phase ein separates Skaffold-Profil verwenden oder dasselbe Profil oder eine beliebige Kombination. Jedes Profil kann eine andere Cloud Run-Dienstdefinition verwenden. Sie können auch mehrere Profile für eine bestimmte Phase verwenden. Cloud Deploy kombiniert sie.

  • Ob es einen Prüfjob für die Phase gibt

    Wenn Sie die Überprüfung aktivieren, müssen Sie auch Ihre skaffold.yaml konfigurieren.

  • Ob es Pre-Deploy- oder Post-Deploy-Jobs für die Phase gibt

    Wenn Sie Pre-Deploy- oder Post-Deploy-Jobs aktivieren, müssen Sie Ihre skaffold.yaml für diese Jobs konfigurieren.

Benutzerdefinierte Elemente der Canary-Konfiguration

Das folgende YAML zeigt die Konfiguration für die Phasen des vollständig benutzerdefinierten Canary-Deployments:

strategy:
  canary:
    # Custom configuration for each canary phase
    customCanaryDeployment:
      phaseConfigs:
      - phaseId: "PHASE1_NAME"
        percentage: PERCENTAGE1
        profiles: [ "PROFILE_NAME" ]
        verify: true | false
        predeploy:
          actions: "PREDEPLOY_ACTION"
        postdeploy:
          actions: "POSTDEPLOY_ACTION"
      - 
      - phaseId: "stable"
        percentage: 100
        profiles: [ "LAST_PROFILE_NAME" ]
        verify: true|false
        predeploy:
          actions: "PREDEPLOY_ACTION"
        postdeploy:
          actions: "POSTDEPLOY_ACTION"

In diesem YAML

  • PHASE1_NAME

    Ist der Name der Phase. Jeder Phasenname muss eindeutig sein.

  • [ "PROFILE_NAME" ]

    Ist der Name des Profils, das für die Phase verwendet werden soll. Sie können für jede Phase dasselbe Profil oder für jede Phase ein anderes Profil verwenden oder eine beliebige Kombination. Sie können auch mehrere Profile angeben. Cloud Deploy verwendet alle von Ihnen angegebenen Profile sowie das Profil oder Manifest, das für die gesamte Phase verwendet wird.

  • stable

    Die letzte Phase muss stable heißen.

  • PERCENTAGE1

    Der Prozentsatz, der für die erste Phase bereitgestellt werden soll. Jede Phase muss einen eindeutigen Prozentwert haben, der eine ganze Zahl sein muss (z. B. nicht 10.5). Die Phasen müssen in aufsteigender Reihenfolge angegeben werden.

  • verify: true|false

    Gibt an, ob Cloud Deploy einen Überprüfungsjob für die Phase einbeziehen soll. Für jede Phase, in der „verify“ verwendet werden soll, verwendet Skaffold dasselbe Profil für „verify“, das für „render“ und „deploy“ für diese Phase angegeben ist.

  • PREDEPLOY_ACTION

    Entspricht der ACTION_NAME, die Sie in Ihrem skaffold.yaml verwendet haben, um die benutzerdefinierte Aktion zu definieren, die vor der Bereitstellung ausgeführt werden soll.

  • POSTDEPLOY_ACTION

    Entspricht dem ACTION_NAME, das Sie in Ihrem skaffold.yaml verwendet haben, um die benutzerdefinierte Aktion zu definieren, die nach der Bereitstellung ausgeführt werden soll.

Der Prozentsatz für die letzte Phase muss 100 sein. Phasen werden in der Reihenfolge ausgeführt, in der Sie sie in diesem customCanaryDeployment-Abschnitt konfigurieren. Wenn die Prozentwerte jedoch nicht in aufsteigender Reihenfolge sind, schlägt der Befehl zum Registrieren der Bereitstellungspipeline mit einem Fehler fehl.

Die Konfiguration für einen benutzerdefinierten Canary-Release enthält keinen runtimeConfig-Abschnitt. Wenn Sie runtimeConfig angeben, gilt das als benutzerdefinierter automatisierter Canary.

Nächste Schritte