Eseguire il deployment dell'esempio Bookinfo
Questa pagina spiega come eseguire il deployment di un'applicazione di esempio per dimostrare Cloud Service Mesh. Se non hai installato Cloud Service Mesh, consulta la guida all'installazione.
Con l'installazione di Cloud Service Mesh sono disponibili diverse applicazioni di esempio. Questa
guida ti illustra la procedura per eseguire il deployment dell'
BookInfo. Si tratta di una semplice applicazione di libreria fittizia composta da quattro servizi che forniscono una pagina di prodotto web, dettagli sui libri, recensioni (con diverse versioni del servizio di recensione) 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 di installazione di Cloud Service Mesh in samples/bookinfo.
Attivare l'inserimento automatico di sidecar
Per attivare l'inserimento automatico di sidecar, devi etichettare gli spazi dei nomi in modo che il webhook dell'iniettore di sidecar associ i sidecar inseriti a una revisione specifica del control plane. Se hai configurato il tag predefinito, etichetta gli spazi dei nomi con le etichette di inserimento predefinite. In caso contrario, etichetta gli spazi dei nomi con l' etichetta di revisione. Inoltre, l'etichetta che aggiungi dipende anche dal fatto che tu abbia eseguito il deployment di Cloud Service Mesh gestito o installato il control plane in-cluster.
Gestito
Puoi utilizzare l'etichetta di inserimento predefinita o l'etichetta di revisione per lo spazio dei nomi.
Etichette di inserimento predefinite
Applica l'etichetta di inserimento predefinita allo spazio dei nomi.
kubectl label namespace NAMESPACE istio-injection=enabled istio.io/rev-Etichetta di revisione
Prima di eseguire il deployment delle applicazioni, rimuovi eventuali etichette
istio-injectiondai relativi spazi dei nomi e imposta invece l'istio.io/rev=REVISION_LABEL.Per modificarla in un'etichetta di revisione specifica, fai clic su
REVISION_LABELe sostituisci la con l'etichetta applicabile:asm-managed-rapidper il canale rapido,asm-managedper il canale regolare oasm-managed-stableper il canale stabile.L'etichetta di revisione corrisponde a un canale di rilascio:
Etichetta di revisione Canale asm-managedRegolare asm-managed-rapidRapido asm-managed-stableStabile kubectl label namespace NAMESPACE istio-injection- istio.io/rev=REVISION_LABEL --overwrite-
kubectl annotate --overwrite namespace NAMESPACE \ mesh.cloud.google.com/proxy='{"managed":"true"}'
Interno al cluster
Utilizza il seguente comando per individuare l'etichetta su
istiod:kubectl -n istio-system get pods -l app=istiod --show-labelsL'output è simile al seguente:
NAME READY STATUS RESTARTS AGE LABELS istiod-asm-173-3-5788d57586-bljj4 1/1 Running 0 23h app=istiod,istio.io/rev=asm-11910-9,istio=istiod,pod-template-hash=5788d57586 istiod-asm-173-3-5788d57586-vsklm 1/1 Running 1 23h app=istiod,istio.io/rev=asm-11910-9,istio=istiod,pod-template-hash=5788d57586Nell'output, nella colonna
LABELS, prendi nota del valore dell'etichetta di revisioneistiod, che segue il prefissoistio.io/rev=. In questo esempio, il valore èasm-11910-9.Applica l'etichetta di revisione allo spazio dei nomi predefinito. Nel comando seguente,
REVISIONè il valore dell'etichetta di revisioneistiodche hai annotato nel passaggio precedente.kubectl label namespace default istio-injection- istio.io/rev=REVISION --overwritePuoi ignorare il messaggio
"istio-injection not found"nell' output. Significa che lo spazio dei nomi non aveva in precedenza l'etichettaistio-injection, che dovresti aspettarti nelle nuove installazioni di Cloud Service Mesh o nei nuovi deployment. Poiché il comportamento di inserimento automatico non è definito quando uno spazio dei nomi ha sia l'etichettaistio-injectionsia l'etichetta di revisione, tutti i comandikubectl labelnella documentazione di Cloud Service Mesh assicurano esplicitamente che ne sia impostata solo una.
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 su cui hai installato Cloud Service Mesh, vai alla radice della directory di installazione di Cloud Service Mesh. Se necessario, scarica il file di installazione.
Esegui il deployment dell'applicazione nello spazio dei nomi predefinito utilizzando
kubectl:kubectl apply -f samples/bookinfo/platform/kube/bookinfo.yamlVerifica che l'applicazione sia stata eseguita 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
Convalidare il 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, recupera l'indirizzo IP esterno del 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 come segue:
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 di BookInfo, inserisci il seguente indirizzo nel browser:
http://EXTERNAL_IP/productpageSe aggiorni la pagina più volte, dovresti vedere diverse versioni delle recensioni visualizzate 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 Google Cloud console per visualizzare le metriche e le altre funzionalità di osservabilità.
Pulizia
Al termine della sperimentazione con l'esempio Bookinfo, rimuovilo dal cluster.
Disinstalla Bookinfo utilizzando il seguente script:
samples/bookinfo/platform/kube/cleanup.shConferma l'arresto:
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.