{"id":73619,"date":"2025-07-30T11:44:36","date_gmt":"2025-07-30T06:14:36","guid":{"rendered":"https:\/\/www.tothenew.com\/blog\/?p=73619"},"modified":"2025-07-30T13:21:18","modified_gmt":"2025-07-30T07:51:18","slug":"setting-up-kiali-in-istio-visualize-your-mesh","status":"publish","type":"post","link":"https:\/\/www.tothenew.com\/blog\/setting-up-kiali-in-istio-visualize-your-mesh\/","title":{"rendered":"Setting up Kiali in Istio: Visualize your mesh"},"content":{"rendered":"<h2><span style=\"color: #000000;\">Introduction<\/span><\/h2>\n<p><span style=\"color: #000000;\">Nowadays, Managing the Microservices that are interacting with each others in real time becomes challenging especially when the clusters are running with hundreds of these microservices. There&#8217;s always somethings breaking up or causing performance issues and for looking into these issues you need to go thoroughly with the traffic flow, need to understand where bottlenecks is occurring and which services are failing this becomes very complex. This is where <a href=\"https:\/\/kiali.io\/\">Kiali<\/a>\u00a0steps in &#8211; Helps you in visualising the Service mesh, monitor traffic flows like requests, latency, and errors in real time. In this blog we will be going thoroughly how to setup <a href=\"https:\/\/kiali.io\/\">Kiali<\/a> in Istio sevice mesh.<\/span><\/p>\n<h2><span style=\"color: #000000;\">Prerequisites<\/span><\/h2>\n<ul style=\"list-style-type: disc;\">\n<li><span style=\"color: #000000;\">Kubernetes cluster with version v1.19 or newer<\/span><\/li>\n<li><span style=\"color: #000000;\">Istio installed with version v1.15 or newer<\/span><\/li>\n<li><span style=\"color: #000000;\">kubectl access with admin rights<\/span><\/li>\n<li><span style=\"color: #000000;\">kubectl and istioctl CLI tools installed and configured<\/span><\/li>\n<li><span style=\"color: #000000;\">Basic knowledge of Istio concepts like sidecars, gateways, virtual services, etc<\/span><\/li>\n<\/ul>\n<p><span style=\"color: #000000;\">Lets first check if istio is installed on our Kubernetes cluster with below command, it should show the istio components like istiod &#8211;<\/span><\/p>\n<pre><span style=\"color: #000000;\">kubectl get pods -n istio-system<\/span><\/pre>\n<p><span style=\"color: #000000;\"><img decoding=\"async\" loading=\"lazy\" class=\"wp-image-73622 aligncenter\" src=\"https:\/\/www.tothenew.com\/blog\/wp-ttn-blog\/uploads\/2025\/07\/Screenshot-2025-07-27-at-5.36.14\u202fPM.png\" alt=\"kubectl get pods -n istio-system\" width=\"803\" height=\"115\" srcset=\"\/blog\/wp-ttn-blog\/uploads\/2025\/07\/Screenshot-2025-07-27-at-5.36.14\u202fPM.png 1480w, \/blog\/wp-ttn-blog\/uploads\/2025\/07\/Screenshot-2025-07-27-at-5.36.14\u202fPM-300x43.png 300w, \/blog\/wp-ttn-blog\/uploads\/2025\/07\/Screenshot-2025-07-27-at-5.36.14\u202fPM-1024x147.png 1024w, \/blog\/wp-ttn-blog\/uploads\/2025\/07\/Screenshot-2025-07-27-at-5.36.14\u202fPM-768x110.png 768w, \/blog\/wp-ttn-blog\/uploads\/2025\/07\/Screenshot-2025-07-27-at-5.36.14\u202fPM-624x89.png 624w\" sizes=\"(max-width: 803px) 100vw, 803px\" \/><\/span><\/p>\n<h2><span style=\"color: #000000;\">Step 1: Install Kiali on Istio\u00a0<\/span><\/h2>\n<pre><span style=\"color: #000000;\">kubectl apply -f https:\/\/raw.githubusercontent.com\/istio\/istio\/master\/samples\/addons\/kiali.yaml\r\n<\/span><\/pre>\n<p><span style=\"color: #000000;\">check status of the deployment by using below command-<\/span><\/p>\n<pre><span style=\"color: #000000;\">kubectl rollout status deployment\/kiali -n istio-system<\/span><\/pre>\n<p><span style=\"color: #000000;\">It should show that the &#8220;kiali&#8221; successfully rolled out as shown below:<\/span><\/p>\n<p><span style=\"color: #000000;\"><img decoding=\"async\" loading=\"lazy\" class=\"wp-image-73624 aligncenter\" src=\"https:\/\/www.tothenew.com\/blog\/wp-ttn-blog\/uploads\/2025\/07\/Screenshot-2025-07-27-at-5.46.30\u202fPM.png\" alt=\"kubectl rollout status deployment\/kiali -n istio-system\" width=\"852\" height=\"91\" srcset=\"\/blog\/wp-ttn-blog\/uploads\/2025\/07\/Screenshot-2025-07-27-at-5.46.30\u202fPM.png 1798w, \/blog\/wp-ttn-blog\/uploads\/2025\/07\/Screenshot-2025-07-27-at-5.46.30\u202fPM-300x32.png 300w, \/blog\/wp-ttn-blog\/uploads\/2025\/07\/Screenshot-2025-07-27-at-5.46.30\u202fPM-1024x109.png 1024w, \/blog\/wp-ttn-blog\/uploads\/2025\/07\/Screenshot-2025-07-27-at-5.46.30\u202fPM-768x82.png 768w, \/blog\/wp-ttn-blog\/uploads\/2025\/07\/Screenshot-2025-07-27-at-5.46.30\u202fPM-1536x164.png 1536w, \/blog\/wp-ttn-blog\/uploads\/2025\/07\/Screenshot-2025-07-27-at-5.46.30\u202fPM-624x67.png 624w\" sizes=\"(max-width: 852px) 100vw, 852px\" \/><\/span><\/p>\n<h2><span style=\"color: #000000;\">Step 2: Verify the Kiali Installation<\/span><\/h2>\n<p><span style=\"color: #000000;\">Let&#8217;s, Check if Kiali is up and running in the istio-system namespace, with below command:<\/span><\/p>\n<pre><span style=\"color: #000000;\">kubectl get pods -n istio-system | grep kiali<\/span><\/pre>\n<p><span style=\"color: #000000;\">There should be a pod like below in Running state:<\/span><\/p>\n<p><span style=\"color: #000000;\"><img decoding=\"async\" loading=\"lazy\" class=\"wp-image-73627 aligncenter\" src=\"https:\/\/www.tothenew.com\/blog\/wp-ttn-blog\/uploads\/2025\/07\/Screenshot-2025-07-27-at-6.01.16\u202fPM.png\" alt=\"kubectl get pods -n istio-system | grep kiali\" width=\"906\" height=\"67\" srcset=\"\/blog\/wp-ttn-blog\/uploads\/2025\/07\/Screenshot-2025-07-27-at-6.01.16\u202fPM.png 1596w, \/blog\/wp-ttn-blog\/uploads\/2025\/07\/Screenshot-2025-07-27-at-6.01.16\u202fPM-300x22.png 300w, \/blog\/wp-ttn-blog\/uploads\/2025\/07\/Screenshot-2025-07-27-at-6.01.16\u202fPM-1024x76.png 1024w, \/blog\/wp-ttn-blog\/uploads\/2025\/07\/Screenshot-2025-07-27-at-6.01.16\u202fPM-768x57.png 768w, \/blog\/wp-ttn-blog\/uploads\/2025\/07\/Screenshot-2025-07-27-at-6.01.16\u202fPM-1536x114.png 1536w, \/blog\/wp-ttn-blog\/uploads\/2025\/07\/Screenshot-2025-07-27-at-6.01.16\u202fPM-624x46.png 624w\" sizes=\"(max-width: 906px) 100vw, 906px\" \/><\/span><\/p>\n<p><span style=\"color: #000000;\">Let&#8217;s also check service, with below command:<\/span><\/p>\n<pre><span style=\"color: #000000;\">kubectl get svc -n istio-system | grep kiali<\/span><\/pre>\n<p><span style=\"color: #000000;\">There should be a service like below:<\/span><\/p>\n<p><span style=\"color: #000000;\"><img decoding=\"async\" loading=\"lazy\" class=\" wp-image-73633\" src=\"https:\/\/www.tothenew.com\/blog\/wp-ttn-blog\/uploads\/2025\/07\/Screenshot-2025-07-27-at-7.07.38\u202fPM.png\" alt=\"kiali svc\" width=\"944\" height=\"63\" srcset=\"\/blog\/wp-ttn-blog\/uploads\/2025\/07\/Screenshot-2025-07-27-at-7.07.38\u202fPM.png 1768w, \/blog\/wp-ttn-blog\/uploads\/2025\/07\/Screenshot-2025-07-27-at-7.07.38\u202fPM-300x20.png 300w, \/blog\/wp-ttn-blog\/uploads\/2025\/07\/Screenshot-2025-07-27-at-7.07.38\u202fPM-1024x68.png 1024w, \/blog\/wp-ttn-blog\/uploads\/2025\/07\/Screenshot-2025-07-27-at-7.07.38\u202fPM-768x51.png 768w, \/blog\/wp-ttn-blog\/uploads\/2025\/07\/Screenshot-2025-07-27-at-7.07.38\u202fPM-1536x103.png 1536w, \/blog\/wp-ttn-blog\/uploads\/2025\/07\/Screenshot-2025-07-27-at-7.07.38\u202fPM-624x42.png 624w\" sizes=\"(max-width: 944px) 100vw, 944px\" \/><\/span><\/p>\n<h2><span style=\"color: #000000;\">Step 3: Access the Kiali UI<\/span><\/h2>\n<p><span style=\"color: #000000;\">Let&#8217;s access the Kiali UI by port forwarding using below command-<\/span><\/p>\n<pre><span style=\"color: #000000;\">kubectl port-forward svc\/kiali 20001:20001 -n istio-system<\/span><\/pre>\n<p><span style=\"color: #000000;\"><img decoding=\"async\" loading=\"lazy\" class=\" wp-image-73634\" src=\"https:\/\/www.tothenew.com\/blog\/wp-ttn-blog\/uploads\/2025\/07\/Screenshot-2025-07-27-at-7.08.14\u202fPM.png\" alt=\"port forward\" width=\"1028\" height=\"68\" srcset=\"\/blog\/wp-ttn-blog\/uploads\/2025\/07\/Screenshot-2025-07-27-at-7.08.14\u202fPM.png 1816w, \/blog\/wp-ttn-blog\/uploads\/2025\/07\/Screenshot-2025-07-27-at-7.08.14\u202fPM-300x20.png 300w, \/blog\/wp-ttn-blog\/uploads\/2025\/07\/Screenshot-2025-07-27-at-7.08.14\u202fPM-1024x68.png 1024w, \/blog\/wp-ttn-blog\/uploads\/2025\/07\/Screenshot-2025-07-27-at-7.08.14\u202fPM-768x51.png 768w, \/blog\/wp-ttn-blog\/uploads\/2025\/07\/Screenshot-2025-07-27-at-7.08.14\u202fPM-1536x101.png 1536w, \/blog\/wp-ttn-blog\/uploads\/2025\/07\/Screenshot-2025-07-27-at-7.08.14\u202fPM-624x41.png 624w\" sizes=\"(max-width: 1028px) 100vw, 1028px\" \/><\/span><\/p>\n<p><span style=\"color: #000000;\">Now, open below URL on your browser:<\/span><\/p>\n<pre><span style=\"color: #000000;\">localhost:20001<\/span><\/pre>\n<div id=\"attachment_73636\" style=\"width: 866px\" class=\"wp-caption aligncenter\"><img aria-describedby=\"caption-attachment-73636\" decoding=\"async\" loading=\"lazy\" class=\" wp-image-73636\" src=\"https:\/\/www.tothenew.com\/blog\/wp-ttn-blog\/uploads\/2025\/07\/Screenshot-2025-07-27-at-7.21.52\u202fPM.png\" alt=\"Kiali Dashboard\" width=\"856\" height=\"306\" srcset=\"\/blog\/wp-ttn-blog\/uploads\/2025\/07\/Screenshot-2025-07-27-at-7.21.52\u202fPM.png 3442w, \/blog\/wp-ttn-blog\/uploads\/2025\/07\/Screenshot-2025-07-27-at-7.21.52\u202fPM-300x107.png 300w, \/blog\/wp-ttn-blog\/uploads\/2025\/07\/Screenshot-2025-07-27-at-7.21.52\u202fPM-1024x366.png 1024w, \/blog\/wp-ttn-blog\/uploads\/2025\/07\/Screenshot-2025-07-27-at-7.21.52\u202fPM-768x274.png 768w, \/blog\/wp-ttn-blog\/uploads\/2025\/07\/Screenshot-2025-07-27-at-7.21.52\u202fPM-1536x549.png 1536w, \/blog\/wp-ttn-blog\/uploads\/2025\/07\/Screenshot-2025-07-27-at-7.21.52\u202fPM-2048x732.png 2048w, \/blog\/wp-ttn-blog\/uploads\/2025\/07\/Screenshot-2025-07-27-at-7.21.52\u202fPM-624x223.png 624w\" sizes=\"(max-width: 856px) 100vw, 856px\" \/><p id=\"caption-attachment-73636\" class=\"wp-caption-text\"><span style=\"color: #000000;\">Kiali Dashboard<\/span><\/p><\/div>\n<h2><span style=\"color: #000000;\">Step 4: Explore the UI of Kiali and it&#8217;s features<\/span><\/h2>\n<p>Kiali gives you a insightful UI in real time for understanding the topology of our service mesh, monitoring traffic flows, and troubleshooting issues.<\/p>\n<ul>\n<li><span style=\"color: #000000;\">Graph View &#8211;<\/span><br \/>\n<span style=\"color: #000000;\"><span style=\"color: #000000;\"><span style=\"color: #000000;\">You can see your services, workloads and traffic flow&#8217;s in real time.<\/span><\/span><\/span><\/p>\n<p><div id=\"attachment_73640\" style=\"width: 595px\" class=\"wp-caption aligncenter\"><img aria-describedby=\"caption-attachment-73640\" decoding=\"async\" loading=\"lazy\" class=\" wp-image-73640\" src=\"https:\/\/www.tothenew.com\/blog\/wp-ttn-blog\/uploads\/2025\/07\/Screenshot-2025-07-27-at-7.36.37\u202fPM.png\" alt=\"Kiali Graph\" width=\"585\" height=\"398\" srcset=\"\/blog\/wp-ttn-blog\/uploads\/2025\/07\/Screenshot-2025-07-27-at-7.36.37\u202fPM.png 2820w, \/blog\/wp-ttn-blog\/uploads\/2025\/07\/Screenshot-2025-07-27-at-7.36.37\u202fPM-300x204.png 300w, \/blog\/wp-ttn-blog\/uploads\/2025\/07\/Screenshot-2025-07-27-at-7.36.37\u202fPM-1024x696.png 1024w, \/blog\/wp-ttn-blog\/uploads\/2025\/07\/Screenshot-2025-07-27-at-7.36.37\u202fPM-768x522.png 768w, \/blog\/wp-ttn-blog\/uploads\/2025\/07\/Screenshot-2025-07-27-at-7.36.37\u202fPM-1536x1045.png 1536w, \/blog\/wp-ttn-blog\/uploads\/2025\/07\/Screenshot-2025-07-27-at-7.36.37\u202fPM-2048x1393.png 2048w, \/blog\/wp-ttn-blog\/uploads\/2025\/07\/Screenshot-2025-07-27-at-7.36.37\u202fPM-624x424.png 624w\" sizes=\"(max-width: 585px) 100vw, 585px\" \/><p id=\"caption-attachment-73640\" class=\"wp-caption-text\">Graph<\/p><\/div><\/li>\n<li><span style=\"color: #000000;\">Metrics &#8211;<\/span><br \/>\n<span style=\"color: #000000;\"><span style=\"color: #000000;\"><span style=\"color: #000000;\">You can get the performance metrics like request rates, latencies and error rates as shown below.<br \/>\n<\/span><\/span><\/span><img decoding=\"async\" loading=\"lazy\" class=\"wp-image-73641 aligncenter\" src=\"https:\/\/www.tothenew.com\/blog\/wp-ttn-blog\/uploads\/2025\/07\/Screenshot-2025-07-27-at-7.40.54\u202fPM.png\" alt=\"Traffic\" width=\"828\" height=\"373\" srcset=\"\/blog\/wp-ttn-blog\/uploads\/2025\/07\/Screenshot-2025-07-27-at-7.40.54\u202fPM.png 3034w, \/blog\/wp-ttn-blog\/uploads\/2025\/07\/Screenshot-2025-07-27-at-7.40.54\u202fPM-300x135.png 300w, \/blog\/wp-ttn-blog\/uploads\/2025\/07\/Screenshot-2025-07-27-at-7.40.54\u202fPM-1024x461.png 1024w, \/blog\/wp-ttn-blog\/uploads\/2025\/07\/Screenshot-2025-07-27-at-7.40.54\u202fPM-768x346.png 768w, \/blog\/wp-ttn-blog\/uploads\/2025\/07\/Screenshot-2025-07-27-at-7.40.54\u202fPM-1536x692.png 1536w, \/blog\/wp-ttn-blog\/uploads\/2025\/07\/Screenshot-2025-07-27-at-7.40.54\u202fPM-2048x922.png 2048w, \/blog\/wp-ttn-blog\/uploads\/2025\/07\/Screenshot-2025-07-27-at-7.40.54\u202fPM-624x281.png 624w\" sizes=\"(max-width: 828px) 100vw, 828px\" \/><\/li>\n<li><span style=\"color: #000000;\">Health Status &#8211;<\/span><br \/>\n<span style=\"color: #000000;\"><span style=\"color: #000000;\"><span style=\"color: #000000;\"><span style=\"color: #000000;\">You can get a quick health status of Applications like Red = Unhealthy, Green = Healthy. Just hover over the icon to see the details about failed pods, timeouts, or missing sidecars as shown below<\/span><\/span><\/span><\/span><br \/>\n<img decoding=\"async\" loading=\"lazy\" class=\"wp-image-73648 aligncenter\" src=\"https:\/\/www.tothenew.com\/blog\/wp-ttn-blog\/uploads\/2025\/07\/Screenshot-2025-07-27-at-7.43.26\u202fPM-2.png\" alt=\"Health\" width=\"991\" height=\"446\" srcset=\"\/blog\/wp-ttn-blog\/uploads\/2025\/07\/Screenshot-2025-07-27-at-7.43.26\u202fPM-2.png 3034w, \/blog\/wp-ttn-blog\/uploads\/2025\/07\/Screenshot-2025-07-27-at-7.43.26\u202fPM-2-300x135.png 300w, \/blog\/wp-ttn-blog\/uploads\/2025\/07\/Screenshot-2025-07-27-at-7.43.26\u202fPM-2-1024x461.png 1024w, \/blog\/wp-ttn-blog\/uploads\/2025\/07\/Screenshot-2025-07-27-at-7.43.26\u202fPM-2-768x346.png 768w, \/blog\/wp-ttn-blog\/uploads\/2025\/07\/Screenshot-2025-07-27-at-7.43.26\u202fPM-2-1536x692.png 1536w, \/blog\/wp-ttn-blog\/uploads\/2025\/07\/Screenshot-2025-07-27-at-7.43.26\u202fPM-2-2048x922.png 2048w, \/blog\/wp-ttn-blog\/uploads\/2025\/07\/Screenshot-2025-07-27-at-7.43.26\u202fPM-2-624x281.png 624w\" sizes=\"(max-width: 991px) 100vw, 991px\" \/><\/li>\n<li><span style=\"color: #000000;\">Validations<\/span><br \/>\n<span style=\"color: #000000;\">It shows the misconfiguration like DestinationRules without matching subsets or VirtualServices without a destination.<img decoding=\"async\" loading=\"lazy\" class=\"wp-image-73649 aligncenter\" src=\"https:\/\/www.tothenew.com\/blog\/wp-ttn-blog\/uploads\/2025\/07\/Screenshot-2025-07-27-at-7.51.15\u202fPM.png\" alt=\"Validation\" width=\"902\" height=\"352\" srcset=\"\/blog\/wp-ttn-blog\/uploads\/2025\/07\/Screenshot-2025-07-27-at-7.51.15\u202fPM.png 3434w, \/blog\/wp-ttn-blog\/uploads\/2025\/07\/Screenshot-2025-07-27-at-7.51.15\u202fPM-300x117.png 300w, \/blog\/wp-ttn-blog\/uploads\/2025\/07\/Screenshot-2025-07-27-at-7.51.15\u202fPM-1024x399.png 1024w, \/blog\/wp-ttn-blog\/uploads\/2025\/07\/Screenshot-2025-07-27-at-7.51.15\u202fPM-768x299.png 768w, \/blog\/wp-ttn-blog\/uploads\/2025\/07\/Screenshot-2025-07-27-at-7.51.15\u202fPM-1536x598.png 1536w, \/blog\/wp-ttn-blog\/uploads\/2025\/07\/Screenshot-2025-07-27-at-7.51.15\u202fPM-2048x798.png 2048w, \/blog\/wp-ttn-blog\/uploads\/2025\/07\/Screenshot-2025-07-27-at-7.51.15\u202fPM-624x243.png 624w\" sizes=\"(max-width: 902px) 100vw, 902px\" \/><\/span><\/li>\n<\/ul>\n<h2><span style=\"color: #000000;\">Step 5: Uninstalling Kiali (optional)<\/span><\/h2>\n<pre><span style=\"color: #000000;\">kubectl delete deployment kiali -n istio-system\u00a0\r\nkubectl delete service kiali  -n istio-system<\/span><\/pre>\n<h2><span style=\"color: #000000;\">Conclusion<br \/>\n<\/span><\/h2>\n<p><span style=\"color: #000000;\">Kiali try to simplies the complex topology of the services mesh with realtime visualizations, traffic flows and configuration insight. It plays a crucial role while detecting anomalies in our clusters and as the service mesh grows Kiali will continue to provide these insights.<\/span><\/p>\n<p><span style=\"color: #000000;\">You can also refer the Official Documentation of Istio Addons \u2013<\/span> <a href=\"https:\/\/istio.io\/latest\/docs\/ops\/integrations\/\">https:\/\/istio.io\/latest\/docs\/ops\/integrations\/<\/a><\/p>\n<p><span style=\"color: #000000;\">Kiali Official website &#8211;<\/span> <a href=\"https:\/\/istio.io\/latest\/docs\/ops\/integrations\/\">https:\/\/istio.io\/latest\/docs\/ops\/integrations\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Introduction Nowadays, Managing the Microservices that are interacting with each others in real time becomes challenging especially when the clusters are running with hundreds of these microservices. There&#8217;s always somethings breaking up or causing performance issues and for looking into these issues you need to go thoroughly with the traffic flow, need to understand where [&hellip;]<\/p>\n","protected":false},"author":1834,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"iawp_total_views":124},"categories":[5877],"tags":[5403,7687,3965],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/www.tothenew.com\/blog\/wp-json\/wp\/v2\/posts\/73619"}],"collection":[{"href":"https:\/\/www.tothenew.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.tothenew.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.tothenew.com\/blog\/wp-json\/wp\/v2\/users\/1834"}],"replies":[{"embeddable":true,"href":"https:\/\/www.tothenew.com\/blog\/wp-json\/wp\/v2\/comments?post=73619"}],"version-history":[{"count":22,"href":"https:\/\/www.tothenew.com\/blog\/wp-json\/wp\/v2\/posts\/73619\/revisions"}],"predecessor-version":[{"id":73745,"href":"https:\/\/www.tothenew.com\/blog\/wp-json\/wp\/v2\/posts\/73619\/revisions\/73745"}],"wp:attachment":[{"href":"https:\/\/www.tothenew.com\/blog\/wp-json\/wp\/v2\/media?parent=73619"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.tothenew.com\/blog\/wp-json\/wp\/v2\/categories?post=73619"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.tothenew.com\/blog\/wp-json\/wp\/v2\/tags?post=73619"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}