Bereitstellungsverhalten mithilfe von Richtlinien einschränken

In diesem Dokument wird beschrieben, wie Sie mit Bereitstellungsrichtlinien manuelle oder automatisierte Aktionen der Bereitstellungspipeline einschränken.

Eine Bereitstellungsrichtlinie ist eine Cloud Deploy-Ressource, mit der Sie manuelle oder automatische Aktionen für eine ausgewählte Bereitstellungspipeline oder ein ausgewähltes Ziel (oder alle Pipelines oder Ziele) einschränken können.

Welches Verhalten kann eingeschränkt werden?

Sie können Bereitstellungsrichtlinien erstellen, um Cloud Deploy einzuschränken oder zu verhindern, dass bestimmte Aktionen bei Roll-outs ausgeführt werden. So kann eine Richtlinie beispielsweise verhindern, dass in einem bestimmten Zeitraum ein Roll-out für eine bestimmte Bereitstellungspipeline erstellt wird. Sie können dies beispielsweise für saisonale Einschränkungen verwenden.

So werden Richtlinien bewertet und durchgesetzt

Bei jeder manuellen oder automatisierten Aktion führt Cloud Deploy Folgendes aus:

  1. Prüft Identity and Access Management-Berechtigungen.

    Wenn das Nutzer- oder Dienstkonto nicht über ausreichende IAM-Berechtigungen verfügt, wird die Aktion nicht ausgeführt und es müssen keine Bereitstellungsrichtlinien ausgewertet werden.

  2. Es wird geprüft, ob eine anwendbare Richtlinie für die Ziel- oder Bereitstellungspipeline vorhanden ist. Ist das der Fall, wird die Richtlinie ausgewertet.

    • Cloud Deploy prüft, ob die ausgeführte Aktion dieser Regel entspricht.

      Stimmen also der Aktionstyp und der Auslöser mit der Richtlinie überein?

    • Cloud Deploy prüft die für die Richtlinie definierten Datums- und Zeiträume, um festzustellen, ob diese Richtlinie zum Zeitpunkt der Anfrage in Kraft ist.

    • Wenn die Richtlinie in Kraft ist und die Regel auf die Auslieferungspipeline oder das Ziel und die Aktion angewendet wird, wird die Regel erzwungen und die Aktion blockiert.

Anforderungen und Einschränkungen

  • Jede Richtlinie muss mindestens einen Selector haben.

  • Jede Richtlinie muss mindestens eine Regel haben.

    Alle Regel-IDs müssen innerhalb einer Bereitstellungsrichtlinie eindeutig sein.

  • Jede Regel muss mindestens eine timeWindows haben und innerhalb dieser timeWindows muss sich entweder eine oneTimeWindows oder eine weeklyWindows befinden.

    Weitere Informationen zur Verwendung von Zeitblöcken finden Sie unter Datum und Uhrzeit.

  • Pro Projekt/Standort können maximal 1.000 Bereitstellungsrichtlinien vorhanden sein.

Erforderliche Identitäts- und Zugriffsverwaltungsrollen und ‑Berechtigungen

Zusätzlich zu den Berechtigungen, die Sie zum Ausführen einer Cloud Deploy-Auslieferungspipeline und zum Ausführen von Aufgaben benötigen, die durch Richtlinien eingeschränkt sind, sind mehrere Berechtigungen erforderlich, um bestimmte Vorgänge auf der Richtlinienressource auszuführen:

  • clouddeploy.deployPolicies.create
  • clouddeploy.deployPolicies.delete
  • clouddeploy.deployPolicies.get
  • clouddeploy.deployPolicies.list
  • clouddeploy.deployPolicies.update
  • clouddeploy.deployPolicies.override

Diese Berechtigungen sind in der Rolle roles/clouddeploy.policyAdmin enthalten. Außerdem enthält die Rolle roles/clouddeploy.policyOverrider die Berechtigung .override.

Bereitstellungsrichtlinie erstellen

