Questo documento descrive come aggiornare un'offerta SaaS utilizzando App Lifecycle Manager.
App Lifecycle Manager consente di eseguire aggiornamenti su più unità di cui è stato eseguito il provisioning utilizzando i rollout. I rollout hanno come target le unità in base al loro UnitKind e, facoltativamente, possono applicare filtri (unit_filter) per scegliere come target un sottoinsieme specifico di unità utilizzando Google Cloud CLI . In questo modo, puoi gestire gli aggiornamenti in tutta la base di 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 dell'app, devi:
- Assicurati di aver abilitato App Lifecycle Manager.
- Assicurati di disporre delle autorizzazioni IAM necessarie per creare un'offerta di app.
- Crea un'offerta di app.
- Crea un UnitKind.
- Crea ed esegui il provisioning di un'unità.
- Prepara un blueprint Terraform nuovo o modificato.
Crea una release
Prima di poter aggiornare l'offerta dell'app, devi creare una release. Una release rappresenta una versione specifica della tua applicazione SaaS definita da un pacchetto di blueprint e dalle relative configurazioni associate. In sostanza, una release contiene l'aggiornamento delle tue unità.
Console
Vai ad App Lifecycle Manager.
Fai clic su Uscite.
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 Solo aggiornabile 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 sui progetti.
Nella sezione Variabili (facoltativo), puoi facoltativamente impostare variabili di input per questa release. Per ulteriori informazioni sull'impostazione delle variabili, consulta la documentazione sulle variabili.
Fai clic su Crea.
Hai creato una release. Puoi visualizzare i dettagli della release nella pagina Dettagli sulla release. Potrai fare riferimento a questa release quando crei un'implementazione.
gcloud
Per creare una release utilizzando la console Google Cloud :
gcloud beta app-lifecycle-manager 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. Questo farà parte del nome completo della risorsa per la release.BLUEPRINT_PACKAGE_URI: l'URI del pacchetto di blueprint da utilizzare per questa release. I progetti sono immagini OCI ospitate in Artifact Registry o in un altro registry OCI.- Il pacchetto del progetto contiene gli artefatti necessari per eseguire il provisioning di un'unità e include i metadati relativi al motore utilizzato (Terraform), nonché la versione.
- Se ometti il nome host nell'URI, per impostazione predefinita viene utilizzato il percorso Artifact Registry regionale (ad esempio
us-east1-docker.pkg.dev). - Per saperne di più sulla creazione di progetti, consulta la documentazione sui 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 posizione della release se non viene fornito il percorso URI completo. Il valore predefinito è la località configurata nell'ambiente Google Cloud CLI.LABELS: (facoltativo) etichette da applicare alla release per la categorizzazione. 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=app-lifecycle-manager
UPGRADEABLE_FROM_RELEASES: (Facoltativo) Un elenco separato da virgole di nomi di release che specifica quali release esistenti possono essere aggiornate con la nuova release che crei.- Se lasci vuoto questo flag, non esistono vincoli sulle release che possono essere aggiornate a questa release.
- Se specificato, le richieste di aggiornamento delle unità a questa release applicheranno questo vincolo.
INPUT_VARIABLE_DEFAULTS: (facoltativo) 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 saperne di più sull'impostazione delle variabili, consulta la documentazione sulle variabili.
Per saperne di più 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 funge da modello per il deployment della release nelle tue 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 aggiornare con la release.
Nel menu a discesa Strategia di implementazione, seleziona la strategia che vuoi utilizzare per eseguire il deployment della release nelle tue unità:
- Una località alla volta (semplice): aggiorna una località alla volta (senza tempi di soak). Aggiorna fino al 5% delle unità contemporaneamente.
- Tutto in una volta (semplice): tutte le località iniziano l'aggiornamento contemporaneamente (ideale per ambienti di sviluppo e scenari di emergenza).
- Progressivo (graduale): esegue il deployment degli aggiornamenti in modo graduale in batch percentuali in modo esponenziale in più località (con tempi di soak).
- Progressiva (singola località): aggiorna le unità in batch percentuali con tempi di soak estesi per rilevare i problemi in un'unica località.
Per saperne di più 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 per il tipo di implementazione.
gcloud
Per creare un tipo di implementazione utilizzando la console Google Cloud :
gcloud beta app-lifecycle-manager 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 soak). Aggiorna fino al 5% delle unità contemporaneamente.Google.Cloud.Simple.AllAtOnce: l'aggiornamento di tutte le località inizia contemporaneamente (ideale per ambienti di sviluppo e scenari di emergenza).Google.Cloud.Progressive.Gradual.v1: esegue il deployment degli aggiornamenti in modo graduale in batch percentuali in modo esponenziale in più località (con tempi di soak).Google.Cloud.Progressive.SingleLocation.v1: aggiorna le unità in batch percentuali con tempi di soak estesi per rilevare i problemi all'interno di una singola località.
Per saperne di più sulle strategie di implementazione, consulta Strategie di implementazione.
ERROR_BUDGET: la configurazione del 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: stringa di filtro formattata CEL 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'inizio 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 aggiornare mai la strategia del tipo di unità.
Per saperne di più, consulta il riferimento di Google Cloud CLI RolloutKind.
Funzionalità del budget di errore
App Lifecycle Manager include una funzionalità di budget di errore (ErrorBudget in RolloutKind) come misura di sicurezza. In questo modo, un'implementazione può essere messa in pausa automaticamente se il numero o la percentuale di errori di aggiornamento delle unità (ad esempio durante l'applicazione dell'infrastruttura) 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 specifica 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 di implementazione, fai clic su Crea.
Nella pagina Crea un'implementazione:
- Nella casella Tipo di implementazione, seleziona il tipo di implementazione che descrive in dettaglio come eseguire il deployment della 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, tra cui lo stato, l'avanzamento (per conteggio unità) e gli errori.
gcloud
Per creare un'implementazione utilizzando la console Google Cloud :
gcloud beta app-lifecycle-manager 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 tue 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 tue unità.LOCATION: la località in cui vuoi creare l'implementazione.
Per saperne di più, consulta il riferimento di Google Cloud CLI Rollout.
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 un'istanza MySQL 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.