Deployment di Bookinfo

Questa pagina spiega come eseguire il deployment di un'applicazione di esempio in Anthos Service Mesh. Se non hai installato Anthos Service Mesh, consulta la sezione Guide all'installazione per scegliere la guida più adatta a te.

L'installazione di Anthos Service Mesh viene fornita con diverse applicazioni di esempio. Questa guida ti illustrerà come eseguire il deployment dell'esempio di BookInfo. Si tratta di una semplice applicazione di finta libreria 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 di installazione di Anthos Service Mesh in samples/bookinfo.

Implementazione dell'applicazione

Segui questi passaggi per eseguire il deployment dei servizi dell'applicazione BookInfo con i proxy collaterali inseriti insieme a ogni servizio.

  1. 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.

  2. Attiva l'inserimento automatico del file collaterale. Utilizza il seguente comando per individuare l'etichetta su istiod, contenente il valore dell'etichetta di revisione da utilizzare nei passaggi successivi.

    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-173-3,istio=istiod,pod-template-hash=5788d57586
    istiod-asm-173-3-5788d57586-vsklm   1/1     Running   1          23h   app=istiod,istio.io/rev=asm-173-3,istio=istiod,pod-template-hash=5788d57586
    

    Nell'output, sotto la colonna LABELS, prendi nota del valore dell'etichetta di revisione istiod, che segue il prefisso istio.io/rev=. In questo esempio, il valore è asm-173-3.

  3. Applica l'etichetta di revisione agli spazi dei nomi. Nel seguente comando, NAMESPACE è il nome dello spazio dei nomi in cui deve avvenire l'inserimento del sidecar, mentre REVISION è il valore dell'etichetta di revisione istiod annotata nel passaggio precedente.

    kubectl label namespace NAMESPACE istio-injection- istio.io/rev=REVISION --overwrite
    
  4. Esegui il deployment dell'applicazione utilizzando kubectl:

    kubectl apply -f samples/bookinfo/platform/kube/bookinfo.yaml
  5. 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
  6. Infine, definisci il routing del gateway in entrata per l'applicazione:

    kubectl apply -f samples/bookinfo/networking/bookinfo-gateway.yaml
    

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 svc 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

  1. 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.

  2. 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 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à.

Passaggi successivi

Scopri di più sull'esempio di Bookinfo.

Eseguire la pulizia

Al termine della sperimentazione con l'esempio di Bookinfo, rimuovilo dal cluster.

  1. Disinstalla Bookinfo utilizzando il seguente script:

    samples/bookinfo/platform/kube/cleanup.sh
  2. Conferma chiusura:

    kubectl get services
    kubectl get pods

    I pod di Bookinfo dovrebbero essere eliminati.