So erstellen Sie eine Bereitstellungsrichtlinienressource:

  1. Erstellen Sie eine YAML-Datei mit der Konfiguration der Bereitstellungsrichtlinie.

    Die Konfiguration enthält einen Header, der die Ressource als Bereitstellungsrichtlinie identifiziert. name ist erforderlich.

     apiVersion: deploy.cloud.google.com/v1
     kind: DeployPolicy
     metadata:
       name: 
     description: 
    
  2. Fügen Sie einen Verweis auf die Bereitstellungspipelines und Ziele hinzu, auf die die Richtlinie angewendet werden soll (selectors).

    Weitere Informationen zu Richtlinienselektiven und deren Konfiguration finden Sie unter Richtlinienauswahlen bereitstellen und in der Referenz zum Konfigurationsschema.

  3. Fügen Sie eine oder mehrere Richtlinienrules hinzu.

    Jede Regel beschreibt eine Einschränkung und die Umstände, unter denen diese Einschränkung erzwungen wird. Weitere Informationen zu Richtlinienregeln und deren Konfiguration finden Sie unter Richtlinienregeln bereitstellen und in der Referenz zum Konfigurationsschema.

  4. Wenden Sie diese Datei an und erstellen Sie die Ressource mit gcloud deploy apply --filename=.

Die referenzierten Bereitstellungspipelines oder -ziele sind jetzt gemäß den Regeln in der Bereitstellungsrichtlinienressource eingeschränkt.

Richtlinienauswahl bereitstellen

Mithilfe von Selectors, die in den Konfigurationen der Bereitstellungsrichtlinie definiert sind, wird festgelegt, welche Bereitstellungspipelines und Ziele von einer bestimmten Regel betroffen sind.

Ein Selector wird in einem selectors-Abschnitt in der Bereitstellungsrichtlinien-Konfiguration als Property der obersten Ebene definiert:

selectors:
- deliveryPipeline:
    id:
    labels:
  target:
    id:
    labels:

In dieser Konfigurations-YAML-Datei steht deliveryPipeline.id für den Namen der Bereitstellungspipeline und target.id für den Namen des Ziels (in beiden Fällen metadata.name).

Mit id: * können Sie alle Lieferpipelines oder alle Ziele auswählen. Sie können auch Tags verwenden, um Bereitstellungspipelines, Ziele oder beides abzugleichen.

Innerhalb eines bestimmten Selektors werden Elemente durch AND verknüpft. Mehrere Auswahlen werden über OR verknüpft. Das bedeutet, dass eine Anfrage nur dann durch die Richtlinie eingeschränkt wird, wenn sie für mindestens einen Selector gilt. Innerhalb dieser Auswahl muss die Anfrage jedoch mit allen Elementen übereinstimmen.

Richtlinienregeln bereitstellen

Jede Bereitstellungsrichtlinie enthält eine oder mehrere Richtlinienregeln, die festlegen, welche Aktion in der ausgewählten Bereitstellungspipeline oder dem ausgewählten Ziel eingeschränkt ist. Außerdem wird festgelegt, unter welchen Umständen die Regel angewendet wird.

Folgende Regeln sind verfügbar:

  • rolloutRestriction

Mit der Regel rolloutRestriction wird verhindert, dass die angegebenen Einführungsaktionen auf ausgewählten Zielen ausgeführt werden, die von ausgewählten Auslieferungspipelines verwendet werden. Bei dieser Regel wird ein Zeitfenster verwendet, das definiert, wann ein Roll-out für die ausgewählte Bereitstellungspipeline und das ausgewählte Ziel nicht erstellt werden kann. Eine Beschreibung dazu, wie Datum und Uhrzeit in Regeln für Bereitstellungsrichtlinien angegeben werden, finden Sie unter Datum und Uhrzeit.

Während der Gültigkeit der Regel können die folgenden Aktionen eingeschränkt werden:

Datum und Uhrzeit in einer rolloutRestriction-Regel

Sie konfigurieren Datums- und Zeitblöcke, um wiederkehrende und nicht wiederkehrende Zeitfenster anzugeben, in denen die Bereitstellungsrichtlinie gilt.

Für die Angabe von Datum und Uhrzeit gelten folgende Anforderungen:

  • Datumsangaben werden als yyyy-mm-dd angegeben.

  • Der Beginn des Tages ist 00:00 und das Ende des Tages ist 24:00.

  • Bei oneTimeWindows müssen Datumsangaben die Uhrzeit enthalten. Bei weeklyWindows können Sie die Uhrzeit weglassen. Wenn Sie jedoch startTime angeben, müssen Sie auch endTime angeben, und umgekehrt.

    Eine Sperrung nur an Sonntagen würde beispielsweise so aussehen:

    - daysOfWeek: [SUNDAY]
      startTime: "00:00"
      endTime: "24:00"
    

    Sie haben folgende Möglichkeiten:

    - daysOfWeek: [SUNDAY]
    

    Aber nicht so:

    - daysOfWeek: [SUNDAY]
      startTime: "00:00"
    
  • Sie müssen in der timeWindows-Stanza eine Zeitzone angeben.

    Beispiel: timeZone: America/New_York.

