<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Kiali – Installation Guide</title>
    <link>https://v2-24.kiali.io/docs/installation/installation-guide/</link>
    <description>Recent content in Installation Guide on Kiali</description>
    <generator>Hugo -- gohugo.io</generator>
    <language>en</language>
    
	  <atom:link href="https://v2-24.kiali.io/docs/installation/installation-guide/index.xml" rel="self" type="application/rss+xml" />
    
    
      
        
      
    
    
    <item>
      <title>Docs: Prerequisites</title>
      <link>https://v2-24.kiali.io/docs/installation/installation-guide/prerequisites/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>https://v2-24.kiali.io/docs/installation/installation-guide/prerequisites/</guid>
      <description>
        
        
        &lt;h2 id=&#34;istio&#34;&gt;Istio&lt;/h2&gt;
&lt;p&gt;Before you install Kiali you must have already installed Istio along with its
telemetry storage addon (e.g. Prometheus). You might also consider installing
Istio&amp;rsquo;s optional tracing addon (e.g. Tempo) and optional Grafana addon but
those are not required by Kiali. Refer to the
&lt;a href=&#34;https://istio.io/docs/setup/getting-started&#34;&gt;Istio documentation&lt;/a&gt; for details.&lt;/p&gt;
&lt;h3 id=&#34;optionally-enable-the-debug-interface&#34;&gt;Optionally Enable the Debug Interface&lt;/h3&gt;
&lt;p&gt;Like &lt;code&gt;istioctl&lt;/code&gt;, Kiali can make use of Istio&amp;rsquo;s port 8080 &amp;ldquo;Debug Interface&amp;rdquo; API. Despite the naming, this is required for accessing the status of the proxies.&lt;/p&gt;
&lt;p&gt;The &lt;code&gt;ENABLE_DEBUG_ON_HTTP&lt;/code&gt; setting controls the relevant API access. Istio suggests to disable this for security, but Kiali requires &lt;code&gt;ENABLE_DEBUG_ON_HTTP=true&lt;/code&gt;,
which is the default.&lt;/p&gt;
&lt;p&gt;If you prefer not to enable the Istio API then certain Kiali features will be unavailable. If disabled, set &lt;code&gt;spec.external_services.istio.istio_api_enabled: false&lt;/code&gt; in the Kiali CR.&lt;/p&gt;
&lt;p&gt;For more information, see the &lt;a href=&#34;https://istio.io/latest/docs/ops/best-practices/security/#control-plane&#34;&gt;Istio documentation&lt;/a&gt;.&lt;/p&gt;
&lt;h3 id=&#34;version-compatibility&#34;&gt;Version Compatibility&lt;/h3&gt;


&lt;div class=&#34;alert alert-success&#34; role=&#34;alert&#34;&gt;


    It is always recommended that users run a supported version of Istio.
&lt;a href=&#34;https://istio.io/news/&#34;&gt;The Istio news page&lt;/a&gt; posts end-of-support (EOL)
dates. Supported Kiali versions include only the Kiali versions associated with
supported Istio versions.

&lt;/div&gt;

&lt;p&gt;Starting with Kiali v2.4, each Kiali release is tested against the &lt;a href=&#34;https://istio.io/latest/news&#34;&gt;currently supported Istio releases&lt;/a&gt;.
Unless otherwise noted, a Kiali release will be compatible with those releases. Older, untested Istio versions may also be compatible.
Known incompatibilities will be noted in the table below. Prior to Kiali v2.4, compatibility is guaranteed only against the latest
Istio release at the time. Although compatibility may be fine with other versions.&lt;/p&gt;


&lt;table border=&#34;1&#34;&gt;
  &lt;thead&gt;
    &lt;tr&gt;
      &lt;th style=&#34;width:50px&#34;&gt;Istio&lt;/th&gt;
      &lt;th style=&#34;width:200px&#34;&gt;Tested Kiali Versions&lt;/th&gt;
      &lt;th&gt;Notes&lt;/th&gt;
    &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
    
    &lt;tr&gt;
      &lt;td&gt;1.28&lt;/td&gt;
      &lt;td&gt;2.17 and higher&lt;/td&gt;
      &lt;td&gt;&lt;/td&gt;
    &lt;/tr&gt;
    
    &lt;tr&gt;
      &lt;td&gt;1.27&lt;/td&gt;
      &lt;td&gt;2.12 and higher&lt;/td&gt;
      &lt;td&gt;&lt;/td&gt;
    &lt;/tr&gt;
    
    &lt;tr&gt;
      &lt;td&gt;1.26&lt;/td&gt;
      &lt;td&gt;2.9 and higher&lt;/td&gt;
      &lt;td&gt;&lt;/td&gt;
    &lt;/tr&gt;
    
    &lt;tr&gt;
      &lt;td&gt;1.25&lt;/td&gt;
      &lt;td&gt;2.5-2.16&lt;/td&gt;
      &lt;td&gt;Istio 1.25 is out of support.&lt;/td&gt;
    &lt;/tr&gt;
    
    &lt;tr&gt;
      &lt;td&gt;1.24&lt;/td&gt;
      &lt;td&gt;2.0-2.13&lt;/td&gt;
      &lt;td&gt;Istio 1.24 is out of support.&lt;/td&gt;
    &lt;/tr&gt;
    
    &lt;tr&gt;
      &lt;td&gt;1.23&lt;/td&gt;
      &lt;td&gt;1.87, 2.4-2.8&lt;/td&gt;
      &lt;td&gt;Istio 1.23 is out of support. Kiali v2 requires migration from Kiali v1 non-default namespace management (i.e. accessible_namespaces) to Discovery Selectors.&lt;/td&gt;
    &lt;/tr&gt;
    
    &lt;tr&gt;
      &lt;td&gt;1.22&lt;/td&gt;
      &lt;td&gt;1.87, 2.4-2.5&lt;/td&gt;
      &lt;td&gt;Istio 1.22 is out of support. Kiali v1.86 is the recommended minimum for Istio Ambient users. Starting with Kiali v1.86,.1 Istio v1.22 is required.&lt;/td&gt;
    &lt;/tr&gt;
    
    &lt;tr&gt;
      &lt;td&gt;1.21&lt;/td&gt;
      &lt;td&gt;1.81&lt;/td&gt;
      &lt;td&gt;Istio 1.21 is out of support.&lt;/td&gt;
    &lt;/tr&gt;
    
    &lt;tr&gt;
      &lt;td&gt;1.20&lt;/td&gt;
      &lt;td&gt;1.78&lt;/td&gt;
      &lt;td&gt;Istio 1.20 is out of support.&lt;/td&gt;
    &lt;/tr&gt;
    
    &lt;tr&gt;
      &lt;td&gt;1.19&lt;/td&gt;
      &lt;td&gt;1.75&lt;/td&gt;
      &lt;td&gt;Istio 1.19 is out of support.&lt;/td&gt;
    &lt;/tr&gt;
    
    &lt;tr&gt;
      &lt;td&gt;1.18&lt;/td&gt;
      &lt;td&gt;1.73&lt;/td&gt;
      &lt;td&gt;Istio 1.18 is out of support.&lt;/td&gt;
    &lt;/tr&gt;
    
    &lt;tr&gt;
      &lt;td&gt;1.17&lt;/td&gt;
      &lt;td&gt;1.66&lt;/td&gt;
      &lt;td&gt;Istio 1.17 is out of support. Avoid 1.63.0,1.63.1 due to a regression.&lt;/td&gt;
    &lt;/tr&gt;
    
    &lt;tr&gt;
      &lt;td&gt;1.16&lt;/td&gt;
      &lt;td&gt;1.63&lt;/td&gt;
      &lt;td&gt;Istio 1.16 is out of support. Avoid 1.62.0,1.63.0,1.63.1 due to a regression.&lt;/td&gt;
    &lt;/tr&gt;
    
    &lt;tr&gt;
      &lt;td&gt;1.15&lt;/td&gt;
      &lt;td&gt;1.59&lt;/td&gt;
      &lt;td&gt;Istio 1.15 is out of support.&lt;/td&gt;
    &lt;/tr&gt;
    
    &lt;tr&gt;
      &lt;td&gt;1.14&lt;/td&gt;
      &lt;td&gt;1.54&lt;/td&gt;
      &lt;td&gt;Istio 1.14 is out of support.&lt;/td&gt;
    &lt;/tr&gt;
    
    &lt;tr&gt;
      &lt;td&gt;1.13&lt;/td&gt;
      &lt;td&gt;1.49&lt;/td&gt;
      &lt;td&gt;Istio 1.13 is out of support.&lt;/td&gt;
    &lt;/tr&gt;
    
    &lt;tr&gt;
      &lt;td&gt;1.12&lt;/td&gt;
      &lt;td&gt;1.44&lt;/td&gt;
      &lt;td&gt;Istio 1.12 is out of support.&lt;/td&gt;
    &lt;/tr&gt;
    
    &lt;tr&gt;
      &lt;td&gt;1.11&lt;/td&gt;
      &lt;td&gt;1.41&lt;/td&gt;
      &lt;td&gt;Istio 1.11 is out of support.&lt;/td&gt;
    &lt;/tr&gt;
    
    &lt;tr&gt;
      &lt;td&gt;1.10&lt;/td&gt;
      &lt;td&gt;1.37&lt;/td&gt;
      &lt;td&gt;Istio 1.10 is out of support.&lt;/td&gt;
    &lt;/tr&gt;
    
    &lt;tr&gt;
      &lt;td&gt;1.9&lt;/td&gt;
      &lt;td&gt;1.33&lt;/td&gt;
      &lt;td&gt;Istio 1.9 is out of support.&lt;/td&gt;
    &lt;/tr&gt;
    
    &lt;tr&gt;
      &lt;td&gt;1.8&lt;/td&gt;
      &lt;td&gt;1.28&lt;/td&gt;
      &lt;td&gt;Istio 1.8 is out of support. It removes all support for mixer/telemetry V1, as does Kiali 1.26.0. Use earlier versions of Kiali for mixer.&lt;/td&gt;
    &lt;/tr&gt;
    
    &lt;tr&gt;
      &lt;td&gt;1.7&lt;/td&gt;
      &lt;td&gt;1.25&lt;/td&gt;
      &lt;td&gt;Istio 1.7 is out of support. Istioctl no longer installs Kiali. Use the Istio samples/addons for quick demo installs.&lt;/td&gt;
    &lt;/tr&gt;
    
    &lt;tr&gt;
      &lt;td&gt;1.6&lt;/td&gt;
      &lt;td&gt;1.21&lt;/td&gt;
      &lt;td&gt;Istio 1.6 is out of support. Kiali 1.17 is recommended for Istio &amp;lt; 1.6.&lt;/td&gt;
    &lt;/tr&gt;
    
  &lt;/tbody&gt;
&lt;/table&gt;

&lt;br /&gt;
&lt;h2 id=&#34;openshift-service-mesh-version-compatibility&#34;&gt;OpenShift Service Mesh Version Compatibility&lt;/h2&gt;


&lt;div class=&#34;alert alert-warning&#34; role=&#34;alert&#34;&gt;
&lt;h4 class=&#34;alert-heading&#34;&gt;OpenShift&lt;/h4&gt;

    If you are running Red Hat OpenShift Service Mesh (OSSM), use only the bundled, supported version of Kiali.

&lt;/div&gt;

