Questo documento descrive come utilizzare le policy di deployment per limitare le azioni della pipeline di pubblicazione manuali o automatiche.
Una policy di deployment è una risorsa Cloud Deploy che puoi utilizzare per limitare le azioni manuali o automatiche su una pipeline di importazione o un target selezionati (o su tutte le pipeline o tutti i target).
Quali comportamenti possono essere limitati?
Puoi creare criteri di deployment per limitare o impedire a Cloud Deploy di eseguire determinate azioni sugli implementamenti. Ad esempio, un criterio può impedire la creazione di un rollout per una determinata pipeline di importazione durante un periodo di tempo specificato. Ad esempio, puoi utilizzarlo per le restrizioni stagionali.
Come vengono valutate e applicate le norme
Per qualsiasi azione manuale o automatica, Cloud Deploy esegue le seguenti operazioni:
Controlla le autorizzazioni di Identity and Access Management.
Se l'account utente o di servizio non dispone delle autorizzazioni IAM adeguate, l'azione non viene eseguita e non è necessario valutare i criteri di deployment.
Controlla se esiste un criterio applicabile per la pipeline di destinazione o di importazione e, in caso affermativo, lo valuta.
Cloud Deploy valuta l'azione intrapresa per verificare se questa regola è applicabile.
In altre parole, il tipo di azione e l'invoker corrispondono alle norme?
Cloud Deploy controlla gli intervalli di date e ore definiti per il criterio per verificare se è in vigore al momento della richiesta.
Se il criterio è attivo e la regola si applica alla pipeline di importazione o al target e all'azione, la regola viene applicata e l'azione viene bloccata.
Requisiti e limitazioni
Ogni criterio deve avere almeno un selettore.
Ogni criterio deve avere almeno una regola.
Tutti gli ID regola devono essere univoci all'interno di un criterio di deployment.
Ogni regola deve avere almeno un
timeWindows
e all'interno di questotimeWindows
deve esserci unoneTimeWindows
o unweeklyWindows
.Per ulteriori dettagli sull'utilizzo dei blocchi di tempo, consulta la sezione Date e ore.
Non puoi avere più di 1000 criteri di deployment per progetto/posizione.
Ruoli e autorizzazioni di Identity and Access Management richiesti
Oltre alle autorizzazioni necessarie per eseguire qualsiasi pipeline di distribuzione Cloud Deploy ed eseguire le attività limitate dai criteri, sono necessarie diverse autorizzazioni per eseguire determinate operazioni sulla risorsa del criterio:
clouddeploy.deployPolicies.create
clouddeploy.deployPolicies.delete
clouddeploy.deployPolicies.get
clouddeploy.deployPolicies.list
clouddeploy.deployPolicies.update
clouddeploy.deployPolicies.override
Queste autorizzazioni sono incluse nel ruolo roles/clouddeploy.policyAdmin
.
Inoltre, il ruolo roles/clouddeploy.policyOverrider
include l'autorizzazione
.override
.
Crea una policy di deployment
La creazione di una risorsa deploy-policy prevede i seguenti passaggi:
Crea un file YAML con la configurazione del criterio di deployment.
La configurazione include un'intestazione che identifica la risorsa come criterio di deployment. Il campo
name
è obbligatorio.apiVersion: deploy.cloud.google.com/v1 kind: DeployPolicy metadata: name: description:
Aggiungi un riferimento alle pipeline di importazione e ai target a cui si applica il criterio (
selectors
).Per ulteriori informazioni sui selettori di criteri e su come configurarli, consulta Eseguire il deployment dei selettori di criteri e la sezione Informazioni di riferimento sullo schema di configurazione.
Aggiungi uno o più criteri
rules
.Ogni regola descrive una limitazione e le circostanze in cui viene applicata. Per ulteriori informazioni sulle regole dei criteri e su come configurarle, consulta Eseguire il deployment delle regole dei criteri e il riferimento allo schema di configurazione.
Applica il file utilizzando
gcloud deploy apply --filename=
per creare la risorsa.
Le pipeline di distribuzione o i target a cui viene fatto riferimento sono ora limitati in base alle regole della risorsa deploy-policy.
Selettori dei criteri di deployment
I selettori, definiti nelle configurazioni dei criteri di deployment, determinano le pipeline di importazione e le destinazioni interessate da una determinata regola.
Un selettore è definito in una stanza selectors
nella configurazione del criterio di deployment come proprietà di primo livello:
selectors:
- deliveryPipeline:
id:
labels:
target:
id:
labels:
In questo file YAML di configurazione, deliveryPipeline.id
assume il nome della
pipeline di distribuzione e target.id
assume il nome della destinazione (in entrambi i casi,
metadata.name
).
Puoi utilizzare id: *
per selezionare tutte le pipeline di importazione o tutti i target. Puoi anche utilizzare le etichette per associare le pipeline di importazione o i target o entrambi.
All'interno di un determinato selettore, gli elementi vengono combinati con l'operatore AND. Più selettori sono uniti con l'operatore OR. In altre parole, affinché una determinata richiesta sia limitata dal criterio, deve essere applicata almeno a un selettore. Tuttavia, all'interno di questo selettore, la richiesta deve corrispondere a tutti gli elementi.
Regole di deployment dei criteri
Ogni criterio di implementazione include una o più regole, che definiscono l'azione limitata nella pipeline di importazione o nel target selezionato. La regola definisce anche le circostanze in cui viene applicata.
Sono disponibili le seguenti regole:
rolloutRestriction
La regola rolloutRestriction
impedisce l'esecuzione delle azioni di implementazione specificate sui target selezionati utilizzati dalle pipeline di importazione selezionate. Questa regola
utilizza una finestra temporale che definisce quando non è possibile creare un implementazione per la
pipeline di pubblicazione e la destinazione selezionate. Consulta la sezione Date e orari per una descrizione di come le date e gli orari vengono specificati nelle regole del criterio di deployment.
Le seguenti azioni possono essere limitate mentre la regola è in vigore:
ADVANCE
Non è possibile avanzare nelle fasi di implementazione.
APPROVE
Non è possibile approvare la promozione di implementazione.
CANCEL
I rollout non possono essere annullati.
CREATE
Non è possibile creare implementazioni. Puoi creare una release se un criterio impedisce questa azione, ma la release non genererà un rollout.
IGNORE_JOB
I job non possono essere ignorati.
RETRY_JOB
Non è possibile riprovare i job.
ROLLBACK
Non è possibile eseguire il rollback dei rollout.
TERMINATE_JOBRUN
Le esecuzioni dei job non possono essere interrotte
Consulta la documentazione di riferimento dello schema di configurazione per la struttura YAML di questa regola.
Date e ore in una regola rolloutRestriction
Configuri blocchi di date e ore per specificare finestre di tempo ripetute e non ripetute durante le quali è in vigore il criterio di implementazione.
Di seguito sono riportati i requisiti per esprimere date e ore:
Le date sono espresse come
yyyy-mm-dd
.Quando si esprime l'ora del giorno, l'inizio del giorno è
00:00
e la fine del giorno è24:00
.Per
oneTimeWindows
, le date devono includere l'ora. PerweeklyWindows
, puoi omettere l'ora del giorno. Tuttavia, se includistartTime
, devi includere ancheendTime
e viceversa.Ad esempio, un blocco solo la domenica sarà il seguente:
- daysOfWeek: [SUNDAY] startTime: "00:00" endTime: "24:00"
Puoi anche procedere nel seguente modo:
- daysOfWeek: [SUNDAY]
Ma non questo:
- daysOfWeek: [SUNDAY] startTime: "00:00"
Devi includere un fuso orario nella stanza
timeWindows
.Ad esempio:
timeZone: America/New_York
.
Finestre temporali non ripetitive
Una finestra temporale non ripetuta inizia e termina in un giorno e in un orario specifici. Lo useresti per qualsiasi intervallo di tempo per cui vuoi limitare le implementazioni.
Le finestre temporali non ripetitive vengono configurate utilizzando una stanza oneTimeWindows
.
Finestre temporali ripetute
Una finestra temporale ricorrente descrive un blocco di tempo ricorrente durante il quale vuoi limitare le implementazioni. Ad esempio, puoi utilizzarlo per limitare le implementazioni nei fine settimana.
Le finestre temporali ripetute vengono configurate utilizzando una weeklyWindows
stanza.
Esempi
Questa sezione contiene alcuni esempi di utilizzo di date e orari per configurare quando viene applicato un criterio di deployment.
Blocco annuale
Se c'è un periodo dell'anno durante il quale vuoi bloccare i rollout, puoi configurare un blocco oneTimeWindows
per farlo. Se le date sono prevedibili, da un anno all'altro, devi comunque utilizzare più blocchi oneTimeWindows
.oneTimeWindow
Il seguente codice YAML mostra una finestra temporale una tantum (non ripetuta) per applicare un criterio di deployment per un blocco annuale:
timeWindows:
timeZone: "America/New_York"
oneTimeWindows:
- start: "2024-12-22 17:00"
end: "2025-01-02 09:00"
Questo file YAML descrive una finestra temporale dalle 17:00 del 22 dicembre 2024 alle 09:00 del 2 gennaio 2025.
Blocco ripetuto nel fine settimana
Il seguente file YAML mostra una finestra temporale ripetuta per applicare un criterio di implementazione che limita le implementazioni nei fine settimana, dalle 17:00 di venerdì alle 09:00 di lunedì mattina:
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"
Aggiornare un criterio di deployment
L'aggiornamento di un criterio di deployment prevede i seguenti passaggi:
Modifica il file YAML di configurazione dei criteri.
Se hai creato il criterio utilizzando la console Google Cloud, puoi recuperare la configurazione YAML selezionando la scheda YAML nella pagina Dettagli del criterio di deployment. A questo punto puoi copiare il testo in un file locale e modificarlo lì.
Applica il file utilizzando
gcloud deploy apply --filename=
.La risorsa del criterio di implementazione viene aggiornata con la nuova configurazione.
Poiché i criteri di deployment vengono valutati quando viene tentata l'azione limitata, tutte queste azioni contro tutte le risorse Cloud Deploy sono soggette al criterio aggiornato. In altre parole, non sono presenti restrizioni precedenti.
Ad esempio, se hai un blocco restrictRollouts
per l'intero mese di
dicembre e il 14 dicembre aggiorni il criterio in modo che la limitazione termini
il 15 dicembre, gli implementamenti non sono più bloccati dopo il 15 dicembre.
Sostituire un criterio di deployment
Se necessario, puoi ignorare un criterio di deployment. Ad esempio, se si verifica un problema con un deployment in produzione e devi eseguire il rollback, ma esiste una norma di deployment che impedisce qualsiasi implementazione, puoi sostituire questa norma per eseguire il rollback dell'implementazione errata.
Per eseguire l'override di un criterio di deployment, devi disporre dell'autorizzazione IAM clouddeploy.deployPolicies.override
.
Puoi eseguire l'override del criterio dalla gcloud CLI o utilizzando la console Google Cloud:
console
Nella console Google Cloud, prova a eseguire un'azione bloccata da un criterio.
Viene visualizzata una finestra di dialogo che indica che l'azione è bloccata da un criterio di deployment. Questa finestra di dialogo include un link alle norme specifiche che bloccano questa azione.
Nel campo di testo apposito, digita il nome del criterio e fai clic su Cerca di sostituire i criteri.
Se disponi dell'autorizzazione per eseguire l'override del piano, Cloud Deploy ora esegue l'azione.
Interfaccia a riga di comando gcloud
Per eseguire l'override di un criterio di deployment utilizzando gcloud CLI, aggiungi --override-deploy-policies
al comando per qualsiasi azione che verrebbe impedita dal criterio. Ad esempio, il seguente comando promuove una release, sostituendo un criterio di deployment specifico che altrimenti impedirebbe la promozione:
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
Eliminare un criterio di deployment
Per eliminare un criterio di deployment:
console
Nella console Google Cloud, vai alla pagina Criteri di deployment di Cloud Deploy.
Apri la pagina Deploy policies (Applica criteri)
La pagina include un elenco dei criteri di deployment disponibili nel progetto corrente, se presenti.
Seleziona il pulsante
Azioni per il criterio da eliminare e fai clic su Elimina criterio di deployment.Conferma l'eliminazione digitando il nome del criterio di deployment e fai clic su Conferma.
Il criterio è stato eliminato e ora puoi eseguire qualsiasi azione limitata dal criterio.
Interfaccia a riga di comando gcloud
Per eliminare un criterio di deployment utilizzando gcloud CLI, esegui il seguente comando:
gcloud deploy deploy-policies delete \
--project=[PROJECT] \
--region=[REGION] \
[POLICY_NAME]
Sostituisci quanto segue:
[POLICY_NAME]
Il nome del criterio come definito nel file di configurazione dei criteri.
[PROJECT]
L'ID del progetto Google Cloud in cui hai creato il criterio di deployment.
[REGION]
La regione in cui hai creato il criterio di distribuzione.
Dopo aver eliminato la risorsa del criterio di deployment, le pipeline di importazione e i target interessati non sono più soggetti al criterio e non saranno limitati, a meno che non siano interessati da un altro criterio di deployment.
Log del criterio di deployment
Quando viene valutato un criterio di deployment, vengono create voci del log della piattaforma per le seguenti azioni:
Valutazione delle norme
I log della piattaforma vengono scritti quando una richiesta viene valutata e viola le norme. Un log viene scritto anche quando il criterio viene violato da una richiesta, ma la richiesta è consentita perché il criterio è sospeso o è stato ignorato. Non viene scritto alcun log quando la richiesta viene concessa perché le norme non vengono violate.
Errore di notifica Pub/Sub in caso di modifica di una risorsa del criterio di deployment.
Passaggi successivi
Consulta lo schema del file di configurazione per informazioni dettagliate sulla configurazione dei criteri di deployment.
Scopri di più sull'automazione del deployment di Cloud Deploy.