In diesem Dokument wird beschrieben, wie Sie mit Bereitstellungsrichtlinien manuelle oder automatisierte Aktionen für Bereitstellungspipelines einschränken.
Eine Bereitstellungsrichtlinie ist eine Cloud Deploy-Ressource, mit der Sie manuelle oder automatische Aktionen für eine ausgewählte Bereitstellungspipeline oder ein Ziel (oder alle Pipelines oder Ziele) einschränken können.
Welches Verhalten kann eingeschränkt werden?
Sie können Bereitstellungsrichtlinien erstellen, um zu verhindern, dass Cloud Deploy bestimmte Aktionen für Rollouts ausführt. Eine Richtlinie kann beispielsweise verhindern, dass für eine bestimmte Lieferpipeline während eines bestimmten Zeitraums ein Roll-out erstellt wird. Sie können diese Funktion beispielsweise für saisonale Einschränkungen verwenden.
Auswertung und Durchsetzung von Richtlinien
Bei jeder manuellen oder automatisierten Aktion führt Cloud Deploy Folgendes aus:
Prüft Identity and Access Management-Berechtigungen.
Wenn der Nutzer oder das Dienstkonto nicht die erforderlichen IAM-Berechtigungen hat, wird die Aktion nicht ausgeführt und es ist nicht erforderlich, Bereitstellungsrichtlinien auszuwerten.
Prüft, ob es eine anwendbare Richtlinie für das Ziel oder die Bereitstellungspipeline gibt. Falls ja, wird die Richtlinie ausgewertet.
Cloud Deploy prüft die ausgeführte Aktion, um festzustellen, ob diese Regel anwendbar ist.
Entspricht der Aktionstyp und der Aufrufer der Richtlinie?
Cloud Deploy prüft die für die Richtlinie definierten Datums- und Zeitbereiche, um festzustellen, ob die Richtlinie zum Zeitpunkt der Anfrage in Kraft ist.
Wenn die Richtlinie in Kraft ist und die Regel auf die Bereitstellungspipeline 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 Selektor haben.
Jede Richtlinie muss mindestens eine Regel haben.
Alle Regel-IDs müssen innerhalb einer Bereitstellungsrichtlinie eindeutig sein.
Jede Regel muss mindestens eine
timeWindowshaben und innerhalb diesertimeWindowsmuss entweder eineoneTimeWindowsoder eineweeklyWindowsvorhanden sein.Weitere Informationen zur Verwendung von Zeitblöcken finden Sie unter Datumsangaben und Uhrzeiten.
Sie können maximal 1.000 Bereitstellungsrichtlinien pro Projekt/Standort haben.
Erforderliche Identity and Access Management-Rollen und -Berechtigungen
Zusätzlich zu den Berechtigungen, die Sie zum Ausführen einer beliebigen Cloud Deploy-Bereitstellungspipeline und zum Ausführen der Aufgaben benötigen, die durch die Richtlinie eingeschränkt werden, sind mehrere Berechtigungen erforderlich, um bestimmte Vorgänge für die Richtlinienressource auszuführen:
clouddeploy.deployPolicies.createclouddeploy.deployPolicies.deleteclouddeploy.deployPolicies.getclouddeploy.deployPolicies.listclouddeploy.deployPolicies.updateclouddeploy.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
Das Erstellen einer deploy-policy-Ressource umfasst die folgenden Schritte:
Erstellen Sie eine YAML-Datei mit der Konfiguration der Bereitstellungsrichtlinie.
Die Konfiguration enthält einen Header, der die Ressource als Bereitstellungsrichtlinie identifiziert.
nameist erforderlich.apiVersion: deploy.cloud.google.com/v1 kind: DeployPolicy metadata: name: description:Fügen Sie einen Verweis auf die Bereitstellungspipelines und Ziele hinzu, auf die die Richtlinie angewendet wird (die
selectors).Weitere Informationen zu Richtlinienselektoren und deren Konfiguration finden Sie unter Richtlinienselektoren bereitstellen und in der Konfigurationsschema-Referenz.
Fügen Sie eine oder mehrere Richtlinien
ruleshinzu.Jede Regel beschreibt eine Einschränkung und die Umstände, unter denen sie durchgesetzt wird. Weitere Informationen zu Richtlinienregeln und deren Konfiguration finden Sie unter Richtlinienregeln bereitstellen und in der Referenz zum Konfigurationsschema.
Wenden Sie die Datei an, um die Richtlinie zu erstellen:
gcloud deploy apply --file=FILENAME \ --region=REGION \ --project=PROJECT_IDDabei ist
FILENAMEder Name der YAML-Datei, die IhreDeployPolicy-Definition enthält,REGIONdie Region, in der Sie die Bereitstellungsrichtlinienressource erstellen möchten, undPROJECT_IDdas Projekt, in dem Sie die Ressource erstellen möchten.
Die referenzierten Bereitstellungspipelines oder ‑ziele sind jetzt gemäß den Regeln in der Ressource „deploy-policy“ eingeschränkt.
Bereitstellungsrichtlinienselektoren
Mit Selectors, die in Bereitstellungsrichtlinienkonfigurationen definiert sind, wird festgelegt, welche Bereitstellungspipelines und Ziele von einer bestimmten Regel betroffen sind.
Ein Selektor wird in einem selectors-Abschnitt in der Konfiguration der Bereitstellungsrichtlinie als Attribut auf oberster 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. * ist ein spezieller Feldwert, mit dem alle Elemente ausgewählt werden. Beliebige Platzhalter sind nicht zulässig. Sie können auch Labels verwenden, um Bereitstellungspipelines oder Ziele oder beides abzugleichen.
Innerhalb eines bestimmten Selektors werden Elemente mit AND verknüpft. Mehrere Selectors werden mit ODER verknüpft. Damit eine bestimmte Anfrage durch die Richtlinie eingeschränkt wird, muss sie sich also auf mindestens einen Selector beziehen. Innerhalb dieses Selektors 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 im ausgewählten Ziel eingeschränkt wird. In der Regel wird auch festgelegt, unter welchen Umständen sie angewendet wird.
Die folgenden Regeln sind verfügbar:
rolloutRestriction
Mit der rolloutRestriction-Regel wird verhindert, dass die angegebenen Rollout-Aktionen für ausgewählte Ziele ausgeführt werden, die von ausgewählten Bereitstellungspipelines verwendet werden. Diese Regel verwendet ein Zeitfenster, das definiert, wann kein Rollout für die ausgewählte Bereitstellungspipeline und das ausgewählte Ziel erstellt werden kann. Unter Datums- und Zeitangaben finden Sie eine Beschreibung, wie Datums- und Zeitangaben in Regeln für Bereitstellungsrichtlinien angegeben werden.
Die folgenden Aktionen können eingeschränkt werden, während die Regel aktiv ist:
ADVANCERoll-out-Phasen können nicht fortgesetzt werden.
APPROVEDas Angebot für den Roll-out kann nicht genehmigt werden.
CANCELRoll-outs können nicht abgebrochen werden.
CREATEEs können keine Roll-outs erstellt werden. Sie können einen Release erstellen, wenn diese Aktion durch eine Richtlinie verhindert wird. Durch diesen Release wird jedoch kein Roll-out gestartet.
IGNORE_JOBJobs können nicht ignoriert werden.
RETRY_JOBJobs können nicht wiederholt werden.
ROLLBACKRollouts können nicht rückgängig gemacht werden.
TERMINATE_JOBRUNJob-Ausführungen können nicht beendet werden.
Die YAML-Struktur für diese Regel finden Sie in der Referenz zum Konfigurationsschema.
Datums- und Uhrzeitwerte 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 Datums- und Zeitangaben gelten die folgenden Anforderungen:
Datumsangaben werden als
yyyy-mm-ddangegeben.Wenn Sie die Tageszeit angeben, ist der Tagesbeginn
00:00und das Tagesende24:00.Bei
oneTimeWindowsmuss das Datum die Uhrzeit enthalten. BeiweeklyWindowskönnen Sie die Uhrzeit weglassen. Wenn SiestartTimeeinfügen, müssen Sie auchendTimeeinfügen und umgekehrt.Ein Freeze nur an Sonntagen würde beispielsweise so aussehen:
- daysOfWeek: [SUNDAY] startTime: "00:00" endTime: "24:00"Sie können auch Folgendes tun:
- daysOfWeek: [SUNDAY]Aber nicht das:
- daysOfWeek: [SUNDAY] startTime: "00:00"Sie müssen in der
timeWindows-Stanza eine Zeitzone angeben.Beispiel:
timeZone: America/New_York.
Nicht wiederholende Zeitfenster
Ein nicht wiederkehrendes Zeitfenster beginnt und endet an einem bestimmten Tag und zu einer bestimmten Uhrzeit. Sie verwenden diese Option für jeden Zeitraum, in dem Sie die Einführung einschränken möchten.
Nicht wiederholende Zeiträume werden mit einem oneTimeWindows-Abschnitt konfiguriert.
Sich wiederholende Zeitfenster
Ein sich wiederholendes Zeitfenster beschreibt einen sich wiederholenden Zeitraum, in dem Sie Roll-outs einschränken möchten. So können Sie beispielsweise Rollouts an Wochenenden einschränken.
Wiederholende Zeiträume werden mit einem weeklyWindows-Abschnitt konfiguriert.
Beispiele
Dieser Abschnitt enthält einige Beispiele für die Verwendung von Datums- und Zeitangaben zum Konfigurieren des Zeitpunkts, zu dem eine Bereitstellungsrichtlinie erzwungen wird.
Jährlicher Freeze
Wenn es einen bestimmten Zeitraum im Jahr gibt, in dem Sie Rollouts pausieren möchten, können Sie dazu einen oneTimeWindows-Block konfigurieren. Wenn die Daten von Jahr zu Jahr gleich sind, müssen Sie trotzdem mehrere oneTimeWindow-Blöcke verwenden.
Das folgende YAML zeigt ein einmaliges (nicht wiederholtes) Zeitfenster, in dem eine Bereitstellungsrichtlinie für einen jährlichen Freeze erzwungen wird:
timeWindows:
timeZone: "America/New_York"
oneTimeWindows:
- start: "2024-12-22 17:00"
end: "2025-01-02 09:00"
Diese YAML beschreibt ein Zeitfenster vom 22. Dezember 2024 um 17:00 Uhr bis zum 2. Januar 2025 um 9:00 Uhr.
Wiederholtes Fixieren am Wochenende
Das folgende YAML zeigt ein sich wiederholendes Zeitfenster, um eine Bereitstellungsrichtlinie zu erzwingen, die Rollouts an Wochenenden einschränkt, von Freitag um 17:00 Uhr bis Montagmorgen um 9:00 Uhr:
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
Das Aktualisieren einer Bereitstellungsrichtlinie umfasst die folgenden Schritte:
Bearbeiten Sie das YAML der Richtlinienkonfiguration.
Wenn Sie die Richtlinie über die Google Cloud -Konsole erstellt haben, können Sie die YAML-Konfiguration abrufen, indem Sie auf der Seite Details zur Bereitstellungsrichtlinie den Tab YAML auswählen. Anschließend können Sie den Text in eine lokale Datei kopieren und dort bearbeiten.
Wenden Sie die Datei an, um die Richtlinie zu aktualisieren:
gcloud deploy apply --file=FILENAME \ --region=REGION \ --project=PROJECT_IDDadurch wird die Ressource der Bereitstellungsrichtlinie mit der neuen Konfiguration aktualisiert.
Da Bereitstellungsrichtlinien ausgewertet werden, wenn die eingeschränkte Aktion versucht wird, unterliegen alle solchen Aktionen für alle Cloud Deploy-Ressourcen der aktualisierten Richtlinie. Das bedeutet, dass keine Überreste der vorherigen Einschränkungen vorhanden sind.
Wenn Sie beispielsweise einen restrictRollouts-Block für den gesamten Dezember haben und die Richtlinie am 14. Dezember so aktualisieren, dass die Einschränkung am 15. Dezember endet, werden Rollouts nach dem 15. Dezember nicht mehr blockiert.
Bereitstellungsrichtlinie überschreiben
Sie können eine Bereitstellungsrichtlinie bei Bedarf überschreiben. Wenn es beispielsweise ein Problem mit einer Bereitstellung in der Produktion gibt und Sie ein Rollback durchführen müssen, aber eine Bereitstellungsrichtlinie alle Rollouts verhindert, können Sie diese Richtlinie überschreiben, um das Rollback des fehlerhaften Rollouts durchzuführen.
Zum Überschreiben einer Bereitstellungsrichtlinie benötigen Sie die IAM-Berechtigung clouddeploy.deployPolicies.override.
Sie können die Richtlinie entweder über die gcloud CLI oder über dieGoogle Cloud Console überschreiben:
Console
Versuchen Sie in der Google Cloud Console, eine Aktion auszuführen, die durch eine Richtlinie blockiert wird.
Ein Dialogfeld wird angezeigt, in dem darauf hingewiesen wird, dass die Aktion durch eine Bereitstellungsrichtlinie blockiert wird. Dieses Dialogfeld enthält einen Link zur spezifischen Richtlinie, die diese Aktion blockiert.
Geben Sie in das Textfeld den Namen der Richtlinie ein und klicken Sie auf Richtlinienüberschreibung versuchen.
Wenn Sie die Berechtigung zum Überschreiben der Richtlinie haben, 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 hochgestuft und dabei eine bestimmte Bereitstellungsrichtlinie überschrieben, die die Hochstufung ansonsten 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
Rufen Sie in der Google Cloud Console die Seite Bereitstellungsrichtlinien von Cloud Deploy auf.
Seite „Richtlinien bereitstellen“ aufrufen
Die Seite enthält eine Liste der in Ihrem aktuellen Projekt verfügbaren Bereitstellungsrichtlinien, sofern vorhanden.
Klicken Sie bei der Richtlinie, die Sie löschen möchten, auf den Button Aktionen und dann auf Bereitstellungsrichtlinie löschen.
Bestätigen Sie das Löschen, indem Sie den Namen der Bereitstellungsrichtlinie eingeben, und klicken Sie auf Bestätigen.
Die Richtlinie wurde gelöscht. Sie können jetzt alle Aktionen ausführen, die durch die Richtlinie eingeschränkt wurden.
gcloud-CLI
Führen Sie zum Löschen einer Bereitstellungsrichtlinie mit der gcloud CLI den folgenden Befehl aus:
gcloud deploy deploy-policies delete \
--project=[PROJECT] \
--region=[REGION] \
[POLICY_NAME]
Ersetzen Sie Folgendes:
[POLICY_NAME]Der Name der Richtlinie, wie in der Richtlinienkonfigurationsdatei 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, sofern sie nicht von einer anderen Bereitstellungsrichtlinie betroffen sind.
Logging der Bereitstellungsrichtlinie
Wenn eine Bereitstellungsrichtlinie ausgewertet wird, werden Plattformlog-Einträge für die folgenden Aktionen erstellt:
Richtlinienbewertung
Plattformlogs werden geschrieben, wenn eine Anfrage ausgewertet wird und gegen die Richtlinie verstößt. Ein Log wird auch geschrieben, wenn gegen die Richtlinie durch eine Anfrage verstoßen wird, die Anfrage aber zugelassen wird, weil die Richtlinie ausgesetzt oder überschrieben wurde. Wenn die Anfrage genehmigt wird, wird kein Log geschrieben, da die Richtlinie nicht verletzt wird.
Fehler bei Pub/Sub-Benachrichtigungen bei Änderung einer Deploy-Richtlinienressource.
Nächste Schritte
Weitere Informationen zum Konfigurieren von Bereitstellungsrichtlinien finden Sie im Schema der Konfigurationsdatei.
Weitere Informationen zur Bereitstellungsautomatisierung in Cloud Deploy