Home

Awesome

Vistio CircleCI Build Status PRs Welcome MIT Licensed

<small><i><a href='http://ecotrust-canada.github.io/markdown-toc/'>Table of contents generated with markdown-toc</a></i></small>

Vistio is an application that helps you visualize the traffic of your cluster from Prometheus data.

It has 2 components:

Updated for Istio 1.0

The helm charts have been updated to work with Istio 1.0

Features:

Architecture

Docker images

Docker images of both vistio-api and vistio-web are available on Docker Hub.

Deploy Vistio

Deploy Vistio with Istio Ingress Gateway (kubectl)

  1. Deploy Istio
kubectl apply -f vistio-with-ingress.yaml -n default
  1. Expose vistio-web
kubectl -n default port-forward $(kubectl -n default get pod -l app=vistio-web -o jsonpath='{.items[0].metadata.name}') 8080:8080 &
  1. Open Vistio localhost:8080

  2. Expose vistio-api

kubectl -n default port-forward $(kubectl -n default get pod -l app=vistio-api -o jsonpath='{.items[0].metadata.name}') 9091:9091 &
  1. Test endpoint localhost:9091/graph

  2. Add traffic to the mesh by following bookinfo demo here Istio Bookinfo Demo and to get the GATEWAY_URL and calling

curl -o /dev/null -s -w "%{http_code}\n" http://${GATEWAY_URL}/productpage

Deploy Vistio with Istio Ingress Gateway (helm)

  1. Deploy Vistio
helm install helm/vistio -f helm/vistio/values-with-ingress.yaml --name vistio --namespace default
  1. Expose vistio-web
kubectl -n default port-forward $(kubectl -n default get pod -l app=vistio-web -o jsonpath='{.items[0].metadata.name}') 8080:8080 &
  1. Open Vistio localhost:8080

  2. Expose vistio-api

kubectl -n default port-forward $(kubectl -n default get pod -l app=vistio-api -o jsonpath='{.items[0].metadata.name}') 9091:9091 &
  1. Test endpoint localhost:9091/graph

  2. Add traffic to the mesh by following bookinfo demo here Istio Bookinfo Demo and to get the GATEWAY_URL and calling

curl -o /dev/null -s -w "%{http_code}\n" http://${GATEWAY_URL}/productpage

Deploy Vistio Without Istio Ingress (kubectl)

  1. Deploy Istio
kubectl apply -f vistio-mesh-only.yaml -n default
  1. Expose vistio-web
kubectl -n default port-forward $(kubectl -n default get pod -l app=vistio-web -o jsonpath='{.items[0].metadata.name}') 8080:8080 &
  1. Open Vistio localhost:8080

  2. Expose vistio-api

kubectl -n default port-forward $(kubectl -n default get pod -l app=vistio-api -o jsonpath='{.items[0].metadata.name}') 9091:9091 &
  1. Test endpoint localhost:9091/graph

  2. Add traffic to the mesh by following bookinfo demo here Istio Bookinfo Demo and to get the GATEWAY_URL and calling

curl -o /dev/null -s -w "%{http_code}\n" http://${GATEWAY_URL}/productpage

Deploy Vistio Without Istio Ingress (Helm)

  1. Deploy Vistio
helm install helm/vistio -f helm/vistio/values-mesh-only.yaml --name vistio --namespace default
  1. Expose vistio-web
kubectl -n default port-forward $(kubectl -n default get pod -l app=vistio-web -o jsonpath='{.items[0].metadata.name}') 8080:8080 &
  1. Open Vistio localhost:8080

  2. Expose vistio-api

kubectl -n default port-forward $(kubectl -n default get pod -l app=vistio-api -o jsonpath='{.items[0].metadata.name}') 9091:9091 &
  1. Test endpoint localhost:9091/graph

  2. Add traffic to the mesh by following bookinfo demo here Istio Bookinfo Demo and to get the GATEWAY_URL and calling

curl -o /dev/null -s -w "%{http_code}\n" http://${GATEWAY_URL}/productpage

Configuration

See configuration.md in documentation directory.

docker-compose Example

An Istio example is in the /example/docker directory

You can try it by going to that directory and run

docker-compose up --build

Then checkout each service at:

Troubleshooting

  1. Blank Vistio home page - this typically means that the Prometheus query at the global level is not returning any data or the data is not matching the labels in the source or target configuration. Grab the globalLevel query and test it against Prometheus directly to verify the data is correct. Example global level query sum(rate(istio_request_count[1m])) by (response_code)

  2. Cannot Zoom into clusters - If you are having trouble connecting your clusters to the global view, make sure the target values in the global configuration matches the cluster level name.

    globalLevel:
      ...
        target:
          replacement: istio-mesh
    clusterLevel:
    - cluster: istio-mesh

Releases

https://github.com/nmnellis/vistio/releases

Contributing

Please feel free to create an issue or pull request.

LICENSE

Vistio is released under the MIT license. See LICENSE file for details.