Questo documento descrive come implementare una release utilizzando App Lifecycle Manager.
App Lifecycle Manager consente di eseguire aggiornamenti su più unità di cui è stato eseguito il provisioning utilizzando le implementazioni. Le implementazioni hanno come target le unità in base al relativo UnitKind e, facoltativamente, possono applicare filtri (unit_filter) per indirizzare un sottoinsieme specifico di unità utilizzando Google Cloud CLI . In questo modo, gli aggiornamenti vengono gestiti nella base di cui è stato eseguito il deployment. È possibile eseguire un rollback eseguendo l'upgrade delle unità a una release precedente.
Per le operazioni su una singola unità specifica, utilizza i controlli disponibili nella pagina Dettagli unità.
Prima di iniziare
Prima di aggiornare l'offerta SaaS, devi:
- Assicurarti di aver abilitato App Lifecycle Manager.
- Assicurarti di disporre delle autorizzazioni IAM necessarie per creare un'offerta SaaS.
- Creare un'offerta SaaS.
- Creare un UnitKind.
- Creare e eseguire il provisioning di un'unità.
- Preparare un progetto Terraform nuovo o modificato.
Crea una release
Prima di poter aggiornare l'offerta SaaS, devi creare una release. Una release rappresenta una versione specifica dell'applicazione SaaS definita da un pacchetto di progetti e dalle relative configurazioni. In sostanza, una release contiene l'aggiornamento delle unità.
Console
Vai ad App Lifecycle Manager.
Fai clic su Release.
Nella pagina Release, fai clic su Crea.
Nella pagina Crea release:
- Nella casella Nome release, inserisci un nome univoco per la release.
- Nella casella Tipo di unità, seleziona il tipo di unità a cui è associata questa release.
- Nella sezione Eseguibile l'upgrade solo da (facoltativo), puoi selezionare facoltativamente le release da cui è possibile eseguire l'upgrade delle unità a questa release. In questo modo puoi controllare i percorsi di upgrade.
- Nei passaggi Crea progetto e Archivia progetto, seleziona o crea il progetto. Per informazioni dettagliate sulle opzioni di creazione dei progetti, consulta la documentazione relativa ai progetti.
Nella sezione Variabili (facoltativo), puoi impostare facoltativamente le variabili di input per questa release. Per ulteriori informazioni sull'impostazione delle variabili, consulta la documentazione relativa alle variabili .
Fai clic su Crea.
Hai creato una release. Puoi visualizzare i dettagli della release nella pagina Dettagli release. Potrai fare riferimento a questa release quando crei un'implementazione.
gcloud
Per creare una release utilizzando la console: Google Cloud
gcloud beta saas-runtime releases create RELEASE_NAME --blueprint-package=BLUEPRINT_PACKAGE_URI --unit-kind=UNIT_KIND [--location=LOCATION] [--labels=[KEY=VALUE,...]] [--upgradeable-from-releases=[RELEASE_NAME,...]] [--input-variable-defaults=[variable=VARIABLE,value=VALUE,type=TYPE,...]]
Sostituisci:
RELEASE_NAME: l'ID della release che vuoi creare. Farà parte del nome completo della risorsa per la release.BLUEPRINT_PACKAGE_URI: l'URI del pacchetto di progetti da utilizzare per questa release. I progetti sono immagini OCI ospitate in Artifact Registry o in un altro registro OCI.- Il pacchetto di progetti contiene gli artefatti necessari per eseguire il provisioning di un'unità e include i metadati sul motore utilizzato (Terraform), nonché la versione.
- Se ometti il nome host nell'URI, per impostazione predefinita viene utilizzato il percorso di Artifact Registry regionale (ad esempio
us-east1-docker.pkg.dev). - Per ulteriori informazioni sulla creazione di progetti, consulta la documentazione relativa ai progetti.
UNIT_KIND: l'ID o l'identificatore completo del tipo di unità a cui corrisponde questa release. UNIT_KIND è immutabile dopo la creazione di una release.LOCATION: la località in cui vuoi creare la release. Questo flag fornisce un valore di riserva per la località della release se non viene fornito il percorso URI completo. Per impostazione predefinita, viene utilizzata la località configurata nell'ambiente Google Cloud CLI.LABELS: (facoltativo) le etichette da applicare alla release per la classificazione. Le etichette sono coppie chiave-valore.- Le chiavi devono iniziare con un carattere minuscolo e contenere solo trattini, trattini bassi, caratteri minuscoli e numeri.
- I valori devono contenere solo trattini, trattini bassi, caratteri minuscoli e numeri.
- Ad esempio:
--labels=environment=staging,team=saas-runtime
UPGRADEABLE_FROM_RELEASES: (facoltativo) un elenco separato da virgole di nomi di release che specifica quali release esistenti possono essere aggiornate con la nuova uscita che crei.- Se lasci vuoto questo flag, non ci sono vincoli sulle release che possono essere aggiornate a questa release.
- Se fornito, le richieste di aggiornamento delle unità a questa release applicheranno questo vincolo.
INPUT_VARIABLE_DEFAULTS: (facoltativo) i valori predefiniti per le variabili di input richieste dal progetto.- Puoi specificare i valori predefiniti delle variabili in linea o facendo riferimento a un file YAML o JSON.
- Le variabili definite qui possono essere sostituite durante la creazione dell'implementazione.
Per ulteriori informazioni sull'impostazione delle variabili, consulta la documentazione relativa alle variabili.
Per ulteriori informazioni sulle release, consulta il riferimento di Google Cloud CLI Release.
Crea un tipo di implementazione
Prima di poter creare un'implementazione, devi creare un tipo di implementazione che funga da modello per il deployment della release nelle unità.
Console
Vai ad App Lifecycle Manager.
Fai clic su Tipi di implementazione.
Nella pagina Tipi di implementazione, fai clic su Crea.
Nella pagina Crea un tipo di implementazione:
- Nella casella Nome tipo di implementazione, inserisci un nome per il tipo di implementazione.
- Nella casella Tipo di unità, seleziona il tipo di unità che vuoi implementare nella release.
Nel menu a discesa Strategia di implementazione, seleziona la strategia che vuoi utilizzare per eseguire il deployment della release nelle unità:
- Una località alla volta (semplice): aggiorna una località alla volta (senza tempi di attesa). Aggiorna fino al 5% delle unità contemporaneamente.
- Tutte contemporaneamente (semplice): tutte le località iniziano l'implementazione contemporaneamente (ideale per ambienti di sviluppo e scenari di emergenza
- Progressiva (graduale): implementa gradualmente gli aggiornamenti in batch di percentuale in modo esponenziale in più località (con tempi di attesa).
- Progressiva (singola località): aggiorna le unità in batch di percentuale con tempi di attesa estesi per rilevare problemi in una singola località.
Per ulteriori informazioni sulle strategie di implementazione, consulta Strategie di implementazione.
Fai clic su Crea.
Hai creato un tipo di implementazione. Nella pagina Dettagli tipo di implementazione , puoi visualizzare e modificare i parametri del tipo di implementazione.
gcloud
Per creare un tipo di implementazione utilizzando la console: Google Cloud
gcloud beta saas-runtime rollout-kinds create ROLLOUT_KIND_NAME --unit-kind=UNIT_KIND --location=LOCATION --rollout_strategy=ROLLOUT_STRATEGY --error_budget=ERROR_BUDGET --unit_filter=UNIT_FILTER --update_unit_kind_default=UPDATE_UNIT_KIND_DEFAULT
Sostituisci:
ROLLOUT_KIND_NAME: il nome del tipo di implementazione.UNIT_KIND: definisce le unità a cui vuoi applicare le release. Le release vengono applicate a tutte le unità del tipo di unità selezionato.LOCATION: la località in cui vuoi creare il tipo di implementazione.ROLLOUT_STRATEGY: definisce la strategia di implementazione per il tipo di implementazione. I valori possibili sono:Google.Cloud.Simple.OneLocationAtATime: aggiorna una località alla volta (senza tempi di attesa). Aggiorna fino al 5% delle unità contemporaneamente.Google.Cloud.Simple.AllAtOnce: tutte le località iniziano l'implementazione contemporaneamente (ideale per ambienti di sviluppo e scenari di emergenza).Google.Cloud.Progressive.Gradual.v1: implementa gradualmente gli aggiornamenti in batch di percentuale in modo esponenziale in più località (con tempi di attesa).Google.Cloud.Progressive.SingleLocation.v1: aggiorna le unità in batch di percentuale con tempi di attesa estesi per rilevare problemi in una singola località.
Per ulteriori informazioni sulle strategie di implementazione, consulta Strategie di implementazione.
ERROR_BUDGET: la configurazione per il budget di errore. Se il numero di unità non riuscite supera il valore massimo dierror_budget(definito daallowed_count,allowed_ratio*total_units), l'implementazione verrà messa in pausa. Seerror_budgetnon è impostato, App Lifecycle Manager tenterà di aggiornare tutte le unità indipendentemente dal numero di errori riscontrati.UNIT_FILTER: CEL stringa di filtro in formato utilizzata per le unità. Il filtro verrà applicato per determinare la popolazione di unità idonee. Questo filtro può solo ridurre l'ambito dell'implementazione. Non può espandere l'ambito dell'implementazione.UPDATE_UNIT_KIND_DEFAULT: la configurazione per l'aggiornamento del tipo di unità. Per impostazione predefinita, il tipo di unità verrà aggiornato all'avvio dell'implementazione. I valori possibili sono:UPDATE_UNIT_KIND_STRATEGY_UNSPECIFIED: la strategia di aggiornamento del tipo di unità non è specificata.UPDATE_UNIT_KIND_STRATEGY_ON_START: aggiorna la strategia del tipo di unità all'avvio dell'implementazione.UPDATE_UNIT_KIND_STRATEGY_NEVER: non aggiorna mai la strategia del tipo di unità.
Per ulteriori informazioni, consulta il riferimento di
RolloutKind
Google Cloud CLI.
Funzionalità Budget di errore
App Lifecycle Manager include una funzionalità di budget di errore (ErrorBudget in RolloutKind) come misura di sicurezza. Questa funzionalità può mettere automaticamente in pausa un'implementazione se il numero o la percentuale di errori di aggiornamento delle unità (durante l'applicazione dell'infrastruttura, ad esempio) supera una soglia configurata, contribuendo a limitare l'impatto di potenziali problemi durante un aggiornamento.
Crea un'implementazione
Dopo aver creato un tipo di implementazione, puoi creare un'implementazione che specifichi la release con cui vuoi aggiornare le unità.
Una volta creata l'implementazione, App Lifecycle Manager aggiorna le unità in base alla strategia definita nel tipo di unità.
Console
Vai ad App Lifecycle Manager.
Fai clic su Implementazioni.
Nella pagina Elenco implementazioni, fai clic su Crea.
Nella pagina Crea un'implementazione:
- Nella casella Tipo di implementazione, seleziona il tipo di implementazione che descrive in dettaglio come implementare la release nelle unità specificate.
- Nella casella Release, specifica la release con cui aggiornare le unità.
- Nella casella Nome implementazione, inserisci un nome per l'implementazione.
Fai clic su Crea.
L'implementazione è stata creata.
Nella pagina Dettagli implementazione globale, puoi monitorare i dettagli dell'implementazione, inclusi lo stato, l'avanzamento (in base al conteggio delle unità) e gli errori dell'implementazione.
gcloud
Per creare un'implementazione utilizzando la console: Google Cloud
gcloud beta saas-runtime rollouts create ROLLOUT_NAME --rollout-kind=ROLLOUT_KIND_NAME --release=RELEASE_NAME --location=LOCATION
Sostituisci:
ROLLOUT_NAME: il nome dell'implementazione.ROLLOUT_KIND_NAME: definisce il tipo di implementazione che vuoi utilizzare per applicare le release alle unità. Le release vengono applicate a tutte le unità del tipo di unità definito nel tipo di implementazione.RELEASE_NAME: definisce il file binario della release di cui vuoi eseguire il deployment nelle unità.LOCATION: la località in cui vuoi creare l'implementazione.
Per ulteriori informazioni, consulta il riferimento di
Rollout
Google Cloud CLI.
Passaggi successivi
- Per saperne di più su App Lifecycle Manager, consulta la panoramica di App Lifecycle Manager.
- Per provare un tutorial, consulta Esegui il deployment di una VM con App Lifecycle Manager.
- Per capire come vengono utilizzati i service account e come concedere autorizzazioni granulari per questi account, consulta Service account di App Lifecycle Manager.