Deployment dell'esempio di Bookinfo
Questa pagina spiega come eseguire il deployment di un'applicazione di esempio per dimostrare Anthos Service Mesh. Se non hai installato Anthos Service Mesh, consulta la guida all'installazione.
L'installazione di Anthos Service Mesh viene inclusa in diverse applicazioni di esempio. Questa guida ti illustrerà come eseguire il deployment dell'esempio di BookInfo. Si tratta di una semplice applicazione libreria fittizia composta da quattro servizi che forniscono una pagina web di prodotto, dettagli di un libro, recensioni (con diverse versioni del servizio di recensioni) e valutazioni, il tutto gestito utilizzando Anthos Service Mesh. Puoi trovare il codice sorgente e tutti gli altri file utilizzati in questo esempio nella directory dell'installazione di Anthos Service Mesh in samples/bookinfo
.
Attivazione dell'inserimento automatico collaterale
Per abilitare l'inserimento automatico, etichetta gli spazi dei nomi con le etichette di inserimento predefinito, se è configurato il tag predefinito, o con l'etichetta di revisione per lo spazio dei nomi. L'etichetta che aggiungi dipende anche dal fatto che tu abbia eseguito il deployment di Anthos Service Mesh gestito o installato il piano di controllo nel cluster. L'etichetta viene utilizzata dal webhook iniettore sidecar per associare i file collaterali inseriti a una determinata revisione del piano di controllo.
Nel cluster
Utilizza il seguente 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-1146-16,istio=istiod,pod-template-hash=5788d57586 istiod-asm-173-3-5788d57586-vsklm 1/1 Running 1 23h app=istiod,istio.io/rev=asm-1146-16,istio=istiod,pod-template-hash=5788d57586
Nell'output, sotto la colonna
LABELS
, prendi nota del valore dell'etichetta di revisioneistiod
, che segue il prefissoistio.io/rev=
. In questo esempio, il valore èasm-1146-16
.Applica l'etichetta di revisione allo spazio dei nomi predefinito. Nel comando seguente,
REVISION
è il valore dell'etichetta di revisioneistiod
che hai annotato nel passaggio precedente.kubectl label namespace default istio-injection- istio.io/rev=REVISION --overwrite
Puoi ignorare il messaggio
"istio-injection not found"
nell'output. Ciò significa che lo spazio dei nomi non aveva in precedenza l'etichettaistio-injection
, cosa che dovresti aspettarti nelle nuove installazioni di Anthos Service Mesh o nei nuovi deployment. Poiché l'inserimento automatica non riesce se uno spazio dei nomi contiene sia l'etichettaistio-injection
sia l'etichetta di revisione, tutti i comandikubectl label
nella documentazione di Anthos Service Mesh specificano esplicitamente entrambe le etichette.
Mesh di servizi gestito
Applica l'etichetta di revisione
asm-managed-regular
allo spazio dei nomidefault
:kubectl label namespace default istio-injection- istio.io/rev=asm-managed-regular --overwrite
Questa etichetta corrisponde all'attuale canale di rilascio di Anthos Service Mesh gestito per la versione di Anthos Service Mesh.
Se hai anche eseguito il deployment del piano dati gestito facoltativo, annota lo spazio dei nomi
demo
come segue:kubectl annotate --overwrite namespace YOUR_NAMESPACE \ mesh.cloud.google.com/proxy='{"managed":"true"}'
Implementazione dell'applicazione
Ora che l'inserimento automatica è abilitata nello spazio dei nomi default
, quando esegui il deployment dei servizi dell'applicazione BookInfo, i proxy sidecar vengono inseriti insieme a ciascun servizio.
Nella riga di comando sul computer in cui hai installato Anthos Service Mesh, vai alla directory principale della directory di installazione di Anthos 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 questi 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 vedere se l'applicazione BookInfo funziona, devi inviare traffico al gateway in entrata.
Se hai installato Anthos Service Mesh su GKE su VMware, recupera l'indirizzo IP esterno per il gateway in entrata che hai configurato dopo l'installazione di Anthos Service Mesh
Se hai installato Anthos Service Mesh su GKE, recupera l'indirizzo 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 funzioni con
curl
:curl -I http://EXTERNAL_IP/productpage
Se la risposta mostra
200
, significa che l'applicazione funziona correttamente con Anthos Service Mesh.Per visualizzare la pagina web BookInfo, inserisci il seguente indirizzo nel browser:
http://EXTERNAL_IP/productpage
Se aggiorni la pagina più volte, dovresti vedere versioni diverse delle recensioni mostrate nella pagina del 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 Anthos Service Mesh nella console Google Cloud per visualizzare metriche e altre funzionalità di osservabilità.
Eseguire la pulizia
Al termine della sperimentazione con l'esempio di Bookinfo, rimuovilo dal cluster.
Disinstalla Bookinfo utilizzando il seguente script:
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.