arrow_back

Esegui il deployment del tuo sito web in Cloud Run

Partecipa Accedi
Test and share your knowledge with our community!
done
Get access to over 700 hands-on labs, skill badges, and courses

Esegui il deployment del tuo sito web in Cloud Run

Lab 1 ora universal_currency_alt 1 credito show_chart Introduttivi
Test and share your knowledge with our community!
done
Get access to over 700 hands-on labs, skill badges, and courses

GSP659

Laboratori autogestiti Google Cloud

Panoramica

La gestione dei siti web può essere difficile con tutto il carico di lavoro connesso alla creazione e alla gestione di VM, cluster, pod, servizi e così via. Questo può essere ragionevole per applicazioni multilivello di grandi dimensioni, ma se il tuo obiettivo è semplicemente quello di eseguire il deployment del sito web e renderlo visibile, il carico di lavoro è davvero eccessivo.

Con Cloud Run, l'implementazione Google Cloud del framework Knative di Google, puoi gestire il tuo sito web ed eseguirne il deployment senza tutte le attività a livello di infrastruttura tipiche di una VM o dei deployment puri basati su Kubernetes. Questo approccio semplifica la gestione e consente anche di "scalare fino a zero" quando non arrivano richieste al sito web.

Cloud Run porta lo sviluppo "serverless" ai container e può essere eseguito su cluster Google Kubernetes Engine (GKE) o su una soluzione PaaS completamente gestita, fornita da Cloud Run. In questo lab utilizzerai quest'ultimo scenario.

L'ordine degli esercizi rispecchia un'esperienza di sviluppo cloud comune:

  1. Crea un container Docker dalla tua applicazione
  2. Esegui il deployment del container in Cloud Run
  3. Modifica il sito web
  4. Implementa una nuova versione senza tempi di inattività

Diagramma dell'architettura

Di seguito puoi vedere il flusso del deployment e dell'hosting in Cloud Run.

Inizia con un'immagine Docker creata tramite Cloud Build, che viene attivato da Cloud Shell, quindi esegui il deployment dell'immagine in Cloud Run da un comando in Cloud Shell.

Diagramma panoramica del lab

Obiettivi didattici

  • Creare un'immagine Docker usando Cloud Build e caricarla in Artifact Registry
  • Eseguire il deployment delle immagini Docker in Cloud Run
  • Gestire i deployment di Cloud Run
  • Configurare un endpoint per un'applicazione in Cloud Run

Configurazione e requisiti

Prima di fare clic sul pulsante Avvia lab

Leggi le seguenti istruzioni. I lab sono a tempo e non possono essere messi in pausa. Il timer si avvia quando fai clic su Avvia lab e ti mostra per quanto tempo avrai a disposizione le risorse Google Cloud.

Con questo lab pratico avrai la possibilità di completare le attività in prima persona, in un ambiente cloud reale e non di simulazione o demo. Riceverai delle nuove credenziali temporanee che potrai utilizzare per accedere a Google Cloud per la durata del lab.

Per completare il lab, avrai bisogno di:

  • Accesso a un browser internet standard (Chrome è il browser consigliato).
Nota: utilizza una finestra del browser in incognito o privata per eseguire questo lab. Ciò evita eventuali conflitti tra il tuo account personale e l'account Studente, che potrebbero causare addebiti aggiuntivi sul tuo account personale.
  • È ora di completare il lab: ricorda che, una volta iniziato, non puoi metterlo in pausa.
Nota: se hai già un account o un progetto Google Cloud personale, non utilizzarlo per questo lab per evitare addebiti aggiuntivi al tuo account.

