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 in Cloud Service Mesh, consulta le Guida alle operazioni preliminari.
L'installazione di Cloud Service Mesh include diverse applicazioni di esempio. Questa
guida illustra la procedura di deployment dell'esempio
BookInfo. Si tratta di una semplice applicazione simulata di una libreria composta da quattro servizi
che forniscono una pagina di prodotto web, dettagli dei 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 dell'installazione di Cloud Service Mesh in samples/bookinfo
.
Attivazione dell'iniezione automatica di sidecar
Abilita lo spazio dei nomi per l'inserimento. I passaggi dipendono dall'implementazione del piano di controllo.
Gestito (TD)
- Applica l'etichetta di inserimento predefinita allo spazio dei nomi:
kubectl label namespace default \ istio.io/rev- istio-injection=enabled --overwrite
Gestito (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 --overwrite
Se sei già un utente con il piano di controllo Istiod gestito: consigliamo di utilizzare l'iniezione predefinita, ma è supportata anche l'iniezione basata su revisione. Segui queste istruzioni:
Esegui il comando seguente per individuare i canali di rilascio disponibili:
kubectl -n istio-system get controlplanerevision
L'output è simile al seguente:
NAME AGE asm-managed-rapid 6d7h
NOTA: se nell'elenco precedente sono presenti due revisioni del piano di controllo, rimuovine una. La presenza di più canali del piano di controllo nel cluster non è supportata.
Nell'output, il valore sotto la colonna
NAME
è l'etichetta di 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
Nel cluster
Consigliato: esegui il seguente comando per applicare l'etichetta di inserimento predefinita allo spazio dei nomi:
kubectl label namespace default \ istio.io/rev- istio-injection=enabled --overwrite
Consigliamo di utilizzare l'inserimento predefinito, ma l'inserimento basato sulle revisioni è supportato: Segui queste istruzioni:
Utilizza il seguente comando per individuare l'etichetta di 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 della revisioneistiod
che 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 è 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 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.yaml
Verifica che l'applicazione sia stata dispiata correttamente eseguendo i 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
Per verificare se l'applicazione BookInfo funziona, devi inviare traffico al gateway di ingresso.
Se hai installato Cloud Service Mesh su Google Distributed Cloud (solo software) per VMware, ottieni 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 esplorare le pagine di Cloud Service Mesh nella console Google Cloud per visualizzare le metriche e le altre funzionalità di osservabilità.
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 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 di Bookinfo.