&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;div style=&#34;width:100px&#34;&gt;OSSM&lt;/div&gt;&lt;/th&gt;
&lt;th&gt;&lt;div style=&#34;width:100px&#34;&gt;Kiali&lt;/div&gt;&lt;/th&gt;
&lt;th&gt;Notes&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;3.2&lt;/td&gt;
&lt;td&gt;2.17&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;3.1&lt;/td&gt;
&lt;td&gt;2.11&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;3.0&lt;/td&gt;
&lt;td&gt;2.4&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2.6&lt;/td&gt;
&lt;td&gt;1.73&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2.5&lt;/td&gt;
&lt;td&gt;1.73&lt;/td&gt;
&lt;td&gt;OSSM 2.5 is out of support&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2.4&lt;/td&gt;
&lt;td&gt;1.65&lt;/td&gt;
&lt;td&gt;OSSM 2.4 is out of support&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2.3&lt;/td&gt;
&lt;td&gt;1.57&lt;/td&gt;
&lt;td&gt;OSSM 2.3 is out of support&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2.2&lt;/td&gt;
&lt;td&gt;1.48&lt;/td&gt;
&lt;td&gt;OSSM 2.2 is out of support&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;br /&gt;
&lt;h2 id=&#34;openshift-console-plugin-ossmc-version-compatibility&#34;&gt;OpenShift Console Plugin (OSSMC) Version Compatibility&lt;/h2&gt;
&lt;p&gt;Kiali server with the same version of OSSMC plugin must be installed previously in your OpenShift cluster.&lt;/p&gt;


&lt;table&gt;
  &lt;thead&gt;
    &lt;tr&gt;
      &lt;th style=&#34;width: 100px&#34;&gt;OpenShift&lt;/th&gt;
      &lt;th style=&#34;width: 120px&#34;&gt;OSSMC Min&lt;/th&gt;
      &lt;th style=&#34;width: 120px&#34;&gt;OSSMC Max&lt;/th&gt;
      &lt;th&gt;Notes&lt;/th&gt;
    &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
    
    &lt;tr&gt;
      &lt;td&gt;4.19&amp;#43;&lt;/td&gt;
      &lt;td&gt;2.20&lt;/td&gt;
      &lt;td&gt;&lt;/td&gt;
      &lt;td&gt;&lt;/td&gt;
    &lt;/tr&gt;
    
    &lt;tr&gt;
      &lt;td&gt;4.15&amp;#43;&lt;/td&gt;
      &lt;td&gt;1.84&lt;/td&gt;
      &lt;td&gt;2.19&lt;/td&gt;
      &lt;td&gt;&lt;/td&gt;
    &lt;/tr&gt;
    
    &lt;tr&gt;
      &lt;td&gt;4.12-4.18&lt;/td&gt;
      &lt;td&gt;1.73&lt;/td&gt;
      &lt;td&gt;1.83&lt;/td&gt;
      &lt;td&gt;All OSSMC versions from v1.73 to v1.83 are only compatible with Kiali server v1.73&lt;/td&gt;
    &lt;/tr&gt;
    
  &lt;/tbody&gt;
&lt;/table&gt;

&lt;br /&gt;
&lt;h2 id=&#34;maistra-version-compatibility&#34;&gt;Maistra Version Compatibility&lt;/h2&gt;


&lt;table border=&#34;1&#34;&gt;
  &lt;thead&gt;
    &lt;tr&gt;
      &lt;th style=&#34;width:80px&#34;&gt;Maistra&lt;/th&gt;
      &lt;th style=&#34;width:80px&#34;&gt;SMCP CR&lt;/th&gt;
      &lt;th style=&#34;width:70px&#34;&gt;Kiali&lt;/th&gt;
      &lt;th&gt;Notes&lt;/th&gt;
    &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
    
    &lt;tr&gt;
      &lt;td&gt;2.6&lt;/td&gt;
      &lt;td&gt;2.6&lt;/td&gt;
      &lt;td&gt;1.73&lt;/td&gt;
      &lt;td&gt;Using Maistra 2.6 to install service mesh control plane 2.6 requires Kiali Operator v1.73. Other versions are not compatible.&lt;/td&gt;
    &lt;/tr&gt;
    
    &lt;tr&gt;
      &lt;td&gt;2.6&lt;/td&gt;
      &lt;td&gt;2.5&lt;/td&gt;
      &lt;td&gt;1.73&lt;/td&gt;
      &lt;td&gt;Using Maistra 2.6 to install service mesh control plane 2.5 requires Kiali Operator v1.73. Other versions are not compatible.&lt;/td&gt;
    &lt;/tr&gt;
    
    &lt;tr&gt;
      &lt;td&gt;2.6&lt;/td&gt;
      &lt;td&gt;2.4&lt;/td&gt;
      &lt;td&gt;1.65&lt;/td&gt;
      &lt;td&gt;Using Maistra 2.6 to install service mesh control plane 2.4 requires Kiali Operator v1.73. Other versions are not compatible.&lt;/td&gt;
    &lt;/tr&gt;
    
    &lt;tr&gt;
      &lt;td&gt;2.5&lt;/td&gt;
      &lt;td&gt;2.5&lt;/td&gt;
      &lt;td&gt;1.73&lt;/td&gt;
      &lt;td&gt;Using Maistra 2.5 to install service mesh control plane 2.5 requires Kiali Operator v1.73. Other versions are not compatible.&lt;/td&gt;
    &lt;/tr&gt;
    
    &lt;tr&gt;
      &lt;td&gt;2.5&lt;/td&gt;
      &lt;td&gt;2.4&lt;/td&gt;
      &lt;td&gt;1.65&lt;/td&gt;
      &lt;td&gt;Using Maistra 2.5 to install service mesh control plane 2.4 requires Kiali Operator v1.73. Other versions are not compatible.&lt;/td&gt;
    &lt;/tr&gt;
    
    &lt;tr&gt;
      &lt;td&gt;2.4&lt;/td&gt;
      &lt;td&gt;2.4&lt;/td&gt;
      &lt;td&gt;1.65&lt;/td&gt;
      &lt;td&gt;Using Maistra 2.4 to install service mesh control plane 2.4 requires Kiali Operator v1.65. Other versions are not compatible.&lt;/td&gt;
    &lt;/tr&gt;
    
    &lt;tr&gt;
      &lt;td&gt;n/a&lt;/td&gt;
      &lt;td&gt;2.3&lt;/td&gt;
      &lt;td&gt;n/a&lt;/td&gt;
      &lt;td&gt;Service mesh control plane 2.3 is out of support.&lt;/td&gt;
    &lt;/tr&gt;
    
    &lt;tr&gt;
      &lt;td&gt;n/a&lt;/td&gt;
      &lt;td&gt;2.2&lt;/td&gt;
      &lt;td&gt;n/a&lt;/td&gt;
      &lt;td&gt;Service mesh control plane 2.2 is out of support.&lt;/td&gt;
    &lt;/tr&gt;
    
    &lt;tr&gt;
      &lt;td&gt;n/a&lt;/td&gt;
      &lt;td&gt;2.1&lt;/td&gt;
      &lt;td&gt;n/a&lt;/td&gt;
      &lt;td&gt;Service mesh control plane 2.1 is out of support.&lt;/td&gt;
    &lt;/tr&gt;
    
    &lt;tr&gt;
      &lt;td&gt;n/a&lt;/td&gt;
      &lt;td&gt;2.0&lt;/td&gt;
      &lt;td&gt;n/a&lt;/td&gt;
      &lt;td&gt;Service mesh control plane 2.0 is out of support.&lt;/td&gt;
    &lt;/tr&gt;
    
    &lt;tr&gt;
      &lt;td&gt;n/a&lt;/td&gt;
      &lt;td&gt;1.1&lt;/td&gt;
      &lt;td&gt;n/a&lt;/td&gt;
      &lt;td&gt;Service mesh control plane 1.1 is out of support.&lt;/td&gt;
    &lt;/tr&gt;
    
    &lt;tr&gt;
      &lt;td&gt;n/a&lt;/td&gt;
      &lt;td&gt;1.0&lt;/td&gt;
      &lt;td&gt;n/a&lt;/td&gt;
      &lt;td&gt;Service mesh control plane 1.0 is out of support.&lt;/td&gt;
    &lt;/tr&gt;
    
  &lt;/tbody&gt;
&lt;/table&gt;

&lt;br /&gt;
&lt;h2 id=&#34;supported-browsers&#34;&gt;Browser Compatibility&lt;/h2&gt;
&lt;p&gt;Kiali requires a modern web browser and supports the last two versions of Chrome, Firefox, Safari or Edge.&lt;/p&gt;
&lt;h2 id=&#34;hardware-requirements&#34;&gt;Hardware Requirements&lt;/h2&gt;
&lt;p&gt;Any machine capable of running a Kubernetes based cluster should also be able
to run Kiali.&lt;/p&gt;
&lt;p&gt;However, Kiali tends to grow in resource usage as your cluster grows. Usually
the more namespaces and workloads you have in your cluster, the more memory you
will need to allocate to Kiali.&lt;/p&gt;
&lt;h2 id=&#34;platform-specific-requirements&#34;&gt;Platform-specific requirements&lt;/h2&gt;
&lt;h3 id=&#34;openshift&#34;&gt;OpenShift&lt;/h3&gt;
&lt;p&gt;If you are installing on OpenShift, you must grant the &lt;code&gt;cluster-admin&lt;/code&gt; role to the user that is installing Kiali. If OpenShift is installed locally on the machine you are using, the following command should log you in as user &lt;code&gt;system:admin&lt;/code&gt; which has this &lt;code&gt;cluster-admin&lt;/code&gt; role:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;$ oc login -u system:admin
&lt;/code&gt;&lt;/pre&gt;

&lt;div class=&#34;alert alert-success&#34; role=&#34;alert&#34;&gt;


    For most commands listed on this documentation, the Kubernetes CLI command &lt;code&gt;kubectl&lt;/code&gt; is used to interact with the cluster environment. On OpenShift you can simply replace &lt;code&gt;kubectl&lt;/code&gt; with &lt;code&gt;oc&lt;/code&gt;, unless otherwise noted.

&lt;/div&gt;

&lt;h3 id=&#34;google-prereqs&#34;&gt;Google Cloud Private Cluster&lt;/h3&gt;
&lt;p&gt;Private clusters on Google Cloud have network restrictions. Kiali needs your cluster&amp;rsquo;s firewall to allow access from the Kubernetes API to the Istio Control Plane namespace, for both the &lt;code&gt;8080&lt;/code&gt; and &lt;code&gt;15000&lt;/code&gt; ports.&lt;/p&gt;
&lt;p&gt;To review the master access firewall rule:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;gcloud compute firewall-rules list --filter=&amp;#34;name~gke-${CLUSTER_NAME}-[0-9a-z]*-master&amp;#34;
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;To replace the existing rule and allow master access:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;gcloud compute firewall-rules update &amp;lt;firewall-rule-name&amp;gt; --allow &amp;lt;previous-ports&amp;gt;,tcp:8080,tcp:15000
&lt;/code&gt;&lt;/pre&gt;

&lt;div class=&#34;alert alert-success&#34; role=&#34;alert&#34;&gt;


    Istio deployments on private clusters also need extra ports to be opened. Check the &lt;a href=&#34;https://istio.io/latest/docs/setup/platform-setup/gke/&#34;&gt;Istio installation page for GKE&lt;/a&gt; to see all the extra installation steps for this platform.