Come avviare il lab e accedere alla console Google Cloud

  1. Fai clic sul pulsante Avvia lab. Se devi effettuare il pagamento per il lab, si apre una finestra popup per permetterti di selezionare il metodo di pagamento. A sinistra, trovi il riquadro Dettagli lab con le seguenti informazioni:

    • Pulsante Apri console Google
    • Tempo rimanente
    • Credenziali temporanee da utilizzare per il lab
    • Altre informazioni per seguire questo lab, se necessario
  2. Fai clic su Apri console Google. Il lab avvia le risorse e apre un'altra scheda con la pagina di accesso.

    Suggerimento: disponi le schede in finestre separate posizionate fianco a fianco.

    Note: se visualizzi la finestra di dialogo Scegli un account, fai clic su Utilizza un altro account.
  3. Se necessario, copia il Nome utente dal riquadro Dettagli lab e incollalo nella finestra di dialogo di accesso. Fai clic su Avanti.

  4. Copia la Password dal riquadro Dettagli lab e incollala nella finestra di dialogo di benvenuto. Fai clic su Avanti.

    Importante: devi utilizzare le credenziali presenti nel riquadro di sinistra. Non utilizzare le tue credenziali Google Cloud Skills Boost. Nota: utilizzare il tuo account Google Cloud per questo lab potrebbe comportare addebiti aggiuntivi.
  5. Fai clic nelle pagine successive:

    • Accetta i termini e le condizioni.
    • Non inserire opzioni di recupero o l'autenticazione a due fattori, perché si tratta di un account temporaneo.
    • Non registrarti per le prove gratuite.

Dopo qualche istante, la console Google Cloud si apre in questa scheda.

Nota: puoi visualizzare il menu con un elenco di prodotti e servizi Google Cloud facendo clic sul menu di navigazione in alto a sinistra. Icona menu di navigazione

Attiva Cloud Shell

Cloud Shell è una macchina virtuale in cui sono caricati strumenti per sviluppatori. Offre una home directory permanente da 5 GB e viene eseguita su Google Cloud. Cloud Shell fornisce l'accesso da riga di comando alle risorse Google Cloud.

  1. Fai clic su Attiva Cloud Shell Icona Attiva Cloud Shell nella parte superiore della console Google Cloud.

Quando la connessione è attiva, l'autenticazione è già avvenuta e il progetto è impostato sul tuo PROJECT_ID. L'output contiene una riga che dichiara il PROJECT_ID per questa sessione:

Your Cloud Platform project in this session is set to YOUR_PROJECT_ID

gcloud è lo strumento a riga di comando di Google Cloud. È preinstallato su Cloud Shell e supporta il completamento tramite tasto Tab.

  1. (Facoltativo) Puoi visualizzare il nome dell'account attivo con questo comando:
gcloud auth list
  1. Fai clic su Autorizza.

  2. L'output dovrebbe avere ora il seguente aspetto:

Output:

ACTIVE: * ACCOUNT: student-01-xxxxxxxxxxxx@qwiklabs.net To set the active account, run: $ gcloud config set account `ACCOUNT`
  1. (Facoltativo) Puoi elencare l'ID progetto con questo comando:
gcloud config list project

Output:

[core] project = <project_ID>

Output di esempio:

[core] project = qwiklabs-gcp-44776a13dea667a6 Nota: per la documentazione completa di gcloud, in Google Cloud, fai riferimento alla Panoramica dell'interfaccia a riga di comando gcloud.

Attività 1: clona il repository del codice sorgente

Dato che stai eseguendo il deployment di un sito web esistente, puoi semplicemente clonare il codice sorgente per concentrarti sulla creazione di immagini Docker e sul deployment in Cloud Run.

  1. Apri una nuova finestra di Cloud Shell ed esegui questi comandi per clonare il repository git e passare alla directory appropriata:
git clone https://github.com/googlecodelabs/monolith-to-microservices.git cd ~/monolith-to-microservices
  1. Esegui questo comando per installare le dipendenze NodeJS in modo da poter testare l'applicazione prima del deployment:
./setup.sh

