Questo insieme di tutorial è rivolto a operatori e amministratori IT che vogliono distribuire, eseguire e gestire ambienti di applicazioni moderne che vengono eseguiti su Google Kubernetes Engine (GKE) Enterprise. Man mano che avanzi in questo insieme di tutorial, imparerai a configurare il monitoraggio e gli avvisi, a scalare i carichi di lavoro e a simulare errori, il tutto utilizzando l'applicazione di microservizi di esempio Cymbal Bank:
- Crea un cluster ed esegui il deployment di un'applicazione di esempio (questo tutorial)
- Monitoraggio con Google Cloud Managed Service per Prometheus
- Scalare i workload
- Simulare un errore
- Centralizzare la gestione dei cambiamenti
Panoramica e obiettivi
Cymbal Bank utilizza Python e Java per eseguire i vari servizi e include un backend PostgreSQL. Non è necessario avere esperienza con questi linguaggi o piattaforme di database per completare la serie di tutorial, in quanto Cymbal Bank è solo un'applicazione di esempio per mostrare come GKE Enterprise può supportare le esigenze della tua attività.
In questo tutorial imparerai a creare un singolo cluster GKE e a eseguire il deployment di un'applicazione di esempio basata su microservizi denominata Cymbal Bank in un cluster GKE. Imparerai a completare le seguenti attività:
Crea un cluster GKE che utilizza Autopilot.
Esegui il deployment di un'applicazione di esempio basata su microservizi denominata Cymbal Bank.
Utilizza la console Google Cloud per esplorare le risorse GKE utilizzate dall'applicazione di esempio Cymbal Bank.
Costi
L'abilitazione di GKE Enterprise e il deployment dell'applicazione di esempio Cymbal Bank per questa serie di tutorial comportano addebiti per cluster per GKE Enterprise su Google Cloud , come indicato nella nostra pagina dei prezzi, finché non disabiliti GKE Enterprise o elimini il progetto.
Sei responsabile anche di altri Google Cloud costi sostenuti durante l'esecuzione dell'applicazione di esempio Cymbal Bank, ad esempio i costi per le VM di Compute Engine e i bilanciatori del carico.
Prima di iniziare
I primi tutorial di questa serie utilizzano principalmente le funzionalità di base disponibili per tutti gli utenti GKE, ma man mano che avanzi nei tutorial utilizzi sempre più funzionalità aggiuntive disponibili solo tramite il livello Enterprise.
In questo primo tutorial della serie, completa tutti i passaggi di configurazione "Inizia" prima di iniziare. Devi completare i seguenti passaggi della sezione "Prima di iniziare" una sola volta.
Configurare la shell e gli strumenti
In questa serie di tutorial, utilizzerai i seguenti strumenti per eseguire il deployment e gestire il tuo ambiente:
- gcloud CLI: crea e gestisci cluster GKE e parchi risorse, insieme ad altri servizi Google Cloud .
kubectl
: gestisci Kubernetes, il sistema di orchestrazione dei cluster utilizzato da GKE Enterprise.
Per eseguire i comandi in questa pagina, configura Google Cloud CLI e kubectl
in
uno dei seguenti ambienti di sviluppo:
Cloud Shell
Per utilizzare un terminale online con gcloud CLI e kubectl
già
configurati, attiva Cloud Shell:
Nella parte inferiore di questa pagina viene avviata una sessione di Cloud Shell e viene visualizzato un prompt della riga di comando. L'inizializzazione della sessione può richiedere alcuni secondi.
Shell locale
Per utilizzare un ambiente di sviluppo locale:
- Installa gcloud CLI.
- Inizializza gcloud CLI.
Installa
kubectl
gcloud CLI:gcloud components install kubectl
Configura il progetto
Segui questi passaggi per configurare un progetto Google Cloud , inclusa l'attivazione dei servizi di fatturazione e GKE. Questo è il progetto in cui abiliterai GKE Enterprise.
Potresti aver bisogno di un Google Cloud amministratore della tua organizzazione per concederti l'accesso per creare o utilizzare un progetto e abilitare le API.
Nella console Google Cloud , vai alla pagina Google Kubernetes Engine:
Crea o seleziona un progetto. Questo è il progetto in cui abiliti GKE Enterprise.
Se richiesto, abilita l'API GKE Enterprise.
Attendi che l'API e i relativi servizi siano abilitati. L'operazione può richiedere diversi minuti.
Make sure that billing is enabled for your Google Cloud project.
Dopo aver abilitato GKE, attiva la versione Google Kubernetes Engine (GKE) Enterprise:
Nella console Google Cloud , vai alla pagina GKE Enterprise:
Seleziona Scopri di più su Google Kubernetes Engine (GKE) Enterprise.
Se hai l'idoneità, puoi selezionare l'opzione Inizia la tua prova gratuita di 90 giorni.
Seleziona Abilita GKE Enterprise, poi Conferma.
Concedi ruoli IAM
Se sei il proprietario del progetto (ad esempio se l'hai creato tu), disponi già di tutte le autorizzazioni necessarie per completare questi tutorial. Se non sei il proprietario, assicurati che il tuo account Google Cloud disponga dei ruoli IAM richiesti per il progetto selezionato per questo insieme di tutorial. Anche in questo caso, potresti aver bisogno di un amministratore diGoogle Cloud nella tua organizzazione per concedere i ruoli richiesti.
Nei seguenti comandi, sostituisci PROJECT_ID
con l'ID generato automaticamente del progetto che hai creato o selezionato 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.
Grant roles to your user account. Run the following command once for each of the following
IAM roles:
roles/resourcemanager.projectIamAdmin, roles/iam.serviceAccountAdmin, roles/iam.serviceAccountUser, roles/iam.securityAdmin, roles/serviceusage.serviceUsageAdmin, roles/container.admin, roles/logging.logWriter, roles/gkehub.admin, roles/viewer, roles/monitoring.viewer
gcloud projects add-iam-policy-binding PROJECT_ID --member="user:USER_IDENTIFIER" --role=ROLE
- Replace
PROJECT_ID
with your project ID. -
Replace
USER_IDENTIFIER
with the identifier for your user account. For example,user:myemail@example.com
. - Replace
ROLE
with each individual role.
Clona l'applicazione di esempio
Clona il repository Git che include tutti i manifest di esempio per Cymbal Bank:
git clone https://github.com/GoogleCloudPlatform/bank-of-anthos
cd bank-of-anthos/
Crea un cluster
Una volta completati tutti i passaggi dei prerequisiti nelle sezioni precedenti, puoi iniziare a creare un cluster Google Kubernetes Engine ed eseguire il deployment di un'applicazione di esempio.
GKE è un servizio Kubernetes gestito che puoi utilizzare per eseguire il deployment e gestire applicazioni containerizzate. Un ambiente GKE è composto da nodi, ovvero macchine virtuali (VM) Compute Engine, raggruppati per formare un cluster.
I cluster GKE possono anche essere raggruppati in parchi risorse: gruppi logici di cluster che possono essere gestiti insieme. Molte funzionalità di GKE Enterprise, incluse quelle che utilizzerai più avanti in questa serie di tutorial, si basano sui parchi risorse e sui principi di uguaglianza e fiducia che i parchi risorse presuppongono.
Crea un cluster GKE che utilizzerai nel resto dei tutorial di questa serie:
gcloud container clusters create-auto scalable-apps \ --project=PROJECT_ID \ --region=REGION \ --enable-fleet
Sostituisci quanto segue:
PROJECT_ID
con l'ID generato automaticamente del progetto che hai 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 il cluster, ad esempious-central1
.
La creazione del cluster e la verifica del corretto funzionamento di tutto richiedono alcuni minuti.
In questo insieme di tutorial, utilizzi cluster in modalità Autopilot e alcuni intervalli di indirizzi IP predefiniti quando crei cluster. Un deployment di produzione delle tue applicazioni richiede una pianificazione più attenta degli indirizzi IP. In modalità Autopilot, Google gestisce la configurazione del cluster, tra cui scalabilità automatica, sicurezza e altre impostazioni preconfigurate. I cluster in modalità Autopilot sono ottimizzati per eseguire la maggior parte dei carichi di lavoro di produzione e per eseguire il provisioning delle risorse di calcolo in base ai manifest Kubernetes.
Esegui il deployment di Cymbal Bank
I pacchetti di app (chiamati anche carichi di lavoro) vengono inseriti nei container. Esegui il deployment di set di container come pod sui nodi.
In questa serie di tutorial, esegui il deployment di un'applicazione di esempio basata su microservizi denominata Cymbal Bank in uno o più cluster GKE. Cymbal Bank utilizza Python e Java per eseguire i vari servizi e include un backend PostgreSQL. Per completare la serie di tutorial, non è necessario avere esperienza con questi linguaggi o piattaforme di database. Cymbal Bank è solo un'applicazione di esempio per mostrare come la versione GKE Enterprise di Google Kubernetes Engine (GKE) può supportare le esigenze della tua attività.
Quando utilizzi Cymbal Bank nell'ambito di questo insieme di tutorial, nel tuo cluster GKE vengono implementati i seguenti servizi:
Servizio | Lingua | Descrizione |
---|---|---|
frontend |
Python | Espone un server HTTP per pubblicare il sito web. Contiene la pagina di accesso, la pagina di registrazione e la home page. |
ledger-writer |
Java | Accetta e convalida le transazioni in entrata prima di scriverle nel ledger. |
balance-reader |
Java | Fornisce una cache leggibile ed efficiente dei saldi degli utenti, come letti da ledger-db . |
transaction-history |
Java | Fornisce una cache leggibile ed efficiente delle transazioni passate, come letto da ledger-db . |
ledger-db |
PostgreSQL | Registro di tutte le transazioni. Opzione per precompilare con le transazioni per gli utenti demo. |
user-service |
Python | Gestisce gli account utente e l'autenticazione. Firma i JWT utilizzati per l'autenticazione da altri servizi. |
contacts |
Python | Memorizza l'elenco degli altri account associati a un utente. Utilizzato per il menu a discesa nei moduli "Invia pagamento" e "Deposito". |
accounts-db |
PostgreSQL | Database per gli account utente e i dati associati. Opzione per precompilare con utenti demo. |
loadgenerator |
Python / Locust | Invia continuamente richieste che imitano gli utenti al frontend. Crea periodicamente nuovi account e simula transazioni tra questi. |
Per eseguire il deployment di Cymbal Bank nel cluster GKE, completa i seguenti passaggi:
Cymbal Bank utilizza i token web JSON (JWT) per gestire l'autenticazione degli utenti. I JWT utilizzano coppie di chiavi asimmetriche per firmare e verificare i token. In Cymbal Bank,
userservice
crea e firma i token con una chiave privata RSA quando un utente accede, mentre gli altri servizi utilizzano la chiave pubblica corrispondente per convalidare l'utente.Crea un JWT RS256 con una lunghezza di 4096 bit:
openssl genrsa -out jwtRS256.key 4096 openssl rsa -in jwtRS256.key -outform PEM -pubout -out jwtRS256.key.pub
Se necessario, scarica e installa gli strumenti OpenSSL per la tua piattaforma.
Un secret Kubernetes può archiviare dati sensibili come chiavi o password. I carichi di lavoro eseguiti nel cluster possono quindi accedere al secret per ottenere i dati sensibili anziché codificarli nell'applicazione.
Crea un secret di Kubernetes dal file della chiave creato nel passaggio precedente per consentire a Cymbal Bank di utilizzarlo con le richieste di autenticazione:
kubectl create secret generic jwt-key --from-file=./jwtRS256.key --from-file=./jwtRS256.key.pub
Esegui il deployment di Cymbal Bank nel tuo cluster. Il seguente comando esegue il deployment di tutti i file manifest nella directory
kubernetes-manifests
. Ogni file manifest esegue il deployment e configura uno dei servizi:kubectl apply -f kubernetes-manifests/accounts-db.yaml kubectl apply -f kubernetes-manifests/balance-reader.yaml kubectl apply -f kubernetes-manifests/config.yaml kubectl apply -f kubernetes-manifests/contacts.yaml kubectl apply -f extras/postgres-hpa/kubernetes-manifests/frontend.yaml kubectl apply -f kubernetes-manifests/ledger-db.yaml kubectl apply -f kubernetes-manifests/ledger-writer.yaml kubectl apply -f extras/postgres-hpa/loadgenerator.yaml kubectl apply -f kubernetes-manifests/transaction-history.yaml kubectl apply -f kubernetes-manifests/userservice.yaml
Potresti visualizzare messaggi nell'output
kubectl
man mano che i manifest vengono applicati al cluster in merito ai limiti di Autopilot. Autopilot utilizza le richieste di risorse specificate nella configurazione del workload per configurare i nodi che eseguono i workload. Autopilot applica richieste di risorse minime e massime in base alla classe di calcolo o alla configurazione hardware utilizzata dai tuoi carichi di lavoro. Se non specifichi le richieste per alcuni container, Autopilot assegna valori predefiniti per consentirne la corretta esecuzione.Esamina il seguente manifest di esempio per il servizio
frontend
:Questo manifest per le
frontend
richieste di servizio100m
di CPU e64Mi
, e imposta limiti di250m
di CPU e128Mi
per pod.Quando esegui il deployment di un workload in un cluster Autopilot, GKE convalida la configurazione del workload rispetto ai valori minimi e massimi consentiti per la classe di computing o la configurazione hardware selezionata (ad esempio le GPU). Se le tue richieste sono inferiori al minimo, Autopilot modifica automaticamente la configurazione del workload per portare le richieste nell'intervallo consentito. Questi messaggi indicano che i limiti appropriati vengono assegnati automaticamente.
Attendi che i pod siano pronti. Utilizza
kubectl
per controllare lo stato dei Pod:kubectl get pods
La colonna
STATUS
cambia daPending
aContainerCreating
. Occorrono alcuni minuti prima che tutti i pod si trovino nello statoRunning
, come mostrato nell'output di esempio seguente:NAME READY STATUS RESTARTS AGE accounts-db-6f589464bc-6r7b7 1/1 Running 0 99s balancereader-797bf6d7c5-8xvp6 1/1 Running 0 99s contacts-769c4fb556-25pg2 1/1 Running 0 98s frontend-7c96b54f6b-zkdbz 1/1 Running 0 98s ledger-db-5b78474d4f-p6xcb 1/1 Running 0 98s ledgerwriter-84bf44b95d-65mqf 1/1 Running 0 97s loadgenerator-559667b6ff-4zsvb 1/1 Running 0 97s transactionhistory-5569754896-z94cn 1/1 Running 0 97s userservice-78dc876bff-pdhtl 1/1 Running 0 96s
Quando tutti i pod sono nello stato
Running
, continua con il passaggio successivo. Anche in questo caso, sono necessari alcuni minuti prima che tutti i pod raggiungano lo statoRunning
. È normale che alcuni pod segnalino uno statoREADY
di0/1
finché Cymbal Bank non è pronto a gestire correttamente il traffico.Il servizio
frontend
espone un server HTTP per pubblicare il sito web di Cymbal Bank, incluse la pagina di accesso, la pagina di registrazione e la home page. Un oggetto Ingress definisce le regole per il routing del traffico HTTP(S) alle applicazioni in esecuzione in un cluster utilizzando un bilanciatore del carico HTTP(S). Google CloudOttieni l'indirizzo IP esterno dell'ingresso
frontend
:kubectl get ingress frontend | awk '{print $4}'
In una finestra del browser web, apri l'indirizzo IP mostrato nell'output del comando
kubectl get ingress
per accedere alla tua istanza di Cymbal Bank.Le credenziali predefinite vengono compilate automaticamente, così puoi accedere all'app ed esplorare alcune transazioni e saldi di esempio. Non devi intraprendere azioni specifiche, se non confermare che Cymbal Bank venga eseguito correttamente. Potrebbe essere necessario un minuto o due prima che tutti i servizi comunichino correttamente e ti consentano di accedere.
Esplorare il deployment
Dopo aver creato un cluster GKE e aver eseguito il deployment dei carichi di lavoro, potresti dover modificare le impostazioni o esaminare il rendimento della tua applicazione. In questa sezione, imparerai a utilizzare la console Google Cloud per esaminare le risorse che fanno parte del tuo cluster e dell'applicazione di esempio Cymbal Bank.
Come introdotto durante la creazione del cluster, le funzionalità di GKE Enterprise si basano sull'idea del parco risorse: un raggruppamento logico di cluster Kubernetes che possono essere gestiti insieme. Ad esempio, potresti avere più cluster utilizzati da team diversi, contenere repliche di applicazioni in regioni diverse per motivi di latenza e affidabilità o segmentare i carichi di lavoro con requisiti di sicurezza diversi. Un parco risorse aiuta a organizzare gruppi di questi cluster correlati.
La panoramica di GKE Enterprise nella console Google Cloud fornisce
una visione generale dell'intero parco risorse. Quando hai creato il cluster GKE, è stato registrato automaticamente nel parco risorse utilizzando il parametro --enable-fleet
.
Per visualizzare le informazioni su GKE Enterprise e sul parco risorse, vai alla pagina Panoramica nella console Google Cloud :
Vai alla panoramica di GKE Enterprise
La pagina Panoramica mostra le seguenti informazioni:
- Quanti cluster sono presenti nel tuo parco risorse e se sono integri.
- L'utilizzo delle risorse del parco risorse, inclusi CPU, memoria e utilizzo del disco, aggregato per parco risorse e per cluster.
- Eventuali problemi di sicurezza identificati per il tuo parco risorse, la copertura di Policy Controller a livello di parco risorse e lo stato di sincronizzazione dei pacchetti Config Sync. Aggiungerai Policy Controller e Config Sync al tuo cluster nei tutorial futuri di questa serie.
La pagina Cluster di GKE mostra tutti i cluster del tuo progetto. I cluster registrati in un parco risorse hanno il parco risorse elencato nella colonna Parco risorse.
Nelle sezioni seguenti, esamineremo più da vicino le risorse GKE di Cymbal Bank.
Cluster
In questo tutorial hai creato un cluster GKE e hai eseguito il deployment dei carichi di lavoro di Cymbal Bank.
Nella pagina Google Kubernetes Engine della console Google Cloud , vai alla pagina Cluster.
Fai clic sul cluster scalable-apps appena sottoposto a deployment. Nella pagina dei dettagli del cluster che si apre, puoi visualizzare i dettagli di base del cluster insieme alle configurazioni di rete e sicurezza del cluster. Puoi anche vedere quali funzionalità GKE sono abilitate in questo cluster nella sezione Funzionalità.
Osservabilità
Puoi visualizzare le metriche di base per l'integrità e il rendimento del tuo cluster. Nel prossimo tutorial di questa serie, abiliti Google Cloud Managed Service per Prometheus per un monitoraggio e un'osservabilità più granulari.
Seleziona il cluster dalla pagina Cluster di Google Kubernetes Engine della consoleGoogle Cloud , poi vai alla scheda Osservabilità.
Esamina alcuni grafici delle metriche per elementi come CPU e Memoria. Questa visualizzazione ti consente di monitorare le prestazioni delle diverse parti dei tuoi carichi di lavoro del cluster senza dover eseguire il deployment di funzionalità di monitoraggio aggiuntive.
Per visualizzare i log trasmessi in streaming dal cluster, seleziona la scheda Log. Puoi filtrare in base alla gravità dei log o creare filtri personalizzati per visualizzare spazi dei nomi, servizi o pod specifici. Come per gli avvisi e gli eventi dei pod, questa visualizzazione aggregata dei log del cluster può aiutarti a eseguire il debug dei problemi rapidamente utilizzando la console Google Cloud .
È normale visualizzare le voci di log quando viene eseguito il deployment iniziale di Cymbal Bank, in quanto alcuni servizi non possono ancora comunicare.
Seleziona la scheda Errori app. Durante l'esecuzione dei workload, puoi visualizzare gli avvisi e gli eventi raccolti nella console Google Cloud . Questo approccio può aiutarti a eseguire il debug dei problemi senza dover connetterti singolarmente al cluster, ai nodi o ai pod.
Anche in questo caso, è normale vedere eventi registrati quando viene eseguito il deployment iniziale di Cymbal Bank quando alcuni servizi non possono ancora comunicare.
Workload
La pagina GKE della console Google Cloud ha una sezione Workload che mostra una visualizzazione aggregata dei workload eseguiti su tutti i tuoi cluster GKE.
Nella pagina Google Kubernetes Engine della console Google Cloud , vai alla pagina Carichi di lavoro.
Vai alla pagina Carichi di lavoro
La scheda Panoramica mostra un elenco di carichi di lavoro e spazi dei nomi del cluster GKE. Puoi filtrare per spazi dei nomi per vedere quali workload vengono eseguiti in ogni spazio dei nomi.
Servizi e ingress
La visualizzazione Servizi e Ingress mostra le risorse di servizio e Ingress del progetto. Un servizio espone un insieme di pod come servizio di rete con un endpoint, mentre una risorsa Ingress gestisce l'accesso esterno ai servizi in un cluster.
Nella pagina Google Kubernetes Engine della console Google Cloud , vai alla pagina Gateway, servizi e Ingress.
Per trovare l'ingresso di Cymbal Bank, fai clic sulla scheda "Ingresso" e trova l'ingresso con il nome
frontend
. Un ingresso gestisce il traffico in entrata per la tua applicazione. Puoi visualizzare informazioni sul bilanciatore del carico, sulle porte e sugli endpoint esterni.Fai clic sull'indirizzo IP per l'ingresso
frontend
, ad esempio198.51.100.143:80
. Questo indirizzo apre l'interfaccia web di Cymbal Bank.
Esegui la pulizia
Il set di tutorial per Cymbal Bank è progettato per essere completato uno dopo l'altro. Man mano che avanzi nella serie di tutorial, acquisisci nuove competenze e utilizzi Google Cloud prodotti e servizi aggiuntivi.
Se vuoi fare una pausa prima di passare al tutorial successivo ed evitare che al tuo account Google Cloud vengano addebitati costi per le 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.
Passaggi successivi
Scopri come monitorare i carichi di lavoro in GKE Enterprise utilizzando Google Cloud Managed Service per Prometheus e Cloud Monitoring nel tutorial successivo.