Questo insieme di tutorial è rivolto ad amministratori IT e operatori che vogliono eseguire il deployment, l'esecuzione e la gestione di ambienti di applicazioni moderni che funzionano su Google Kubernetes Engine (GKE) Enterprise. Man mano che procedi in questa serie di tutorial, impari a configurare monitoraggio e avvisi, scalare carichi di lavoro e simulare errori, il tutto utilizzando l'applicazione di microservizi di esempio di Cymbal Bank:
- Creare un cluster ed eseguire il deployment di un'applicazione di esempio
- Monitoraggio con Google Cloud Managed Service per Prometheus
- Scala i carichi di lavoro
- Simulare un errore
- Centralizzare la gestione dei cambiamenti (questo tutorial)
Panoramica e obiettivi
Quando crei nuovi servizi e applicazioni, potresti voler testare le modifiche in ambienti diversi. Man mano che la tua organizzazione cresce, potresti aver bisogno configurazioni del cluster diverse a seconda del team. La gestione di più cluster con configurazioni diverse può essere complessa. Puoi utilizzare strumenti GitOps come Config Sync per gestire queste sfide.
Nella Tutorial sulla creazione di un cluster hai creato un cluster ed eseguito il deployment dell'applicazione Cymbal Bank in quel cluster.
In questo tutorial imparerai a archiviare i manifest Kubernetes per la tua applicazione in un repository Git centralizzato e a utilizzare strumenti come Config Sync per eseguire il deployment di un'applicazione in più cluster in un parco. Imparerai a completare le attività seguenti:
Crea un repository Git e connettilo a Cloud Build
Crea un cluster, registralo in un parco risorse e installa Config Sync sul tuo parco di cluster
Usa un pacchetto del parco risorse per eseguire il deployment di Cymbal Bank e di altre risorse su un cluster o in un parco risorse
Costi
Se attivi GKE Enterprise e esegui il deployment dell'applicazione di esempio Cymbal Bank per questa serie di tutorial, dovrai sostenere costi per GKE Enterprise su Google Cloud per ogni cluster, come indicato nella nostra pagina dei prezzi, finché non disattivi GKE Enterprise o non elimini il progetto.
Sei inoltre responsabile di altri costi di Google Cloud sostenuti durante l'esecuzione del Applicazione di esempio di Cymbal Bank, ad esempio addebiti per VM di Compute Engine e bilanciatori del carico.
Prima di iniziare
Per scoprire come archiviare, apportare modifiche ed eseguire il deployment di risorse da un repository Git, devi completare il primo tutorial per creare un cluster GKE che utilizzi la modalità Autopilot ed eseguire il deployment dell'applicazione basata su microservizi di esempio Cymbal Bank.
Ti consigliamo di completare questa serie di tutorial per Cymbal Bank in ordine. Man mano che procedi nella serie di tutorial, acquisisci nuove competenze e utilizzi e altri prodotti e servizi Google Cloud.
Come utilizzare Config Sync per il deployment dei manifest Kubernetes da un repository Git ai tuoi cluster, devi abilitare quanto segue API:
gcloud services enable configdelivery.googleapis.com cloudbuild.googleapis.com developerconnect.googleapis.com
Crea un repository Git e connettilo a Cloud Build
Un pacchetto del parco risorse è una raccolta di manifest delle risorse Kubernetes. Raggruppano questi elementi che si manifesta insieme come pacchetto, puoi eseguire il deployment di un'applicazione in più cluster in un parco risorse direttamente da un repository Git. Con questo flusso di lavoro, i seguenti vantaggi:
- Scalabilità migliorata grazie al deployment di risorse in un parco risorse anziché applicandole manualmente cluster per cluster.
- Aggiornamenti più sicuri con implementazioni graduali.
- Flussi di lavoro aggiuntivi per l'origine centralizzata dei file di configurazione in Git, come il controllo delle versioni e le approvazioni.
Per dimostrare come archiviare e apportare modifiche in Git, esegui il fork del repository Cymbal Bank e collegalo a Cloud Build.
Crea un fork del repository di Cymbal Bank
In questo tutorial apporti modifiche al tuo repository Git per dimostrare in che modo Config Sync ti aiuta a gestire in sicurezza le modifiche alle risorse Kubernetes ed eseguirne il deployment. Per apportare queste modifiche direttamente, devi eseguire il fork del repository Git anziché clonarlo.
Per creare un fork del repository, segui questi passaggi:
In GitHub, vai al repository di esempio Cymbal Bank (
bank-of-anthos
).Fai clic su Fork per ottenere una copia del repository con i file di origine.
Se necessario, accedi al tuo account GitHub. Se hai accesso ad altre organizzazioni o team su GitHub, assicurati di creare un forking per il repository al tuo account personale.
Ora hai un fork del repository di Cymbal Bank. Tutti gli strumenti Kubernetes
i manifest di cui esegui il deployment si trovano nella cartella /kubernetes-manifests
.
connetti il repository a Cloud Build
Cloud Build è un servizio che può eseguire build su Google Cloud, che puoi usare per le istanze continue in stile GitOps la distribuzione dei contenuti. Il servizio di pacchetti del parco risorse di Config Sync utilizza Cloud Build per recuperare le risorse Kubernetes dal tuo repository Git ed eseguirne il deployment nei tuoi cluster. Quando utilizzi un pacchetto del parco risorse, devi configurare Cloud Build solo una volta per ogni repository che vuoi sincronizzare. L'API del pacchetto del parco risorse crea automaticamente i trigger di build tramite Cloud Build.
Per connettere il tuo repository GitHub a Cloud Build:
Apri la pagina Cloud Build nella console Google Cloud, quindi seleziona Repository.
Assicurati di essere nella pagina Repository di 2ª generazione. Se necessario, seleziona Visualizza repository (2ª generazione).
Fai clic su Crea connessione host.
Nel menu Regione, seleziona us-central1 (Iowa) come regione.
Nel campo Nome, digita
cymbal-bank-connection
come nome della connessione.Fai clic su Connetti.
Se è la prima volta che connetti Cloud Build al tuo account GitHub, completa i seguenti passaggi:
- Accetta la richiesta del token OAuth GitHub. Il token viene archiviato in Secret Manager per l'utilizzo con la connessione GitHub di Cloud Build. Fai clic su Continua.
- Installa Cloud Build nel tuo repository GitHub. Seleziona Installa in un nuovo account.
- Nella nuova finestra di GitHub che si apre, seleziona l'account GitHub in cui hai creato in precedenza il fork di Cymbal Bank. In un ambiente di produzione, potresti selezionare altri account o repository a cui hai delegato l'accesso.
- Segui le eventuali richieste di autenticazione per confermare la tua identità su GitHub.
- Nella finestra di GitHub per l'accesso al repository Cloud Build, scegli Solo repository selezionati.
- Dal menu a discesa che elenca i repository, seleziona il tuo fork di
bank-of-anthos
. - Fai clic su Salva.
Nella pagina Cloud Build della console Google Cloud, fai clic su Collega repository per collegare un nuovo repository Git a Cloud Build.
Nel menu Connessione, seleziona
cymbal-bank-connection
.Nel menu Repositori, seleziona il tuo fork
bank-of-anthos
.Seleziona Collega.
Creazione di cluster
Nel primo tutorial di questa serie, hai creato un cluster e il deployment dell'applicazione Cymbal Bank in quel cluster. In un nello scenario reale, è improbabile che tu abbia un solo cluster da gestire. GKE ti consente di raggruppare i cluster in un parco risorse: un gruppo logico di cluster che possono essere gestiti insieme. All'interno di un parco risorse, puoi raggruppare ulteriormente i tuoi cluster con alcuni cluster che rappresentano ambienti diversi o appartengono a team diversi. Ad esempio, potresti avere un cluster di sviluppo, un cluster di staging e un cluster di produzione. In una grande organizzazione, i singoli team potrebbero dover i propri cluster per diversi ambienti. In qualità di amministratori o operatori IT, potrebbe essere necessario gestire dozzine di cluster.
Quando si tratta di eseguire il deployment di applicazioni o singole risorse come i criteri personalizzati su tutti questi cluster, le funzionalità di GKE Enterprise come Config Sync possono aiutarti a gestire questi deployment su larga scala.
Per dimostrare come eseguire il deployment delle risorse in diversi ambienti o in un parco risorse di cluster, crei un nuovo cluster ed esegui il deployment l'applicazione Cymbal Bank:
Crea un cluster GKE che simula un ambiente di sviluppo:
gcloud container clusters create-auto scalable-apps-dev \ --project=PROJECT_ID \ --region=REGION \ --fleet-project=PROJECT_ID \ --release-channel=rapid
Sostituisci quanto segue:
PROJECT_ID
con l'ID generato automaticamente del creato nella sezione precedente. L'ID progetto è spesso diverso dal nome del progetto. Ad esempio, il tuo progetto potrebbe essere scalable-apps, ma il suo ID potrebbe essere scalable-apps-567123.REGION
con la regione in cui vuoi creare in un cluster, ad esempious-central1
.
Le etichette sono coppie chiave/valore che puoi aggiungere alle risorse GKE per organizzarle. Per i pacchetti del parco risorse, puoi utilizzare le etichette di appartenenza al parco risorse per personalizzare i cluster scelti come target dal pacchetto del parco risorse. Altri tipi di etichette non sono supportati.
Aggiungi un'etichetta all'appartenenza al parco risorse:
gcloud container fleet memberships update scalable-apps-dev \ --update-labels=env=dev
Quando crei il pacchetto del parco risorse più avanti in questo tutorial, questa etichetta garantisce che le risorse vengano implementate solo nel cluster
scalable-apps-dev
e non nel clusterscalable-apps
del primo tutorial di questa serie.
Installazione di Config Sync
Installa Config Sync su entrambi i cluster:
- Nella console Google Cloud, vai alla pagina Configurazione nella sezione Funzionalità.
- Fai clic su add Installa Config Sync.
- Mantieni selezionata l'opzione Upgrade manuali.
- Per impostazione predefinita, il menu delle versioni dovrebbe mostrare la versione più recente di Config Sync. Se necessario, seleziona la versione più recente.
- Nella sezione Opzioni di installazione, seleziona Installa Config Sync sull'intero parco risorse (consigliato).
- Fai clic su Installa Config Sync.
- Nella scheda Impostazioni di Config Sync, controlla il campo Stato dell'elenco dei cluster. Dopo alcuni minuti, lo stato visualizzato è "In attesa" finché il cluster non è configurato correttamente per Config Sync. Potrebbero essere necessari fino a 10 minuti prima che lo stato diventi Attivato.
Esegui il deployment di Cymbal Bank
Nel primo tutorial di questa serie hai utilizzato i comandi kubectl
per applicare le configurazioni dell'applicazione al tuo cluster. In questo tutorial utilizzerai la funzionalità dei pacchetti del parco risorse di Config Sync per eseguire il deployment delle stesse configurazioni in un nuovo cluster. In una sezione successiva, vedrai un esempio di come aggiungere una nuova risorsa al tuo repository Git ed eseguirne il deployment in un parco risorse di cluster.
Configura un account di servizio per Cloud Build
Un account di servizio è un particolare tipo di account usato solitamente da un'applicazione, piuttosto che a una persona. Come best practice per la creazione di account di servizio, creare account di servizio per un singolo servizio o un'attività specifica e assegnare i ruoli granulari dell'account di servizio. In questo tutorial, crei un account di servizio per concedere a Cloud Build le autorizzazioni per recuperare le risorse Kubernetes dal tuo repository Git e per eseguirne il deployment nei tuoi cluster.
Per creare l'account di servizio e concedere le autorizzazioni necessarie, completa i seguenti passaggi:
Crea l'account di servizio:
gcloud iam service-accounts create "cymbal-bank-service-account"
Concedi all'account di servizio l'autorizzazione per recuperare risorse dal repository Git aggiungendo un'associazione di criteri IAM per il ruolo Publisher bundle di risorse:
gcloud projects add-iam-policy-binding PROJECT_ID \ --member="serviceAccount:cymbal-bank-service-account@PROJECT_ID.iam.gserviceaccount.com" \ --role='roles/configdelivery.resourceBundlePublisher'
Se richiesto, seleziona
None
come condizione per il criterio.Concedi all'account di servizio l'autorizzazione a scrivere log aggiungendo un'associazione di criteri IAM per il ruolo Writer log:
gcloud projects add-iam-policy-binding PROJECT_ID \ --member="serviceAccount:cymbal-bank-service-account@PROJECT_ID.iam.gserviceaccount.com" \ --role='roles/logging.logWriter'
Se richiesto, seleziona
None
come condizione per il criterio.
Crea una release per l'applicazione Cymbal Bank
Un pacchetto del parco risorse richiede un tag di versione semantico per sapere quale versione il repository da cui eseguire il deployment. È buona norma creare nuove release quando apporti modifiche al repository, in quanto ciò facilita il controllo della versione e semplifica il ripristino di una versione stabile, se necessario.
In una finestra del browser web del tuo fork di GitHub di Cymbal Bank, fai clic su Crea una nuova release nella sezione Release della barra laterale.
Seleziona il menu Scegli un tag e digita
v1.0.0
come tag. Clic Crea nuovo tag.Fai clic su Pubblica release.
Configura l'autenticazione
Proprio come nel primo tutorial di questa serie, devi creare un JWT per gestire l'autenticazione utente e un secret Kubernetes per archiviare il JWT per il nuovo cluster che hai creato. È buona norma che ogni cluster abbia un JWT univoco per l'autenticazione.
In Cloud Shell, crea il JWT:
openssl genrsa -out jwtRS256.key 4096 openssl rsa -in jwtRS256.key -outform PEM -pubout -out jwtRS256.key.pub
Crea il secret Kubernetes:
kubectl create secret generic jwt-key --from-file=./jwtRS256.key --from-file=./jwtRS256.key.pub
Esegui il deployment dell'applicazione Cymbal Bank con un pacchetto di flotte
Una risorsa FleetPackage
è un'API dichiarativa per eseguire il deployment di più manifest Kubernetes in
nel parco risorse di cluster.
Per creare un pacchetto del parco risorse, definisci una specifica FleetPackage
che rimandi allo
un repository con le risorse Kubernetes a cui hai eseguito la connessione
in Cloud Build. Poi applichi la risorsa FleetPackage
, che recupera le risorse da Git e le esegue il deployment nel parco risorse.
In Cloud Shell, imposta la posizione predefinita per i comandi
configdelivery
Google Cloud CLI. Come per il collegamento del repository a Cloud Build, devi utilizzareus-central1
mentre la funzionalità dei pacchetti del parco risorse è in anteprima:gcloud config set config_delivery/location us-central1
Crea un file denominato
fleetpackage-spec.yaml
con i seguenti contenuti:resourceBundleSelector: cloudBuildRepository: name: projects/PROJECT_ID/locations/us-central1/connections/cymbal-bank-connection/repositories/REPOSITORY_NAME tag: v1.0.0 serviceAccount: projects/PROJECT_ID/serviceAccounts/cymbal-bank-service-account@PROJECT_ID.iam.gserviceaccount.com path: kubernetes-manifests target: fleet: project: projects/PROJECT_ID selector: matchLabels: env: dev rolloutStrategy: rolling: maxConcurrent: 1
Sostituisci
REPOSITORY_NAME
con il nome del repository, così come viene visualizzato nella connessione Cloud Build.I campi del selettore corrispondono all'etichetta di appartenenza al parco risorse che hai creato in precedenza. In questo modo, l'applicazione Cymbal Bank viene dispiattata solo nel cluster
scalable-apps-dev
. Il clusterscalable-apps
del primo tutorial non è interessato. Nella sezione successiva, vedrai un esempio di pacchetto del parco risorse che ha come target tutti i cluster di un parco risorse.Il campo della strategia di implementazione controlla il modo in cui viene eseguito il deployment delle risorse nei cluster. In questo esempio, esegui il deployment in un solo cluster, quindi questo campo non cambia come procede l'implementazione. Se invece avevi molti cluster, questa impostazione garantisce a cui si applicano tutti i file delle risorse in un cluster prima di passare a quello successivo. In questo modo puoi monitorare l'avanzamento dell'implementazione.
Crea il pacchetto del parco risorse:
gcloud alpha container fleet packages create cymbal-bank-fleet-package \ --source=fleetpackage-spec.yaml \ --project=PROJECT_ID
Verifica che il pacchetto del parco risorse sia stato creato:
gcloud alpha container fleet packages list
L'output elenca lo stato dell'attivatore della compilazione. Dopo alcuni secondi, il campo
MESSAGE
viene aggiornato con un output simile al seguente:MESSAGES: Build status: WORKING. The release is still being built; see the build status on the following page:
Puoi fare clic sul link fornito per visualizzare i log in streaming per il job Cloud Build. L'elaborazione dell'attivatore della build da parte di Cloud Build può richiedere alcuni minuti.
Quando il trigger di build viene completato correttamente, l'output
gcloud alpha container fleet packages list
è simile al seguente:NAME: cymbal-bank-fleet-package STATE: ACTIVE CREATE_TIME: 2024-07-09T15:15:56 ACTIVE_ROLLOUT: rollout-20240709-153621 LAST_COMPLETED_ROLLOUT: MESSAGES:
Il pacchetto del parco risorse inizia a implementare le risorse Kubernetes nel tuo parco risorse.
Nella pagina Google Kubernetes Engine della console Google Cloud, seleziona il cluster
scalable-apps-dev
, e poi vai alla pagina Carichi di lavoro per avere una visualizzazione aggregata dei carichi di lavoro in tutti i tuoi cluster GKE:Apri la pagina Carichi di lavoro
Potresti visualizzare alcuni errori mentre Autopilot regola i pod per soddisfare le richieste di risorse. Dopo alcuni minuti, dovresti vedere che i pod iniziano a funzionare con lo stato OK.
Per visualizzare l'interfaccia web di Cymbal Bank, procedi nel seguente modo:
Nella pagina Google Kubernetes Engine della console Google Cloud, vai a Gateway, Servizi e in entrata.
Per trovare l'ingresso della banca Cymbal, fai clic sulla scheda "Servizi" e individua il servizio con il nome
frontend
.Fai clic sul link Endpoint per l'ingresso
frontend
, ad esempio198.51.100.143:80
, per aprire l'interfaccia web di Cymbal Bank.
Esegui il deployment delle risorse in un parco risorse
Immagina uno scenario in cui vuoi estendere l'applicazione di Cymbal Bank con un nuovo microservizio. Vuoi eseguire il deployment di questo microservizio in tutte cluster attuali ed eventuali cluster futuri aggiunti al parco risorse. Utilizzando un pacchetto del parco risorse, puoi eseguire il deployment in più cluster e ottenere il deployment automatico sui nuovi cluster.
Aggiungere nuove risorse al repository Git
Per dimostrare l'aggiunta di un nuovo servizio alla tua applicazione, crea una classe di base deployment nginx e aggiungilo ai tuoi cluster:
In una finestra del browser web del tuo fork di GitHub di Cymbal Bank, seleziona, fai clic su Aggiungi file e poi su Crea nuovo file.
Assegna al file il nome
new-resource/nginx.yaml
e incolla i seguenti contenuti:apiVersion: apps/v1 kind: Deployment metadata: name: nginx-deployment spec: replicas: 3 selector: matchLabels: app: nginx template: metadata: labels: app: nginx spec: containers: - image: nginx:1.14.2 name: nginx ports: - containerPort: 80
Fai clic su Esegui commit delle modifiche….
Nella finestra di dialogo di conferma, mantieni selezionata l'opzione Esegui commit direttamente nel ramo
main
, quindi fai clic su Esegui commit delle modifiche.Nella pagina principale del repository di Cymbal Bank creato con fork, seleziona Release nella barra laterale.
Nella parte superiore della pagina, scegli Crea una nuova release.
Seleziona il menu Scegli un tag e digita
v1.1.0
come tag. Fai clic su Crea nuovo tag.Fai clic su Pubblica release.
Esegui il deployment di una risorsa nei cluster con un pacchetto del parco risorse
Per eseguire il deployment della nuova risorsa, crea un nuovo pacchetto del parco risorse:
Questo pacchetto del parco risorse ha come target tutti i cluster nel tuo parco risorse poiché non contengono un campo selettore. Ciò significa anche che a tutti i cluster futuri aggiunti al parco risorse verrà aggiunto automaticamente il deployment di nginx.
In Cloud Shell, crea un file denominato
new-deployment-fleet-package.yaml
con il seguente contenuto:resourceBundleSelector: cloudBuildRepository: name: projects/PROJECT_ID/locations/us-central1/connections/cymbal-bank-connection/repositories/REPOSITORY_NAME tag: v1.1.0 serviceAccount: projects/PROJECT_ID/serviceAccounts/cymbal-bank-service-account@PROJECT_ID.iam.gserviceaccount.com path: kubernetes-manifests/new-resource target: fleet: project: projects/PROJECT_ID rolloutStrategy: rolling: maxConcurrent: 1
Crea il pacchetto del parco risorse per avviare l'implementazione:
gcloud alpha container fleet packages create new-deployment-fleet-package \ --source=new-deployment-fleet-package.yaml \ --project=PROJECT_ID
Verifica che il pacchetto del parco risorse sia stato creato:
gcloud alpha container fleet packages list
Puoi fare clic sul link fornito per visualizzare i flussi di log per il job Cloud Build.
Il pacchetto del parco risorse inizia a implementare le risorse Kubernetes parco risorse. L'inizio e il completamento dell'implementazione possono richiedere alcuni minuti.
Nella pagina Google Kubernetes Engine della console Google Cloud, vai alla pagina Carichi di lavoro per visualizzare una visualizzazione aggregata dei carichi di lavoro in fase di implementazione su tutti i tuoi cluster GKE:
Puoi continuare a esplorare diverse strategie di deployment con i pacchetti del parco risorse. Ad esempio, puoi provare ad aggiungere diversi tipi di risorse al repository sottoposto a forking e utilizzare configurazioni diverse del pacchetto del parco risorse per eseguirne il deployment. Puoi anche utilizzare un pacchetto del parco risorse per eliminare le risorse di cui hai eseguito il deployment nei tuoi cluster. Per ulteriori informazioni sui pacchetti del parco risorse, consulta Esegui il deployment dei pacchetti del parco risorse nella documentazione di Config Sync.
Elimina risorse in un parco risorse
Proprio come puoi implementare le risorse in un parco risorse, puoi anche eliminarle con un pacchetto del parco risorse.
Per rimuovere le singole risorse, i passaggi di alto livello sono i seguenti:
- Elimina la risorsa dal tuo repository Git.
- Crea una nuova release Git e un nuovo tag.
- Aggiorna il campo del pacchetto del parco risorse
tag
. - Esegui il comando di aggiornamento del pacchetto del parco risorse.
In alternativa, puoi eliminare il pacchetto del parco risorse stesso, il che comporta l'eliminazione di tutte le risorse gestite dal pacchetto.
Ad esempio, se vuoi rimuovere il deployment nginx dalla precedente esegui questo comando:
gcloud alpha container fleet packages delete new-deployment-fleet-package --force
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 hai creato.
- 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.
Puoi eliminare il repository creato con fork completando questi passaggi:
In una finestra del browser web del tuo fork GitHub di Cymbal Bank, sotto il nome del repository, fai clic su Settings (Impostazioni).
Nella pagina Impostazioni generali (selezionata per impostazione predefinita), vai alla sezione Zona pericolosa e fai clic su Elimina questo repository.
Fai clic su Voglio eliminare questo repository.
Leggi gli avvisi e fai clic su Ho letto e compreso questi effetti.
Per verificare di eliminare il repository corretto, nel campo di testo digita il nome del repository Cymbal Bank sottoposto a fork.
Fai clic su Elimina questo repository.
Passaggi successivi
Prima di iniziare a creare il tuo cluster GKE Enterprise simile a quello che hai visto in questa serie di tutorial, esaminare alcune considerazioni sulla produzione.