L'esecuzione richiederà alcuni minuti. Al termine verrà visualizzato un messaggio che indica che l'operazione è riuscita.

  1. Testa l'applicazione eseguendo questo comando per avviare il server web:
cd ~/monolith-to-microservices/monolith npm start

Output:

Monolith listening on port 8080!
  1. Visualizza l'anteprima dell'applicazione facendo clic sull'icona dell'anteprima web e selezionando Anteprima sulla porta 8080.

Opzione Anteprima sulla porta 8080 selezionata nel menu di anteprima web espanso

Dovrebbe aprirsi una nuova finestra in cui puoi vedere la pagina web Fancy Store in azione.

Sito web Fancy Store

  1. Chiudi questa finestra dopo avere visualizzato il sito web e interrompi il processo del server web premendo Ctrl+C in Cloud Shell.

Attività 2: crea un container Docker con Cloud Build

Ora che i file sorgente sono pronti per l'uso, puoi "dockerizzare" l'applicazione.

Normalmente useresti un approccio in due fasi che comprende la creazione di un container Docker e il relativo push a un registry per archiviare l'immagine da cui GKE esegue il pull. Per maggiore semplicità, puoi usare Cloud Build per creare il container Docker e inserire l'immagine in Artifact Registry con un unico comando. Puoi visualizzare il processo manuale di creazione di un file Docker e del relativo push, consulta la documentazione Guida rapida per Container Registry.

Cloud Build comprimerà i file dalla directory e li sposterà in un bucket Cloud Storage. Il processo di compilazione acquisirà quindi tutti i file dal bucket e userà il Dockerfile presente nella stessa directory per eseguire il processo di compilazione Docker.

Crea il repository Docker di destinazione

Prima di eseguire il push delle immagini, devi creare il repository di destinazione. Il push di un'immagine non può attivare la creazione di un repository e l'account di servizio Cloud Build non dispone delle autorizzazioni per creare repository.

  1. Dal Menu di navigazione, sotto CI/CD vai ad Artifact Registry > Repository.

  2. Fai clic su Crea repository.

  3. Specifica monolith-demo come nome del repository.

  4. Scegli Docker come formato.

  5. In Tipo di località, seleziona Regione, quindi scegli la località .

  6. Fai clic su Crea.

Configura l'autenticazione

Prima di eseguire il push o il pull delle immagini, configura Docker in modo che utilizzi Google Cloud CLI per autenticare le richieste ad Artifact Registry.

  • Per configurare l'autenticazione nei repository Docker della regione , esegui questo comando in Cloud Shell:
gcloud auth configure-docker -docker.pkg.dev

Il comando aggiorna la configurazione Docker. Ora puoi connetterti con Artifact Registry nel tuo progetto Google Cloud per eseguire il push e il pull delle immagini.

Esegui il deployment dell'immagine

Ora eseguirai il deployment dell'immagine creata in precedenza.

  1. Per prima cosa devi abilitare le API Cloud Build, Artifact Registry e Cloud Run. Esegui questo comando per abilitarle:
gcloud services enable artifactregistry.googleapis.com \ cloudbuild.googleapis.com \ run.googleapis.com
  1. Dopo aver abilitato le API, esegui questo comando per avviare il processo di compilazione:
gcloud builds submit --tag {{{project_0.default_region | Region}}}-docker.pkg.dev/${GOOGLE_CLOUD_PROJECT}/monolith-demo/monolith:1.0.0 Nota: il processo richiede alcuni minuti.
  1. Per visualizzare la cronologia delle build o il processo in tempo reale, in Menu di navigazione nella console fai clic su Cloud Build > Cronologia. Qui vedi un elenco di tutte le build, che dovrebbe includere solo quella che hai appena creato.

Elenco cronologia build

  • Se fai clic sull'ID build, vedrai tutti i dettagli relativi a quella build, incluso l'output di log.

  • Nella pagina Dettagli build puoi vedere l'immagine container che è stata creata facendo clic sulla scheda Dettagli esecuzione e poi sul link dell'immagine.

