Add Kiali Task to istio.io (#2715)
* add Kiali Task to istio.io add deprecation notice to the SerivceGraph Task * add some more instructions on getting the Kiali UI to help assist those on environments like minikube * add cleanup instructions for kiali * simplify the section to determine kiali url * use present tense * more present tense changes split up the "Send traffic" item into two actions. * more verb tense changes to get things more into present tense * updates based on some feedback * re-write the "determine kiali url" section * split login step into two steps - visit with browser, then login * reword some of the steps involving logging in and looking at the initial pages. * reword the graph type step - use list items, not numbered, for the different types. Adds the new service graph type. * reword the examine istio config step * changes to the api section * some final changes of the api section and the cleanup section * trivial fix to capitalization * some small trivial changes
| 
						 | 
				
			
			@ -1,10 +1,13 @@
 | 
			
		|||
---
 | 
			
		||||
title: Istio 1.1
 | 
			
		||||
weight: 90
 | 
			
		||||
weight: 89
 | 
			
		||||
icon: notes
 | 
			
		||||
draft: true
 | 
			
		||||
---
 | 
			
		||||
 | 
			
		||||
TBD
 | 
			
		||||
TODO announcement
 | 
			
		||||
 | 
			
		||||
{{< relnote_links >}}
 | 
			
		||||
 | 
			
		||||
## Policies and Telemetry
 | 
			
		||||
 | 
			
		||||
- **Kiali**. The Service Graph addon has been [deprecated](https://github.com/istio/istio/issues/9066) in favor of [Kiali](https://www.kiali.io). See the [Kiali Task](/docs/tasks/telemetry/kiali/) for more details about Kiali.
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -10,6 +10,7 @@ aliases:
 | 
			
		|||
icon: notes
 | 
			
		||||
---
 | 
			
		||||
 | 
			
		||||
- [Istio 1.1](./1.1)
 | 
			
		||||
- [Istio 1.0.2](./1.0.2)
 | 
			
		||||
- [Istio 1.0.1](./1.0.1)
 | 
			
		||||
- [Istio 1.0](./1.0)
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -0,0 +1,218 @@
 | 
			
		|||
---
 | 
			
		||||
title: Visualizing Your Mesh
 | 
			
		||||
description: This task shows you how to visualize your services within an Istio mesh.
 | 
			
		||||
weight: 49
 | 
			
		||||
keywords: [telemetry,visualization]
 | 
			
		||||
---
 | 
			
		||||
 | 
			
		||||
This task shows you how to visualize different aspects of your Istio mesh.
 | 
			
		||||
 | 
			
		||||
As part of this task, you install the [Kiali](https://www.kiali.io) add-on
 | 
			
		||||
and use the web-based graphical user interface to view service graphs of
 | 
			
		||||
the mesh and your Istio configuration objects. Lastly, you use the Kiali
 | 
			
		||||
Public API to generate graph data in the form of consumable JSON.
 | 
			
		||||
 | 
			
		||||
This task uses the [Bookinfo](/docs/examples/bookinfo/) sample application as the example throughout.
 | 
			
		||||
 | 
			
		||||
## Before you begin
 | 
			
		||||
 | 
			
		||||
> {{< idea_icon >}} The following instructions assume you have installed Helm and use it to install Kiali.
 | 
			
		||||
To install Kiali without using Helm, following the [Kiali install instructions](https://www.kiali.io/gettingstarted/).
 | 
			
		||||
 | 
			
		||||
Create a secret in your Istio namespace with the credentials that you use to
 | 
			
		||||
authenticate to Kiali. See the
 | 
			
		||||
[Helm README](https://github.com/istio/istio/blob/master/install/kubernetes/helm/istio/README.md#installing-the-chart)
 | 
			
		||||
for details. Modify and run the following example commands to create a secret:
 | 
			
		||||
 | 
			
		||||
```bash
 | 
			
		||||
USERNAME=$(echo -n 'admin' | base64)
 | 
			
		||||
PASSPHRASE=$(echo -n 'mysecret' | base64)
 | 
			
		||||
NAMESPACE=istio-system
 | 
			
		||||
kubectl create namespace $NAMESPACE
 | 
			
		||||
cat <<EOF | kubectl apply -f -
 | 
			
		||||
apiVersion: v1
 | 
			
		||||
kind: Secret
 | 
			
		||||
metadata:
 | 
			
		||||
  name: kiali
 | 
			
		||||
  namespace: $NAMESPACE
 | 
			
		||||
  labels:
 | 
			
		||||
    app: kiali
 | 
			
		||||
type: Opaque
 | 
			
		||||
data:
 | 
			
		||||
  username: $USERNAME
 | 
			
		||||
  passphrase: $PASSPHRASE
 | 
			
		||||
EOF
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
Once you create the Kiali secret, follow
 | 
			
		||||
[the Helm install instructions](/docs/setup/kubernetes/helm-install/) to install Kiali via Helm.
 | 
			
		||||
You must use the `--set kiali.enabled=true` option when you run the `helm` command, for example:
 | 
			
		||||
 | 
			
		||||
{{< text bash >}}
 | 
			
		||||
$ helm template --set kiali.enabled=true install/kubernetes/helm/istio --name istio --namespace istio-system > $HOME/istio.yaml
 | 
			
		||||
$ kubectl apply -f $HOME/istio.yaml
 | 
			
		||||
{{< /text >}}
 | 
			
		||||
 | 
			
		||||
> {{< idea_icon >}} This Task does not discuss Jaeger and Grafana. If
 | 
			
		||||
you already installed them in your cluster and you want to see how Kiali
 | 
			
		||||
integrates with them, you must pass additional arguments to the
 | 
			
		||||
`helm` command, for example:
 | 
			
		||||
 | 
			
		||||
{{< text bash >}}
 | 
			
		||||
    $ helm template \
 | 
			
		||||
        --set kiali.enabled=true \
 | 
			
		||||
        --set "kiali.dashboard.jaegerURL=http://$(kubectl get svc tracing -o jsonpath='{.spec.clusterIP}'):80" \
 | 
			
		||||
        --set "kiali.dashboard.grafanaURL=http://$(kubectl get svc grafana -o jsonpath='{.spec.clusterIP}'):3000" \
 | 
			
		||||
        install/kubernetes/helm/istio \
 | 
			
		||||
        --name istio --namespace istio-system > $HOME/istio.yaml
 | 
			
		||||
    $ kubectl apply -f $HOME/istio.yaml
 | 
			
		||||
{{< /text >}}
 | 
			
		||||
 | 
			
		||||
Once you install Istio and Kiali, deploy the [Bookinfo](/docs/examples/bookinfo/) sample application.
 | 
			
		||||
 | 
			
		||||
## Generating a service graph
 | 
			
		||||
 | 
			
		||||
1.  To verify the service is running in your cluster, run the following command:
 | 
			
		||||
 | 
			
		||||
    {{< text bash >}}
 | 
			
		||||
    $ kubectl -n istio-system get svc kiali
 | 
			
		||||
    {{< /text >}}
 | 
			
		||||
 | 
			
		||||
1.  To determine the Bookinfo URL, follow the instructions to determine the [Bookinfo ingress `GATEWAY_URL`](/docs/examples/bookinfo/#determining-the-ingress-ip-and-port).
 | 
			
		||||
 | 
			
		||||
1.  To send traffic to the mesh, you have three options
 | 
			
		||||
 | 
			
		||||
    *   Visit `http://$GATEWAY_URL/productpage` in your web browser
 | 
			
		||||
 | 
			
		||||
    *   Use the following command multiple times:
 | 
			
		||||
 | 
			
		||||
        {{< text bash >}}
 | 
			
		||||
        $ curl http://$GATEWAY_URL/productpage
 | 
			
		||||
        {{< /text >}}
 | 
			
		||||
 | 
			
		||||
    *   If you installed the `watch` command in your system, send requests continually with:
 | 
			
		||||
 | 
			
		||||
        {{< text bash >}}
 | 
			
		||||
        $ watch -n 1 curl -o /dev/null -s -w %{http_code} $GATEWAY_URL/productpage
 | 
			
		||||
        {{< /text >}}
 | 
			
		||||
 | 
			
		||||
1.  To determine the Kiali URL, you use the same `GATEWAY_URL` as the Bookinfo application,
 | 
			
		||||
    only with a different port.
 | 
			
		||||
 | 
			
		||||
    *   If you are running in an environment that has external load balancers,
 | 
			
		||||
        run this command:
 | 
			
		||||
 | 
			
		||||
        {{< text bash >}}
 | 
			
		||||
        $ KIALI_URL="http://$(echo $GATEWAY_URL | sed -e s/:.*//):$(kubectl -n istio-system get service istio-ingressgateway -o jsonpath='{.spec.ports[?(@.name=="http-kiali")].port}')"
 | 
			
		||||
        $ echo $KIALI_URL
 | 
			
		||||
        http://172.30.141.9:15029
 | 
			
		||||
        {{< /text >}}
 | 
			
		||||
 | 
			
		||||
    *   If you are running in an environment that does not support external
 | 
			
		||||
        load balancers (e.g., minikube), run this command:
 | 
			
		||||
 | 
			
		||||
        {{< text bash >}}
 | 
			
		||||
        $ KIALI_URL="http://$(echo $GATEWAY_URL | sed -e s/:.*//):$(kubectl -n istio-system get service istio-ingressgateway -o jsonpath='{.spec.ports[?(@.name=="http-kiali")].nodePort}')"
 | 
			
		||||
        $ echo $KIALI_URL
 | 
			
		||||
        http://192.168.99.100:31758
 | 
			
		||||
        {{< /text >}}
 | 
			
		||||
 | 
			
		||||
1.  To visit the Kiali UI, point your browser to `$KIALI_URL`.
 | 
			
		||||
 | 
			
		||||
1.  To log into the Kiali UI, enter the username and passphrase you stored in the Kiali secret in the Kiali login screen. If you used the example secret above, enter a username of `admin` with a passphrase of `mysecret`.
 | 
			
		||||
 | 
			
		||||
1.  View the overview of your mesh in the **Overview** page that appears immediately after you log in.
 | 
			
		||||
    The **Overview** page displays all the namespaces that have services in your mesh.
 | 
			
		||||
    The following screenshot shows a similar page:
 | 
			
		||||
 | 
			
		||||
    {{< image width="75%" ratio="58%"
 | 
			
		||||
    link="./kiali-overview.png"
 | 
			
		||||
    caption="Example Overview"
 | 
			
		||||
    >}}
 | 
			
		||||
 | 
			
		||||
1.  To view a namespace graph, click on the `bookinfo` namespace in the Bookinfo namespace card.
 | 
			
		||||
    The page looks similar to:
 | 
			
		||||
 | 
			
		||||
    {{< image width="75%" ratio="89%"
 | 
			
		||||
    link="./kiali-graph.png"
 | 
			
		||||
    caption="Example Graph"
 | 
			
		||||
    >}}
 | 
			
		||||
 | 
			
		||||
1.  To view a summary of metrics, select any node or edge in the graph to display
 | 
			
		||||
    its metric details in the summary details panel on the right.
 | 
			
		||||
 | 
			
		||||
1.  To view your service mesh using different graph types, select a graph type
 | 
			
		||||
    from the **Graph Type** drop down menu. There are several graph types
 | 
			
		||||
    to choose from: **App**, **Versioned App**, **Workload**, **Service**.
 | 
			
		||||
 | 
			
		||||
    *   The **App** graph type aggregates all versions of an app into a single graph node.
 | 
			
		||||
        The following example shows a single **reviews** node representing the three versions
 | 
			
		||||
        of the reviews app.
 | 
			
		||||
 | 
			
		||||
        {{< image width="75%" ratio="35%"
 | 
			
		||||
        link="./kiali-app.png"
 | 
			
		||||
        caption="Example App Graph"
 | 
			
		||||
        >}}
 | 
			
		||||
 | 
			
		||||
    *   The **Versioned App** graph type shows a node for each version of an app,
 | 
			
		||||
        but all versions of a particular app are grouped together. The following example
 | 
			
		||||
        shows the **reviews** group box that contains the three nodes that represents the
 | 
			
		||||
        three versions of the reviews app.
 | 
			
		||||
 | 
			
		||||
        {{< image width="75%" ratio="67%"
 | 
			
		||||
        link="./kiali-versionedapp.png"
 | 
			
		||||
        caption="Example Versioned App Graph"
 | 
			
		||||
        >}}
 | 
			
		||||
 | 
			
		||||
    *   The **Workload** graph type shows a node for each workload in your service mesh.
 | 
			
		||||
        This graph type does not require you to use the `app` and `version` labels so if you
 | 
			
		||||
        opt to not use those labels on your components, this is the graph type you will use.
 | 
			
		||||
 | 
			
		||||
        {{< image width="70%" ratio="76%"
 | 
			
		||||
        link="./kiali-workload.png"
 | 
			
		||||
        caption="Example Workload Graph"
 | 
			
		||||
        >}}
 | 
			
		||||
 | 
			
		||||
    *   The **Service** graph type shows a node for each service in your mesh but excludes
 | 
			
		||||
        all apps and workloads from the graph.
 | 
			
		||||
 | 
			
		||||
        {{< image width="70%" ratio="35%"
 | 
			
		||||
        link="./kiali-service-graph.png"
 | 
			
		||||
        caption="Example Service Graph"
 | 
			
		||||
        >}}
 | 
			
		||||
 | 
			
		||||
1. To examine the details about the Istio configuration, click on the
 | 
			
		||||
   **Applications**, **Workloads**, and **Services** menu icons on the left menu
 | 
			
		||||
   bar. The following screenshot shows the Bookinfo applications information:
 | 
			
		||||
 | 
			
		||||
   {{< image width="80%" ratio="56%"
 | 
			
		||||
   link="./kiali-services.png"
 | 
			
		||||
   caption="Example Details"
 | 
			
		||||
   >}}
 | 
			
		||||
 | 
			
		||||
## About the Kiali Public API
 | 
			
		||||
 | 
			
		||||
To generate JSON files representing the graphs and other metrics, health, and
 | 
			
		||||
configuration information, you can access the
 | 
			
		||||
[Kiali Public API](https://www.kiali.io/api/paths).
 | 
			
		||||
For example, point your browser to `$KIALI_URL/api/namespaces/bookinfo/graph?graphType=app`
 | 
			
		||||
to get the JSON representation of your graph using the `app` graph type.
 | 
			
		||||
 | 
			
		||||
The Kiali Public API is built on top of Prometheus queries and depends on the
 | 
			
		||||
standard Istio metric configuration.  It also makes Kubernetes API calls to
 | 
			
		||||
obtain additional details about your services. For the best experience using
 | 
			
		||||
Kiali, use the metadata labels `app` and `version` on your application
 | 
			
		||||
components. As a template, the Bookinfo sample application follows this
 | 
			
		||||
convention.
 | 
			
		||||
 | 
			
		||||
## Cleanup
 | 
			
		||||
 | 
			
		||||
If you are not planning any follow-up tasks, remove the Bookinfo sample application and Kiali from your cluster.
 | 
			
		||||
 | 
			
		||||
1. To remove the Bookinfo application, refer to the [Bookinfo cleanup](/docs/examples/bookinfo/#cleanup) instructions.
 | 
			
		||||
 | 
			
		||||
1. To remove Kiali from a Kubernetes environment, remove all components with the `app=kiali` label:
 | 
			
		||||
 | 
			
		||||
{{< text bash >}}
 | 
			
		||||
$ kubectl delete all,secrets,sa,configmaps,deployments,ingresses,clusterroles,clusterrolebindings,virtualservices,destinationrules --selector=app=kiali -n istio-system
 | 
			
		||||
{{< /text >}}
 | 
			
		||||
| 
		 After Width: | Height: | Size: 20 KiB  | 
| 
		 After Width: | Height: | Size: 98 KiB  | 
| 
		 After Width: | Height: | Size: 37 KiB  | 
| 
		 After Width: | Height: | Size: 21 KiB  | 
| 
		 After Width: | Height: | Size: 75 KiB  | 
| 
		 After Width: | Height: | Size: 48 KiB  | 
| 
		 After Width: | Height: | Size: 48 KiB  | 
| 
						 | 
				
			
			@ -5,6 +5,8 @@ weight: 50
 | 
			
		|||
keywords: [telemetry,visualization]
 | 
			
		||||
---
 | 
			
		||||
 | 
			
		||||
> {{< warning_icon >}} The Service Graph is being deprecated in Istio 1.1 in favor of [Kiali](../kiali).
 | 
			
		||||
 | 
			
		||||
This task shows you how to generate a graph of services within an Istio mesh.
 | 
			
		||||
As part of this task, you will install the Servicegraph add-on and use
 | 
			
		||||
the web-based interface for viewing service graph of the service mesh.
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||