Enable Istio on all the microservices

Previously, you enabled Istio on a single microservice, productpage. You can proceed to enable Istio on the microservices incrementally to get the Istio functionality for more microservices. For the purpose of this tutorial, you will enable Istio on all the remaining microservices in one step.

  1. For the purpose of this tutorial, scale the deployments of the microservices down to 1:

    $ kubectl scale deployments --all --replicas 1
    
  2. Redeploy the Bookinfo application, Istio-enabled. The service productpage will not be redeployed since it already has Istio injected, and its pods will not be changed. This time you will use only a single replica of a microservice.

    $ curl -s https://raw.githubusercontent.com/istio/istio/release-1.9/samples/bookinfo/platform/kube/bookinfo.yaml | istioctl kube-inject -f - | kubectl apply -l app!=reviews -f -
    $ curl -s https://raw.githubusercontent.com/istio/istio/release-1.9/samples/bookinfo/platform/kube/bookinfo.yaml | istioctl kube-inject -f - | kubectl apply -l app=reviews,version=v2 -f -
    service/details unchanged
    serviceaccount/bookinfo-details unchanged
    deployment.apps/details-v1 configured
    service/ratings unchanged
    serviceaccount/bookinfo-ratings unchanged
    deployment.apps/ratings-v1 configured
    serviceaccount/bookinfo-reviews unchanged
    service/productpage unchanged
    serviceaccount/bookinfo-productpage unchanged
    deployment.apps/productpage-v1 configured
    deployment.apps/reviews-v2 configured
    
  3. Access the application’s webpage several times. Note that Istio was added transparently, the original application did not change. It was added on the fly, without the need to undeploy and redeploy the whole application.

  4. Check the application pods and verify that now each pod has two containers. One container is the microservice itself, the other is the sidecar proxy attached to it:

    $ kubectl get pods
    details-v1-58c68b9ff-kz9lf        2/2       Running   0          2m
    productpage-v1-59b4f9f8d5-d4prx   2/2       Running   0          2m
    ratings-v1-b7b7fbbc9-sggxf        2/2       Running   0          2m
    reviews-v2-dfbcf859c-27dvk        2/2       Running   0          2m
    sleep-88ddbcfdd-cc85s             1/1       Running   0          7h
    
  5. Access the Istio dashboard using the custom URL you set in your /etc/hosts file previously:

    http://my-istio-dashboard.io/dashboard/db/istio-mesh-dashboard
    
  6. In the top left drop-down menu, select Istio Mesh Dashboard. Note that now all the services from your namespace appear in the list of services.

    Istio Mesh Dashboard
    Istio Mesh Dashboard
  7. Check some other microservice in Istio Service Dashboard, e.g. ratings :

    Istio Service Dashboard
    Istio Service Dashboard
  8. Visualize your application’s topology by using the Kiali console, which is not a part of Istio, but is installed as part of the demo configuration. Access the dashboard using the custom URL you set in your /etc/hosts file previously:

    http://my-kiali.io/kiali/console
    

    If you installed Kiali as part of the getting started instructions, your Kiali console user name is admin and the password is admin.

  9. Click on the Graph tab and select your namespace in the Namespace drop-down menu in the top level corner. In the Display drop-down menu mark the Traffic Animation check box to see some cool traffic animation.

    Kiali Graph Tab, display drop-down menu
    Kiali Graph Tab, display drop-down menu
  10. Try different options in the Edge Labels drop-down menu. Hover with the mouse over the nodes and edges of the graph. Notice the traffic metrics on the right.

    Kiali Graph Tab, edge labels drop-down menu
    Kiali Graph Tab, edge labels drop-down menu
    Kiali Graph Tab
    Kiali Graph Tab

You are ready to configure the Istio Ingress Gateway.

Was this information useful?
Do you have any suggestions for improvement?

Thanks for your feedback!