Nicht wiederkehrende Zeitfenster

Ein nicht wiederkehrendes Zeitfenster beginnt und endet an einem bestimmten Tag und zu einer bestimmten Uhrzeit. Sie können diese Funktion für jeden Zeitraum verwenden, für den Sie die Einführung einschränken möchten.

Nicht wiederkehrende Zeitfenster werden mit einem oneTimeWindows-Abschnitt konfiguriert.

Wiederkehrende Zeitfenster

Ein wiederkehrendes Zeitfenster beschreibt einen wiederkehrenden Zeitraum, in dem Sie Roll-outs einschränken möchten. So können Sie beispielsweise Roll-outs an Wochenenden einschränken.

Wiederkehrende Zeitfenster werden mit einem weeklyWindows-Abschnitt konfiguriert.

Beispiele

Dieser Abschnitt enthält einige Beispiele für die Verwendung von Datumsangaben und Uhrzeiten, um zu konfigurieren, wann eine Bereitstellungsrichtlinie erzwungen wird.

Jährliche Sperrung

Wenn Sie die Einführungen zu einer bestimmten Jahreszeit pausieren möchten, können Sie dazu einen oneTimeWindows-Block konfigurieren. Wenn die Daten von Jahr zu Jahr vorhersehbar sind, müssen Sie trotzdem mehrere oneTimeWindow-Blöcke verwenden.

Die folgende YAML-Datei zeigt ein einmaliges (nicht wiederkehrendes) Zeitfenster, um eine Bereitstellungsrichtlinie für eine jährliche Sperrung durchzusetzen:

timeWindows:
  timeZone: "America/New_York"
  oneTimeWindows:
  - start: "2024-12-22 17:00"
    end: "2025-01-02 09:00"

In diesem YAML-Code wird ein Zeitfenster vom 22. Dezember 2024, 17:00 Uhr, bis zum 2. Januar 2025, 9:00 Uhr, beschrieben.

Wiederholte Aussetzung am Wochenende

Im folgenden YAML-Code wird ein wiederkehrendes Zeitfenster für die Durchsetzung einer Bereitstellungsrichtlinie angezeigt, die Roll-outs an Wochenenden von Freitag, 17:00 Uhr, bis Montag, 9:00 Uhr, einschränkt:

timeWindows:
  timeZone: "America/New_York"
  weeklyWindows:
  - daysOfWeek: [FRIDAY]
    startTime: "17:00"
    endTime: "24:00"
  - daysOfWeek: [SATURDAY, SUNDAY]
    startTime: "00:00"
    endTime: "24:00"
  - daysOfWeek: [MONDAY]
    startTime: "00:00"
    endTime: "09:00"

Bereitstellungsrichtlinie aktualisieren

So aktualisieren Sie eine Bereitstellungsrichtlinie:

  1. Bearbeiten Sie die YAML-Datei der Richtlinienkonfiguration.

    Wenn Sie die Richtlinie mit der Google Cloud Console erstellt haben, können Sie die YAML-Konfiguration aufrufen, indem Sie auf der Seite Details zur Bereitstellungsrichtlinie den Tab YAML auswählen. Anschließend können Sie den Text lokal in eine Datei kopieren und dort bearbeiten.

  2. Wenden Sie diese Datei mit gcloud deploy apply --filename= an.

    Dadurch wird die Bereitstellungsrichtlinienressource mit der neuen Konfiguration aktualisiert.

Da Bereitstellungsrichtlinien bei einem Versuch, eine eingeschränkte Aktion auszuführen, ausgewertet werden, unterliegen alle derartigen Aktionen an allen Cloud Deploy-Ressourcen der aktualisierten Richtlinie. Das heißt, die vorherigen Einschränkungen gelten nicht mehr. Wenn Sie beispielsweise für den gesamten Dezember eine restrictRollouts-Sperre haben und die Richtlinie am 14. Dezember so aktualisieren, dass die Einschränkung am 15. Dezember endet, werden Einführungen nach dem 15. Dezember nicht mehr blockiert.

Bereitstellungsrichtlinie überschreiben

Sie können eine Bereitstellungsrichtlinie bei Bedarf überschreiben. Wenn beispielsweise ein Problem mit einer Bereitstellung in der Produktion vorliegt und Sie sie rückgängig machen müssen, aber eine Bereitstellungsrichtlinie alle Bereitstellungen verhindert, können Sie diese Richtlinie überschreiben, um die fehlerhafte Bereitstellung rückgängig zu machen.

