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.
L'installazione di Cloud Service Mesh include diverse applicazioni di esempio. Questo
ti illustrerà come implementare
BookInfo
campione. Questa è una semplice applicazione di libreria fittizia composta da quattro servizi
che forniscono una pagina web di prodotto, dettagli dei libri, recensioni (con diverse versioni di
il servizio di recensione) e le valutazioni, il tutto gestito mediante Cloud Service Mesh. Puoi
il codice sorgente e tutti gli altri file utilizzati in questo esempio nella
Directory di installazione di Cloud Service Mesh in samples/bookinfo
.
Attivazione dell'inserimento automatico di file collaterali
Per abilitare l'inserimento automatico dei file collaterali, devi etichettare gli spazi dei nomi in modo che il webhook di iniettore Sidecar associa i sidecar inseriti a un particolare controllo la revisione del piano d'azione. Se configuri il tag predefinito, etichetta gli spazi dei nomi con il etichette di inserimento predefinite. Altrimenti, etichetta gli spazi dei nomi con etichetta di revisione. Inoltre, l'etichetta che aggiungi dipende anche dal fatto che tu abbia eseguito o meno Cloud Service Mesh gestito o installato il piano di controllo nel cluster.
Gestito
Puoi usare 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-injection
precedenti dagli spazi dei nomi e imposta invece l'etichettaistio.io/rev=REVISION_LABEL
.Per modificarlo con un'etichetta di revisione specifica, fai clic su
REVISION_LABEL
e sostituisci con l'etichetta applicabile:asm-managed-rapid
per canale rapido,asm-managed
per canale regolare oasm-managed-stable
per canale stabile.L'etichetta di revisione corrisponde a un canale di rilascio:
Etichetta di revisione Canale asm-managed
Normale asm-managed-rapid
Rapida asm-managed-stable
Stabile kubectl label namespace NAMESPACE istio-injection- istio.io/rev=REVISION_LABEL --overwrite
Se hai eseguito anche il deployment della piano dati gestito, annota lo
NAMESPACE
spazio dei nomi come segue:kubectl annotate --overwrite namespace NAMESPACE \ mesh.cloud.google.com/proxy='{"managed":"true"}'
Nel cluster
Utilizza questo comando per individuare l'etichetta su
istiod
:kubectl -n istio-system get pods -l app=istiod --show-labels
L'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-1187-26,istio=istiod,pod-template-hash=5788d57586 istiod-asm-173-3-5788d57586-vsklm 1/1 Running 1 23h app=istiod,istio.io/rev=asm-1187-26,istio=istiod,pod-template-hash=5788d57586
Nell'output, sotto la colonna
LABELS
, prendi nota del valore del parametroistiod
etichetta di revisione, che segue il prefissoistio.io/rev=
. In questo Ad esempio, il valore èasm-1187-26
.Applica l'etichetta di revisione allo spazio dei nomi predefinito. Nel comando seguente,
REVISION
è il valore dell'etichetta di revisioneistiod
che hai notato nel passaggio precedente.kubectl label namespace default istio-injection- istio.io/rev=REVISION --overwrite
Puoi ignorare il messaggio
"istio-injection not found"
nel come output. Ciò significa che in precedenza lo spazio dei nomi non aveva Etichettaistio-injection
, prevista nelle nuove di Cloud Service Mesh o di nuovi deployment. Poiché l'inserimento automatico il comportamento non è definito quando uno spazio dei nomi ha siaistio-injection
e l'etichetta di revisione, tutti i comandikubectl label
nella La documentazione di Cloud Service Mesh assicura esplicitamente che ne sia impostata una sola.
Implementazione dell'applicazione
Ora che l'inserimento automatico è abilitato nello spazio dei nomi default
, quando esegui il deployment
ai servizi dell'applicazione BookInfo, i proxy collaterali vengono inseriti insieme
completamente gestito di Google Cloud.
Nella riga di comando sul computer in cui hai installato Cloud Service Mesh, vai a alla directory 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.yaml
Verifica che il deployment dell'applicazione sia stato eseguito correttamente eseguendo il comando seguenti comandi:
kubectl get services
Output:
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 pod
Output:
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.yaml
Output:
gateway.networking.istio.io/bookinfo-gateway created virtualservice.networking.istio.io/bookinfo created
Convalida del deployment dell'applicazione in corso
Per verificare se l'applicazione BookInfo funziona, devi inviare il traffico a il gateway in entrata.
Se hai installato Cloud Service Mesh su Google Distributed Cloud, scarica il l'indirizzo IP del gateway in entrata che configurato dopo l'installazione di Cloud Service Mesh
Se hai installato Cloud Service Mesh su GKE, ottieni l'IP esterno del gateway in entrata come segue:
kubectl get service istio-ingressgateway -n istio-system
Output:
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
.
Prova dell'applicazione
Verifica che l'app BookInfo sia in esecuzione con
curl
:curl -I http://EXTERNAL_IP/productpage
Se 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/productpage
Se aggiorni la pagina più volte, dovresti vedere versioni diverse di Recensioni mostrate nella pagina del prodotto, in stile round robin (stelle rosse, stelle nere, nessuna stella).
Ora che hai un'applicazione che genera traffico, puoi Esplora le pagine del mesh di servizi Cloud nella console Google Cloud per vedere le metriche e le altre le funzionalità di machine learning.
esegui la pulizia
Quando hai terminato l'esperimento con l'esempio di Bookinfo, rimuovilo da nel tuo cluster.
Disinstalla Bookinfo utilizzando lo script seguente:
samples/bookinfo/platform/kube/cleanup.sh
Conferma chiusura:
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 di Bookinfo.