&lt;/div&gt;


      </description>
    </item>
    
    <item>
      <title>Docs: Install via Helm</title>
      <link>https://v2-24.kiali.io/docs/installation/installation-guide/install-with-helm/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>https://v2-24.kiali.io/docs/installation/installation-guide/install-with-helm/</guid>
      <description>
        
        
        &lt;h2 id=&#34;introduction&#34;&gt;Introduction&lt;/h2&gt;
&lt;p&gt;&lt;a href=&#34;https://helm.sh/&#34;&gt;Helm&lt;/a&gt; is a popular tool that lets you manage Kubernetes
applications. Applications are defined in a package named &lt;em&gt;Helm chart&lt;/em&gt;, which
contains all of the resources needed to run an application.&lt;/p&gt;
&lt;p&gt;Kiali has a Helm Charts Repository at
&lt;a href=&#34;https://kiali.org/helm-charts&#34;&gt;https://kiali.org/helm-charts&lt;/a&gt;. Two Helm
Charts are provided:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;The &lt;code&gt;kiali-operator&lt;/code&gt; Helm Chart installs the Kiali operator which in turn
installs Kiali when you create a Kiali CR.&lt;/li&gt;
&lt;li&gt;The &lt;code&gt;kiali-server&lt;/code&gt; Helm Chart installs a standalone Kiali without the need of
the Operator nor a Kiali CR.&lt;/li&gt;
&lt;/ul&gt;


&lt;div class=&#34;alert alert-warning&#34; role=&#34;alert&#34;&gt;


    The &lt;code&gt;kiali-server&lt;/code&gt; Helm Chart does not provide all the functionality that the Kiali Operator
