In questo tutorial eseguirai il deployment di un'app di log di esempio che utilizza Node.js per e MySQL per il suo backend. Al termine del tutorial, il deployment conterrà le seguenti risorse:
Se non hai mai utilizzato Deployment Manager, consulta i tutorial della guida rapida o della guida passo passo.
Prima di iniziare
- Se vuoi utilizzare gli esempi di riga di comando in questa guida, installa lo strumento a riga di comando `gcloud`.
- Se vuoi utilizzare gli esempi di API in questa guida, configura l'accesso API.
- Leggi una panoramica del bilanciamento del carico della rete di Compute Engine.
- Leggi una panoramica dei container Docker.
Creare i modelli di risorse
Questo esempio avvia un deployment che contiene una serie di Google Cloud. Per iniziare, crea modelli che definiscono queste risorse distintamente. In seguito, questi modelli verranno richiamati nella configurazione finale. Il tuo il deployment contiene le seguenti risorse:
- Un'istanza Compute Engine che ospita un database MySQL per l'app.
- Un modello di istanza per le istanze di frontend che utilizza un'immagine Docker per l'app Node.js.
- Un gruppo di istanze gestite che utilizza il modello di istanza per creare due istanze frontend.
- Un gestore della scalabilità automatica, che avvia o arresta altre istanze di frontend in base per il traffico in entrata.
- Un controllo di integrità, che verifica se le istanze di frontend sono disponibili lavorare.
- Un bilanciatore del carico di rete con una regola di inoltro.
- Un pool di destinazione per il gruppo di istanze gestite.
Creazione del modello per il backend MySQL
Il backend di questa app è una singola istanza Compute Engine che esegue un container Docker MySQL. Il modello container_vm.py
definisce un'istanza Compute Engine che può eseguire container Docker. Per assicurarti che il
modello segua la struttura corretta e contenga tutte le proprietà obbligatorie, hai bisogno anche di un file schema.
Copia il modello di seguito o scaricalo dal repository GitHub:
Scarica il file dello schema per il modello.
Il modello contiene alcune proprietà non definite, come containerImage
, che sono
definite nei modelli successivi.
Quando utilizzi immagini container su istanze di Compute Engine, devi anche
fornire un file manifest che descriva l'immagine container da utilizzare. Crea un metodo di supporto denominato container_helper.py
per definire dinamicamente il manifest del contenitore:
Creazione del modello per il frontend Node.js
Il frontend dell'app esegue Node.js e consente agli utenti di pubblicare messaggi sul web . Il frontend viene eseguito su un gruppo di istanze di macchine virtuali, supportate da un gestore della scalabilità automatica e un bilanciatore del carico. Per creare modelli frontend, segui le istruzioni riportate di seguito.
Crea una risorsa modello di istanza.
Per creare un gruppo di istanze gestite, ovvero un gruppo di istanze di macchine virtuali (VM) identiche che puoi controllare come singola entità, è necessario un modello di istanza.
Crea un file denominato
container_instance_template.py
e scarica l'app schema per il modello:Crea un regolatore automatico, un gruppo di istanze gestite e un bilanciatore del carico.
Poi, crea un altro modello che utilizzi
container_instance_template.py
e crea le altre risorse di frontend, un gestore della scalabilità automatica, un bilanciatore del carico e un gruppo di istanze gestite.
Questo modello include le seguenti risorse:
Un modello di istanza che utilizza
container_instance_template.py
modello.Un gruppo di istanze gestite che utilizza il modello di istanza e un gestore della scalabilità automatica che fa riferimento al gruppo di istanze gestite. L'utilizzo dei riferimenti garantisce che Deployment Manager crei le risorse in un ordine specifico. In questo caso, il gruppo di istanze gestite viene creato prima del gestore della scalabilità automatica.
Un bilanciatore del carico di rete contenente le seguenti risorse:
- Una regola di forwarding con un singolo indirizzo IP esterno esposto al Internet.
- Un pool di destinazione contenente il gruppo di istanze gestite creato in precedenza.
- Un controllo di integrità da collegare al pool di destinazione.
Crea un file denominato frontend.py
e scarica lo schema per il modello:
Scarica il file di schema per il modello.
Creazione di un modello unificante
Infine, crea un modello che raccolga le risorse di backend
e modelli di frontend. Crea un file denominato nodejs.py
con i seguenti contenuti:
Scarica il file dello schema per il modello.
Tieni presente che il frontend dell'app si chiama env["deployment"]-frontend
e anche il backend ha lo stesso nome. Quando esegui il deployment dell'app,
Deployment Manager sostituirà automaticamente env["deployment"]
con
il nome del deployment.
Creazione della configurazione
Quando tutti i modelli sono pronti, puoi creare una configurazione
per il deployment delle risorse. Crea un file di configurazione denominato
nodejs.yaml
con i seguenti contenuti:
Sostituisci ZONE_TO_RUN
con la zona in cui vuoi le risorse, ad esempio
us-central1-a
.
Deployment delle risorse
Ora esegui il deployment delle risorse. Utilizzando Google Cloud CLI, esegui:
gcloud deployment-manager deployments create advanced-configuration --config nodejs.yaml
Al termine del deployment, Deployment Manager mostra un riepilogo delle risorse create, simile al seguente:
Waiting for create operation-1468522101491-5379cf2344539-5961abe8-a500190c...done.
Create operation operation-1468522101491-5379cf2344539-5961abe8-a500190c completed successfully.
NAME TYPE STATE ERRORS
advanced-configuration-application-fw compute.v1.firewall COMPLETED []
advanced-configuration-backend compute.v1.instance COMPLETED []
advanced-configuration-frontend-as compute.v1.autoscaler COMPLETED []
advanced-configuration-frontend-hc compute.v1.httpHealthCheck COMPLETED []
advanced-configuration-frontend-igm compute.v1.instanceGroupManager COMPLETED []
advanced-configuration-frontend-it compute.v1.instanceTemplate COMPLETED []
advanced-configuration-frontend-lb compute.v1.forwardingRule COMPLETED []
advanced-configuration-frontend-tp compute.v1.targetPool COMPLETED []
Test dell'app
Per testare l'app, devi prima ottenere l'indirizzo IP esterno che gestisce il traffico, eseguire una query sulla regola di forwarding:
$ gcloud compute forwarding-rules describe advanced-configuration-frontend-lb --region us-central1 IPAddress: 104.154.81.44 IPProtocol: TCP creationTimestamp: '2016-07-14T11:48:37.228-07:00' description: '' id: '9033201246750269546' kind: compute#forwardingRule name: advanced-configuration-frontend-lb portRange: 8080-8080 region: https://www.googleapis.com/compute/v1/projects/myproject/regions/us-central1 selfLink: https://www.googleapis.com/compute/v1/projects/myproject/regions/us-central1/forwardingRules/advanced-configuration-frontend-lb target: https://www.googleapis.com/compute/v1/projects/myproject/regions/us-central1/targetPools/advanced-configuration-frontend-tp
In questo caso, l'IP esterno è 104.154.81.44
.
Successivamente, in un browser, visita l'indirizzo IP esterno con la porta 8080. Ad esempio, se il tuo indirizzo IP esterno è 104.154.81.44
, l'URL sarà:
http://104.154.81.44:8080
Dovresti visualizzare una pagina vuota, come previsto. Quindi, pubblica un messaggio nella . Vai al seguente URL:
http://104.154.81.44:8080?msg=hellothere!
Verrà visualizzata la conferma dell'aggiunta del messaggio. Torna alla URL principale e ora la pagina dovrebbe contenere il messaggio:
hellothere!
Ora hai un'app di cui è stato eseguito il deployment che può registrare i messaggi inviati.
Passaggi successivi
Dopo aver completato questo esempio, puoi:
- Crea sulla base di questo esempio eseguendo il deployment delle istanze con i tuoi container Docker. Se vuoi modificare i container Docker utilizzati in questo tutorial, modifica i Dockerfile nel repository GitHub.
- Consulta altri esempi di deployment nel repository GitHub di Deployment Manager.
- Scopri di più su modelli e i deployment.