Questo tutorial mostra come eseguire il deployment dell'app Python Bookshelf di esempio utilizzando Cloud Deployment Manager.
Deployment Manager consente di creare le risorse Google Cloud necessarie per un deployment in un solo passaggio, attraverso un processo dichiarativo e ripetibile. Con Deployment Manager puoi aggiornare i tuoi deployment, tracciare le modifiche nel tempo, creare modelli utilizzando Jinja o Python e parametrizzare i modelli, in modo che deployment simili abbiano un modello.
Obiettivi
- Clona e configura l'app di esempio Bookshelf.
- Creare configurazioni e modelli di Deployment Manager.
- Creare deployment Deployment Manager.
- Esegui il deployment dell'app Bookshelf di esempio utilizzando Deployment Manager.
Costi
In questo documento utilizzi i seguenti componenti fatturabili di Google Cloud:
Per generare una stima dei costi basata sull'utilizzo previsto,
utilizza il Calcolatore prezzi.
Una volta completate le attività descritte in questo documento, puoi evitare la fatturazione continua eliminando le risorse che hai creato. Per ulteriori informazioni, consulta la pagina Pulizia.
Prima di iniziare
- Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the Datastore API, Cloud Storage API, Pub/Sub API APIs.
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the Datastore API, Cloud Storage API, Pub/Sub API APIs.
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
-
Installa Python,
pip
evirtualenv
sul tuo sistema. Per le istruzioni, vedi Configurazione di un ambiente di sviluppo Python per Google Cloud.
Creazione di un bucket Cloud Storage
Le istruzioni seguenti descrivono come creare un bucket Cloud Storage. I bucket sono i container di base di Cloud Storage in cui vengono archiviati i dati.
Nella finestra del terminale, crea un bucket Cloud Storage, dove YOUR_BUCKET_NAME rappresenta il nome del tuo bucket:
gsutil mb gs://YOUR_BUCKET_NAME
Per visualizzare le immagini caricate nell'app Bookshelf, imposta l'elenco di controllo di accesso (ACL) predefinito del bucket su
public-read
:gsutil defacl set public-read gs://YOUR_BUCKET_NAME
Clonazione dell'app di esempio
L'app di esempio è disponibile su GitHub all'indirizzo GoogleCloudPlatform/getting-started-python
.
Clona il repository:
git clone https://github.com/GoogleCloudPlatform/getting-started-python.git -b steps
Vai alla directory di esempio:
cd getting-started-python/7-gce
Configurazione dell'applicazione
Apri
config.py
per modificare.Imposta il valore di
PROJECT_ID
sull'ID progetto.Imposta il valore
CLOUD_STORAGE_BUCKET
sul nome del bucket Cloud Storage.
Salva e chiudi
config.py
.
Esecuzione dell'applicazione nel computer locale
Crea un ambiente Python isolato e installa le dipendenze:
Linux/macOS
virtualenv -p python3 env source env/bin/activate pip install -r requirements.txt
Windows
virtualenv -p python3 env env\scripts\activate pip install -r requirements.txt
Esegui l'applicazione:
python main.py
Nel browser, inserisci il seguente indirizzo:
Per arrestare il server web locale premi CTRL+C. Se vuoi uscire dall'ambiente virtuale, inserisci deactivate
.
Deployment dell'app di esempio
Esegui il push del codice in un repository
Puoi ottenere il tuo codice in un'istanza di Compute Engine in esecuzione in diversi modi. Un modo è utilizzare Cloud Source Repositories. Ogni progetto include un repository Git disponibile per le istanze di Compute Engine. Le istanze eseguono quindi il pull della versione più recente del codice della tua app durante l'avvio. Utilizzare un repository Git è pratico perché l'aggiornamento dell'app non richiede la configurazione di nuove immagini o istanze; è sufficiente riavviare un'istanza esistente o crearne una.
Per la prima volta che utilizzi Git, utilizza
git config --global
per impostare la tua identità.In Cloud Console, crea un repository:
Esegui il push del codice dell'app nel repository del progetto, dove
[YOUR_PROJECT_ID]
è l'ID progetto e[YOUR_REPO]
è il nome del repository.git commit -am "Updating configuration" git config credential.helper gcloud.sh git remote add cloud https://source.developers.google.com/p/[YOUR_PROJECT_ID]/r/[YOUR_REPO] git push cloud master
Crea il deployment
Una volta eseguito il commit della configurazione e caricato il codice in Cloud Source Repositories, puoi utilizzare Deployment Manager per creare il deployment:
Vai alla directory
deployment_manager
:cd getting-started-python/7-gce/gce/deployment_manager
Crea il deployment:
gcloud deployment-manager deployments create my-deployment --config config.yaml
Visualizza un elenco di tutti i deployment:
gcloud deployment-manager deployments list
Descrivi il deployment e le risorse che ha creato:
gcloud deployment-manager deployments describe my-deployment
Visualizza la tua app
Dopo aver creato la regola di forwarding, possono essere necessari diversi minuti prima che la configurazione si propaghi e che il traffico venga instradato alle istanze.
Per verificare l'avanzamento:
gcloud compute backend-services get-health bookshelf-my-deployment-frontend --global
Quando almeno una delle tue istanze segnala
HEALTHY
, recupera l'indirizzo IP di inoltro per il bilanciatore del carico:gcloud compute forwarding-rules list --global
L'indirizzo IP delle regole di inoltro si trova nella colonna
IP_ADDRESS
.Nel browser, inserisci l'indirizzo IP indicato nell'elenco.
La tua app è ora in esecuzione su Google Cloud.
Nozioni di base sul codice
Configura il deployment
Puoi vedere come è configurato il deployment in config.yaml
:
Il file di configurazione importa il file modello come risorsa e lo utilizza per definire una risorsa denominata bookshelf
. Il modello utilizza diverse proprietà come parametri. Per ulteriori informazioni sulla creazione dei file di configurazione di Deployment Manager, consulta Creazione di una configurazione.
Configura lo schema del modello di deployment
Esamina il file di schema bookshelf.jinja.schema
, che definisce e documenta i parametri che il deployment dovrebbe fornire nel file di configurazione. Per ulteriori informazioni sugli schemi di configurazione, consulta la sezione Utilizzare gli schemi.
Configura il modello di deployment
Il modello definisce diverse risorse necessarie per creare un gruppo di istanze gestite, con bilanciamento del carico e scalabilità automatica. Per una descrizione completa delle risorse create, visualizza i commenti nel modello e guarda il tutorial Libreria su Compute Engine.
Tieni presente che Deployment Manager fornisce un modo per definire in modo dichiarativo le risorse, ma la maggior parte della configurazione per una determinata risorsa è definita dalla sua API. Ad esempio, la maggior parte delle opzioni di configurazione per la risorsa modello istanza si trova nella definizione di risorsa modello istanza nella documentazione di riferimento per l'API Compute Engine.
Il modello è scritto utilizzando il linguaggio Jinja. Quando scrivi i modelli Deployment Manager, puoi utilizzare Jinja o Python. Jinja ha il vantaggio di essere più dichiarativa, che può essere più leggibile e comprensibile rispetto a Python. Per alcuni deployment complessi, l'espressività completa di Python potrebbe rendere le cose più semplici. In questo caso, Jinja è sufficiente per creare le risorse necessarie.
In un modello, alcune variabili di ambiente vengono impostate automaticamente e puoi
accedervi usando il dizionario env
. In questo caso, il nome del deployment è indicato come nome da riutilizzare quando si assegnano nomi alle risorse create. Per ulteriori informazioni sulle variabili di ambiente disponibili, consulta la sezione Utilizzare le variabili di ambiente nella documentazione di Deployment Manager:
Il modello utilizza lo stesso script di avvio utilizzato nel tutorial di Compute Engine. I contenuti dello script vengono inseriti nel modello e l'istruzione di rientro Jinja rimuove correttamente i contenuti:
In un modello Jinja di Deployment Manager puoi anche fare riferimento alle risorse create altrove nel modello. Nell'esempio seguente, il servizio di backend utilizza il riferimento del gruppo di istanze gestite per ottenere il gruppo di istanze a cui deve reindirizzare:
Le proprietà specificate in config.yaml
possono essere utilizzate nel modello:
Esegui la pulizia
Per evitare che al tuo Account Google Cloud vengano addebitati costi relativi alle risorse utilizzate in questo tutorial, elimina il progetto che contiene le risorse oppure mantieni il progetto ed elimina le singole risorse.
Elimina il progetto
Il modo più semplice per eliminare la fatturazione è eliminare il progetto che hai creato per il tutorial.
Per eliminare il progetto:
- In the Google Cloud console, go to the Manage resources page.
- In the project list, select the project that you want to delete, and then click Delete.
- In the dialog, type the project ID, and then click Shut down to delete the project.
Elimina il deployment
Per eliminare il tuo deployment, inserisci questo comando. Questo comando elimina il bilanciatore del carico e le istanze di Compute Engine associate al deployment:
gcloud deployment-manager deployments delete my-deployment
Passaggi successivi
Scopri di più sulla definizione dei modelli Deployment Manager.
Scopri come eseguire l'app di esempio Python Bookshelf su Google Kubernetes Engine.
Scopri come eseguire l'app di esempio Python Bookshelf nell'ambiente flessibile di App Engine.
Esplora architetture di riferimento, diagrammi, tutorial e best practice su Google Cloud. Dai un'occhiata al nostro Cloud Architecture Center.
Scopri altri servizi Google Cloud.