Dettagli build

Fai clic su Controlla i miei progressi per verificare l'obiettivo. Crea un container Docker con Google Cloud Build

Attività 3: esegui il deployment del container in Cloud Run

Ora che hai containerizzato il sito web e hai eseguito il push del container in Artifact Registry, è il momento di eseguire il deployment in Cloud Run.

Per il deployment in Cloud Run è possibile scegliere tra due approcci:

  • Cloud Run gestito: il modello Platform as a Service in cui tutto il ciclo di vita del container viene gestito dal prodotto Cloud Run. Sarà l'approccio che userai in questo lab.
  • Cloud Run su GKE: Cloud Run con un livello di controllo supplementare che ti consente di utilizzare i tuoi cluster e pod da GKE. Qui puoi scoprire di più.
  1. Esegui questo comando per effettuare il deployment dell'immagine in Cloud Run:
gcloud run deploy monolith --image {{{project_0.default_region | Region}}}-docker.pkg.dev/${GOOGLE_CLOUD_PROJECT}/monolith-demo/monolith:1.0.0 --region {{{project_0.default_region | Region}}}
  1. Quando ti viene chiesto di consentire chiamate non autenticate a [monolith], digita Y.

Fai clic su Controlla i miei progressi per verificare l'obiettivo. Esegui il deployment del container in Cloud Run

Verifica il deployment

  1. Per verificare che il deployment sia stato creato correttamente, esegui questo comando:
gcloud run services list Nota: possono essere necessari alcuni minuti perché lo stato del pod diventi In esecuzione.

Output:

✔ SERVICE: monolith REGION: {{{project_0.default_region | Region}}} URL: https://monolith-2cxtmp4m2q-uc.a.run.app LAST DEPLOYED BY: student-02-aa7a5aed362d@qwiklabs.net LAST DEPLOYED AT: 2022-08-19T19:16:14.351981Z

Questo output mostra diverse cose. Puoi vedere il deployment, nonché l'utente che lo ha eseguito (la tua email) e l'URL da usare per accedere all'app. Sembra che tutto sia stato creato correttamente.

  1. Fai clic sull'URL riportato nell'elenco dei servizi. Dovresti vedere lo stesso sito web di cui hai visualizzato l'anteprima in locale.
Nota: puoi visualizzare i deployment di Cloud Run anche tramite la console selezionando Cloud Run nel Menu di navigazione.

Attività 4: crea una nuova revisione con minore contemporaneità

In questa sezione eseguirai nuovamente il deployment della tua applicazione, ma questa volta regolando uno dei parametri.

Per impostazione predefinita, un'applicazione Cloud Run avrà un valore di contemporaneità pari a 80, che significa che ogni istanza di container gestirà fino a 80 richieste alla volta. È una differenza considerevole rispetto al modello Functions as a Service, in cui ogni istanza gestisce una richiesta alla volta.

  1. Esegui questo comando per effettuare nuovamente il deployment della stessa immagine container con un valore di contemporaneità pari a 1 (solo a scopo di test) e guarda cosa succede:
gcloud run deploy monolith --image {{{project_0.default_region | Region}}}-docker.pkg.dev/${GOOGLE_CLOUD_PROJECT}/monolith-demo/monolith:1.0.0 --region {{{project_0.default_region | Region}}} --concurrency 1
  1. Per visualizzare i dettagli, in Menu di navigazione fai clic su Cloud Run, quindi sul servizio monolith:

Il servizio monolith

  1. Nella pagina Dettagli del servizio, fai clic sulla scheda Revisioni. A questo punto dovresti vedere due revisioni create.

Sulla destra del deployment più recente è presente la voce Dettagli.

La scheda Revisioni del servizio monolith

Vedrai che il valore di contemporaneità si è ridotto a "1".

La scheda Container del servizio monolith

