Deployment dell'esempio Bookinfo
Questa pagina spiega come eseguire il deployment di un'applicazione di esempio per dimostrare Cloud Service Mesh. Se non hai eseguito l'onboarding a Cloud Service Mesh, consulta la guida all'onboarding.
Con l'installazione di Cloud Service Mesh vengono fornite diverse applicazioni di esempio. Questa guida ti illustra il deployment dell'esempio BookInfo. Si tratta di una semplice applicazione di libreria simulata composta da quattro servizi
che forniscono una pagina di prodotto web, dettagli sui libri, recensioni (con diverse versioni del
servizio di recensioni) e valutazioni, il tutto gestito utilizzando Cloud Service Mesh. Puoi
trovare il codice sorgente e tutti gli altri file utilizzati in questo esempio nella directory dell'installazione di Cloud Service Mesh in samples/bookinfo.
Attivazione dell'inserimento automatico di sidecar
Abilita lo spazio dei nomi per l'inserimento. I passaggi dipendono dall'implementazione del control plane.
Gestito (TD)
- Applica l'etichetta di inserimento predefinita allo spazio dei nomi:
kubectl label namespace default \ istio.io/rev- istio-injection=enabled --overwriteGestito (Istiod)
Consigliato: esegui questo comando per applicare l'etichetta di inserimento predefinita allo spazio dei nomi:
kubectl label namespace default \ istio.io/rev- istio-injection=enabled --overwriteSe sei un utente esistente con il control plane Istiod gestito: ti consigliamo di utilizzare l'inserimento predefinito, ma è supportato anche l'inserimento basato sulla revisione. Segui queste istruzioni:
Esegui questo comando per individuare i canali di rilascio disponibili:
kubectl -n istio-system get controlplanerevisionL'output è simile al seguente:
NAME AGE asm-managed-rapid 6d7hNOTA: se nell'elenco precedente sono presenti due revisioni del control plane, rimuovine una. L'utilizzo di più canali del control plane nel cluster non è supportato.
Nell'output, il valore nella colonna
NAMEè l'etichetta della revisione che corrisponde al canale di rilascio disponibile per la versione di Cloud Service Mesh.Applica l'etichetta di revisione allo spazio dei nomi:
kubectl label namespace default \ istio-injection- istio.io/rev=REVISION_LABEL --overwrite
Interno al cluster
Consigliato: esegui questo comando per applicare l'etichetta di inserimento predefinita allo spazio dei nomi:
kubectl label namespace default \ istio.io/rev- istio-injection=enabled --overwriteTi consigliamo di utilizzare l'inserimento predefinito, ma è supportato anche l'inserimento basato sulla revisione: Segui queste istruzioni:
Utilizza il comando seguente per individuare l'etichetta della revisione su
istiod:kubectl get deploy -n istio-system -l app=istiod -o \ jsonpath={.items[*].metadata.labels.'istio\.io\/rev'}'{"\n"}'Applica l'etichetta di revisione allo spazio dei nomi. Nel comando seguente,
REVISION_LABELè il valore dell'etichetta di revisioneistiodche hai annotato nel passaggio precedente.kubectl label namespace default \ istio-injection- istio.io/rev=REVISION_LABEL --overwrite
Implementazione dell'applicazione
Ora che l'inserimento automatico è attivato nello spazio dei nomi default, quando esegui il deployment dei servizi dell'applicazione BookInfo, i proxy sidecar vengono inseriti insieme a ogni servizio.
Nella riga di comando del computer in cui hai installato Cloud Service Mesh, vai alla radice della directory di installazione di Cloud Service Mesh. Se necessario, scarica il file di installazione in-cluster, che include l'applicazione di esempio bookinfo, ed estrailo.
Esegui il deployment dell'applicazione nello spazio dei nomi predefinito utilizzando
kubectl:kubectl apply -f samples/bookinfo/platform/kube/bookinfo.yamlVerifica che il deployment dell'applicazione sia stato eseguito correttamente eseguendo i seguenti comandi:
kubectl get servicesOutput:
NAME CLUSTER-IP EXTERNAL-IP PORT(S) AGE details 10.0.0.31 <none> 9080/TCP 6m kubernetes 10.0.0.1 <none> 443/TCP 7d productpage 10.0.0.120 <none> 9080/TCP 6m ratings 10.0.0.15 <none> 9080/TCP 6m reviews 10.0.0.170 <none> 9080/TCP 6m
e
kubectl get podOutput:
NAME READY STATUS RESTARTS AGE details-v1-1520924117-48z17 2/2 Running 0 6m productpage-v1-560495357-jk1lz 2/2 Running 0 6m ratings-v1-734492171-rnr5l 2/2 Running 0 6m reviews-v1-874083890-f0qf0 2/2 Running 0 6m reviews-v2-1343845940-b34q5 2/2 Running 0 6m reviews-v3-1813607990-8ch52 2/2 Running 0 6m
Infine, definisci il routing del gateway in entrata per l'applicazione:
kubectl apply -f samples/bookinfo/networking/bookinfo-gateway.yamlOutput:
gateway.networking.istio.io/bookinfo-gateway created virtualservice.networking.istio.io/bookinfo created
Convalida del deployment dell'applicazione
Per verificare se l'applicazione BookInfo funziona, devi inviare traffico al gateway in entrata.
Se hai installato Cloud Service Mesh su Google Distributed Cloud (solo software) per VMware, recupera l'indirizzo IP esterno per il gateway in entrata che hai configurato dopo l'installazione di Cloud Service Mesh.
Se hai installato Cloud Service Mesh su GKE, recupera l'indirizzo IP esterno del gateway in entrata nel seguente modo:
kubectl get service istio-ingressgateway -n istio-systemOutput:
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE istio-ingressgateway LoadBalancer 10.19.247.233 35.239.7.64 80:31380/TCP,443:31390/TCP,31400:31400/TCP 27m
In questo esempio, l'indirizzo IP del servizio in entrata è
35.239.7.64.
Provare l'applicazione
Verifica che l'app BookInfo sia in esecuzione con
curl:curl -I http://EXTERNAL_IP/productpageSe la risposta mostra
200, significa che l'applicazione funziona correttamente con Cloud Service Mesh.Per visualizzare la pagina web BookInfo, inserisci il seguente indirizzo nel browser:
http://EXTERNAL_IP/productpageSe aggiorni la pagina più volte, dovresti visualizzare diverse versioni delle recensioni nella pagina di prodotto, presentate in stile round robin (stelle rosse, stelle nere, nessuna stella).
Ora che hai un'applicazione che genera traffico, puoi esplorare le pagine di Cloud Service Mesh nella console Google Cloud per visualizzare le metriche e le altre funzionalità di osservabilità.
Pulizia
Al termine dell'esperimento con l'esempio Bookinfo, rimuovilo dal cluster.
Disinstalla Bookinfo utilizzando il seguente script:
samples/bookinfo/platform/kube/cleanup.shConferma spegnimento:
kubectl get virtualservices #-- there should be no virtual services kubectl get destinationrules #-- there should be no destination rules kubectl get gateway #-- there should be no gateway kubectl get pods #-- the Bookinfo pods should be deleted
Passaggi successivi
Scopri di più sull'esempio Bookinfo.