Questo tutorial mostra come eseguire il deployment dell'app di esempio Python Bookshelf utilizzando Cloud Deployment Manager.
Deployment Manager consente di creare le risorse necessarie Google Cloud risorse per un deployment in un unico passaggio, tramite un processo dichiarativo e ripetibile. Con Deployment Manager, puoi aggiornare i deployment, monitorare le modifiche nel tempo, creare modelli utilizzando Jinja o Python e parametrizzare i modelli, in modo che i deployment simili condividano un modello.
Obiettivi
- Clonare e configurare l'app di esempio Bookshelf.
- Creare configurazioni e modelli di Deployment Manager.
- Creare deployment di Deployment Manager.
- Eseguire il deployment dell'app di esempio Bookshelf utilizzando Deployment Manager.
Costi
In questo documento vengono utilizzati i seguenti componenti fatturabili di Google Cloud:
Per generare una stima dei costi in base all'utilizzo previsto,
utilizza il calcolatore prezzi.
Al termine delle attività descritte in questo documento, puoi evitare l'addebito di ulteriori costi eliminando le risorse che hai creato. Per saperne di più, consulta Esegui la pulizia.
Prima di iniziare
- Accedi al tuo Google Cloud account. Se non conosci Google Cloud, crea un account per valutare le prestazioni dei nostri prodotti in scenari reali. I nuovi clienti ricevono anche 300 $di crediti senza costi per l'esecuzione, il test e il deployment dei workload.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
Enable the Datastore API, Cloud Storage API, Pub/Sub API APIs.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin), which contains theserviceusage.services.enablepermission. Learn how to grant roles.-
Installa Google Cloud CLI.
-
Se utilizzi un provider di identità (IdP) esterno, devi prima accedere a gcloud CLI con la tua identità federata.
-
Per inizializzare gcloud CLI, esegui questo comando:
gcloud init -
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
Enable the Datastore API, Cloud Storage API, Pub/Sub API APIs.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin), which contains theserviceusage.services.enablepermission. Learn how to grant roles.-
Installa Google Cloud CLI.
-
Se utilizzi un provider di identità (IdP) esterno, devi prima accedere a gcloud CLI con la tua identità federata.
-
Per inizializzare gcloud CLI, esegui questo comando:
gcloud init -
Installa Python,
pipevirtualenvsul tuo sistema. Per istruzioni, consulta Configurazione di un ambiente di sviluppo Python per Google Cloud.
Creazione di un bucket Cloud Storage
Le seguenti istruzioni descrivono in dettaglio 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 bucket:
gcloud storage buckets create gs://YOUR_BUCKET_NAME
Per visualizzare le immagini caricate nell'app Bookshelf, imposta la policy Identity and Access Management del bucket in modo da concedere il ruolo
legacyObjectReaderaallUsers:gcloud storage buckets add-iam-policy-binding gs://YOUR_BUCKET_NAME --member=allUsers --role=roles/storage.legacyObjectReader
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 stepsVai alla directory di esempio:
cd getting-started-python/7-gce
Configurazione dell'applicazione
Apri
config.pyper la modifica.Imposta il valore di
PROJECT_IDsull'ID progetto.Imposta il valore
CLOUD_STORAGE_BUCKETsul 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.txtWindows
virtualenv -p python3 env env\scripts\activate pip install -r requirements.txtEsegui l'applicazione:
python main.pyNel 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 inserire il 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 il pull della versione più recente del codice dell'app durante l'avvio. L'utilizzo di un repository Git è pratico perché l'aggiornamento dell'app non richiede la configurazione di nuove immagini o istanze; basta riavviare un'istanza esistente o crearne una.
La prima volta che utilizzi Git, usa
git config --globalper configurare la tua identità.Nella tua Google Cloud console, crea un repository:
Quindi, 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
Dopo aver 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_managerCrea il deployment:
gcloud deployment-manager deployments create my-deployment --config config.yamlVisualizza un elenco di tutti i deployment:
gcloud deployment-manager deployments listOttieni una descrizione del deployment e delle risorse che ha creato:
gcloud deployment-manager deployments describe my-deployment
Visualizza l'app
Dopo aver creato la regola di forwarding, possono trascorrere alcuni minuti prima che la configurazione venga propagata e che il traffico venga instradato alle istanze.
Per controllare l'avanzamento:
gcloud compute backend-services get-health bookshelf-my-deployment-frontend --globalQuando almeno una delle istanze segnala
HEALTHY, recupera l'indirizzo IP di forwarding per il bilanciatore del carico:gcloud compute forwarding-rules list --globalL'indirizzo IP delle regole di inoltro si trova nella colonna
IP_ADDRESS.Nel browser, inserisci l'indirizzo IP dall'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 del modello come risorsa e lo utilizza per definire una risorsa denominata bookshelf. Il modello accetta diverse proprietà come parametri. Per ulteriori informazioni sulla creazione di
file di configurazione di Deployment Manager, consulta
Creazione di una configurazione.
Configura lo schema del modello di deployment
Esamina il file dello schema bookshelf.jinja.schema, che definisce e documenta i parametri che il deployment deve fornire nel file di configurazione. Per ulteriori informazioni sugli schemi di configurazione, consulta
Utilizzo degli schemi.
Configura il modello di deployment
Il modello definisce diverse risorse necessarie per creare un gruppo di istanze gestite con scalabilità automatica e bilanciamento del carico. Per una descrizione completa delle risorse create, consulta i commenti nel modello e il tutorial Bookshelf su Compute Engine.
Tieni presente che Deployment Manager fornisce un modo per definire le risorse in modo dichiarativo, 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 del modello di istanza si trova nella definizione della risorsa del modello di istanza nella documentazione di riferimento per l' API Compute Engine.
Il modello è scritto utilizzando il linguaggio di creazione di modelli Jinja. Quando scrivi i modelli di Deployment Manager, puoi utilizzare Jinja o Python. Jinja ha il vantaggio di essere più dichiarativo, il che può essere più leggibile e facile da capire rispetto a Python. Per alcuni deployment complessi, la piena espressività di Python potrebbe semplificare le cose. In questo caso, Jinja è sufficiente per creare le risorse necessarie.
In un modello, alcune variabili di ambiente vengono impostate automaticamente e puoi accedervi utilizzando il dizionario env. In questo caso, il nome del deployment viene fatto riferimento come nome da riutilizzare quando si assegnano nomi alle risorse create. Per ulteriori informazioni sulle variabili di ambiente disponibili, consulta Utilizzo delle 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 la direttiva di rientro Jinja rientra 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 puntare:
Le proprietà specificate in config.yaml possono essere utilizzate nel modello:
Libera spazio
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 creato per il tutorial.
Per eliminare il progetto:
- Nella Google Cloud console, vai alla pagina Gestisci risorse.
- Nell'elenco dei progetti, seleziona il progetto che vuoi eliminare, quindi fai clic su Elimina.
- Nella finestra di dialogo, digita l'ID progetto e fai clic su Chiudi per eliminare il progetto.
Elimina il deployment
Per eliminare il deployment, inserisci il seguente comando. Questo comando elimina il bilanciatore del carico e le eventuali istanze di Compute Engine associate al deployment:
gcloud deployment-manager deployments delete my-deployment
Passaggi successivi
Scopri di più su come definire i modelli di 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, diagrammi e best practice di riferimento su Google Cloud. Consulta il nostro Cloud Architecture Center.
Esplora altri Google Cloud servizi.