Esegui il deployment dell'app per caricarla ed eseguirla su App Engine. Quando esegui il deployment delle tue app, crei versioni di queste app e dei relativi servizi in App Engine. Puoi eseguire il deployment di intere app, inclusi tutti i file di codice sorgente e di configurazione, oppure puoi eseguire il deployment e l'aggiornamento di singole versioni o di file di configurazione.
Per eseguire il deployment delle tue app in modo programmatico, utilizza l'API Admin.
Prima di iniziare
Prima di poter eseguire il deployment dell'app:
Il proprietario del progetto Google Cloud deve creare l'applicazione App Engine.
Assicurati che il tuo account utente includa i privilegi richiesti.
Concedi a Cloud Build l'autorizzazione per il deployment delle app nel tuo progetto. Quando esegui il deployment dell'app, App Engine utilizza Cloud Build per creare l'app in un container ed eseguire il deployment del container nel runtime nella regione dell'app. Cloud Build non dispone dell'autorizzazione per il deployment delle app Java 8 per impostazione predefinita, quindi devi concedere l'autorizzazione prima di poter eseguire il deployment delle app.
Configurazione dello strumento di build Maven (opzione consigliata)
Per eseguire il deployment dell'app utilizzando lo strumento di build Maven, devi configurare il progetto in modo che utilizzi il plug-in Maven per App Engine.
- Installa gcloud CLI, il componente
app-engine-javaed esegui l'accesso. - Compila e crea il progetto utilizzando il plug-in Maven
Installazione di gcloud CLI
Per eseguire il deployment dell'app con gcloud CLI, devi scaricare, installare e inizializzare gcloud CLI.
Se hai già installato gcloud CLI e vuoi configurarla per utilizzare un ID progetto Google Cloud diverso da quello con cui l'hai inizializzata, consulta Gestione delle configurazioni di gcloud CLI.
Utilizzo di un proxy
Se esegui il comando di deployment da un sistema che utilizza un proxy HTTP o HTTPS, devi configurare lo strumento in modo che possa comunicare tramite il proxy.
Esegui questi comandi per configurare gcloud CLI:
gcloud config set proxy/type [PROXY_TYPE]
gcloud config set proxy/address [PROXY_ADDRESS]
gcloud config set proxy/port [PROXY_PORT]
Puoi anche impostare un username e un password per il proxy. Per saperne
di più, consulta gcloud config.
Deployment di un'app
Per eseguire il deployment dell'app in App Engine, utilizza
lo strumento di compilazione Maven (consigliato) o
il comando gcloud app deploy
dalla directory radice dell'applicazione.
Utilizzo di Maven (opzione consigliata)
Per eseguire il deployment dell'app con lo strumento di compilazione Maven, esegui il comando seguente dalla directory di primo livello del progetto, in cui si trova il file pom.xml:
mvn package appengine:deploy -Dapp.deploy.projectId=PROJECT_ID
Sostituisci PROJECT_ID con l'ID del tuo progetto Google Cloud . Se il
tuo file pom.xml
specifica già
l'ID progetto, non devi includere la proprietà -Dapp.deploy.projectId nel
comando che esegui.
Utilizzo della riga di comando gcloud
gcloud app deploy [CONFIGURATION_FILES]
Sostituisci [CONFIGURATION_FILES] con il percorso di uno o più file di configurazione.
Utilizza un singolo spazio vuoto per separare i nomi dei percorsi.
Flag facoltativi:
--version: specifica un ID versione personalizzato. Se non specifichi un ID versione, App Engine ne genera uno.--no-promote: esegue il deployment dell'app senza instradare automaticamente tutto il traffico a quella versione. Per impostazione predefinita, ogni versione che implementi viene configurata automaticamente per ricevere il 100% del traffico.--project: specifica un ID progetto Google Cloud alternativo a quello inizializzato come predefinito in gcloud CLI.
Per saperne di più, consulta il riferimento gcloud app deploy
o esegui gcloud help dalla riga di comando.
Scegliere ID versione univoci
Per le istanze con scalabilità manuale, l'ID della versione deve iniziare con una lettera per distinguerle dagli ID istanza numerici. In questo modo, le richieste vengono indirizzate alla destinazione corretta ed evita l'ambiguità con i pattern URL come123-dot-my-service.[REGION_ID].r.appspot.com, che possono essere interpretati
in due modi:
- Se esiste la versione
123, la richiesta viene instradata alla versione123del serviziomy-service. - Se la versione
123non esiste, la richiesta viene invece indirizzata all'ID istanza123in cui sono in esecuzione le versioni del serviziomy-service.
Puoi assegnare il nome che preferisci alle versioni per le istanze configurate per la scalabilità automatica o di base perché il targeting di queste istanze non è supportato.
Deployment di più applicazioni di servizio
Quando la tua applicazione viene presa in considerazione in più servizi, puoi eseguire il deployment e l'aggiornamento di servizi con targeting individuale o di tutti i servizi contemporaneamente. L'implementazione degli aggiornamenti ai servizi può includere l'aggiornamento di singoli file di configurazione o l'aggiornamento del codice sorgente nelle versioni corrispondenti.
Ad esempio, puoi eseguire il deployment e creare due versioni in App Engine, dove ogni versione viene eseguita nel proprio servizio. La prima versione funge da servizio frontend e l'altra da backend dell'app. Puoi quindi eseguire il deployment di singoli file di configurazione per aggiornare solo le impostazioni di un servizio. Puoi anche scegliere di eseguire il deployment di una nuova versione in un servizio per aggiornare il codice sorgente del frontend, del backend o di entrambi contemporaneamente.
Requisiti per più servizi
Utilizzi gli stessi comandi di deployment per eseguire il deployment e l'aggiornamento dei più servizi della tua applicazione con i seguenti requisiti:
Devi inizialmente eseguire il deployment di una versione della tua app nel servizio
defaultprima di poter creare ed eseguire il deployment dei servizi successivi.Devi specificare l'ID del tuo servizio nel file di configurazione
appengine-web.xmldella versione corrispondente. Per specificare l'ID servizio, includi la definizione dell'elementomodule: [YOUR_SERVICE_ID]in ogni file di configurazione. Per impostazione predefinita, l'esclusione di questa definizione dell'elemento dal file di configurazione esegue il deployment della versione nel serviziodefault.Devi specificare tutti i file di configurazione
appengine-web.xmlcorrispondenti nel comando di deployment per eseguire il deployment simultaneo di più servizi. Il serviziodefaultdeve essere elencato per primo.
Per eseguire il deployment di più servizi
Dalla directory principale dell'applicazione in cui si trovano i file di configurazione, esegui il comando di deployment e specifica i percorsi relativi e i nomi dei file
per il file appengine-web.xml di ogni servizio.
Utilizzo dello strumento di compilazione Maven
Se la directory principale del tuo progetto contiene solo i tuoi servizi, puoi deployarli tutti con un unico comando Maven.
Il comando di deployment Maven scorre ogni servizio del progetto per individuare i relativi file di configurazione e poi esegue il deployment di ogni servizio.
Per eseguire il deployment di più servizi utilizzando il plug-in Maven:
- Assicurati che appengine-maven-plugin sia stato aggiunto al file
pom.xmlprincipale. Esegui questo comando:
mvn package appengine:deploy -Dapp.deploy.projectId=PROJECT_ID
Sostituisci PROJECT_ID con l'ID del tuo progetto Google Cloud . Se il tuo file
pom.xmlspecifica già l'ID progetto, non devi includere la proprietà-Dapp.deploy.projectIdnel comando che esegui.
Utilizzo di gcloud
gcloud app deploy [CONFIGURATION_FILES]
Sostituisci [CONFIGURATION_FILES] con il percorso di uno o più file di configurazione.
Utilizza un singolo spazio vuoto per separare i nomi dei percorsi.
Riceverai la verifica tramite la riga di comando man mano che ogni servizio viene implementato correttamente.
Visualizzazione dei log di build
Cloud Build trasmette in streaming i log di build e deployment visualizzabili nella sezione Cronologia di Cloud Build della Google Cloud console. Per visualizzare le build nella regione dell'app, utilizza il menu a discesa Regione nella parte superiore della pagina per scegliere la regione in base alla quale vuoi filtrare.
Aggiornamento degli indici
Per creare o aggiornare gli indici utilizzati dalle tue app, carica il file di configurazione
datastore-indexes.xml
in Datastore. Gli indici che non esistono ancora vengono
creati dopo il caricamento del file di configurazione.
La creazione di tutti gli indici da parte di Datastore può richiedere un po' di tempo e, di conseguenza, questi indici non saranno immediatamente disponibili per App Engine. Se la tua app è già configurata per ricevere traffico, possono verificarsi eccezioni per le query che richiedono un indice ancora in fase di creazione.
Per evitare eccezioni, devi lasciare il tempo di creare tutti gli indici, ad esempio:
Carica il file di configurazione
index.xmlin Datastore prima di eseguire il deployment della tua versione:Carica il file
index.xmlin Datastore: Per informazioni, consulta il riferimentogcloud datastore indexes create index.yaml
gcloud datastore.Utilizza la console Google Cloud per monitorare lo stato di tutti gli indici:
Una volta creati tutti gli indici, esegui il deployment della nuova versione in App Engine.
Crea gli indici prima di eseguire la migrazione o la suddivisione del traffico nella tua versione:
-
Definisci un nuovo ID versione nel file
appengine-web.xmldella tua app. - Esegui il deployment della nuova versione.
- Utilizza la console Google Cloud per monitorare lo stato di tutti gli indici:
- Dopo aver creato tutti gli indici, utilizza la console Google Cloud per eseguire la migrazione o dividere il traffico verso la tua versione:
-
Definisci un nuovo ID versione nel file
Per saperne di più sugli indici, consulta la sezione Configurazione degli indici Datastore.
Risoluzione dei problemi
Di seguito sono riportati i messaggi di errore comuni che potresti riscontrare:
PERMISSION_DENIED: Operation not allowedThe "appengine.applications.create" permission is required.- Se il Google Cloud progetto non include l'applicazione
App Engine
richiesta, il
comando
gcloud app deploypuò non riuscire quando tenta di eseguire il comandogcloud app create. Solo gli account con il ruolo Proprietario dispongono delle autorizzazioni necessarie per creare applicazioni App Engine. Command not found- Consulta Utilizzo del server di sviluppo locale per istruzioni su come configurare lo strumento del server di sviluppo locale.
Import Error- Se hai installato sia gcloud CLI sia l'SDK App Engine originale, le voci del PATH potrebbero entrare in conflitto tra loro e causare errori di importazione. Se hai ricevuto errori durante l'esecuzione dei comandi gcloud CLI, segui le istruzioni per l'esecuzione del server di sviluppo locale.
[400] The first service (module) you upload to a new application must be the 'default' service (module)- Prima di poter eseguire il deployment e creare i più servizi della tua applicazione,
devi prima eseguire il deployment e creare il
defaultservizio. Per informazioni dettagliate su come eseguire il deployment di una versione nel serviziodefault, vedi Deployment di più applicazioni di servizio. Too Many Versions (403)- App Engine ha un limite al numero di versioni di deployment della tua
applicazione. Questi valori sono diversi per le applicazioni senza costi e quelle implementate.
Puoi utilizzare la consoleGoogle Cloud
per eliminare una versione precedente e poi caricare l'ultimo codice.
You do not have permission to modify this app (403) - Ciò può verificarsi quando l'account per cui è stata eseguita l'autenticazione non dispone
dell'autorizzazione per il deployment nell'ID applicazione specificato nel comando
o nel file
appengine-web.xml. Verifica che l'ID applicazione sia corretto e corrisponda al valore dell'ID progetto Google Cloud console . Successivamente, controlla le autorizzazioni del progetto nella console e verifica che il tuo account sia elencato con un livello di autorizzazione sufficiente per consentire il deployment delle app. [13] An internal error occurred while creating a Cloud Storage bucket.App Engine crea un bucket multiregionale Cloud Storage predefinito per tuo conto, nella stessa regione in cui viene creata l'applicazione. Questo bucket è necessario per archiviare i contenuti della tua applicazione. Questo errore viene restituito quando non è possibile creare questo bucket nei seguenti scenari:
Il service account App Engine predefinito non è presente nel tuo progetto. Se il tuo account è stato rimosso prima che siano trascorsi 30 giorni dalla sua eliminazione, puoi ripristinarlo.
Il tuo progetto fa parte di un'organizzazione che applica i criteri
constraints/gcp.resourceLocationse l'organizzazione non consente la creazione di risorse nella stessa regione in cui è stato creato App Engine. Dovrai ignorare il criterioconstraints/gcp.resourceLocationsapplicato per il tuo progetto e consentire le località multiregionali nella stessa regione in cui viene creata l'app App Engine.
[13] An internal error occurredQuesto errore può verificarsi se il file di configurazione
app.yamldi App Engine contiene una risorsanamenon valida nella chiavevpc_access_connector. Assicurati che il camponamecontenga il progetto e la regione corretti in cui è stato creato il connettore di accesso VPC serverless.Se il problema persiste dopo aver verificato che la configurazione di
app.yamlsia valida, utilizza Google Cloud SDK per eseguire nuovamente il deployment del servizio, aggiungendo il flag--verbosity=debuge contatta l'assistenza cloud fornendo l'output del comando.- Altro errore di deployment
Se il deployment non va a buon fine, assicurati che l'API Cloud Build sia abilitata nel tuo progetto. App Engine abilita automaticamente questa API la prima volta che esegui il deployment di un'app, ma se qualcuno ha disattivato l'API, i deployment non andranno a buon fine.
Passaggi successivi
- Utilizza i servizi per creare un'applicazione di grandi dimensioni.
- Suddividi traffico o esegui la migrazione del traffico per indirizzare il traffico alle versioni che implementi.
- Esamina gli argomenti della riga di comando e i
flag di
gcloud app deploy.