1. Panoramica
In questo lab eseguirai il deployment di un microservizio a due livelli con un pod in esecuzione su GKE Autopilot e lo connetterai a un'istanza privata del database AlloyDB. L'applicazione Assistenza clienti fa parte del sistema Cymbal Eats e fornisce funzionalità per gestire gli utenti registrati. L'applicazione Assistenza clienti è un microservizio basato su Java che utilizza il framework Quarkus.
AlloyDB supporta la connettività di rete tramite indirizzi IP interni privati configurati per l'accesso privato ai servizi.
L'accesso privato ai servizi è implementato come connessione in peering VPC tra la tua rete VPC e la rete VPC Google Cloud sottostante in cui si trovano le risorse AlloyDB (cluster e istanze). La connessione privata consente alle risorse nella tua rete VPC di comunicare con le risorse AlloyDB a cui accedono in modo esclusivo mediante indirizzi IP interni. Le risorse nella tua rete VPC non hanno bisogno dell'accesso a internet o di indirizzi IP esterni per raggiungere le risorse AlloyDB.
Che cos'è GKE Autopilot?
GKE Autopilot è una modalità operativa di GKE in cui Google gestisce la configurazione del tuo cluster, inclusi nodi, scalabilità, sicurezza e altre impostazioni preconfigurate. I cluster Autopilot sono ottimizzati per eseguire la maggior parte dei carichi di lavoro di produzione ed eseguire il provisioning delle risorse di calcolo in base ai tuoi manifest Kubernetes. La configurazione semplificata segue le best practice e i suggerimenti di GKE per la configurazione, la scalabilità e la sicurezza di cluster e carichi di lavoro. Per un elenco delle impostazioni integrate, consulta la tabella di confronto tra Autopilot e Standard.
Che cos'è AlloyDB?
Un servizio di database completamente gestito compatibile con PostgreSQL per i carichi di lavoro di database aziendale più impegnativi. AlloyDB combina il meglio di Google con uno dei più diffusi motori di database open source, PostgreSQL, per offrire prestazioni, scalabilità e disponibilità superiori.
Cosa imparerai a fare
In questo lab imparerai a:
- Crea un'istanza privata del database AlloyDB
- Esegui il deployment di un'applicazione sul cluster GKE Autopilot che si connette all'istanza AlloyDB
Prerequisiti
- In questo lab si presuppone che tu abbia familiarità con gli ambienti della console Cloud e Cloud Shell.
- L'esperienza precedente con GKE e AlloyDB è utile, ma non obbligatoria.
2. Configurazione e requisiti
Configurazione del progetto Cloud
- Accedi alla console Google Cloud e crea un nuovo progetto o riutilizzane uno esistente. Se non hai ancora un account Gmail o Google Workspace, devi crearne uno.
- Il Nome progetto è il nome visualizzato dei partecipanti del progetto. Si tratta di una stringa di caratteri non utilizzata dalle API di Google. Puoi aggiornarla in qualsiasi momento.
- L'ID progetto è univoco in tutti i progetti Google Cloud ed è immutabile (non può essere modificato dopo essere stato impostato). La console Cloud genera automaticamente una stringa univoca. di solito non ti importa cosa sia. Nella maggior parte dei codelab, dovrai fare riferimento all'ID progetto (in genere è identificato come
PROJECT_ID
). Se l'ID generato non ti soddisfa, puoi generarne un altro casuale. In alternativa, puoi provarne una personalizzata per verificare se è disponibile. Non può essere modificato dopo questo passaggio e rimarrà per tutta la durata del progetto. - Per informazione, c'è un terzo valore, un numero di progetto, utilizzato da alcune API. Scopri di più su tutti e tre questi valori nella documentazione.
- Successivamente, dovrai abilitare la fatturazione nella console Cloud per utilizzare risorse/API Cloud. Eseguire questo codelab non dovrebbe costare molto. Per arrestare le risorse in modo da non incorrere in fatturazione oltre questo tutorial, puoi eliminare le risorse che hai creato o eliminare l'intero progetto. I nuovi utenti di Google Cloud sono idonei al programma prova senza costi di 300$.
Configurazione dell'ambiente
Attiva Cloud Shell facendo clic sull'icona a destra della barra di ricerca.
Clona il repository, vai alla directory, copia e incolla il comando seguente nel terminale e premi Invio:
git clone https://github.com/GoogleCloudPlatform/cymbal-eats.git && cd cymbal-eats/customer-service
Esegui il deployment delle dipendenze obbligatorie eseguendo gke-lab-setup.sh
Verranno create le seguenti risorse:
- Cluster e istanza AlloyDB
- Artifact Registry per archiviare le immagini container per il job Cloud Run e l'assistenza clienti
- Connettore di accesso VPC per il job Cloud Run per comunicare con il database AlloyDB
- Job Cloud Run per creare un database AlloyDB
- Cluster GKE Autopilot
./gke-lab-setup.sh
Se ti viene richiesta l'autorizzazione, fai clic su "Autorizza". per continuare.
La configurazione richiederà circa 10 minuti. Esamina lo script di configurazione utilizzato per creare le dipendenze obbligatorie.
gke-lab-setup.sh
Attendi il completamento dello script e la visualizzazione dell'output in basso prima di eseguire i passaggi successivi.
Job [db-job] has successfully been created. To execute this job, use: gcloud beta run jobs execute db-job OK Creating execution... Done. OK Provisioning resources... Done. Execution [db-job-k94ps] has successfully started running.
3. Deployment dell'applicazione
Esamina il cluster AlloyDB
Esegui il comando seguente per esaminare l'istanza AlloyDB creata:
gcloud alloydb instances describe customer-instance --cluster=customer-cluster --region=us-central1
Esempio di output:
createTime: '2023-01-06T14:40:07.213288293Z' instanceType: PRIMARY ipAddress: 10.77.176.2 machineConfig: cpuCount: 2 name: projects/cymbal-eats-20056-16671/locations/us-central1/clusters/customer-cluster/instances/customer-instance nodes: - zoneId: us-central1-f queryInsightsConfig: queryPlansPerMinute: 5 queryStringLength: 1024 recordApplicationTags: true recordClientAddress: true reconciling: false state: READY uid: df90d57d-88df-49be-a626-6dfec0513e64 updateTime: '2023-01-06T14:49:40.907977843Z' writableNode: zoneId: us-central1-b
Esplora le funzionalità disponibili(Query Insight, Monitoring) nella console.
Esamina il cluster GKE Autopilot
Imposta le variabili di ambiente del progetto:
export PROJECT_ID=$(gcloud config get-value project)
export PROJECT_NUMBER=$(gcloud projects describe $PROJECT_ID --format='value(projectNumber)')
export PROJECT_NAME=$(gcloud projects describe $PROJECT_ID --format='value(name)')
Parte della configurazione iniziale, il cluster è stato creato utilizzando il comando seguente (non è necessario eseguire questo comando):
gcloud container clusters create-auto $CLUSTER_NAME --region $REGION
Esegui il comando per visualizzare il cluster GKE Autopilot creato:
gcloud container clusters list
Esempio di output:
Esegui il comando per archiviare le credenziali per il cluster:
CLUSTER_NAME=rewards-cluster
REGION=us-central1
gcloud container clusters get-credentials $CLUSTER_NAME --region=$REGION
Eseguire il deployment di un'applicazione
Successivamente, eseguirai il deployment di un'applicazione dell'assistenza clienti.
L'applicazione Assistenza clienti è un microservizio basato su Java che utilizza il framework Quarkus.
Vai alla cartella cymbal-eats/customer-service
ed esegui i comandi per creare e caricare l'immagine container:
./mvnw clean package -DskipTests
export CUSTOMER_SERVICE_IMAGE=gcr.io/$PROJECT_ID/customer-service:1.0.0
gcloud builds submit --tag $CUSTOMER_SERVICE_IMAGE .
Apri Cloud Build nella console per esaminare i dettagli della build più recente.
Imposta la variabile di ambiente di seguito utilizzando il valore dell'indirizzo IP privato di AlloyDB:
export DB_HOST=$(gcloud beta alloydb instances describe customer-instance \
--cluster=customer-cluster \
--region=$REGION \
--format=json | jq \
--raw-output ".ipAddress")
echo $DB_HOST
Esegui i comandi riportati di seguito per creare un oggetto secret di Kubernetes in cui archiviare le credenziali del database che verranno utilizzate dall'applicazione dell'assistenza clienti per connettersi al database:
DB_NAME=customers
DB_USER=postgres
DB_PASSWORD=password123
kubectl create secret generic gke-alloydb-secrets \
--from-literal=database=$DB_NAME \
--from-literal=username=$DB_USER \
--from-literal=password=$DB_PASSWORD \
--from-literal=db_host=$DB_HOST
Esegui il comando per sostituire CUSTOMER_SERVICE_IMAGE nel file deployment.yaml:
sed "s@CUSTOMER_SERVICE_IMAGE@$CUSTOMER_SERVICE_IMAGE@g" deployment.yaml.tmpl > customer-service-deployment.yaml
Esegui il comando per eseguire il deployment dell'applicazione:
kubectl apply -f customer-service-deployment.yaml
Il passaggio allo stato IN ESECUZIONE dell'applicazione richiederà qualche istante.
Esegui il comando per creare un IP esterno che verrà utilizzato nei passaggi di test:
SERVICE_NAME=customer-service
kubectl expose deployment $SERVICE_NAME \
--type LoadBalancer --port 80 --target-port 8080
Esegui il comando per verificare le risorse create:
kubectl get all
Esempio di output:
4. Applicazione di test
Esegui i comandi riportati di seguito per salvare l'URL dell'assistenza clienti.
kubectl get svc
Imposta la variabile di ambiente di seguito utilizzando il valore di IP esterno dell'output precedente.
CUSTOMER_SERVICE_URL=$(kubectl get svc customer-service -o=jsonpath='{.status.loadBalancer.ingress[0].ip}')
Esegui i comandi riportati di seguito per creare un nuovo record di clienti:
curl -X POST $CUSTOMER_SERVICE_URL/customer \
-H 'Content-Type: application/json' \
-d '{"id": "id1","rewardPoints": 3,"address": "1845 Denise St","city": "Mountain View","createDateTime": "2022-11-11T15:56:45.487566","email": "ajensen9090+eats@gmail.com","name": "Angela Jensen","state": "CA","updateDateTime": "2022-11-11T15:56:45.866125","zip": "94043"}'
Esegui il comando riportato sopra più volte per generare i messaggi di log che visualizzerai in Esplora log in seguito.
Esamina i registri dei clienti
Esegui i comandi riportati di seguito per visualizzare il record cliente creato.
curl $CUSTOMER_SERVICE_URL/customer | jq
Esempio di output:
[ { "address": "1845 Denise St", "city": "Mountain View", "createDateTime": "2023-01-06T16:13:19.118744", "email": "ajensen9090+eats@gmail.com", "id": "id1", "name": "Angela Jensen", "rewardPoints": 3, "state": "CA", "updateDateTime": "2023-01-06T16:13:19.118896", "zip": "94043" } ]
Rivedi i carichi di lavoro e i servizi GKE
Apri Kubernetes Engine nella console Cloud ed esamina i carichi di lavoro e i servizi creati.
Log delle applicazioni
Apri Esplora log e cerca i log contenenti "Customer già esistente" testo.
5. Complimenti!
Complimenti, hai completato il codelab.
Argomenti trattati:
- Creare un'istanza privata del database AlloyDB
- Eseguire il deployment di un'applicazione sul cluster GKE Autopilot che si connette all'istanza AlloyDB
Passaggi successivi
Esplora altri codelab di Cymbal Eats:
- Attivazione di Cloud Workflows con Eventarc
- Attivazione dell'elaborazione degli eventi da Cloud Storage
- Connessione a Cloud SQL privato da Cloud Run
- Connessione a database completamente gestiti da Cloud Run
- Applicazione serverless sicura con Identity-Aware Proxy (IAP)
- Attivazione di job Cloud Run con Cloud Scheduler
- Deployment sicuro su Cloud Run
- Protezione del traffico in entrata di Cloud Run
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 contiene le risorse oppure mantieni il progetto ed elimina le singole risorse.
Elimina il progetto
Il modo più semplice per eliminare la fatturazione è quello di eliminare il progetto che hai creato per il tutorial.