provides. Some features you read about in the documentation may only be available if
you install the Kiali Server using the Kiali Operator (see this &lt;a href=&#34;https://v2-24.kiali.io/docs/faq/installation/#what-is-the-difference-between-the-operator-and-the-server-helm-chart&#34;&gt;FAQ&lt;/a&gt; for details).
Therefore, although the &lt;code&gt;kiali-server&lt;/code&gt; Helm Chart
is actively maintained, it is not recommended and is only provided for convenience.
If using Helm, the recommended method is to install the &lt;code&gt;kiali-operator&lt;/code&gt; Helm Chart
and then create a Kiali CR to let the Operator deploy Kiali.

&lt;/div&gt;

&lt;p&gt;Make sure you have the &lt;code&gt;helm&lt;/code&gt; command available by following the
&lt;a href=&#34;https://helm.sh/docs/intro/install/&#34;&gt;Helm installation docs&lt;/a&gt;.&lt;/p&gt;


&lt;div class=&#34;alert alert-warning&#34; role=&#34;alert&#34;&gt;


    Helm version 3.10 is the minimum required Helm version. Older versions will not work. Newer versions have not been tested.

&lt;/div&gt;

&lt;h2 id=&#34;adding-the-kiali-helm-charts-repository&#34;&gt;Adding the Kiali Helm Charts repository&lt;/h2&gt;
&lt;p&gt;Add the Kiali Helm Charts repository with the following command:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;$ helm repo add kiali https://kiali.org/helm-charts
&lt;/code&gt;&lt;/pre&gt;

&lt;div class=&#34;alert alert-warning&#34; role=&#34;alert&#34;&gt;


    All &lt;code&gt;helm&lt;/code&gt; commands in this page assume that you added the Kiali Helm Charts repository as shown.

&lt;/div&gt;

&lt;p&gt;If you already added the repository, you may want to update your local cache to
fetch latest definitions by running:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;$ helm repo update
&lt;/code&gt;&lt;/pre&gt;&lt;h2 id=&#34;install-with-operator&#34;&gt;Installing Kiali using the Kiali operator&lt;/h2&gt;


&lt;div class=&#34;alert alert-danger&#34; role=&#34;alert&#34;&gt;


    This installation method gives Kiali access to existing namespaces as
well as namespaces created later. See &lt;a href=&#34;https://v2-24.kiali.io/docs/configuration/namespace-management/&#34;&gt;Namespace Management&lt;/a&gt; for more information.

&lt;/div&gt;

&lt;p&gt;Once you&amp;rsquo;ve added the Kiali Helm Charts repository, you can install the latest
Kiali Operator along with the latest Kiali server by running the following
command:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;$ helm install \
    --set cr.create=true \
    --set cr.namespace=istio-system \
    --set cr.spec.auth.strategy=&amp;#34;anonymous&amp;#34; \
    --namespace kiali-operator \
    --create-namespace \
    kiali-operator \
    kiali/kiali-operator
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;The &lt;code&gt;--namespace kiali-operator&lt;/code&gt; and &lt;code&gt;--create-namespace&lt;/code&gt; flags instructs to
create the &lt;code&gt;kiali-operator&lt;/code&gt; namespace (if needed), and deploy the Kiali
operator on it.  The &lt;code&gt;--set cr.create=true&lt;/code&gt; and &lt;code&gt;--set cr.namespace=istio-system&lt;/code&gt; flags instructs to create a Kiali CR in the
&lt;code&gt;istio-system&lt;/code&gt; namespace. Since the Kiali CR is created in advance, as soon as
the Kiali operator starts, it will process it to deploy Kiali. After Kiali has started,
you can access Kiali UI through &amp;lsquo;http://localhost:20001&amp;rsquo; by executing
&lt;code&gt;kubectl port-forward service/kiali -n istio-system 20001:20001&lt;/code&gt;
because of &lt;code&gt;--set cr.spec.auth.strategy=&amp;quot;anonymous&amp;quot;&lt;/code&gt;. But realize that anonymous mode will allow anyone to be able to see and use Kiali. If you wish to require users to authenticate themselves by logging into Kiali, use one of the other &lt;a href=&#34;https://v2-24.kiali.io/docs/configuration/authentication/&#34;&gt;auth strategies&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;The Kiali Operator Helm Chart is configurable. Check available options and default values by running:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;$ helm show values kiali/kiali-operator
&lt;/code&gt;&lt;/pre&gt;

&lt;div class=&#34;alert alert-success&#34; role=&#34;alert&#34;&gt;


    You can pass the &lt;code&gt;--version X.Y.Z&lt;/code&gt; flag to the &lt;code&gt;helm install&lt;/code&gt; and &lt;code&gt;helm show values&lt;/code&gt; commands to work with a specific version of Kiali.

&lt;/div&gt;

&lt;p&gt;The &lt;code&gt;kiali-operator&lt;/code&gt; Helm Chart mirrors all settings of the Kiali CR as chart
values that you can configure using regular &lt;code&gt;--set&lt;/code&gt; flags. For example, the
Kiali CR has a &lt;code&gt;spec.server.web_root&lt;/code&gt; setting which you can configure in the
&lt;code&gt;kiali-operator&lt;/code&gt; Helm Chart by passing &lt;code&gt;--set cr.spec.server.web_root=/your-path&lt;/code&gt;
to the &lt;code&gt;helm install&lt;/code&gt; command.&lt;/p&gt;
&lt;p&gt;For more information about the Kiali CR, see the &lt;a href=&#34;https://v2-24.kiali.io/docs/installation/installation-guide/creating-updating-kiali-cr/&#34;&gt;Creating and updating the Kiali CR page&lt;/a&gt;.&lt;/p&gt;
&lt;h3 id=&#34;operator-only-install&#34;&gt;Operator-Only Install&lt;/h3&gt;
&lt;p&gt;To install only the Kiali Operator, omit the &lt;code&gt;--set cr.create&lt;/code&gt; and
&lt;code&gt;--set cr.namespace&lt;/code&gt; flags of the helm command previously shown. For example:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;$ helm install \
    --namespace kiali-operator \
    --create-namespace \
    kiali-operator \
    kiali/kiali-operator
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;This will omit creation of the Kiali CR, which you will need to &lt;a href=&#34;https://v2-24.kiali.io/docs/installation/installation-guide/creating-updating-kiali-cr/&#34;&gt;create later to install Kiali Server&lt;/a&gt;.  This
option is good if you plan to do large customizations to the installation.&lt;/p&gt;
&lt;h3 id=&#34;installing-multiple-instances-of-kiali&#34;&gt;Installing Multiple Instances of Kiali&lt;/h3&gt;
&lt;p&gt;By installing a single Kiali operator in your cluster, you can install multiple instances of Kiali by simply creating multiple Kiali CRs. For example, if you have two Istio control planes in namespaces &lt;code&gt;istio-system&lt;/code&gt; and &lt;code&gt;istio-system2&lt;/code&gt;, you can create a Kiali CR in each of those namespaces to install a Kiali instance in each control plane.&lt;/p&gt;
&lt;p&gt;If you wish to install multiple Kiali instances in the same namespace, or if you need the Kiali instance to have different resource names than the default of &lt;code&gt;kiali&lt;/code&gt;, you can specify &lt;code&gt;spec.deployment.instance_name&lt;/code&gt; in your Kiali CR. The value for that setting will be used to create a unique instance of Kiali using that instance name rather than the default &lt;code&gt;kiali&lt;/code&gt;. One use-case for this is to be able to have unique Kiali service names across multiple Kiali instances in order to be able to use certain routers/load balancers that require unique service names.&lt;/p&gt;


&lt;div class=&#34;alert alert-warning&#34; role=&#34;alert&#34;&gt;


    Since the &lt;code&gt;spec.deployment.instance_name&lt;/code&gt; field is used for the Kiali resource names, including the Service name, you must ensure the value you assign this setting follows the &lt;a href=&#34;https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#dns-label-names&#34;&gt;Kubernetes DNS Label Name rules&lt;/a&gt;. If it does not, the operator will abort the installation. And note that because Kiali uses this as a prefix (it may append additional characters for some resource names) its length is limited to 40 characters.

&lt;/div&gt;

&lt;h2 id=&#34;standalone-kiali-installation&#34;&gt;Standalone Kiali installation&lt;/h2&gt;
&lt;p&gt;To install the Kiali Server without the operator, use the &lt;code&gt;kiali-server&lt;/code&gt; Helm Chart:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;$ helm install \
    --namespace istio-system \
    kiali-server \
    kiali/kiali-server
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;The &lt;code&gt;kiali-server&lt;/code&gt; Helm Chart mirrors all settings of the Kiali CR as chart
values that you can configure using regular &lt;code&gt;--set&lt;/code&gt; flags. For example, the
Kiali CR has a &lt;code&gt;spec.server.web_fqdn&lt;/code&gt; setting which you can configure in the
&lt;code&gt;kiali-server&lt;/code&gt; Helm Chart by passing the &lt;code&gt;--set server.web_fqdn&lt;/code&gt; flag as
follows:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;$ helm install \
    --namespace istio-system \
    --set server.web_fqdn=example.com \
    kiali-server \
    kiali/kiali-server
&lt;/code&gt;&lt;/pre&gt;&lt;h2 id=&#34;upgrading-helm-installations&#34;&gt;Upgrading Helm installations&lt;/h2&gt;
&lt;p&gt;If you want to upgrade to a newer Kiali version (or downgrade to older
versions), you can use the regular &lt;code&gt;helm upgrade&lt;/code&gt; commands. For example, the
following command should upgrade the Kiali Operator to the latest version:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;$ helm upgrade \
    --namespace kiali-operator \
    --reuse-values \
    kiali-operator \
    kiali/kiali-operator
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;WARNING: No migration paths are provided. However, Kiali is a stateless
application and if the &lt;code&gt;helm upgrade&lt;/code&gt; command fails, please uninstall the
previous version and then install the new desired version.&lt;/p&gt;


&lt;div class=&#34;alert alert-success&#34; role=&#34;alert&#34;&gt;


    By upgrading the Kiali Operator, existent Kiali Server installations
managed with a Kiali CR will also be upgraded once the updated operator starts.

&lt;/div&gt;

&lt;h2 id=&#34;managing-installation-config&#34;&gt;Managing configuration of Helm installations&lt;/h2&gt;
&lt;p&gt;After installing either the &lt;code&gt;kiali-operator&lt;/code&gt; or the &lt;code&gt;kiali-server&lt;/code&gt; Helm Charts,
you may be tempted to manually modify the created resources to modify the
installation. However, we recommend using &lt;code&gt;helm upgrade&lt;/code&gt; to update your
installation.&lt;/p&gt;
&lt;p&gt;For example, assuming you have the following installation:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;$ helm list -n kiali-operator
NAME            NAMESPACE       REVISION        UPDATED                                 STATUS          CHART                   APP VERSION
kiali-operator  kiali-operator  1               2021-09-14 18:00:45.320351026 -0500 CDT deployed        kiali-operator-1.40.0   v1.40.0
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Notice that the current installation is version &lt;code&gt;1.40.0&lt;/code&gt; of the
&lt;code&gt;kiali-operator&lt;/code&gt;.  Let&amp;rsquo;s assume you want to use your own mirrors of the Kiali
Operator container images. You can update your installation with the following
command:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;$ helm upgrade \
    --namespace kiali-operator \
    --reuse-values \
    --set image.repo=your_mirror_registry_url/owner/kiali-operator-repo \
    --set image.tag=your_mirror_tag \
    --version 1.40.0 \
    kiali-operator \
    kiali/kiali-operator
&lt;/code&gt;&lt;/pre&gt;

&lt;div class=&#34;alert alert-warning&#34; role=&#34;alert&#34;&gt;


    Make sure that you specify the &lt;code&gt;--reuse-values&lt;/code&gt; flag to take the
configuration of your current installation. Then, you only need to specify the
new settings you want to change using &lt;code&gt;--set&lt;/code&gt; flags.

&lt;/div&gt;



&lt;div class=&#34;alert alert-warning&#34; role=&#34;alert&#34;&gt;


    Make sure that you specify the &lt;code&gt;--version X.Y.Z&lt;/code&gt; flag with the
version of your current installation. Otherwise, you may end up upgrading to a
new version.

&lt;/div&gt;

&lt;h2 id=&#34;uninstalling&#34;&gt;Uninstalling&lt;/h2&gt;
&lt;h3 id=&#34;removing-the-kiali-operator-and-managed-kialis&#34;&gt;Removing the Kiali operator and managed Kialis&lt;/h3&gt;
&lt;p&gt;If you used the &lt;code&gt;kiali-operator&lt;/code&gt; Helm chart, first you must ensure that all
Kiali CRs are deleted. For example, the following command will agressively
delete all Kiali CRs in your cluster:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;$ kubectl delete kiali --all --all-namespaces
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;The previous command may take some time to finish while the Kiali operator
removes all Kiali installations.&lt;/p&gt;
&lt;p&gt;Then, remove the Kiali operator using a standard &lt;code&gt;helm uninstall&lt;/code&gt; command. For
example:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;$ helm uninstall --namespace kiali-operator kiali-operator
$ kubectl delete crd kialis.kiali.io
&lt;/code&gt;&lt;/pre&gt;

&lt;div class=&#34;alert alert-warning&#34; role=&#34;alert&#34;&gt;


    You have to manually delete the &lt;code&gt;kialis.kiali.io&lt;/code&gt; CRD because
&lt;a href=&#34;https://helm.sh/docs/topics/charts/#limitations-on-crds&#34;&gt;Helm won&amp;rsquo;t delete it.&lt;/a&gt;

&lt;/div&gt;



&lt;div class=&#34;alert alert-warning&#34; role=&#34;alert&#34;&gt;


    If you fail to delete the Kiali CRs before uninstalling the operator,
a proper cleanup may not be done.

&lt;/div&gt;

&lt;h4 id=&#34;known-problem-uninstall-hangs-unable-to-delete-the-kiali-cr&#34;&gt;Known problem: uninstall hangs (unable to delete the Kiali CR)&lt;/h4&gt;
&lt;p&gt;Typically this happens if not all Kiali CRs are deleted prior to uninstalling
the operator. To force deletion of a Kiali CR, you need to clear its finalizer.
For example:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;$ kubectl patch kiali kiali -n istio-system -p &amp;#39;{&amp;#34;metadata&amp;#34;:{&amp;#34;finalizers&amp;#34;: []}}&amp;#39; --type=merge
&lt;/code&gt;&lt;/pre&gt;

&lt;div class=&#34;alert alert-danger&#34; role=&#34;alert&#34;&gt;


    This forces deletion of the Kiali CR and will skip uninstallation of
the Kiali Server. Remnants of the Kiali Server may still exist in your cluster
which you will need to manually remove.

&lt;/div&gt;

&lt;h3 id=&#34;removing-standalone-kiali&#34;&gt;Removing standalone Kiali&lt;/h3&gt;
&lt;p&gt;If you installed a standalone Kiali by using the &lt;code&gt;kiali-server&lt;/code&gt; Helm chart, use
the standard &lt;code&gt;helm uninstall&lt;/code&gt; commands. For example:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;$ helm uninstall --namespace istio-system kiali-server
&lt;/code&gt;&lt;/pre&gt;
      </description>
    </item>
    
    <item>
      <title>Docs: Install via OperatorHub</title>
      <link>https://v2-24.kiali.io/docs/installation/installation-guide/installing-with-operatorhub/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>https://v2-24.kiali.io/docs/installation/installation-guide/installing-with-operatorhub/</guid>
      <description>
        
        
        &lt;h2 id=&#34;introduction&#34;&gt;Introduction&lt;/h2&gt;
&lt;p&gt;The &lt;a href=&#34;https://operatorhub.io/&#34;&gt;OperatorHub&lt;/a&gt; is a website that contains a
catalog of &lt;a href=&#34;https://kubernetes.io/docs/concepts/extend-kubernetes/operator/&#34;&gt;Kubernetes Operators&lt;/a&gt;.
Its aim is to be the central location to find Operators.&lt;/p&gt;
&lt;p&gt;The OperatorHub relies in the &lt;a href=&#34;https://github.com/operator-framework/operator-lifecycle-manager&#34;&gt;Operator Lifecycle Manager (OLM)&lt;/a&gt;
to install, manage and update Operators on any Kubernetes cluster.&lt;/p&gt;
&lt;p&gt;The Kiali Operator is being published to the OperatorHub. So, you can use the
OLM to install and manage the Kiali Operator installation.&lt;/p&gt;
&lt;h2 id=&#34;installing-the-kiali-operator-using-the-olm&#34;&gt;Installing the Kiali Operator using the OLM&lt;/h2&gt;
&lt;p&gt;Go to the Kiali Operator page in the OperatorHub: &lt;a href=&#34;https://operatorhub.io/operator/kiali&#34;&gt;https://operatorhub.io/operator/kiali&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;You will see an &lt;em&gt;Install&lt;/em&gt; button at the right of the page. Press it and you
will be presented with the installation instructions. Follow these instructions
to install and manage the Kiali Operator installation using OLM.&lt;/p&gt;
&lt;p&gt;Afterwards, you can &lt;a href=&#34;https://v2-24.kiali.io/docs/installation/installation-guide/creating-updating-kiali-cr/&#34;&gt;create the Kiali CR&lt;/a&gt; to install Kiali.&lt;/p&gt;
&lt;h2 id=&#34;installing-the-kiali-operator-in-openshift&#34;&gt;Installing the Kiali Operator in OpenShift&lt;/h2&gt;
&lt;p&gt;The OperatorHub is bundled in the OpenShift console. To install the Kiali
Operator, simply go to the OperatorHub in the OpenShift console and search for
the Kiali Operator. Then, click on the &lt;em&gt;Install&lt;/em&gt; button and follow the
instruction on the screen.&lt;/p&gt;
&lt;p&gt;Afterwards, you can &lt;a href=&#34;https://v2-24.kiali.io/docs/installation/installation-guide/creating-updating-kiali-cr/&#34;&gt;create the Kiali CR&lt;/a&gt; to install Kiali.&lt;/p&gt;

      </description>
    </item>
    
    <item>
      <title>Docs: The Kiali CR</title>
      <link>https://v2-24.kiali.io/docs/installation/installation-guide/creating-updating-kiali-cr/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>https://v2-24.kiali.io/docs/installation/installation-guide/creating-updating-kiali-cr/</guid>
      <description>
        
        
        &lt;p&gt;The Kiali Operator watches the &lt;em&gt;Kiali Custom Resource&lt;/em&gt; (&lt;a href=&#34;https://v2-24.kiali.io/docs/configuration/kialis.kiali.io&#34;&gt;Kiali CR&lt;/a&gt;), a custom resource that  contains the Kiali Server deployment configuration. Creating, updating, or removing a
Kiali CR will trigger the Kiali Operator to install, update, or remove Kiali.&lt;/p&gt;


&lt;div class=&#34;alert alert-success&#34; role=&#34;alert&#34;&gt;


    &lt;p&gt;If you want the operator to re-process the Kiali CR (called &amp;ldquo;reconciliation&amp;rdquo;) without having to change the Kiali CR&amp;rsquo;s &lt;code&gt;spec&lt;/code&gt; fields, you can modify any annotation on the Kiali CR itself. This will trigger the operator to reconcile the current state of the cluster with the desired state defined in the Kiali CR, modifying cluster resources if necessary to get them into their desired state. Here is an example illustrating how you can modify an annotation on a Kiali CR:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;$ kubectl annotate kiali my-kiali -n istio-system --overwrite kiali.io/reconcile=&amp;#34;$(date)&amp;#34;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;The Operator provides comprehensive defaults for all properties of the Kiali
CR. Hence, the minimal Kiali CR does not have a &lt;code&gt;spec&lt;/code&gt;:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-yaml&#34; data-lang=&#34;yaml&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;apiVersion&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;kiali.io/v1alpha1&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;kind&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;Kiali&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;metadata&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;  &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;name&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;kiali&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Assuming you saved the previous YAML to a file named &lt;code&gt;my-kiali-cr.yaml&lt;/code&gt;, and that you are
installing Kiali in the same default namespace as Istio, create the resource with the following command:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;$ kubectl apply -f my-kiali-cr.yaml -n istio-system
&lt;/code&gt;&lt;/pre&gt;

&lt;div class=&#34;alert alert-success&#34; role=&#34;alert&#34;&gt;


    Often, but not always, Kiali is installed in the same namespace as Istio, thus the Kiali CR is also created in the Istio namespace.

&lt;/div&gt;

&lt;p&gt;Once created, the Kiali Operator should shortly be notified and will process the resource,  performing the Kiali
installation. You can wait for the Kiali Operator to finish the reconcilation by using the standard &lt;code&gt;kubectl wait&lt;/code&gt;
command and ask for it to wait for the Kiali CR to achieve the condition of &lt;code&gt;Successful&lt;/code&gt;. For example:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;kubectl wait --for=condition=Successful kiali kiali -n istio-system
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;You can check the installation progress by inspecting the &lt;code&gt;status&lt;/code&gt; attribute of the created Kiali CR:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;$ kubectl describe kiali kiali -n istio-system
Name:         kiali
Namespace:    istio-system
Labels:       &amp;lt;none&amp;gt;
Annotations:  &amp;lt;none&amp;gt;
API Version:  kiali.io/v1alpha1
Kind:         Kiali

  (...some output is removed...)

Status:
  Conditions:
    Last Transition Time:  2021-09-15T17:17:40Z
    Message:               Running reconciliation
    Reason:                Running
    Status:                True
    Type:                  Running
  Deployment:
    Instance Name:  kiali
    Namespace:      istio-system
  Environment:
    Is Kubernetes:       true
    Kubernetes Version:  1.27.3
    Operator Version:    v1.89.0
  Progress:
    Duration:    0:00:16
    Message:     5. Creating core resources
  Spec Version:  default
Events:        &amp;lt;none&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;div class=&#34;alert alert-warning&#34; role=&#34;alert&#34;&gt;


    &lt;em&gt;Never&lt;/em&gt; manually edit resources created by the Kiali Operator; only edit the Kiali CR.

&lt;/div&gt;

&lt;p&gt;You may want to check the &lt;a href=&#34;https://v2-24.kiali.io/docs/installation/installation-guide/example-install/&#34;&gt;example install page&lt;/a&gt; to see some examples where the Kiali CR has a &lt;code&gt;spec&lt;/code&gt; and to better
understand its structure. Most available attributes of the Kiali CR are
described in the pages of the &lt;a href=&#34;https://v2-24.kiali.io/docs/installation/&#34;&gt;Installation&lt;/a&gt; and
&lt;a href=&#34;https://v2-24.kiali.io/docs/configuration/&#34;&gt;Configuration&lt;/a&gt; sections of the
documentation. For a complete list, see the &lt;a href=&#34;https://v2-24.kiali.io/docs/configuration/kialis.kiali.io&#34;&gt;Kiali CR Reference&lt;/a&gt;.&lt;/p&gt;


&lt;div class=&#34;alert alert-danger&#34; role=&#34;alert&#34;&gt;


    It is important to understand the &lt;code&gt;spec.deployment.cluster_wide_access&lt;/code&gt; setting in the CR. See the
&lt;a href=&#34;https://v2-24.kiali.io/docs/configuration/namespace-management/&#34;&gt;Namespace Management page&lt;/a&gt;
for more information.

&lt;/div&gt;

&lt;p&gt;Once you created a Kiali CR, you can manage your Kiali installation by editing
the resource using the usual Kubernetes tools:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;$ kubectl edit kiali kiali -n istio-system
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;To confirm your Kiali CR is valid, you can utilize the &lt;a href=&#34;https://v2-24.kiali.io/docs/configuration/kialis.kiali.io/#validating-your-kiali-cr&#34;&gt;Kiali CR validation tool&lt;/a&gt;.&lt;/p&gt;

      </description>
    </item>
    
    <item>
      <title>Docs: The OSSMConsole CR</title>
      <link>https://v2-24.kiali.io/docs/installation/installation-guide/creating-updating-ossmconsole-cr/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>https://v2-24.kiali.io/docs/installation/installation-guide/creating-updating-ossmconsole-cr/</guid>
      <description>
        
        
        &lt;p&gt;OpenShift ServiceMesh Console (aka OSSMC) provides a Kiali integration with the OpenShift Console; in other words it provides Kiali functionality within the context of the OpenShift Console. OSSMC is applicable only within OpenShift environments.&lt;/p&gt;
&lt;p&gt;The main component of OSSMC is a plugin that gets installed inside the OpenShift Console. Prior to installing this plugin, you are required to have already installed the Kiali Operator and Kiali Server in your OpenShift environment. Please the &lt;a href=&#34;https://v2-24.kiali.io/docs/installation/installation-guide/&#34;&gt;Installation Guide&lt;/a&gt; for details.&lt;/p&gt;


&lt;div class=&#34;alert alert-warning&#34; role=&#34;alert&#34;&gt;


    There are no helm charts available to install OSSMC. You must utilize the Kiali Operator to install it. Installing the Kiali Operator on OpenShift is very easy due to the Operator Lifecycle Manager (OLM) functionality that comes with OpenShift out-of-box. Simply elect to install the Kiali Operator from the Red Hat or Community Catalog from the OperatorHub page in OpenShift Console.

&lt;/div&gt;

&lt;p&gt;The Kiali Operator watches the &lt;em&gt;OSSMConsole Custom Resource&lt;/em&gt; (&lt;a href=&#34;https://v2-24.kiali.io/docs/configuration/ossmconsoles.kiali.io&#34;&gt;OSSMConsole CR&lt;/a&gt;), a custom resource that contains the OSSMC deployment configuration. Creating, updating, or removing a OSSMConsole CR will trigger the Kiali Operator to install, update, or remove OSSMC.&lt;/p&gt;


&lt;div class=&#34;alert alert-warning&#34; role=&#34;alert&#34;&gt;


    &lt;em&gt;Never&lt;/em&gt; manually edit resources created by the Kiali Operator, only edit the OSSMConsole CR.

&lt;/div&gt;

&lt;h2 id=&#34;creating-the-ossmconsole-cr-to-install-the-ossmc-plugin&#34;&gt;Creating the OSSMConsole CR to Install the OSSMC Plugin&lt;/h2&gt;
&lt;p&gt;With the Kiali Operator and Kial Server installed and running, you can install the OSSMC plugin in one of two ways - either via the OpenShift Console or via the &amp;ldquo;oc&amp;rdquo; CLI. Both methods are described below. You choose the method you want to use.&lt;/p&gt;


&lt;div class=&#34;alert alert-warning&#34; role=&#34;alert&#34;&gt;


    You should specify the &lt;code&gt;spec.version&lt;/code&gt; field of the OSSMConsole CR, and its value must be the same version as that of the Kiali Server (i.e. it must match the &lt;code&gt;spec.version&lt;/code&gt; of the Kiali Server&amp;rsquo;s Kiali CR). Normally, you can just set &lt;code&gt;spec.version&lt;/code&gt; to &lt;code&gt;default&lt;/code&gt; which tells the Kiali Operator to install OSSMC whose version is the same as that of the operator itself. Alternatively, you may specify one of the
&lt;a href=&#34;https://github.com/kiali/kiali-operator/blob/master/playbooks/ossmconsole-default-supported-images.yml&#34;&gt;supported versions&lt;/a&gt; in the format &lt;code&gt;vX.Y&lt;/code&gt;.

&lt;/div&gt;

&lt;h3 id=&#34;installing-via-openshift-console&#34;&gt;Installing via OpenShift Console&lt;/h3&gt;
&lt;p&gt;From the Kiali Operator details page in the OpenShift Console, create an instance of the &amp;ldquo;OpenShift Service Mesh Console&amp;rdquo; resource. Accept the defaults on the installation form and press &amp;ldquo;Create&amp;rdquo;.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://v2-24.kiali.io/images/documentation/installation/installation-guide/01-ui-install-cr.png&#34; alt=&#34;Install Plugin&#34;&gt;&lt;/p&gt;
&lt;h3 id=&#34;installing-via-oc-cli&#34;&gt;Installing via &amp;ldquo;oc&amp;rdquo; CLI&lt;/h3&gt;
&lt;p&gt;To instruct the Kiali Operator to install the plugin, simply create a small OSSMConsole CR. A minimal CR can be created like this:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;cat &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;lt;&amp;lt;EOM | oc apply -f -
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;apiVersion: kiali.io/v1alpha1
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;kind: OSSMConsole
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;metadata:
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;  namespace: openshift-operators
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;  name: ossmconsole
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;spec:
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;  version: default
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;EOM&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Note that the operator will deploy the plugin resources in the same namespace where you create this OSSMConsole CR - in this case &lt;code&gt;openshift-operators&lt;/code&gt; but you can create the CR in any namespace.&lt;/p&gt;
&lt;p&gt;For a complete list of configuration options available within the OSSMConsole CR, see the &lt;a href=&#34;https://v2-24.kiali.io/docs/configuration/ossmconsoles.kiali.io&#34;&gt;OSSMConsole CR Reference&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;To confirm your OSSMConsole CR is valid, you can utilize the &lt;a href=&#34;https://v2-24.kiali.io/docs/configuration/ossmconsoles.kiali.io/#validating-your-ossmconsole-cr&#34;&gt;OSSMConsole CR validation tool&lt;/a&gt;.&lt;/p&gt;
&lt;h3 id=&#34;installation-status&#34;&gt;Installation Status&lt;/h3&gt;
&lt;p&gt;After the plugin is installed, you can see the &amp;ldquo;OSSMConsole&amp;rdquo; resource that was created in the OpenShift Console UI. Within the operator details page in the OpenShift Console UI, select the &lt;em&gt;OpenShift Service Mesh Console&lt;/em&gt; tab to view the resource that was created and its status. The CR status field will provide you with any error messages should the deployment of OSSMC fail.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://v2-24.kiali.io/images/documentation/installation/installation-guide/02-ui-installed-cr.png&#34; alt=&#34;Installed Plugin&#34;&gt;&lt;/p&gt;
&lt;p&gt;Once the operator has finished processing the OSSMConsole CR, you must then wait for the OpenShift Console to load and initialize the plugin. This may take a minute or two. You will know when the plugin is ready when the OpenShift Console pops up this message - when you see this message, refresh the browser window to reload the OpenShift Console:&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://v2-24.kiali.io/images/documentation/installation/installation-guide/03-ui-installed-cr-plugin-ready.png&#34; alt=&#34;Plugin Ready&#34;&gt;&lt;/p&gt;
&lt;h2 id=&#34;uninstalling-ossmc&#34;&gt;Uninstalling OSSMC&lt;/h2&gt;
&lt;p&gt;This section will describe how to uninstall the OpenShift Service Mesh Console plugin. You can uninstall the plugin in one of two ways - either via the OpenShift Console or via the &amp;ldquo;oc&amp;rdquo; CLI. Both methods are described in the sections below. You choose the method you want to use.&lt;/p&gt;


&lt;div class=&#34;alert alert-warning&#34; role=&#34;alert&#34;&gt;


    If you intend to also uninstall the Kiali Operator, it is very important to first uninstall the OSSMConsole CR and then uninstall the operator. If you uninstall the operator before ensuring the OSSMConsole CR is deleted then you may have difficulty removing that CR and its namespace. If this occurs then you must manually remove the finalizer on the CR in order to delete it and its namespace. You can do this via: &lt;code&gt;oc patch ossmconsoles &amp;lt;CR name&amp;gt; -n &amp;lt;CR namespace&amp;gt; -p &#39;{&amp;quot;metadata&amp;quot;:{&amp;quot;finalizers&amp;quot;: []}}&#39; --type=merge &lt;/code&gt;

&lt;/div&gt;

&lt;h3 id=&#34;uninstalling-via-openshift-console&#34;&gt;Uninstalling via OpenShift Console&lt;/h3&gt;
&lt;p&gt;Remove the OSSMConsole CR by navigating to the operator details page in the OpenShift Console UI. From the operator details page, select the &lt;em&gt;OpenShift Service Mesh Console&lt;/em&gt; tab and then select the Delete option in the kebab menu.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://v2-24.kiali.io/images/documentation/installation/installation-guide/04-ui-uninstall-cr.png&#34; alt=&#34;Uninstall Plugin&#34;&gt;&lt;/p&gt;
&lt;h3 id=&#34;uninstalling-via-oc-cli&#34;&gt;Uninstalling via &amp;ldquo;oc&amp;rdquo; CLI&lt;/h3&gt;
&lt;p&gt;Remove the OSSMConsole CR via &lt;code&gt;oc delete ossmconsoles &amp;lt;CR name&amp;gt; -n &amp;lt;CR namespace&amp;gt;&lt;/code&gt;. To make sure any and all CRs are deleted from any and all namespaces, you can run this command:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;for&lt;/span&gt; r in &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;$(&lt;/span&gt;oc get ossmconsoles --ignore-not-found&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#204a87&#34;&gt;true&lt;/span&gt; --all-namespaces -o custom-columns&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;=&lt;/span&gt;NS:.metadata.namespace,N:.metadata.name --no-headers &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;|&lt;/span&gt; sed &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#39;s/  */:/g&amp;#39;&lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;)&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;;&lt;/span&gt; &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;do&lt;/span&gt; oc delete ossmconsoles -n &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;$(&lt;/span&gt;&lt;span style=&#34;color:#204a87&#34;&gt;echo&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;$r&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;|&lt;/span&gt;cut -d: -f1&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;)&lt;/span&gt; &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;$(&lt;/span&gt;&lt;span style=&#34;color:#204a87&#34;&gt;echo&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;$r&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;|&lt;/span&gt;cut -d: -f2&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;)&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;;&lt;/span&gt; &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;done&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
      </description>
    </item>
    
    <item>
      <title>Docs: Accessing Kiali</title>
      <link>https://v2-24.kiali.io/docs/installation/installation-guide/accessing-kiali/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>https://v2-24.kiali.io/docs/installation/installation-guide/accessing-kiali/</guid>
      <description>
        
        
        &lt;h2 id=&#34;introduction&#34;&gt;Introduction&lt;/h2&gt;
&lt;p&gt;After Kiali is succesfully installed you will need to make Kiali accessible to users. This page describes some popular methods of exposing Kiali for use.&lt;/p&gt;
&lt;p&gt;If exposing Kiali in a custom way, you may need to &lt;a href=&#34;#route-configs&#34;&gt;set some configurations&lt;/a&gt;
to make Kiali aware of how users will access Kiali.&lt;/p&gt;


&lt;div class=&#34;alert alert-warning&#34; role=&#34;alert&#34;&gt;


    The examples on this page assume that you followed the &lt;a href=&#34;https://v2-24.kiali.io/docs/installation/installation-guide/&#34;&gt;Installation guide&lt;/a&gt; to install Kiali, and that you
installed Kiali in the &lt;code&gt;istio-system&lt;/code&gt; namespace.

&lt;/div&gt;

&lt;h2 id=&#34;accessing-kiali-using-port-forwarding&#34;&gt;Accessing Kiali using port forwarding&lt;/h2&gt;


&lt;div class=&#34;alert alert-success&#34; role=&#34;alert&#34;&gt;


    This method should work in any kind of Kubernetes cluster.

&lt;/div&gt;

&lt;p&gt;You can use port-forwarding to access Kiali by running any of these commands:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;# If you have oc command line tool
oc port-forward svc/kiali 20001:20001 -n istio-system
# If you have kubectl command line tool
kubectl port-forward svc/kiali 20001:20001 -n istio-system
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;These commands will block. Access Kiali by visiting &lt;code&gt;https://localhost:20001/&lt;/code&gt; in
your preferred web browser.&lt;/p&gt;


&lt;div class=&#34;alert alert-danger&#34; role=&#34;alert&#34;&gt;


    Please note that this method exposes Kiali &lt;em&gt;only&lt;/em&gt; to the local machine, no external users. You must
have the necessary privileges to perform port forwarding.

&lt;/div&gt;

&lt;h2 id=&#34;ingress-access&#34;&gt;Accessing Kiali through an Ingress&lt;/h2&gt;
&lt;p&gt;You can configure Kiali to be installed with an
&lt;a href=&#34;https://github.com/kiali/kiali-operator/blob/master/roles/default/kiali-deploy/templates/kubernetes/ingress.yaml&#34;&gt;Ingress resource&lt;/a&gt;
defined, allowing you to access
the Kiali UI through the Ingress. By default, an Ingress will not be created. You can
enable a simple Ingress by setting &lt;code&gt;spec.deployment.ingress.enabled&lt;/code&gt; to &lt;code&gt;true&lt;/code&gt; in the Kiali
CR (a similar setting for the server Helm chart is available if you elect to install Kiali
via Helm as opposed to the Kiali Operator).&lt;/p&gt;
&lt;p&gt;Exposing Kiali externally through this &lt;code&gt;spec.deployment.ingress&lt;/code&gt; mechanism is a
convenient way of exposing Kiali externally but it will not necessarily work or
be the best way to do it because the way in which you should expose Kiali
externally will be highly dependent on your specific cluster environment and
how services are exposed generally for that environment.&lt;/p&gt;


&lt;div class=&#34;alert alert-info&#34; role=&#34;alert&#34;&gt;


    When installing on an OpenShift cluster, an OpenShift Route will be installed (not an Ingress).
This Route &lt;em&gt;will&lt;/em&gt; be installed by default unless you explicitly
disable it via &lt;code&gt;spec.deployment.ingress.enabled: false&lt;/code&gt;. Note that the Route is required
if you configure Kiali to use the auth strategy of &lt;code&gt;openshift&lt;/code&gt; (which is the default
auth strategy Kiali will use when installed on OpenShift).

&lt;/div&gt;

&lt;p&gt;The default Ingress that is created will be configured for a typical NGinx implementation. If you have your own
Ingress implementation you want to use, you can override the default configuration through
the settings &lt;code&gt;spec.deployment.ingress.override_yaml&lt;/code&gt; and &lt;code&gt;spec.deployment.ingress.class_name&lt;/code&gt;.
More details on customizing the Ingress can be found below.&lt;/p&gt;
&lt;p&gt;The Ingress IP or domain name should then be used to access the Kiali UI. To find your Ingress IP or domain name, as per
&lt;a href=&#34;https://minikube.sigs.k8s.io/docs/start/#Ingress&#34;&gt;the minikube documentation&lt;/a&gt;,
try the following command (though this may not work if using Minikube without the ingress addon):&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;kubectl get ingress kiali -n istio-system -o jsonpath=&amp;#39;{.status.loadBalancer.ingress[0].ip}&amp;#39;
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;If it doesn&amp;rsquo;t work, unfortunately, it depends on how and where you had setup
your cluster. There are several Ingress controllers available and some cloud
providers have their own controller or preferred exposure method. Check
the documentation of your cloud provider. You may need to customize the
pre-installed Ingress rule or expose Kiali using a different method.&lt;/p&gt;
&lt;h3 id=&#34;customizing-the-ingress-resource&#34;&gt;Customizing the Ingress resource&lt;/h3&gt;
&lt;p&gt;The created Ingress resource will route traffic to Kiali regardless of the domain in the URL.
You may need a more specific Ingress resource that routes traffic
to Kiali only on a specific domain or path. To do this, you can &lt;a href=&#34;#route-configs&#34;&gt;specify route settings&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Alternatively, and for more advanced Ingress configurations, you can provide your own
Ingress declaration in the Kiali CR. For example:&lt;/p&gt;


&lt;div class=&#34;alert alert-info&#34; role=&#34;alert&#34;&gt;


    When installing on an OpenShift cluster, the &lt;code&gt;deployment.ingress.override_yaml&lt;/code&gt; will be applied
to the created Route. The &lt;code&gt;deployment.ingress.class_name&lt;/code&gt; is ignored on OpenShift.

&lt;/div&gt;

&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-yaml&#34; data-lang=&#34;yaml&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;spec&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;  &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;deployment&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;    &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;ingress&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;      &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;class_name&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;nginx&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;      &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;enabled&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;true&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;      &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;override_yaml&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;        &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;metadata&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;          &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;annotations&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;            &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;nginx.ingress.kubernetes.io/secure-backends&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;true&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;            &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;nginx.ingress.kubernetes.io/backend-protocol&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;HTTPS&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;        &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;spec&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;          &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;rules&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;            &lt;/span&gt;- &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;http&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;                &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;paths&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;                  &lt;/span&gt;- &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;path&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;/kiali&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;                    &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;backend&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;                      &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;serviceName&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;kiali&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;                      &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;servicePort&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#0000cf;font-weight:bold&#34;&gt;20001&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;accessing-kiali-in-minikube&#34;&gt;Accessing Kiali in Minikube&lt;/h2&gt;
&lt;p&gt;If you &lt;a href=&#34;https://minikube.sigs.k8s.io/docs/start/#Ingress&#34;&gt;enabled the Ingress addon&lt;/a&gt;,
the default Ingress resource created by the installation (mentioned in the previous section) should be enough to access
Kiali. The following command should open Kiali in your default web browser:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;xdg-open https://$(minikube ip)/kiali
&lt;/code&gt;&lt;/pre&gt;&lt;h2 id=&#34;accessing-kiali-through-a-loadbalancer-or-a-nodeport&#34;&gt;Accessing Kiali through a LoadBalancer or a NodePort&lt;/h2&gt;
&lt;p&gt;By default, the Kiali service is created with the &lt;code&gt;ClusterIP&lt;/code&gt; type. To use a
&lt;code&gt;LoadBalancer&lt;/code&gt; or a &lt;code&gt;NodePort&lt;/code&gt;, you can change the service type in the Kiali CR as
follows:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-yaml&#34; data-lang=&#34;yaml&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;spec&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;  &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;deployment&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;    &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;service_type&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;LoadBalancer&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Once the Kiali operator updates the installation, you should be able to use
the &lt;code&gt;kubectl get svc -n istio-system kiali&lt;/code&gt; command to retrieve the external
address (or port) to access Kiali. For example, in the following output Kiali
is assigned the IP &lt;code&gt;192.168.49.201&lt;/code&gt;, which means that you can access Kiali by
visiting &lt;code&gt;http://192.168.49.201:20001&lt;/code&gt; in a browser:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;NAME    TYPE           CLUSTER-IP       EXTERNAL-IP      PORT(S)                          AGE
kiali   LoadBalancer   10.105.236.127   192.168.49.201   20001:31966/TCP,9090:30128/TCP   34d
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;If you are using the &lt;code&gt;LoadBalancer&lt;/code&gt; service type to directly expose the Kiali
service, you may want to check the available options for the
&lt;a href=&#34;https://v2-24.kiali.io/docs/installation/deployment-options/#http-server&#34;&gt;HTTP Server&lt;/a&gt; and
&lt;a href=&#34;https://v2-24.kiali.io/docs/installation/deployment-options/#metrics-server&#34;&gt;Metrics server&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id=&#34;accessing-kiali-through-an-istio-ingress-gateway&#34;&gt;Accessing Kiali through an Istio Ingress Gateway&lt;/h2&gt;
&lt;p&gt;If you want to take advantage of Istio&amp;rsquo;s infrastructure, you can expose Kiali
using an Istio Ingress Gateway. The Istio documentation provides a
&lt;a href=&#34;https://istio.io/latest/docs/tasks/observability/gateways/&#34;&gt;good guide explaining how to expose the sample add-ons&lt;/a&gt;.
Even if the Istio guide is focused on the sample add-ons, the steps are the same to expose a Kiali
installed using this &lt;a href=&#34;https://v2-24.kiali.io/docs/installation/installation-guide/&#34;&gt;Installation guide&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id=&#34;accessing-kiali-in-openshift&#34;&gt;Accessing Kiali in OpenShift&lt;/h2&gt;
&lt;p&gt;By default, Kiali is exposed through a Route if installed on OpenShift. The following command
should open Kiali in your default web browser:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;xdg-open https://$(oc get routes -n istio-system kiali -o jsonpath=&amp;#39;{.spec.host}&amp;#39;)/console
&lt;/code&gt;&lt;/pre&gt;&lt;h2 id=&#34;route-configs&#34;&gt;Specifying route settings&lt;/h2&gt;
&lt;p&gt;If you are using your own exposure method or if you are using one of
the methods mentioned in this page, you may need to configure the route that is
being used to access Kiali.&lt;/p&gt;
&lt;p&gt;In the Kiali CR, route settings are broken in several attributes. For example,
to specify that Kiali is being accessed under the
&lt;code&gt;https://apps.example.com:8080/dashboards/kiali&lt;/code&gt; URI, you would need to set the
following:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-yaml&#34; data-lang=&#34;yaml&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;spec&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;  &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;server&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;    &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;web_fqdn&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;apps.example.com&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;    &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;web_port&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#0000cf;font-weight:bold&#34;&gt;8080&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;    &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;web_root&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;/dashboards/kiali&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;    &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;web_schema&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;https&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;If you are letting the installation create an &lt;a href=&#34;#ingress-access&#34;&gt;Ingress resource for you&lt;/a&gt;,
the Ingress will be adjusted to match these route settings.
If you are using your own exposure method, these spec.server settings are only making Kiali aware
of what its public endpoint is.&lt;/p&gt;
&lt;p&gt;It is possible to omit these settings and Kiali may be able to discover some of
these configurations, depending on your exposure method. For example, if you
are exposing Kiali via &lt;code&gt;LoadBalancer&lt;/code&gt; or &lt;code&gt;NodePort&lt;/code&gt; service types, Kiali can
discover most of these settings. If you are using some kind of Ingress, Kiali
will honor &lt;code&gt;X-Forwarded-Proto&lt;/code&gt;, &lt;code&gt;X-Forwarded-Host&lt;/code&gt; and &lt;code&gt;X-Forwarded-Port&lt;/code&gt; HTTP
headers if they are properly injected in the request.&lt;/p&gt;
&lt;p&gt;The &lt;code&gt;web_root&lt;/code&gt; receives special treatment, because this is the path where Kiali
will serve itself (both the user interface and its api). This is useful if you
are serving multiple applications under the same domain. It must begin with a
slash and trailing slashes must be omitted. The default value is &lt;code&gt;/kiali&lt;/code&gt; for
Kubernetes and &lt;code&gt;/&lt;/code&gt; for OpenShift.&lt;/p&gt;


&lt;div class=&#34;alert alert-warning&#34; role=&#34;alert&#34;&gt;


    Usually, these settings can be omitted. However, a few features require
that the Kiali&amp;rsquo;s public route be properly discoverable or that it is properly
configured; most notably, the &lt;a href=&#34;https://v2-24.kiali.io/docs/configuration/authentication/openid/&#34;&gt;OpenID authentication&lt;/a&gt;.

&lt;/div&gt;


      </description>
    </item>
    
    <item>
      <title>Docs: Advanced Install</title>
      <link>https://v2-24.kiali.io/docs/installation/installation-guide/advanced-install-options/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>https://v2-24.kiali.io/docs/installation/installation-guide/advanced-install-options/</guid>
      <description>
        
        
        &lt;h2 id=&#34;canary-upgrades&#34;&gt;Canary upgrades&lt;/h2&gt;
&lt;p&gt;During a canary upgrade where multiple controlplanes are present, Kiali will automatically
detect both controlplanes. You can visit the &lt;a href=&#34;https://v2-24.kiali.io/docs/features/istio-component-status/#mesh-page&#34;&gt;mesh page&lt;/a&gt;
to visualize your controlplanes during a canary upgrade.&lt;/p&gt;
&lt;h2 id=&#34;installing-a-kiali-server-of-a-different-version-than-the-operator&#34;&gt;Installing a Kiali Server of a different version than the Operator&lt;/h2&gt;
&lt;p&gt;When you install the Kiali Operator, it will be configured to install a Kiali
Server that is the same version as the operator itself. For example, if you
have Kiali Operator v1.34.0 installed, that operator will install Kiali Server
v1.34.0. If you upgrade (or downgrade) the Kiali Operator, the operator will in
turn upgrade (or downgrade) the Kiali Server.&lt;/p&gt;
&lt;p&gt;There are certain use-cases in which you want the Kiali Operator to install a
Kiali Server whose version is different than the operator version. Read the
following section &lt;em&gt;&amp;laquo;Using a custom image registry&amp;raquo;&lt;/em&gt; section to learn how to
configure this setup.&lt;/p&gt;
&lt;h2 id=&#34;using-a-custom-image-registry&#34;&gt;Using a custom image registry&lt;/h2&gt;
&lt;p&gt;Kiali is released and published to the &lt;a href=&#34;https://quay.io/&#34;&gt;Quay.io container image registry&lt;/a&gt;. There is a &lt;a href=&#34;https://quay.io/repository/kiali/kiali-operator&#34;&gt;repository hosting the Kiali operator images&lt;/a&gt; and &lt;a href=&#34;https://quay.io/repository/kiali/kiali&#34;&gt;another one for the Kiali server images&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;If you need to mirror the Kiali container images to some other registry, you still can use Helm to install the Kiali operator as follows:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;$ helm install \
    --namespace kiali-operator \
    --create-namespace \
    --set image.repo=your.custom.registry/owner/kiali-operator-repo
    --set image.tag=your_custom_tag
    --set allowAdHocKialiImage=true
    kiali-operator \
    kiali/kiali-operator
&lt;/code&gt;&lt;/pre&gt;

&lt;div class=&#34;alert alert-warning&#34; role=&#34;alert&#34;&gt;


    Notice the &lt;code&gt;--set allowAdHocKialiImage=true&lt;/code&gt; which allows specifying a
custom image in the Kiali CR. For security reasons, this is disabled by
default.

&lt;/div&gt;

&lt;p&gt;Then, when creating the Kiali CR, use the following attributes:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-yaml&#34; data-lang=&#34;yaml&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;spec&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;  &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;deployment&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;    &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;image_name&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;your.custom.registry/owner/kiali-server-repo&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;    &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;image_version&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;your_custom_tag&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id=&#34;change-the-default-image&#34;&gt;Change the default image&lt;/h3&gt;
&lt;p&gt;As explained earlier, when you install the Kiali Operator, it will be
configured to install a Kiali Server whose image will be pulled from quay.io
and whose version will be the same as the operator. You can ask the operator to
use a different image by setting &lt;code&gt;spec.deployment.image_name&lt;/code&gt; and
&lt;code&gt;spec.deployment.image_version&lt;/code&gt; within the Kiali CR (as explained above).&lt;/p&gt;
&lt;p&gt;However, you may wish to alter this default behavior exhibited by the operator.
In other words, you may want the operator to install a different Kiali Server
image by default. For example, if you have an air-gapped environment with its
own image registry that contains its own copy of the Kiali Server image, you
will want the operator to install a Kiali Server that uses that image by
default, as opposed to &lt;code&gt;quay.io/kiali/kiali&lt;/code&gt;. By configuring the operator to do
this, you will not force the authors of Kiali CRs to have to explicitly define
the &lt;code&gt;spec.deployment.image_name&lt;/code&gt; setting and you will not need to enable the
&lt;code&gt;allowAdHocKialiImage&lt;/code&gt; setting in the operator.&lt;/p&gt;
&lt;p&gt;To change the default Kiali Server image installed by the operator, set the
environment variable &lt;code&gt;RELATED_IMAGE_kiali_default&lt;/code&gt; in the Kiali Operator
deployment. The value of that environment variable must be the full image tag
in the form &lt;code&gt;repoName/orgName/imageName:versionString&lt;/code&gt; (e.g.
&lt;code&gt;my.internal.registry.io/mykiali/mykialiserver:v1.50.0&lt;/code&gt;). You can do this when
you install the operator via helm:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;$ helm install \
    --namespace kiali-operator \
    --create-namespace \
    --set &amp;#34;env[0].name=RELATED_IMAGE_kiali_default&amp;#34; \
    --set &amp;#34;env[0].value=my.internal.registry.io/mykiali/mykialiserver:v1.50.0&amp;#34; \
    kiali-operator \
    kiali/kiali-operator
&lt;/code&gt;&lt;/pre&gt;&lt;h2 id=&#34;development-install&#34;&gt;Development Install&lt;/h2&gt;
&lt;p&gt;This option installs the &lt;em&gt;latest&lt;/em&gt; Kiali Operator and Kiali Server images which
are built from the master branches of Kiali GitHub repositories. This option is
good for demo and development installations.&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;helm install \
  --set cr.create=true \
  --set cr.namespace=istio-system \
  --set cr.spec.deployment.image_version=latest \
  --set image.tag=latest \
  --namespace kiali-operator \
  --create-namespace \
  kiali-operator \
  kiali/kiali-operator
&lt;/code&gt;&lt;/pre&gt;
      </description>
    </item>
    
    <item>
      <title>Docs: Example Install</title>
      <link>https://v2-24.kiali.io/docs/installation/installation-guide/example-install/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>https://v2-24.kiali.io/docs/installation/installation-guide/example-install/</guid>
      <description>
        
        
        &lt;p&gt;This is a quick example of installing Kiali. This example will install the operator and two Kiali Servers - one server will require the user to enter credentials at a login screen in order to obtain read-write access and the second server will allow anonymous read-only access.&lt;/p&gt;
&lt;p&gt;For this example, assume there is a Minikube Kubernetes cluster running with an
Istio control plane installed in the namespace &lt;code&gt;istio-system&lt;/code&gt; and
the Istio Bookinfo Demo installed in the namespace &lt;code&gt;bookinfo&lt;/code&gt;:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;$ kubectl get deployments.apps -n istio-system
NAME                   READY   UP-TO-DATE   AVAILABLE   AGE
grafana                1/1     1            1           8h
istio-egressgateway    1/1     1            1           8h
istio-ingressgateway   1/1     1            1           8h
istiod                 1/1     1            1           8h
jaeger                 1/1     1            1           8h
prometheus             1/1     1            1           8h

$ kubectl get deployments.apps -n bookinfo
NAME             READY   UP-TO-DATE   AVAILABLE   AGE
details-v1       1/1     1            1           21m
productpage-v1   1/1     1            1           21m
ratings-v1       1/1     1            1           21m
reviews-v1       1/1     1            1           21m
reviews-v2       1/1     1            1           21m
reviews-v3       1/1     1            1           21m
&lt;/code&gt;&lt;/pre&gt;&lt;h2 id=&#34;install-kiali-operator-via-helm-chart&#34;&gt;Install Kiali Operator via Helm Chart&lt;/h2&gt;
&lt;p&gt;First, the Kiali Operator will be installed in the &lt;code&gt;kiali-operator&lt;/code&gt; namespace using the &lt;a href=&#34;https://v2-24.kiali.io/docs/installation/installation-guide/install-with-helm/#operator-only-install&#34;&gt;operator helm chart&lt;/a&gt;:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;$ helm repo add kiali https://kiali.org/helm-charts
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;$ helm repo update kiali
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;$ helm install &lt;span style=&#34;color:#4e9a06&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&lt;/span&gt;    --namespace kiali-operator &lt;span style=&#34;color:#4e9a06&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&lt;/span&gt;    --create-namespace &lt;span style=&#34;color:#4e9a06&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&lt;/span&gt;    kiali-operator &lt;span style=&#34;color:#4e9a06&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&lt;/span&gt;    kiali/kiali-operator
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;install-kiali-server-via-operator&#34;&gt;Install Kiali Server via Operator&lt;/h2&gt;
&lt;p&gt;Next, the first Kiali Server will be installed. This server will require the user to enter a Kubernetes token in order to log into the Kiali dashboard and will provide the user with read-write access. To do this, a Kiali CR will be created that looks like this (file: &lt;code&gt;kiali-cr-token.yaml&lt;/code&gt;):&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-yaml&#34; data-lang=&#34;yaml&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;apiVersion&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;kiali.io/v1alpha1&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;kind&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;Kiali&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;metadata&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;  &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;name&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;kiali&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;  &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;namespace&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;istio-system&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;spec&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;  &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;auth&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;    &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;strategy&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;token&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;  &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;deployment&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;    &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;cluster_wide_access&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;false&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;    &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;discovery_selectors&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;      &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;default&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;      &lt;/span&gt;- &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;matchLabels&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;          &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;kubernetes.io/metadata.name&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;bookinfo&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;    &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;view_only_mode&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;false&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;  &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;server&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;    &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;web_root&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;/kiali&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;This Kiali CR will command the operator to deploy the Kiali Server in the same namespace where the Kiali CR is (&lt;code&gt;istio-system&lt;/code&gt;). The operator will configure the server to: respond to requests to the web root path of &lt;code&gt;/kiali&lt;/code&gt;, enable read-write access, use the authentication strategy of &lt;code&gt;token&lt;/code&gt;, and be given access to the &lt;code&gt;bookinfo&lt;/code&gt; namespace:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;$ kubectl apply -f kiali-cr-token.yaml
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;get-the-status-of-the-installation&#34;&gt;Get the Status of the Installation&lt;/h2&gt;
&lt;p&gt;The status of a particular Kiali Server installation can be found by examining the &lt;code&gt;status&lt;/code&gt; field of its corresponding Kiali CR. For example:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;$ kubectl get kiali kiali -n istio-system -o &lt;span style=&#34;color:#000&#34;&gt;jsonpath&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#39;{.status}&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;When the installation has successfully completed, the &lt;code&gt;status&lt;/code&gt; field will look something like this (when formatted):&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-json&#34; data-lang=&#34;json&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#a40000&#34;&gt;$&lt;/span&gt; &lt;span style=&#34;color:#a40000&#34;&gt;kubectl&lt;/span&gt; &lt;span style=&#34;color:#a40000&#34;&gt;get&lt;/span&gt; &lt;span style=&#34;color:#a40000&#34;&gt;kiali&lt;/span&gt; &lt;span style=&#34;color:#a40000&#34;&gt;kiali&lt;/span&gt; &lt;span style=&#34;color:#a40000&#34;&gt;-n&lt;/span&gt; &lt;span style=&#34;color:#a40000&#34;&gt;istio-system&lt;/span&gt; &lt;span style=&#34;color:#a40000&#34;&gt;-o&lt;/span&gt; &lt;span style=&#34;color:#a40000&#34;&gt;jsonpath=&amp;#39;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;{&lt;/span&gt;&lt;span style=&#34;color:#a40000&#34;&gt;.status&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;}&lt;/span&gt;&lt;span style=&#34;color:#a40000&#34;&gt;&amp;#39;&lt;/span&gt; &lt;span style=&#34;color:#a40000&#34;&gt;|&lt;/span&gt; &lt;span style=&#34;color:#a40000&#34;&gt;jq&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;&amp;#34;conditions&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;[&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;&amp;#34;ansibleResult&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;&amp;#34;changed&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#0000cf;font-weight:bold&#34;&gt;21&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;&amp;#34;completion&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;2021-10-20T19:17:35.519131&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;&amp;#34;failures&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#0000cf;font-weight:bold&#34;&gt;0&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;&amp;#34;ok&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#0000cf;font-weight:bold&#34;&gt;102&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;&amp;#34;skipped&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#0000cf;font-weight:bold&#34;&gt;90&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;},&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;&amp;#34;lastTransitionTime&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;2021-10-20T19:17:12Z&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;&amp;#34;message&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;Awaiting next reconciliation&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;&amp;#34;reason&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;Successful&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;&amp;#34;status&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;True&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;&amp;#34;type&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;Running&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;],&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;&amp;#34;deployment&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;&amp;#34;discoverySelectorNamespaces&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;bookinfo,istio-system&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;&amp;#34;instanceName&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;kiali&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;&amp;#34;namespace&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;istio-system&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;},&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;&amp;#34;environment&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;&amp;#34;isKubernetes&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;true&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;&amp;#34;kubernetesVersion&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;1.28.0&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;&amp;#34;operatorVersion&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;v1.88.0&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;},&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;&amp;#34;progress&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;&amp;#34;duration&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;0:00:14&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;&amp;#34;message&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;7. Finished all resource creation&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;access-the-kiali-server-ui&#34;&gt;Access the Kiali Server UI&lt;/h2&gt;
&lt;p&gt;The Kiali Server UI is accessed by pointing a browser to the Kiali Server endpoint and requesting the web root &lt;code&gt;/kiali&lt;/code&gt;:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;xdg-open http://&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;$(&lt;/span&gt;minikube ip&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;)&lt;/span&gt;/kiali
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Because the &lt;code&gt;auth.strategy&lt;/code&gt; was set to &lt;code&gt;token&lt;/code&gt;, that URL will display the Kiali login screen that will require a Kubernetes token in order to authenticate with the server. For this example, you can use the token that belongs to the Kiali service account itself:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;$ kubectl get secret -n istio-system &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;$(&lt;/span&gt;kubectl get sa kiali-service-account -n istio-system -o &lt;span style=&#34;color:#000&#34;&gt;jsonpath&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#39;{.secrets[0].name}&amp;#39;&lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;)&lt;/span&gt; -o &lt;span style=&#34;color:#000&#34;&gt;jsonpath&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#39;{.data.token}&amp;#39;&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;|&lt;/span&gt; base64 -d
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;The output of that command above can be used to log into the Kiali login screen.&lt;/p&gt;
&lt;h2 id=&#34;install-a-second-kiali-server&#34;&gt;Install a Second Kiali Server&lt;/h2&gt;
&lt;p&gt;The second Kiali Server will next be installed. This server will not require the user to enter any login credentials but will only provide a view-only look at the service mesh. To do this, a Kiali CR will be created that looks like this (file: &lt;code&gt;kiali-cr-anon.yaml&lt;/code&gt;):&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-yaml&#34; data-lang=&#34;yaml&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;apiVersion&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;kiali.io/v1alpha1&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;kind&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;Kiali&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;metadata&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;  &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;name&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;kiali&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;  &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;namespace&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;kialianon&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;spec&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;  &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;installation_tag&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;Kiali - View Only&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;  &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;auth&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;    &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;strategy&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;anonymous&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;  &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;deployment&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;    &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;cluster_wide_access&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;false&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;    &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;discovery_selectors&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;      &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;default&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;      &lt;/span&gt;- &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;matchLabels&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;          &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;kubernetes.io/metadata.name&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;bookinfo&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;    &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;view_only_mode&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;true&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;    &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;instance_name&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;kialianon&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;  &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;server&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;    &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;web_root&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;/kialianon&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;This Kiali CR will command the operator to deploy the Kiali Server in the same namespace where the Kiali CR is (&lt;code&gt;kialianon&lt;/code&gt;). The operator will configure the server to: respond to requests to the web root path of &lt;code&gt;/kialianon&lt;/code&gt;, disable read-write access, not require the user to authenticate, have a unique instance name of &lt;code&gt;kialianon&lt;/code&gt; and be given access to the &lt;code&gt;bookinfo&lt;/code&gt; namespace. The Kiali UI will also show a custom title in the browser tab so the user is aware they are looking at a &amp;ldquo;view only&amp;rdquo; Kiali dashboard. The unique &lt;code&gt;deployment.instance_name&lt;/code&gt; is needed in order for this Kiali Server to be able to share access to the Bookinfo application with the first Kiali Server.&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;$ kubectl create namespace kialianon
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;$ kubectl apply -f kiali-cr-anon.yaml
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;The UI for this second Kiali Server is accessed by pointing a browser to the Kiali Server endpoint and requesting the web root &lt;code&gt;/kialianon&lt;/code&gt;. Note that no credentials are required to gain access to this Kiali Server UI because &lt;code&gt;auth.strategy&lt;/code&gt; was set to &lt;code&gt;anonymous&lt;/code&gt;; however, the user will not be able to modify anything via the Kiali UI - it is strictly &amp;ldquo;view only&amp;rdquo;:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;xdg-open http://&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;$(&lt;/span&gt;minikube ip&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;)&lt;/span&gt;/kialianon
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;reconfigure-kiali-server&#34;&gt;Reconfigure Kiali Server&lt;/h2&gt;
&lt;p&gt;A Kiali Server can be reconfigured by simply editing its Kiali CR. The Kiali Operator will perform all the necessary tasks to complete the reconfiguration and reboot the Kiali Server pod when necessary. For example, to change the web root for the Kiali Server:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;$ kubectl patch kiali kiali -n istio-system --type merge --patch &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#39;{&amp;#34;spec&amp;#34;:{&amp;#34;server&amp;#34;:{&amp;#34;web_root&amp;#34;:&amp;#34;/specialkiali&amp;#34;}}}&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;The Kiali Operator will update the necessary resources (such as the Kiali ConfigMap) and will reboot the Kiali Server pod to pick up the new configuration.&lt;/p&gt;
&lt;h2 id=&#34;uninstall-kiali-server&#34;&gt;Uninstall Kiali Server&lt;/h2&gt;
&lt;p&gt;To uninstall a Kiali Server installation, simply delete the Kiali CR. The Kiali Operator will then perform all the necessary tasks to remove all remnants of the associated Kiali Server.&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;kubectl delete kiali kiali -n istio-system
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;uninstall-kiali-operator&#34;&gt;Uninstall Kiali Operator&lt;/h2&gt;
&lt;p&gt;To uninstall the Kiali Operator, use &lt;code&gt;helm uninstall&lt;/code&gt; and then manually remove the Kiali CRD.&lt;/p&gt;


&lt;div class=&#34;alert alert-warning&#34; role=&#34;alert&#34;&gt;


    You must delete all Kiali CRs in the cluster prior to uninstalling the Kiali Operator. If you fail to do this, uninstalling the operator will hang and remnants of Kiali Server installations will remain in your cluster and you will be required to perform some &lt;a href=&#34;https://v2-24.kiali.io/docs/installation/installation-guide/install-with-helm/#known-problem-uninstall-hangs-unable-to-delete-the-kiali-cr&#34;&gt;manual steps&lt;/a&gt; to clean it up.

&lt;/div&gt;

&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;$ kubectl delete kiali --all --all-namespaces
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;$ helm uninstall --namespace kiali-operator kiali-operator
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;$ kubectl delete crd kialis.kiali.io
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
      </description>
    </item>
    
  </channel>
</rss>
