Checkpoint
Set up your environment
/ 10
Deploy the Spinnaker chart using Kubernetes Helm
/ 20
Building the Docker image
/ 20
Create service load balancers
/ 20
Deploy an image to production
/ 10
Triggering pipeline from code changes
/ 20
Pipeline di distribuzione continua con Spinnaker e Google Kubernetes Engine
- GSP114
- Panoramica
- Architettura della pipeline
- Configurazione e requisiti
- Attività 1: configura l'ambiente
- Attività 2: configura Cloud Pub/Sub per attivare le pipeline di Spinnaker
- Attività 3: esegui il deployment di Spinnaker con Helm
- Attività 4: crea l'immagine Docker
- Attività 5: configura le pipeline di deployment
- Attività 6: usa le modifiche al codice come trigger per la tua pipeline
- Attività 7: osserva i deployment canary
- Complimenti!
GSP114
Panoramica
Questo lab pratico mostra come creare una pipeline di distribuzione continua utilizzando Google Kubernetes Engine, Google Cloud Source Repositories, Google Cloud Container Builder e Spinnaker. Dopo aver creato un'applicazione di esempio, configurerai questi servizi per la creazione, il test e il deployment automatici. Quando modifichi il codice dell'applicazione, le modifiche attivano la pipeline di distribuzione continua per ripetere automaticamente la creazione, il test e il deployment della nuova versione.
Obiettivi
- Impostare l'ambiente avviando Google Cloud Shell, creando un cluster Kubernetes Engine e configurando lo schema di gestione di identità e utenti.
- Scaricare un'applicazione di esempio, creare un repository Git, quindi caricarlo su un Google Cloud Source Repository.
- Eseguire il deployment di Spinnaker su Kubernetes Engine con Helm.
- Creare la tua immagine Docker.
- Creare trigger per la creazione di immagini Docker quando l'applicazione viene modificata.
- Configurare una pipeline Spinnaker per il deployment continuo e affidabile dell'applicazione su Kubernetes Engine.
- Eseguire il deployment di una modifica al codice, attivando la pipeline, e osservare l'implementazione in produzione.
Architettura della pipeline
Per la distribuzione continua degli aggiornamenti delle applicazioni agli utenti, hai bisogno di un processo automatizzato che crei, testi e aggiorni in modo affidabile il software. Le modifiche al codice devono procedere automaticamente attraverso una pipeline che comprende creazione degli artefatti, test delle unità, test funzionale e implementazione in produzione. In alcuni casi, potresti voler applicare un aggiornamento del codice solo a un sottoinsieme dei tuoi utenti, per poterlo osservare in azione realisticamente prima di estenderlo all'intera base utenti. Se una di queste release canary si rivela insoddisfacente, la tua procedura automatizzata deve poter eseguire rapidamente il rollback delle modifiche al software.
Con Kubernetes Engine e Spinnaker puoi creare un solido flusso di distribuzione continua, che contribuisce ad assicurare la spedizione immediata del software non appena sviluppato e convalidato. Il tuo obiettivo finale è l'iterazione rapida, ma per prima cosa devi assicurarti che ogni revisione dell'applicazione superi una varietà di convalide automatiche prima di essere considerata per l'implementazione in produzione. Dopo che una determinata modifica ha superato le verifiche automatiche, puoi anche convalidare l'applicazione manualmente e svolgere ulteriori test pre-release.
Una volta che il tuo team decide che l'applicazione è pronta per la produzione, uno dei membri può approvarla per il deployment in produzione.
Pipeline di distribuzione delle applicazioni
In questo lab creerai la pipeline di distribuzione continua illustrata nel diagramma seguente.
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).
- È ora di completare il lab: ricorda che, una volta iniziato, non puoi metterlo in pausa.
Come avviare il lab e accedere alla console Google Cloud
-
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
-
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. -
Se necessario, copia il Nome utente dal riquadro Dettagli lab e incollalo nella finestra di dialogo di accesso. Fai clic su Avanti.
-
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. -
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.
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.
- Fai clic su 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:
gcloud
è lo strumento a riga di comando di Google Cloud. È preinstallato su Cloud Shell e supporta il completamento tramite tasto Tab.
- (Facoltativo) Puoi visualizzare il nome dell'account attivo con questo comando:
-
Fai clic su Autorizza.
-
L'output dovrebbe avere ora il seguente aspetto:
Output:
- (Facoltativo) Puoi elencare l'ID progetto con questo comando:
Output:
Output di esempio:
gcloud
, in Google Cloud, fai riferimento alla Panoramica dell'interfaccia a riga di comando gcloud.
Attività 1: configura l'ambiente
Configura l'infrastruttura e le identità richieste per questo lab. Per prima cosa creerai un cluster Kubernetes Engine per il deployment di Spinnaker e dell'applicazione di esempio.
- Imposta la zona di computing predefinita:
- Crea un cluster Kubernetes Engine utilizzando l'applicazione di esempio del tutorial di Spinnaker:
La creazione del cluster richiede tra 5 e 10 minuti. Attendi il completamento del provisioning del cluster prima di continuare.
Al termine, vedrai un report con i dettagli di nome, località, versione, indirizzo IP, tipo di macchina, versione dei nodi, numero di nodi e stato del cluster, con l'indicazione che il cluster è in esecuzione.
Configura la gestione di identità e accessi
Crea un account di servizio Cloud Identity Access Management (Cloud IAM) per delegare le autorizzazioni a Spinnaker e consentire di archiviare dati in Cloud Storage. Spinnaker archivia i dati della pipeline in Cloud Storage per assicurare affidabilità e resilienza. Se il deployment di Spinnaker sperimenta un errore imprevisto, puoi creare un deployment identico nell'arco di minuti, in grado di accedere agli stessi dati della pipeline dell'originale.
Carica il tuo script di avvio in un bucket Cloud Storage seguendo questa procedura:
- Crea l'account di servizio:
- Archivia l'indirizzo email dell'account di servizio e l'ID progetto attuale nelle variabili di ambiente per utilizzarli nei comandi successivi:
- Associa il ruolo
storage.admin
al tuo account di servizio:
- Scarica la chiave dell'account di servizio. In un passaggio successivo, installerai Spinnaker e caricherai questa chiave in Kubernetes Engine:
Output:
Attività 2: configura Cloud Pub/Sub per attivare le pipeline di Spinnaker
- Crea l'argomento Cloud Pub/Sub per le notifiche da Container Registry:
- Crea una sottoscrizione da cui Spinnaker può leggere per ricevere le notifiche relative ai push delle immagini:
- Concedi all'account di servizio di Spinnaker le autorizzazioni per leggere dalla sottoscrizione gcr-triggers:
Verifica l'attività completata
Fai clic su Controlla i miei progressi per verificare l'attività eseguita. Se hai configurato correttamente l'ambiente, visualizzerai un punteggio di valutazione.
Attività 3: esegui il deployment di Spinnaker con Helm
In questa sezione utilizzerai Helm per il deployment di Spinnaker dal repository Charts. Helm è un gestore di pacchetti per la configurazione e il deployment di applicazioni Kubernetes.
Helm è già installato in Cloud Shell.
Configura Helm
- Concedi a Helm il ruolo cluster-admin nel tuo cluster:
- Concedi a Spinnaker il ruolo
cluster-admin
per consentire il deployment delle risorse in tutti gli spazi dei nomi:
- Aggiungi i deployment dei grafici stabili ai repository utilizzabili di Helm (compreso Spinnaker):
Configura Spinnaker
- Sempre in Cloud Shell, crea un bucket in cui Spinnaker archivierà la configurazione della pipeline:
- Esegui questo comando per creare un file
spinnaker-config.yaml
, che descrive come Helm deve installare Spinnaker:
Esegui il deployment del grafico Spinnaker
- Usa l'interfaccia a riga di comando di Helm per il deployment del grafico con la tua configurazione impostata:
- Al termine, esegui questo comando per configurare il port forwarding a Spinnaker da Cloud Shell:
- Per aprire l'interfaccia utente di Spinnaker, fai clic sull'icona Anteprima web in alto nella finestra di Cloud Shell e seleziona Anteprima sulla porta 8080.
Viene visualizzata la schermata di benvenuto, seguita dall'interfaccia utente di Spinnaker.
Lascia aperta questa scheda, da dove accederai all'interfaccia utente di Spinnaker.
Verifica l'attività completata
Fai clic su Controlla i miei progressi per verificare l'attività eseguita. Se hai eseguito correttamente il deployment del grafico Spinnaker con Kubernetes Helm, visualizzerai un punteggio di valutazione.
Attività 4: crea l'immagine Docker
In questa sezione configurerai Cloud Build per rilevare le modifiche al codice sorgente della tua app, creare un'immagine Docker ed eseguire il push a Container Registry.
Crea il repository di codice sorgente
- Nella scheda Cloud Shell, scarica il codice sorgente dell'applicazione di esempio:
- Apri il codice sorgente:
- Passa alla directory del codice sorgente:
- Imposta il nome utente e l'indirizzo email per i tuoi commit Git in questo repository. Sostituisci
[USERNAME]
con un nome utente creato da te:
- Esegui il commit iniziale nel tuo repository di codice sorgente:
- Crea un repository per ospitare il tuo codice:
- Aggiungi il repository appena creato come repository remoto:
- Esegui il push del codice nel ramo master del nuovo repository:
-
Controlla di poter vedere il codice sorgente nella Console facendo clic sul menu di navigazione > Source Repositories.
-
Fai clic su sample-app.
Configura i tuoi trigger di build
Configura Container Builder per creare la build ed eseguire il push delle tue immagini Docker ogni volta che esegui il push di tag Git nel tuo repository di codice sorgente. Container Builder esegue automaticamente il check out del codice sorgente, crea l'immagine Docker dal Dockerfile nel repository ed esegue il push dell'immagine in Google Cloud Container Registry.
-
Nella console di Cloud Platform, fai clic sul menu di navigazione > Cloud Build > Trigger.
-
Fai clic su Crea trigger.
-
Configura le impostazioni del trigger seguenti:
-
Nome:
sample-app-tags
- Evento: esegui il push per nuovo tag
- Seleziona il repository
sample-app
appena creato. -
Tag:
.*(qualsiasi tag)
-
Configurazione:
File di configurazione di Cloud Build (yaml o json)
-
Posizione file di configurazione Cloud Build:
/cloudbuild.yaml
- Fai clic su CREA.
D'ora in poi, ogni volta che esegui il push di un tag Git (.*) nel tuo repository di codice sorgente, Container Builder crea automaticamente l'applicazione e ne esegue il push come immagine Docker in Container Registry.
Prepara i manifest Kubernetes per l'uso in Spinnaker
Spinnaker deve poter accedere ai manifest Kubernetes per eseguirne il deployment nei tuoi cluster. In questa sezione creerai un bucket Cloud Storage che verrà popolato con i tuoi manifest durante il processo di CI in Cloud Build. Una volta che i manifest saranno in Cloud Storage, Spinnaker potrà scaricarli e applicarli durante l'esecuzione della tua pipeline.
- Crea il bucket:
- Abilita il controllo delle versioni sul bucket per avere una cronologia dei tuoi manifest:
- Imposta l'ID progetto corretto nei tuoi manifest di deployment Kubernetes:
- Esegui il commit delle modifiche nel repository:
Crea la tua immagine
Per eseguire il push della tua prima immagine, segui questi passaggi:
- In Cloud Shell, sempre nella directory
sample-app
, crea un tag Git:
- Esegui il push del tag:
Output:
- Vai alla console Cloud. Sempre in Cloud Build, fai clic su Cronologia nel riquadro sulla sinistra per controllare che la build sia stata attivata. In caso contrario, verifica di aver configurato correttamente il trigger nella sezione precedente.
Resta su questa pagina e attendi il completamento della build prima di procedere con la prossima sezione.
Build
non riesce, fai clic su Build ID
per aprire la pagina dei dettagli della build e fai clic su RIPROVA.
Verifica l'attività completata
Fai clic su Controlla i miei progressi per verificare l'attività eseguita. Se hai creato correttamente l'immagine Docker, visualizzerai un punteggio di valutazione.
Attività 5: configura le pipeline di deployment
Ora che le tue immagini vengono create automaticamente, devi eseguirne il deployment nel cluster Kubernetes.
Per i test di integrazione, esegui il deployment in un ambiente sottoposto a scale down. Una volta superati i test di integrazione, devi approvare manualmente le modifiche per eseguire il deployment del codice nei servizi in produzione.
Installa l'interfaccia a riga di comando spin per gestire Spinnaker
spin è un'utilità a riga di comando per la gestione di applicazioni e pipeline di Spinnaker.
- Scarica la versione 1.14.0 di
spin
:
- Rendi
spin
eseguibile:
Crea la pipeline di deployment
- Usa spin per creare un'app denominata sample in Spinnaker. Imposta l'indirizzo email del proprietario per l'app in Spinnaker:
Il passo successivo è creare la pipeline di distribuzione continua. In questo tutorial, la pipeline è configurata per rilevare l'arrivo di un'immagine Docker con un tag con prefisso "v" nel tuo Container Registry.
- Dalla directory del codice sorgente
sample-app
, esegui questo comando per caricare una pipeline di esempio nella tua istanza di Spinnaker:
Attiva manualmente e osserva l'esecuzione della pipeline
La configurazione che hai appena creato utilizza le notifiche relative a push di immagini con nuovi tag per attivare una pipeline di Spinnaker. In un passaggio precedente, hai eseguito il push di un tag in Cloud Source Repositories, che ha attivato Cloud Build per la creazione e il push dell'immagine in Container Registry. Per verificare la pipeline, attivala manualmente
.
- Passa alla scheda del browser in cui è visualizzata l'interfaccia utente di Spinnaker.
Se non la trovi, puoi visualizzare di nuovo questa scheda selezionando Anteprima web > Anteprima sulla porta 8080 nella finestra di Cloud Shell.
- Nell'interfaccia utente di Spinnaker, fai clic su Applications nella parte superiore della schermata per visualizzare l'elenco delle applicazioni gestite.
La tua applicazione si chiama sample. Se non vedi l'applicazione sample, prova ad aggiornare la scheda Applications di Spinnaker.
-
Fai clic su sample per visualizzare il deployment della tua applicazione.
-
Fai clic su Pipelines nella parte superiore per visualizzare lo stato della tua pipeline delle applicazioni.
-
Fai clic su Start Manual Execution, seleziona Deploy in Select Pipeline e poi fai clic su Run per attivare la pipeline per la prima volta.
-
Fai clic su Execution Details per visualizzare ulteriori informazioni sull'avanzamento della pipeline.
La barra di avanzamento mostra lo stato della pipeline di deployment e le relative fasi.
Le fasi in blu sono attualmente in esecuzione, quelle in verde sono state completate correttamente, quelle in rosso non sono riuscite.
- Fai clic su una fase per visualizzarne i dettagli.
Dopo un periodo compreso fra 3 e 5 minuti, la fase dei test di integrazione viene completata e la pipeline richiede l'approvazione manuale per continuare il deployment.
- Passa il mouse sopra l'icona gialla della persona e fai clic su Continua.
L'implementazione continua con i deployment nel frontend e nel backend di produzione. Il completamento richiede pochi minuti.
-
Per visualizzare l'app, seleziona Infrastructure > Load Balancers nella parte superiore dell'interfaccia utente di Spinnaker.
-
Scorri verso il basso l'elenco dei bilanciatori del carico e fai clic su Default, sotto
service sample-frontend-production
. I dettagli del bilanciatore del carico saranno visualizzati sul lato destro della pagina. In caso contrario, potresti dover aggiornare la pagina del browser. -
Scorri verso il basso il riquadro dei dettagli sulla destra e copia l'indirizzo IP della tua app facendo clic sul pulsante degli appunti sull'IP Ingress. Il link all'IP Ingress dall'interfaccia utente di Spinnaker può utilizzare HTTPS per impostazione predefinita, mentre l'applicazione è configurata per l'uso di HTTP.
- Incolla l'indirizzo in una nuova scheda del browser per visualizzare l'applicazione. Potrebbe essere visualizzata la versione canary, ma aggiornando la visualizzazione vedrai anche la versione in produzione.
Ora hai attivato manualmente la pipeline di creazione, test e deployment della tua applicazione.
Verifica l'attività completata
Fai clic su Controlla i miei progressi per verificare l'attività eseguita. Se hai creato correttamente i bilanciatori del carico del servizio, visualizzerai un punteggio di valutazione.
Verifica l'attività completata
Fai clic su Controlla i miei progressi per verificare l'attività eseguita. Se hai eseguito correttamente il deployment di un'immagine in produzione, visualizzerai un punteggio di valutazione.
Attività 6: usa le modifiche al codice come trigger per la tua pipeline
Ora testerai l'intera pipeline apportando una modifica al codice, eseguendo il push di un tag Git e osservando l'esecuzione della pipeline in risposta al trigger. Il push di un tag Git che inizia con "v" è un trigger che attiva Container Builder per creare una nuova immagine Docker ed eseguirne il push in Container Registry. Spinnaker rileva che il tag della nuova immagine inizia con "v" e attiva una pipeline per il deployment dell'immagine alle versioni canary, l'esecuzione dei test e l'implementazione della stessa immagine in tutti i pod nel deployment.
- Dalla directory sample-app, cambia il colore dell'app da arancione a blu:
- Crea un tag per la modifica ed esegui il push nel repository di codice sorgente:
- Nella Console, in Cloud Build > Cronologia, attendi un paio di minuti fino a che non viene visualizzata la nuova build. Potresti dover aggiornare la pagina. Attendi il completamento della nuova build prima di proseguire con il passaggio successivo.
Build
non riesce, fai clic prima su Build ID
e poi su RIPROVA.- Torna all'interfaccia utente di Spinnaker e fai clic su Pipelines per osservare come la pipeline inizia il deployment dell'immagine. Sono richiesti alcuni minuti perché la pipeline attivata automaticamente venga visualizzata. Potresti dover aggiornare la pagina.
Verifica l'attività completata
Fai clic su Controlla i miei progressi per verificare l'attività eseguita. Se hai utilizzato correttamente le modifiche al codice come trigger per una pipeline, visualizzerai un punteggio di valutazione.
Attività 7: osserva i deployment canary
-
Quando il deployment è in pausa, in attesa dell'implementazione in produzione, torna alla pagina web in cui è visualizzata la tua applicazione in esecuzione e inizia ad aggiornare la scheda che contiene la tua app. Quattro dei tuoi backend stanno eseguendo la versione precedente dell'app e solo uno esegue la versione canary. Dovresti vedere la versione nuova della tua app, in blu, all'incirca ogni cinque aggiornamenti.
-
Quando la pipeline è completata, la tua app risulta come nello screenshot seguente. Nota che il colore è cambiato in blu a causa della modifica al codice e che nel campo Version ora è indicato
canary
.
Hai eseguito correttamente l'implementazione della tua app nell'intero ambiente di produzione!
- Facoltativamente, puoi eseguire il rollback di questa modifica ripristinando il commit precedente. Il rollback comporta l'aggiunta di un nuovo tag (v1.0.2) e il pushback del tag attraverso la stessa pipeline che hai utilizzato per il deployment della versione v1.0.1:
Premi Ctrl+O, Invio, Ctrl+X.
- Dopo il completamento della build e, successivamente, della pipeline, verifica il rollback facendo clic su Infrastructure > Load Balancers, quindi fai clic su service sample-frontend-production Default e copia l'indirizzo IP Ingress in una nuova scheda.
Ora l'app è di nuovo arancione e puoi vedere il numero di versione production
.
Complimenti!
Hai completato il lab Pipeline di distribuzione continua con Spinnaker e Google Kubernetes Engine.
Completa la Quest
Questo self-paced lab fa parte delle Quest Google Cloud Solutions I: Scaling Your Infrastructure e DevOps Essentials. Una Quest è una serie di lab collegati tra loro che formano un percorso di apprendimento. Il completamento della 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 un riconoscimento subito dopo averlo completato. Per vedere tutte le Quest disponibili, consulta il catalogo di Google Cloud Skills Boost.
Segui il prossimo lab
Continua la Quest con Esecuzione di server di gioco dedicati in Google Kubernetes Engine
Prossimi passi/Scopri di più
- Scopri il deployment continuo con Jenkins
- Scopri il deployment di Spinnaker su Compute Engine
- Esegui il deployment di Jenkins su Kubernetes Engine
- Usa Spinnaker con Ansible per la distribuzione continua
Formazione e certificazione Google Cloud
… per utilizzare al meglio le tecnologie Google Cloud. I nostri corsi ti consentono di sviluppare competenze tecniche e best practice per aiutarti a metterti subito al passo e avanzare nel tuo percorso di apprendimento. Offriamo vari livelli di formazione, dal livello base a quello avanzato, con opzioni di corsi on demand, dal vivo e virtuali, in modo da poter scegliere il più adatto in base ai tuoi impegni. Le certificazioni ti permettono di confermare e dimostrare le tue abilità e competenze relative alle tecnologie Google Cloud.
Ultimo aggiornamento del manuale: 21 novembre 2023
Ultimo test del lab: 21 novembre 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.