Wenn Sie eine Bereitstellungsrichtlinie überschreiben möchten, benötigen Sie die IAM-Berechtigung clouddeploy.deployPolicies.override.

Sie können die Richtlinie entweder über die gcloud CLI oder über die Google Cloud Console überschreiben:

Console

  1. Versuchen Sie in der Google Cloud Console, eine Aktion auszuführen, die durch eine Richtlinie blockiert wird.

    In einem Dialogfeld wird angezeigt, dass die Aktion durch eine Bereitstellungsrichtlinie blockiert wird. Dieses Dialogfeld enthält einen Link zur spezifischen Richtlinie, die diese Aktion blockiert.

  2. Geben Sie in das dafür vorgesehene Textfeld den Namen der Richtlinie ein und klicken Sie auf Richtlinien überschreiben.

    Wenn Sie berechtigt sind, die Richtlinie zu überschreiben, führt Cloud Deploy die Aktion jetzt aus.

gcloud-CLI

Wenn Sie eine Bereitstellungsrichtlinie mit der gcloud CLI überschreiben möchten, fügen Sie dem Befehl für jede Aktion, die durch diese Richtlinie verhindert würde, das Flag --override-deploy-policies hinzu. Mit dem folgenden Befehl wird beispielsweise ein Release freigegeben, wobei eine bestimmte Bereitstellungsrichtlinie überschrieben wird, die die Freigabe sonst verhindern würde:

 gcloud deploy releases promote --release=my-release-001 \
   --project=my-policy-testing-project \
   --region=us-central1 \
   --delivery-pipeline=my-pipeline \
   --to-target=prod-target \
   --override-deploy-policies=my-deploy-policy

Bereitstellungsrichtlinie löschen

So löschen Sie eine Bereitstellungsrichtlinie:

Console

  1. Rufen Sie in der Google Cloud Console die Seite Bereitstellungsrichtlinien von Cloud Deploy auf.

    Seite „Richtlinien für die Bereitstellung“ öffnen

    Die Seite enthält eine Liste der Bereitstellungsrichtlinien, die in Ihrem aktuellen Projekt verfügbar sind, sofern vorhanden.

  2. Wählen Sie für die Richtlinie, die Sie löschen möchten, die Schaltfläche Aktionen aus und klicken Sie auf Bereitstellungsrichtlinie löschen.

  3. Bestätigen Sie das Löschen, indem Sie den Namen der Bereitstellungsrichtlinie eingeben und auf Bestätigen klicken.

    Die Richtlinie wurde jetzt gelöscht und Sie können jetzt alle Aktionen ausführen, die durch die Richtlinie eingeschränkt waren.

gcloud-CLI

Führen Sie folgenden Befehl aus, um eine Bereitstellungsrichtlinie mit der gcloud CLI zu löschen:

 gcloud deploy deploy-policies delete \
    --project=[PROJECT] \
    --region=[REGION] \
    [POLICY_NAME]

Ersetzen Sie Folgendes:

  • [POLICY_NAME]

    Der Name der Richtlinie, wie in der Konfigurationsdatei der Richtlinie definiert.

  • [PROJECT]

    Die Projekt-ID des Google Cloud-Projekts, in dem Sie die Bereitstellungsrichtlinie erstellt haben.

  • [REGION]

    Die Region, in der Sie die Bereitstellungsrichtlinie erstellt haben.

Nachdem Sie die Bereitstellungsrichtlinienressource gelöscht haben, unterliegen die betroffenen Bereitstellungspipelines und Ziele nicht mehr der Richtlinie und werden nicht eingeschränkt, es sei denn, sie sind von einer anderen Bereitstellungsrichtlinie betroffen.

Logging der Bereitstellungsrichtlinie

Wenn eine Bereitstellungsrichtlinie ausgewertet wird, werden Plattformprotokolle für die folgenden Aktionen erstellt:

  • Richtlinienbewertung

    Plattformprotokolle werden geschrieben, wenn eine Anfrage ausgewertet wird und gegen die Richtlinie verstößt. Ein Log wird auch dann geschrieben, wenn eine Anfrage gegen die Richtlinie verstößt, aber zugelassen wird, weil die Richtlinie ausgesetzt oder überschrieben wurde. Wenn der Antrag gewährt wird, wird kein Log protokolliert, da kein Verstoß gegen die Richtlinie vorliegt.

  • Pub/Sub-Benachrichtigungsfehler bei Änderung einer Bereitstellungsrichtlinienressource

Nächste Schritte