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:
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.
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 diesertimeWindows
muss sich entweder eineoneTimeWindows
oder eineweeklyWindows
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:
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:
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.
Fügen Sie eine oder mehrere Richtlinien
rules
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.
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:
ADVANCE
Roll-out-Phasen können nicht fortgesetzt werden.
APPROVE
Das Angebot für die Einführung kann nicht genehmigt werden.
CANCEL
Einführungen können nicht abgebrochen werden.
CREATE
Es können keine Roll-outs erstellt werden. Sie können einen Release erstellen, wenn eine Richtlinie diese Aktion verhindert. Dieser Release führt jedoch nicht zu einem Roll-out.
IGNORE_JOB
Jobs können nicht ignoriert werden.
RETRY_JOB
Jobs können nicht erneut ausgeführt werden.
ROLLBACK
Einführungen können nicht rückgängig gemacht werden.
TERMINATE_JOBRUN
Jobausführungen können nicht beendet werden
Die YAML-Struktur für diese Regel finden Sie in der Referenz zum Konfigurationsschema.
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 ist24:00
.Bei
oneTimeWindows
müssen Datumsangaben die Uhrzeit enthalten. BeiweeklyWindows
können Sie die Uhrzeit weglassen. Wenn Sie jedochstartTime
angeben, müssen Sie auchendTime
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:
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.
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
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.
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
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.
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.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
Weitere Informationen zum Konfigurieren von Bereitstellungsrichtlinien finden Sie im Schema der Konfigurationsdatei.
Weitere Informationen zur Bereitstellungsautomatisierung mit Cloud Deploy