Anche se questa configurazione è sufficiente a scopo di test, nella maggior parte degli scenari di produzione saranno presenti container che supportano più richieste in contemporanea.

Fai clic su Controlla i miei progressi per verificare l'obiettivo. Crea una nuova revisione con minore contemporaneità

A questo punto, puoi ripristinare la contemporaneità originale senza ripetere il deployment. Puoi ripristinare il valore predefinito "80" per la contemporaneità oppure impostare semplicemente il valore su "0". In questo modo vengono eliminate tutte le limitazioni di contemporaneità e viene impostato il valore massimo predefinito, ovvero 80.

  1. Esegui questo comando per aggiornare la revisione corrente, utilizzando un valore di contemporaneità pari a 80:
gcloud run deploy monolith --image {{{project_0.default_region | Region}}}-docker.pkg.dev/${GOOGLE_CLOUD_PROJECT}/monolith-demo/monolith:1.0.0 --region {{{project_0.default_region | Region}}} --concurrency 80

Noterai che è stata creata un'altra revisione, il traffico è stato reindirizzato e la contemporaneità è di nuovo impostata su 80.

Nota: potrebbe essere necessario uscire dalla scheda Revisioni e accedervi nuovamente per vedere le informazioni più aggiornate.

Attività 5: apporta modifiche al sito web

Scenario: il team di marketing ti ha chiesto di modificare la home page del sito. Secondo il team, dovrebbe essere più ricca di informazioni relative all'azienda e a ciò che commercializza.

Attività: aggiungerai del testo alla home page per soddisfare la richiesta del team di marketing. Uno dei nostri sviluppatori ha già creato le modifiche in un file denominato index.js.new. Puoi semplicemente copiare questo file in index.js per riflettere le modifiche. Segui le istruzioni riportate di seguito per applicare le modifiche appropriate.

  1. Esegui questi comandi per copiare il file aggiornato con il nome file corretto:
cd ~/monolith-to-microservices/react-app/src/pages/Home mv index.js.new index.js
  1. Visualizza i contenuti del file per verificare le modifiche:
cat ~/monolith-to-microservices/react-app/src/pages/Home/index.js

Il codice risultante dovrebbe avere l'aspetto seguente:

/* Copyright 2019 Google LLC Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at https://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. */ import React from "react"; import { makeStyles } from "@material-ui/core/styles"; import Paper from "@material-ui/core/Paper"; import Typography from "@material-ui/core/Typography"; const useStyles = makeStyles(theme => ({ root: { flexGrow: 1 }, paper: { width: "800px", margin: "0 auto", padding: theme.spacing(3, 2) } })); export default function Home() { const classes = useStyles(); return ( <div className={classes.root}> <Paper className={classes.paper}> <Typography variant="h5"> Fancy Fashion &amp; Style Online </Typography> <br /> <Typography variant="body1"> Tired of mainstream fashion ideas, popular trends and societal norms? This line of lifestyle products will help you catch up with the Fancy trend and express your personal style. Start shopping Fancy items now! </Typography> </Paper> </div> ); }

Hai aggiornato i componenti React, ma devi creare la build dell'app React per generare i file statici.

  1. Esegui questo comando per creare la build dell'app React e copiarla nella directory pubblica del monolite:
cd ~/monolith-to-microservices/react-app npm run build:monolith

Ora che il codice è aggiornato, ricrea il container Docker e pubblicalo in Artifact Registry. Puoi usare lo stesso comando di prima, aggiornando però l'etichetta della versione.

  1. Esegui questo comando per attivare un nuovo processo Cloud Build con una versione aggiornata 2.0.0 dell'immagine:
cd ~/monolith-to-microservices/monolith gcloud builds submit --tag {{{project_0.default_region | Region}}}-docker.pkg.dev/${GOOGLE_CLOUD_PROJECT}/monolith-demo/monolith:2.0.0

Nella sezione successiva userai questa immagine per aggiornare l'applicazione senza tempi di inattività.

Fai clic su Controlla i miei progressi per verificare l'obiettivo. Modifica il sito web

Attività 6: aggiorna il sito web senza tempi di inattività

Le modifiche sono state completate e il team di marketing è molto soddisfatto dei tuoi aggiornamenti. Ora è il momento di aggiornare il sito web senza interruzioni per gli utenti. Cloud Run considera ogni deployment come una nuova Revisione, che prima viene portata online e poi riceve il traffico reindirizzato.

Per impostazione predefinita, alla revisione più recente viene assegnato il 100% del traffico in entrata per un servizio. È possibile usare le "route" per allocare varie percentuali di traffico a varie revisioni all'interno di un servizio. Segui le istruzioni riportate sotto per aggiornare il sito web.

  • Esegui questo comando per effettuare nuovamente il deployment del servizio e aggiornare l'immagine a una nuova versione:
gcloud run deploy monolith --image {{{project_0.default_region | Region}}}-docker.pkg.dev/${GOOGLE_CLOUD_PROJECT}/monolith-demo/monolith:2.0.0 --region {{{project_0.default_region | Region}}}

Fai clic su Controlla i miei progressi per verificare l'obiettivo. Aggiorna il sito web senza tempi di inattività

Verifica il deployment

  1. Controlla che il deployment sia stato aggiornato eseguendo questo comando:
gcloud run services describe monolith --platform managed --region {{{project_0.default_region | Region}}}

Output:

✔ Service monolith in region URL: https://monolith-hl5loimtga-uc.a.run.app Ingress: all Traffic: 100% LATEST (currently monolith-00005-xum) Last updated on 2022-08-19T18:39:39.885859Z by student-02-9af04e268b9e@qwiklabs.net: Revision monolith-00005-xum Image: -docker.pkg.dev/qwiklabs-gcp-00-30d07cf3de5b/monolith-demo/monolith:2.0.0 Port: 8080 Memory: 512Mi CPU: 1000m Service account: 467160385597-compute@developer.gserviceaccount.com Concurrency: 80 Max Instances: 1 Timeout: 300s

Qui vedrai che il servizio utilizza la versione più recente dell'immagine di cui è stato eseguito il deployment in una nuova revisione.

Per verificare le modifiche, passa all'URL esterno del servizio Cloud Run, aggiorna la pagina e nota che il titolo dell'applicazione è stato aggiornato.

  1. Esegui questo comando per elencare i servizi e visualizzare l'indirizzo IP:
gcloud beta run services list
  1. Fai clic sull'URL del servizio. Nel sito web dovrebbe essere presente il testo che hai appena aggiunto al componente della home page.

Il sito web Fancy Store aggiornato

Complimenti!

Hai eseguito il deployment del sito web e lo hai de-scalato, ri-scalato e aggiornato in Cloud Run.

Completa la Quest

Questo self-paced lab fa parte della Quest di Qwiklabs Website on Google Cloud. Una Quest è una serie di lab collegati tra loro che formano un percorso di apprendimento. Il completamento di una Quest ti permette di ottenere un badge come riconoscimento dell'obiettivo raggiunto. Puoi rendere pubblici i tuoi badge inserendone i link nel tuo CV online o sui social media. Iscriviti a una delle Quest contenenti il lab e ricevi subito un riconoscimento per averlo completato. Fai riferimento al catalogo Google Cloud Skills Boost per tutte le Quest disponibili.

Passaggi successivi/Scopri di più

Se non hai familiarità con questi prodotti, ecco i link per saperne di più:

Ultimo aggiornamento del manuale: 13 dicembre 2023

Ultimo test del lab: 13 dicembre 2023

Copyright 2024 Google LLC Tutti i diritti riservati. Google e il logo Google sono marchi di Google LLC. Tutti gli altri nomi di società e prodotti sono marchi delle rispettive società a cui sono associati.