<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Kiali</title><link>https://staging--kiali.netlify.app/</link><description>Recent content on Kiali</description><generator>Hugo</generator><language>en</language><atom:link href="https://staging--kiali.netlify.app/index.xml" rel="self" type="application/rss+xml"/><item><title>KIALI-SECURITY-003 - Installation into ad-hoc namespaces</title><link>https://staging--kiali.netlify.app/news/security-bulletins/kiali-security-003/</link><pubDate>Tue, 11 May 2021 11:00:00 -0600</pubDate><guid>https://staging--kiali.netlify.app/news/security-bulletins/kiali-security-003/</guid><description>&lt;h2 id="description"&gt;Description&lt;/h2&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;strong&gt;Disclosure date&lt;/strong&gt;: May 11, 2021&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Affected Releases&lt;/strong&gt;: prior to 1.33.0&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Impact Score&lt;/strong&gt;: &lt;a href="https://nvd.nist.gov/vuln-metrics/cvss/v3-calculator?vector=AV:N/AC:L/PR:H/UI:N/S:C/C:L/I:L/A:L&amp;amp;version=3.1"&gt;6.6 - AV:N/AC:L/PR:H/UI:N/S:C/C:L/I:L/A:L&lt;/a&gt;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;A vulnerability was found in the Kiali Operator allowing installation of a specified image into any namespace.&lt;/p&gt;&#10;&lt;p&gt;Kiali users are exposed to this vulnerability if all the following conditions are met:&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Kiali operator is used for installation.&lt;/li&gt;&#10;&lt;li&gt;Kiali CR was edited to install an image into an unapproved namespace.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;This vulnerability is filed as&#10;&lt;a href="https://access.redhat.com/security/cve/CVE-2021-3495"&gt;CVE-2021-3495&lt;/a&gt;&lt;/p&gt;&#10;&lt;h2 id="mitigation"&gt;Mitigation&lt;/h2&gt;&#10;&lt;p&gt;If you can update:&lt;/p&gt;</description></item><item><title>KIALI-SECURITY-002 - Authentication bypass when using the OpenID login strategy</title><link>https://staging--kiali.netlify.app/news/security-bulletins/kiali-security-002/</link><pubDate>Thu, 04 Mar 2021 11:00:00 -0600</pubDate><guid>https://staging--kiali.netlify.app/news/security-bulletins/kiali-security-002/</guid><description>&lt;h2 id="description"&gt;Description&lt;/h2&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;strong&gt;Disclosure date&lt;/strong&gt;: March 5, 2021&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Affected Releases&lt;/strong&gt;: 1.26.0, 1.26.1, 1.26.2, 1.27.0, 1.28.0, 1.28.1, 1.29.0, 1.29.1, 1.30.0&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Impact Score&lt;/strong&gt;: &lt;a href="https://nvd.nist.gov/vuln-metrics/cvss/v3-calculator?vector=AV:N/AC:L/PR:N/UI:N/S:C/C:L/I:L/A:N/E:F/RL:X/RC:C&amp;amp;version=3.1"&gt;7.0 - AV:N/AC:L/PR:N/UI:N/S:C/C:L/I:L/A:N/E:F/RL:X/RC:C&lt;/a&gt;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;A vulnerability was found in Kiali allowing an attacker to bypass the&#10;authentication mechanism. The vulnerability lets an attacker build forged&#10;credentials and use them to gain unauthorized access to Kiali.&lt;/p&gt;&#10;&lt;p&gt;Kiali users are exposed to this vulnerability if all the following conditions are met:&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Kiali is setup with the &lt;code&gt;openid&lt;/code&gt; authentication strategy.&lt;/li&gt;&#10;&lt;li&gt;As a result of configurations in both Kiali and your OpenID server, Kiali uses the&#10;&lt;em&gt;implicit flow&lt;/em&gt; of the OpenID specification to negotiate authentication.&lt;/li&gt;&#10;&lt;li&gt;Kiali is setup with RBAC turned off.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;This vulnerability is filed as&#10;&lt;a href="https://access.redhat.com/security/cve/CVE-2021-20278"&gt;CVE-2021-20278&lt;/a&gt;&lt;/p&gt;</description></item><item><title>KIALI-SECURITY-001 - Authentication bypass using forged credentials</title><link>https://staging--kiali.netlify.app/news/security-bulletins/kiali-security-001/</link><pubDate>Tue, 24 Mar 2020 11:00:00 -0600</pubDate><guid>https://staging--kiali.netlify.app/news/security-bulletins/kiali-security-001/</guid><description>&lt;h2 id="description"&gt;Description&lt;/h2&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;strong&gt;Disclosure date&lt;/strong&gt;: March 25, 2020&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Affected Releases&lt;/strong&gt;: 0.4.0 to 1.15.0&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Impact Score&lt;/strong&gt;: &lt;a href="https://nvd.nist.gov/vuln-metrics/cvss/v3-calculator?vector=AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:H/A:H&amp;amp;version=3.1"&gt;9.4 - AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:H/A:H&lt;/a&gt;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;A vulnerability was found in Kiali allowing an attacker to bypass the&#10;authentication mechanism. Currently, Kiali has four authentication mechanisms:&#10;&lt;em&gt;login, token, openshift&lt;/em&gt; and &lt;em&gt;ldap&lt;/em&gt;. All are vulnerable.&lt;/p&gt;&#10;&lt;p&gt;The vulnerability lets an attacker build forged credentials and use them to&#10;gain unauthorized access to Kiali.&lt;/p&gt;&#10;&lt;p&gt;Additionally, it was found that Kiali credentials were not being validated&#10;properly. Depending on the authentication mechanism configured in Kiali, this&#10;could facilitate unauthorized access into Kiali with forged and/or invalid&#10;credentials.&lt;/p&gt;</description></item><item><title>Introduction</title><link>https://staging--kiali.netlify.app/docs/tutorials/multicluster/01-introduction/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://staging--kiali.netlify.app/docs/tutorials/multicluster/01-introduction/</guid><description>&lt;p&gt;So far, we know how good Kiali can be to understand applications, their relationships with each other and with external applications.&lt;/p&gt;&#10;&lt;p&gt;In the previous tutorial, Kiali was setup to observe just a single cluster. Now, we will expand its capabilities to observe more than one cluster. The extra clusters are remotes, meaning that there is not a control plane on them, they only have user applications.&lt;/p&gt;&#10;&lt;p&gt;This topology is called &lt;a href="https://istio.io/latest/docs/setup/install/multicluster/primary-remote/"&gt;primary-remote&lt;/a&gt; and it is very useful to spread applications into different clusters having just one primary cluster, which is where Istio and Kiali are installed.&lt;/p&gt;</description></item><item><title>Introduction</title><link>https://staging--kiali.netlify.app/docs/tutorials/tempo/01-introduction/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://staging--kiali.netlify.app/docs/tutorials/tempo/01-introduction/</guid><description>&lt;h3 id="introduction"&gt;Introduction&lt;/h3&gt;&#10;&lt;p&gt;Kiali uses &lt;a href="https://staging--kiali.netlify.app/docs/configuration/external-services/tracing/jaeger/"&gt;Jaeger&lt;/a&gt; as a default distributed tracing backend. In this tutorial, we will replace it for &lt;a href="https://grafana.com/docs/tempo/next/"&gt;Grafana Tempo&lt;/a&gt;.&lt;/p&gt;&#10;&lt;p&gt;We will setup a local environment in minikube, and install Kiali with Tempo as a distributed backend. This is a simplified architecture diagram:&lt;/p&gt;&#10;&lt;p&gt;&lt;img src="https://staging--kiali.netlify.app/images/tutorial/tempo/kiali-tempo.png" alt="Kiali Tempo Architecture" title="Kiali Tempo integration architecture"&gt;&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;We will install Tempo with the Tempo Operator and enable Jaeger query frontend to be compatible with Kiali in order to query traces.&lt;/li&gt;&#10;&lt;li&gt;We will setup Istio to send traces to the Tempo collector using the zipkin protocol. It is enabled by default from version 3.0 or higher of the Tempo Operator.&lt;/li&gt;&#10;&lt;li&gt;We will install MinIO and setup it up as object store, S3 compatible.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h3 id="environment"&gt;Environment&lt;/h3&gt;&#10;&lt;p&gt;We use the following environment:&lt;/p&gt;</description></item><item><title>Prerequisites</title><link>https://staging--kiali.netlify.app/docs/tutorials/travels/01-prerequisites/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://staging--kiali.netlify.app/docs/tutorials/travels/01-prerequisites/</guid><description>&lt;h2 id="platform-setup"&gt;Platform Setup&lt;/h2&gt;&#10;&lt;p&gt;This tutorial assumes you have access to a Kubernetes cluster with Istio installed.&lt;/p&gt;&#10;&lt;p&gt;This tutorial is being updated and qualified using:&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;a &lt;a href="https://kind.sigs.k8s.io/"&gt;Kind&lt;/a&gt; (Kubernetes in Docker) cluster with Helm-based Kiali install.&lt;/li&gt;&#10;&lt;li&gt;an &lt;a href="https://istio.io/latest/docs/setup/platform-setup/openshift/"&gt;OpenShift&lt;/a&gt; cluster with Kiali Operator install (qualification pending).&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;div class="alert alert-warning" role="alert"&gt;&lt;div class="h4 alert-heading" role="heading"&gt;Tip&lt;/div&gt;&#10;&lt;p&gt;Platform-dependent tasks will be indicated with a special note like this.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;div class="alert alert-warning" role="alert"&gt;&#10;&lt;p&gt;Version pins will be recorded here as the tutorial is re-qualified. Use current stable releases of Kind, Istio, and Kiali unless noted otherwise.&lt;/p&gt;&#10;&lt;/div&gt;</description></item><item><title>Quick Start</title><link>https://staging--kiali.netlify.app/docs/installation/quick-start/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://staging--kiali.netlify.app/docs/installation/quick-start/</guid><description>&lt;h2 id="run-kiali-locally"&gt;Run Kiali locally&lt;/h2&gt;&#10;&lt;p&gt;Kiali can be run directly on your machine without being installed into a Kubernetes cluster. It uses your kubeconfig to connect to your cluster(s). If needed, it can port-forward into the cluster to connect to your external services (prometheus, tracing, istio, grafana).&lt;/p&gt;&#10;&lt;div class="alert alert-info" role="alert"&gt;&#10;&lt;p&gt;Running Kiali locally is currently experimental. Functionality may change between releases.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;p&gt;Download the Kiali binary from the &lt;a href="https://github.com/kiali/kiali/releases/latest"&gt;Kiali GitHub releases page&lt;/a&gt; for your OS and Arch.&lt;/p&gt;</description></item><item><title>Release Notes</title><link>https://staging--kiali.netlify.app/news/release-notes/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://staging--kiali.netlify.app/news/release-notes/</guid><description>&lt;p&gt;For additional information check our &lt;a href="https://www.youtube.com/channel/UCcm2NzDN_UCZKk2yYmOpc5w"&gt;sprint demo videos&lt;/a&gt; and &lt;a href="https://medium.com/kialiproject"&gt;blogs&lt;/a&gt;.&lt;/p&gt;&#10;&lt;h2 id="2340"&gt;2.34.0&lt;/h2&gt;&#10;&lt;p&gt;Release: October 26, 2026&lt;/p&gt;&#10;&lt;p&gt;Features:&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;a href="https://github.com/kiali/kiali/issues/10392"&gt;Istio: Support meshConfig.serviceEntryVisibility&lt;/a&gt;&lt;/li&gt;&#10;&lt;li&gt;&lt;a href="https://github.com/kiali/kiali/issues/10383"&gt;Operator: CSV missing RBAC escalation permissions for older operand versions&lt;/a&gt;&lt;/li&gt;&#10;&lt;li&gt;&lt;a href="https://github.com/kiali/kiali-operator/pull/1111"&gt;operator: bump operator base image to 1.42.3&lt;/a&gt;&lt;/li&gt;&#10;&lt;li&gt;&lt;a href="https://github.com/kiali/openshift-servicemesh-plugin/issues/874"&gt;OSSMC: nginx backend must honor cluster APIServer tlsSecurityProfile (TLS adherence)&lt;/a&gt;&lt;/li&gt;&#10;&lt;li&gt;&lt;a href="https://github.com/kiali/kiali/issues/9885"&gt;UI: Robust AI token/cost dashboard&lt;/a&gt;&lt;/li&gt;&#10;&lt;li&gt;&lt;a href="https://github.com/kiali/kiali/issues/9003"&gt;UI: New Envoy Overview tab in workload detail shows sidecar memory usage&lt;/a&gt;&lt;/li&gt;&#10;&lt;li&gt;&lt;a href="https://github.com/kiali/kiali/issues/10361"&gt;UI: New Health Status History ribbon on detail pages&lt;/a&gt;&lt;/li&gt;&#10;&lt;li&gt;&lt;a href="https://github.com/kiali/kiali/issues/10379"&gt;UI: Health status ribbon actions for targeted graph or metrics&lt;/a&gt;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;Fixes:&lt;/p&gt;</description></item><item><title>Install Travel Demo</title><link>https://staging--kiali.netlify.app/docs/tutorials/travels/02-install-travel-demo/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://staging--kiali.netlify.app/docs/tutorials/travels/02-install-travel-demo/</guid><description>&lt;h2 id="deploy-the-travel-demo"&gt;Deploy the Travel Demo&lt;/h2&gt;&#10;&lt;p&gt;This demo application deploys several services grouped into three namespaces:&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;em&gt;travel-control&lt;/em&gt; — business dashboard to configure traffic and view statistics&lt;/li&gt;&#10;&lt;li&gt;&lt;em&gt;travel-portal&lt;/em&gt; — shop simulators that generate traffic&lt;/li&gt;&#10;&lt;li&gt;&lt;em&gt;travel-agency&lt;/em&gt; — quote and pricing services&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;At this step, deploy the application &lt;strong&gt;without&lt;/strong&gt; joining it to the service mesh. Sidecar injection is added in &lt;a href="https://staging--kiali.netlify.app/docs/tutorials/travels/03-join-the-mesh/"&gt;Join the Mesh&lt;/a&gt;.&lt;/p&gt;&#10;&lt;p&gt;Do &lt;strong&gt;not&lt;/strong&gt; label the namespaces with &lt;code&gt;istio-injection=enabled&lt;/code&gt; yet.&lt;/p&gt;&#10;&lt;h3 id="kind"&gt;Kind&lt;/h3&gt;&#10;&lt;p&gt;From the &lt;a href="https://github.com/kiali/kiali"&gt;Kiali source repository&lt;/a&gt;, the Travel Demo install script creates the namespaces and deploys the manifests without enabling auto-injection:&lt;/p&gt;</description></item><item><title>Kiali and Tempo setup</title><link>https://staging--kiali.netlify.app/docs/tutorials/tempo/02-kiali-tempo-integration/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://staging--kiali.netlify.app/docs/tutorials/tempo/02-kiali-tempo-integration/</guid><description>&lt;h3 id="steps-to-install-kiali-and-grafana-tempo"&gt;Steps to install Kiali and Grafana Tempo&lt;/h3&gt;&#10;&lt;p&gt;We will start minikube:&lt;/p&gt;&#10;&lt;pre tabindex="0"&gt;&lt;code&gt;minikube start&#10;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;It is a requirement to have cert-manager installed:&lt;/p&gt;&#10;&lt;pre tabindex="0"&gt;&lt;code&gt;kubectl apply -f https://github.com/cert-manager/cert-manager/releases/download/v1.12.0/cert-manager.yaml&#10;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Install the operator. It is important to download a version 3.0 or higher. In previous versions, the zipkin collector was not exposed, there was no way to change it as it was not defined in the CRD.&lt;/p&gt;&#10;&lt;pre tabindex="0"&gt;&lt;code&gt;kubectl apply -f https://github.com/grafana/tempo-operator/releases/download/v0.3.0/tempo-operator.yaml&#10;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;We will create the tempo namespace:&lt;/p&gt;&#10;&lt;pre tabindex="0"&gt;&lt;code&gt;kubectl create namespace tempo&#10;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;We will deploy minio, this is a sample minio.yaml:&lt;/p&gt;</description></item><item><title>Prerequisites</title><link>https://staging--kiali.netlify.app/docs/tutorials/multicluster/02-prerequisites/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://staging--kiali.netlify.app/docs/tutorials/multicluster/02-prerequisites/</guid><description>&lt;p&gt;This tutorial is a walkthrough guide to install everything. For this reason, we will need:&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;minikube&lt;/li&gt;&#10;&lt;li&gt;istioctl&lt;/li&gt;&#10;&lt;li&gt;helm&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;This tutorial was tested on:&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Minikube v1.30.1&lt;/li&gt;&#10;&lt;li&gt;Istio v1.18.1&lt;/li&gt;&#10;&lt;li&gt;Kiali v1.70&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;Clusters are provided by minikube instances, but this tutorial should work on on any Kubernetes environment.&lt;/p&gt;&#10;&lt;p&gt;We will set up some environment variables for the following commands:&lt;/p&gt;&#10;&lt;pre tabindex="0"&gt;&lt;code&gt;CLUSTER_EAST=&amp;#34;east&amp;#34;&#10;CLUSTER_WEST=&amp;#34;west&amp;#34;&#10;ISTIO_DIR=&amp;#34;absolute-path-to-istio-folder&amp;#34;&#10;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;As Istio will be installed on more than one cluster and needs to communicate between clusters, we need to create certificates for the Istio installation. We will follow the &lt;a href="https://istio.io/latest/docs/tasks/security/cert-management/plugin-ca-cert/"&gt;Istio documentation related to certificates&lt;/a&gt; to achieve this:&lt;/p&gt;</description></item><item><title>Deploy East cluster</title><link>https://staging--kiali.netlify.app/docs/tutorials/multicluster/03-deploy-east-cluster/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://staging--kiali.netlify.app/docs/tutorials/multicluster/03-deploy-east-cluster/</guid><description>&lt;p&gt;Run the following commands to deploy the first cluster:&lt;/p&gt;&#10;&lt;pre tabindex="0"&gt;&lt;code&gt;minikube start -p $CLUSTER_EAST --network istio --memory 8g --cpus 4&#10;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;For both clusters, we need to configure MetalLB, which is a load balancer. This is because we need to assign an external IP to the required ingress gateways to enable cross cluster communication between Istio and the applications installed.&lt;/p&gt;&#10;&lt;pre tabindex="0"&gt;&lt;code&gt;minikube addons enable metallb -p $CLUSTER_EAST&#10;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;We set up some environment variables with IP ranges that MetalLB will then assign to the services:&lt;/p&gt;</description></item><item><title>Join the Mesh</title><link>https://staging--kiali.netlify.app/docs/tutorials/travels/03-join-the-mesh/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://staging--kiali.netlify.app/docs/tutorials/travels/03-join-the-mesh/</guid><description>&lt;h2 id="sidecar-proxies"&gt;Sidecar Proxies&lt;/h2&gt;&#10;&lt;p&gt;The Travel Demo was deployed in the previous chapter &lt;strong&gt;without&lt;/strong&gt; Istio sidecar proxies. These are Envoy proxies that can be injected into the application pods.&lt;/p&gt;&#10;&lt;p&gt;Without a sidecar, workloads do not connect to the Istio control plane and do not report mesh telemetry (metrics, access logs, or distributed traces).&lt;/p&gt;&#10;&lt;h3 id="confirm-in-kiali"&gt;Confirm in Kiali&lt;/h3&gt;&#10;&lt;p&gt;As shown in &lt;a href="https://staging--kiali.netlify.app/docs/tutorials/travels/02-install-travel-demo/"&gt;Install Travel Demo&lt;/a&gt;, the demo namespaces appear on the &lt;strong&gt;Namespaces&lt;/strong&gt; page with type &lt;strong&gt;&lt;code&gt;-&lt;/code&gt;&lt;/strong&gt; (&lt;em&gt;Not part of the mesh&lt;/em&gt;):&lt;/p&gt;</description></item><item><title>Install Istio on East cluster</title><link>https://staging--kiali.netlify.app/docs/tutorials/multicluster/04-install-istio-east-cluster/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://staging--kiali.netlify.app/docs/tutorials/multicluster/04-install-istio-east-cluster/</guid><description>&lt;p&gt;The east cluster is the primary one, consequently is where the istiod process will be installed alongside other applications like Kiali.&lt;/p&gt;&#10;&lt;p&gt;Run the following commands to install Istio:&lt;/p&gt;&#10;&lt;pre tabindex="0"&gt;&lt;code&gt;kubectl create namespace istio-system --context $CLUSTER_EAST&#10;&#10;kubectl create secret generic cacerts -n istio-system --context $CLUSTER_EAST \&#10; --from-file=certs/$CLUSTER_EAST/ca-cert.pem \&#10; --from-file=certs/$CLUSTER_EAST/ca-key.pem \&#10; --from-file=certs/$CLUSTER_EAST/root-cert.pem \&#10; --from-file=certs/$CLUSTER_EAST/cert-chain.pem&#10;&#10;kubectl --context=$CLUSTER_EAST label namespace istio-system topology.istio.io/network=network1&#10;&#10;cat &amp;lt;&amp;lt;EOF &amp;gt; $CLUSTER_EAST.yaml&#10;apiVersion: install.istio.io/v1alpha1&#10;kind: IstioOperator&#10;spec:&#10; values:&#10; global:&#10; meshID: mesh1&#10; multiCluster:&#10; clusterName: $CLUSTER_EAST&#10; network: network1&#10;EOF&#10;&#10;istioctl install -y --set values.pilot.env.EXTERNAL_ISTIOD=true --context=$CLUSTER_EAST -f $CLUSTER_EAST.yaml&#10;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;After the installation, we need to create what we called an “east-west” gateway. It’s an ingress gateway just for the cross cluster configuration as we are opting to use the installation for different networks (this will be the case in the majority of the production scenarios).&lt;/p&gt;</description></item><item><title>Observe the Mesh</title><link>https://staging--kiali.netlify.app/docs/tutorials/travels/04-observe-the-mesh/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://staging--kiali.netlify.app/docs/tutorials/travels/04-observe-the-mesh/</guid><description>&lt;h2 id="enable-sidecars-in-all-workloads"&gt;Enable Sidecars in All Workloads&lt;/h2&gt;&#10;&lt;p&gt;An Istio sidecar proxy connects a workload to the control plane and enables &lt;a href="https://istio.io/latest/about/service-mesh/#what-is-istio"&gt;service mesh functionality&lt;/a&gt;.&lt;/p&gt;&#10;&lt;p&gt;Sidecars automatically collect metrics, access logs, and distributed traces — a major observability benefit of the mesh.&lt;/p&gt;&#10;&lt;p&gt;In &lt;a href="https://staging--kiali.netlify.app/docs/tutorials/travels/03-join-the-mesh/"&gt;Join the Mesh&lt;/a&gt; we injected a sidecar only into the &lt;em&gt;control&lt;/em&gt; workload. The rest of the Travel Demo still lacks full mesh visibility.&lt;/p&gt;&#10;&lt;div class="alert alert-success" role="alert"&gt;&lt;div class="h4 alert-heading" role="heading"&gt;Step 1&lt;/div&gt;&#10;&lt;p&gt;Use the Traffic Graph to identify missing sidecars in the Travel Demo&lt;/p&gt;&#10;&lt;/div&gt;</description></item><item><title>Control the Mesh</title><link>https://staging--kiali.netlify.app/docs/tutorials/travels/05-control-the-mesh/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://staging--kiali.netlify.app/docs/tutorials/travels/05-control-the-mesh/</guid><description>&lt;p&gt;This chapter uses Kiali &lt;a href="https://staging--kiali.netlify.app/docs/features/wizards/"&gt;wizards&lt;/a&gt; to configure Istio traffic management on the Travel Demo. Each section introduces a scenario, walks through the wizard, verifies the result in Kiali, and ends with guidance to update or delete the generated configuration.&lt;/p&gt;&#10;&lt;p&gt;In &lt;a href="https://staging--kiali.netlify.app/docs/tutorials/travels/04-observe-the-mesh/"&gt;Observe the Mesh&lt;/a&gt; you explored telemetry and tracing. Here you change how traffic flows through the mesh.&lt;/p&gt;&#10;&lt;h2 id="request-routing"&gt;Request Routing&lt;/h2&gt;&#10;&lt;p&gt;The Travel Demo application has several portals deployed on the &lt;em&gt;travel-portal&lt;/em&gt; namespace consuming the &lt;em&gt;travels&lt;/em&gt; service deployed on the &lt;em&gt;travel-agency&lt;/em&gt; namespace.&lt;/p&gt;</description></item><item><title>Install Kiali</title><link>https://staging--kiali.netlify.app/docs/tutorials/multicluster/05-install-kiali/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://staging--kiali.netlify.app/docs/tutorials/multicluster/05-install-kiali/</guid><description>&lt;p&gt;Run the following command to install Kiali using the Kiali operator:&lt;/p&gt;&#10;&lt;pre tabindex="0"&gt;&lt;code&gt;kubectl config use-context $CLUSTER_EAST&#10;&#10;helm upgrade --install --namespace istio-system --set auth.strategy=anonymous --set deployment.logger.log_level=debug --set deployment.ingress.enabled=true --repo https://kiali.org/helm-charts kiali-server kiali-server &#10;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Verify that Kiali is running with the following command:&lt;/p&gt;&#10;&lt;pre tabindex="0"&gt;&lt;code&gt;istioctl dashboard kiali&#10;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;There are other alternatives to expose Kiali or other Addons in Istio. Check &lt;a href="https://istio.io/latest/docs/tasks/observability/gateways/"&gt;Remotely Accessing Telemetry Addons for more information&lt;/a&gt;.&lt;/p&gt;</description></item><item><title>Navigating Multiple Meshes with OSSMC</title><link>https://staging--kiali.netlify.app/docs/ossmc/navigating-multiple-meshes/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://staging--kiali.netlify.app/docs/ossmc/navigating-multiple-meshes/</guid><description>&lt;p&gt;OpenShift Service Mesh Console (OSSMC) includes &lt;strong&gt;Istios&lt;/strong&gt; and &lt;strong&gt;Kialis&lt;/strong&gt; pages in the OpenShift Console &lt;strong&gt;Service Mesh&lt;/strong&gt; menu. These pages let you browse and inspect every Istio and Kiali CR on the cluster directly from the console — without requiring a Kiali server to be connected to the plugin.&lt;/p&gt;&#10;&lt;p&gt;This is especially useful when a cluster hosts many mesh instances. Platform teams that operate dozens or hundreds of Istio control planes (and the Kiali instances that observe them) on a cluster can navigate that inventory in one place instead of jumping between CLI commands, individual operator UIs, or separate Kiali routes.&lt;/p&gt;</description></item><item><title>Install Travels on East cluster</title><link>https://staging--kiali.netlify.app/docs/tutorials/multicluster/06-install-travels-east-cluster/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://staging--kiali.netlify.app/docs/tutorials/multicluster/06-install-travels-east-cluster/</guid><description>&lt;p&gt;Run the following commands to install Travels application on east cluster:&lt;/p&gt;&#10;&lt;pre tabindex="0"&gt;&lt;code&gt;kubectl create namespace travel-agency --context $CLUSTER_EAST&#10;kubectl create namespace travel-portal --context $CLUSTER_EAST&#10;kubectl create namespace travel-control --context $CLUSTER_EAST&#10;&#10;kubectl label namespace travel-agency istio-injection=enabled --context $CLUSTER_EAST&#10;kubectl label namespace travel-portal istio-injection=enabled --context $CLUSTER_EAST&#10;kubectl label namespace travel-control istio-injection=enabled --context $CLUSTER_EAST&#10;&#10;kubectl apply -f &amp;lt;(curl -L https://raw.githubusercontent.com/kiali/demos/master/travels/travel_agency.yaml) -n travel-agency --context $CLUSTER_EAST&#10;kubectl apply -f &amp;lt;(curl -L https://raw.githubusercontent.com/kiali/demos/master/travels/travel_portal.yaml) -n travel-portal --context $CLUSTER_EAST&#10;kubectl apply -f &amp;lt;(curl -L https://raw.githubusercontent.com/kiali/demos/master/travels/travel_control.yaml) -n travel-control --context $CLUSTER_EAST&#10;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;After the installation, we can see that the Travels application is running on the east cluster:&lt;/p&gt;</description></item><item><title>Secure the Mesh</title><link>https://staging--kiali.netlify.app/docs/tutorials/travels/06-secure-the-mesh/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://staging--kiali.netlify.app/docs/tutorials/travels/06-secure-the-mesh/</guid><description>&lt;h2 id="authorization-policies-and-sidecars"&gt;Authorization Policies and Sidecars&lt;/h2&gt;&#10;&lt;p&gt;&lt;a href="https://istio.io/latest/docs/concepts/security/"&gt;Security&lt;/a&gt; is one of Istio&amp;rsquo;s main pillars.&lt;/p&gt;&#10;&lt;p&gt;The Istio &lt;a href="https://istio.io/latest/docs/concepts/security/#high-level-architecture"&gt;Security High Level Architecture&lt;/a&gt; provides a comprehensive solution to design and implement multiple security scenarios.&lt;/p&gt;&#10;&lt;p&gt;In this tutorial we will show how Kiali can use telemetry information to create security policies for the workloads deployed in a given namespace.&lt;/p&gt;&#10;&lt;p&gt;Istio telemetry aggregates the ServiceAccount information used in workload communication. This information can be used to define authorization policies that deny and allow actions based on observed live traffic.&lt;/p&gt;</description></item><item><title>Deploy West cluster</title><link>https://staging--kiali.netlify.app/docs/tutorials/multicluster/07-deploy-west-cluster/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://staging--kiali.netlify.app/docs/tutorials/multicluster/07-deploy-west-cluster/</guid><description>&lt;p&gt;Run the following commands to deploy the second cluster:&lt;/p&gt;&#10;&lt;pre tabindex="0"&gt;&lt;code&gt;minikube start -p $CLUSTER_WEST --network istio --memory 8g --cpus 4&#10;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Similar to the east cluster, we configure MetalLB:&lt;/p&gt;&#10;&lt;pre tabindex="0"&gt;&lt;code&gt;minikube addons enable metallb -p $CLUSTER_WEST&#10;&#10;MINIKUBE_IP=$(minikube ip -p $CLUSTER_WEST)&#10;MINIKUBE_IP_NETWORK=$(echo $MINIKUBE_IP | sed -E &amp;#39;s/([0-9]+\.[0-9]+\.[0-9]+)\.[0-9]+/\1/&amp;#39;)&#10;MINIKUBE_LB_RANGE=&amp;#34;${MINIKUBE_IP_NETWORK}.30-${MINIKUBE_IP_NETWORK}.39&amp;#34;&#10;&#10;cat &amp;lt;&amp;lt;EOF | kubectl --context $CLUSTER_WEST apply -f -&#10;apiVersion: v1&#10;kind: ConfigMap&#10;metadata:&#10; namespace: metallb-system&#10; name: config&#10;data:&#10; config: |&#10; address-pools:&#10; - name: default&#10; protocol: layer2&#10; addresses: [${MINIKUBE_LB_RANGE}]&#10;EOF&#10;&lt;/code&gt;&lt;/pre&gt;</description></item><item><title>Install Istio on West cluster</title><link>https://staging--kiali.netlify.app/docs/tutorials/multicluster/08-install-istio-west-cluster/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://staging--kiali.netlify.app/docs/tutorials/multicluster/08-install-istio-west-cluster/</guid><description>&lt;p&gt;This installation will be different as this cluster will be a remote. In a remote cluster, it won&amp;rsquo;t be an Istio control plane. Istio will install some resources that allows the primary control plane to configure the workloads in the remote cluster like injecting the sidecars and configuring the low level routing.&lt;/p&gt;&#10;&lt;pre tabindex="0"&gt;&lt;code&gt;kubectl create namespace istio-system --context $CLUSTER_WEST&#10;&#10;kubectl create secret generic cacerts -n istio-system --context $CLUSTER_WEST \&#10; --from-file=certs/$CLUSTER_WEST/ca-cert.pem \&#10; --from-file=certs/$CLUSTER_WEST/ca-key.pem \&#10; --from-file=certs/$CLUSTER_WEST/root-cert.pem \&#10; --from-file=certs/$CLUSTER_WEST/cert-chain.pem&#10;&#10;kubectl --context=$CLUSTER_WEST annotate namespace istio-system topology.istio.io/controlPlaneClusters=$CLUSTER_EAST&#10;kubectl --context=$CLUSTER_WEST label namespace istio-system topology.istio.io/network=network2&#10;&#10;cat &amp;lt;&amp;lt;EOF &amp;gt; $CLUSTER_WEST.yaml&#10;apiVersion: install.istio.io/v1alpha1&#10;kind: IstioOperator&#10;spec:&#10; profile: remote&#10; values:&#10; istiodRemote:&#10; injectionPath: /inject/cluster/$CLUSTER_WEST/net/network2&#10; global:&#10; remotePilotAddress: ${DISCOVERY_ADDRESS}&#10;EOF&#10;&#10;istioctl install -y --context=$CLUSTER_WEST -f $CLUSTER_WEST.yaml&#10;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;We will also install a Prometheus instance on the remote. We will federate both Prometheus, with the east&amp;rsquo;s one being the place where all metrics will be gathered together:&lt;/p&gt;</description></item><item><title>Configure Kiali for multicluster</title><link>https://staging--kiali.netlify.app/docs/tutorials/multicluster/09-configure-kiali/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://staging--kiali.netlify.app/docs/tutorials/multicluster/09-configure-kiali/</guid><description>&lt;p&gt;We will configure Kiali to access the remote cluster. This will require a secret (similar to the Istio secret) containing the credentials for Kiali to fetch information from the remote cluster:&lt;/p&gt;&#10;&lt;pre tabindex="0"&gt;&lt;code&gt;curl -L -o kiali-prepare-remote-cluster.sh https://raw.githubusercontent.com/kiali/kiali/master/hack/istio/multicluster/kiali-prepare-remote-cluster.sh&#10;&#10;chmod +x kiali-prepare-remote-cluster.sh&#10;&#10;./kiali-prepare-remote-cluster.sh --kiali-cluster-context $CLUSTER_EAST --remote-cluster-context $CLUSTER_WEST&#10;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Finally, upgrade the installation for Kiali to pick up the secret:&lt;/p&gt;&#10;&lt;pre tabindex="0"&gt;&lt;code&gt;kubectl config use-context $CLUSTER_EAST&#10;&#10;helm upgrade --install --namespace istio-system --set auth.strategy=anonymous --set deployment.logger.log_level=debug --set deployment.ingress.enabled=true --repo https://kiali.org/helm-charts kiali-server kiali-server&#10;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;As result, we can quickly see that a new namespace appear in the Overview, the istio-system namespace from west cluster:&lt;/p&gt;</description></item><item><title>Anonymous strategy</title><link>https://staging--kiali.netlify.app/docs/configuration/authentication/anonymous/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://staging--kiali.netlify.app/docs/configuration/authentication/anonymous/</guid><description>&lt;h2 id="introduction"&gt;Introduction&lt;/h2&gt;&#10;&lt;p&gt;The &lt;code&gt;anonymous&lt;/code&gt; strategy removes any authentication requirement. Users will&#10;have access to Kiali without providing any credentials.&lt;/p&gt;&#10;&lt;p&gt;Although the &lt;code&gt;anonymous&lt;/code&gt; strategy doesn&amp;rsquo;t provide any access protection, it&amp;rsquo;s&#10;valid for some use-cases. Some examples known from the community:&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Exposing Kiali through a reverse proxy, where the reverse proxy is providing a custom authentication mechanism.&lt;/li&gt;&#10;&lt;li&gt;Exposing Kiali on an already limited network of trusted users.&lt;/li&gt;&#10;&lt;li&gt;When Kiali is accessed through &lt;code&gt;kubectl port-forward&lt;/code&gt; or alike commands that allow usage of the cluster&amp;rsquo;s RBAC capabilities to limit access.&lt;/li&gt;&#10;&lt;li&gt;When developing Kiali, where a developer has a private instance on his own machine.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;div class="alert alert-warning" role="alert"&gt;&#10;&lt;p&gt;It&amp;rsquo;s worth to emphasize that the &lt;code&gt;anonymous&lt;/code&gt;&#10;strategy will leave Kiali unsecured. If you are using this option, make sure&#10;that Kiali is available only to trusted users, or access is protected by other&#10;means.&lt;/p&gt;&#10;&lt;/div&gt;</description></item><item><title>Chatbot</title><link>https://staging--kiali.netlify.app/docs/ai/chatbot/kiali-chatbot/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://staging--kiali.netlify.app/docs/ai/chatbot/kiali-chatbot/</guid><description>&lt;p&gt;Kiali Chatbot is Kiali’s built-in AI assistant in the Kiali UI. It lets you ask questions about your service mesh and get answers backed by live data from Kiali and its configured backends (Prometheus, tracing, Kubernetes, etc.).&lt;/p&gt;&#10;&lt;p&gt;It does &lt;strong&gt;not&lt;/strong&gt; require an external MCP server. Kiali includes its own set of MCP-style tools internally, so the AI can call them without depending on a separate MCP deployment.&lt;/p&gt;&#10;&lt;p&gt;&lt;img src="https://staging--kiali.netlify.app/images/documentation/ai/kiali-chatbot.png" alt="Kiali Chatbot"&gt;&lt;/p&gt;&#10;&lt;h3 id="status"&gt;Status&lt;/h3&gt;&#10;&lt;p&gt;The Kiali chatbot was first released in Kiali version 2.22 and it is in &lt;strong&gt;Dev preview&lt;/strong&gt;.&lt;/p&gt;</description></item><item><title>Grafana</title><link>https://staging--kiali.netlify.app/docs/configuration/external-services/dashboards/grafana/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://staging--kiali.netlify.app/docs/configuration/external-services/dashboards/grafana/</guid><description>&lt;h2 id="grafana-configuration"&gt;Grafana configuration&lt;/h2&gt;&#10;&lt;p&gt;Istio provides &lt;a href="https://istio.io/latest/docs/ops/integrations/grafana/"&gt;preconfigured Grafana&#10;dashboards&lt;/a&gt; for the&#10;most relevant metrics of the mesh. Although Kiali offers similar views in its&#10;metrics dashboards, it is not in Kiali&amp;rsquo;s goals to provide the advanced querying&#10;options, nor the highly customizable settings, that are available in Grafana.&#10;Thus, it is recommended that you use Grafana if you need those advanced&#10;options.&lt;/p&gt;&#10;&lt;p&gt;Kiali can provide a direct link from its metric dashboards to the equivalent or&#10;most similar Grafana dashboard, which is convenient if you need the powerful&#10;Grafana options.&lt;/p&gt;</description></item><item><title>How to Contribute</title><link>https://staging--kiali.netlify.app/docs/contribution-guidelines/how-to-contribute/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://staging--kiali.netlify.app/docs/contribution-guidelines/how-to-contribute/</guid><description>&lt;h2 id="contributing-to-the-docs"&gt;Contributing to the Docs&lt;/h2&gt;&#10;&lt;p&gt;To contribute to the kiali.io docs see &lt;a href="https://github.com/kiali/kiali.io"&gt;kiali.io on github&lt;/a&gt;.&lt;/p&gt;&#10;&lt;p&gt;In short you will:&lt;/p&gt;&#10;&lt;ol&gt;&#10;&lt;li&gt;Fork the &lt;a href="https://github.com/kiali/kiali.io"&gt;kiali.io repo&lt;/a&gt; on GitHub.&lt;/li&gt;&#10;&lt;li&gt;Make your changes and send a pull request (PR).&lt;/li&gt;&#10;&lt;li&gt;If you&amp;rsquo;re not yet ready for a review, add &amp;ldquo;WIP&amp;rdquo; to the PR name to indicate it&amp;rsquo;s a work in progress.&#10;&lt;ol&gt;&#10;&lt;li&gt;&lt;strong&gt;Don&amp;rsquo;t&lt;/strong&gt; add the Hugo property &amp;ldquo;draft = true&amp;rdquo; to the page front matter, it prevents auto-deployment of the content preview.&lt;/li&gt;&#10;&lt;/ol&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;Wait for the automated PR workflow to do some checks. When it&amp;rsquo;s ready, you should see a comment like this: &lt;strong&gt;deploy/netlify — Deploy preview ready!&lt;/strong&gt;&lt;/li&gt;&#10;&lt;li&gt;Click &lt;strong&gt;Details&lt;/strong&gt; to the right of &amp;ldquo;Deploy preview ready&amp;rdquo; to see a preview of your updates.&lt;/li&gt;&#10;&lt;li&gt;Continue updating your doc and pushing your changes until you&amp;rsquo;re happy with the content.&lt;/li&gt;&#10;&lt;/ol&gt;&#10;&lt;h3 id="updating-a-single-page"&gt;Updating a single page&lt;/h3&gt;&#10;&lt;p&gt;If you&amp;rsquo;ve just spotted something you&amp;rsquo;d like to change while using the docs, there is a shortcut for you:&lt;/p&gt;</description></item><item><title>Install Travels on West cluster</title><link>https://staging--kiali.netlify.app/docs/tutorials/multicluster/10-install-travels-west-cluster-copy/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://staging--kiali.netlify.app/docs/tutorials/multicluster/10-install-travels-west-cluster-copy/</guid><description>&lt;p&gt;We are going to deploy two new services just to distribute traffic on the new cluster. These services are travels v2 and v3:&lt;/p&gt;&#10;&lt;pre tabindex="0"&gt;&lt;code&gt;kubectl create ns travel-agency --context $CLUSTER_WEST&#10;&#10;kubectl label namespace travel-agency istio-injection=enabled --context $CLUSTER_WEST&#10;&#10;kubectl apply -f &amp;lt;(curl -L https://raw.githubusercontent.com/kiali/demos/master/travels/travels-v2.yaml) -n travel-agency --context $CLUSTER_WEST&#10;kubectl apply -f &amp;lt;(curl -L https://raw.githubusercontent.com/kiali/demos/master/travels/travels-v3.yaml) -n travel-agency --context $CLUSTER_WEST&#10;&#10;cat &amp;lt;&amp;lt;EOF | kubectl -n travel-agency --context $CLUSTER_WEST apply -f -&#10;apiVersion: v1&#10;kind: Service&#10;metadata:&#10; name: travels&#10; labels:&#10; app: travels&#10;spec:&#10; ports:&#10; - name: http&#10; port: 8000&#10; selector:&#10; app: travels&#10;---&#10;apiVersion: v1&#10;kind: Service&#10;metadata:&#10; name: insurances&#10; labels:&#10; app: insurances&#10;spec:&#10; ports:&#10; - name: http&#10; port: 8000&#10; selector:&#10; app: insurances&#10;---&#10;apiVersion: v1&#10;kind: Service&#10;metadata:&#10; name: hotels&#10; labels:&#10; app: hotels&#10;spec:&#10; ports:&#10; - name: http&#10; port: 8000&#10; selector:&#10; app: hotels&#10;---&#10;apiVersion: v1&#10;kind: Service&#10;metadata:&#10; name: flights&#10; labels:&#10; app: flights&#10;spec:&#10; ports:&#10; - name: http&#10; port: 8000&#10; selector:&#10; app: flights&#10;---&#10;apiVersion: v1&#10;kind: Service&#10;metadata:&#10; name: discounts&#10; labels:&#10; app: discounts&#10;spec:&#10; ports:&#10; - name: http&#10; port: 8000&#10; selector:&#10; app: discounts&#10;---&#10;apiVersion: v1&#10;kind: Service&#10;metadata:&#10; name: cars&#10; labels:&#10; app: cars&#10;spec:&#10; ports:&#10; - name: http&#10; port: 8000&#10; selector:&#10; app: cars&#10;EOF&#10;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;After the installation, we can see that traffic is flowing to the remote cluster too:&lt;/p&gt;</description></item><item><title>Jaeger</title><link>https://staging--kiali.netlify.app/docs/configuration/external-services/tracing/jaeger/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://staging--kiali.netlify.app/docs/configuration/external-services/tracing/jaeger/</guid><description>&lt;h2 id="jaeger-configuration"&gt;Jaeger configuration&lt;/h2&gt;&#10;&lt;p&gt;Jaeger is a &lt;em&gt;highly recommended&lt;/em&gt; service because &lt;a href="https://staging--kiali.netlify.app/docs/features/tracing/"&gt;Kiali uses distributed&#10;tracing data for several features&lt;/a&gt;,&#10;providing an enhanced experience.&lt;/p&gt;&#10;&lt;p&gt;By default, Kiali will try to reach Jaeger at the GRPC-enabled URL of the form&#10;&lt;code&gt;http://tracing.&amp;lt;istio_namespace_name&amp;gt;:16685/jaeger&lt;/code&gt;, which is the usual case&#10;if you are using &lt;a href="https://istio.io/latest/docs/ops/integrations/jaeger/#option-1-quick-start"&gt;the Jaeger Istio&#10;add-on&lt;/a&gt;.&#10;If this endpoint is unreachable, Kiali will disable features that use&#10;distributed tracing data.&lt;/p&gt;&#10;&lt;p&gt;If your Jaeger instance has a different service name or is installed to a&#10;different namespace, you must manually provide the endpoint where it is&#10;available, like in the following example:&lt;/p&gt;</description></item><item><title>Kiali Backstage Plugin</title><link>https://staging--kiali.netlify.app/docs/integrations/kiali-backstage-plugin/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://staging--kiali.netlify.app/docs/integrations/kiali-backstage-plugin/</guid><description>&lt;p&gt;The Kiali Backstage Plugin provides information about each Service Mesh object related with an entity in &lt;a href="https://backstage.io/docs/overview/what-is-backstage/"&gt;Backstage&lt;/a&gt;, a framework for building developer portals.&lt;/p&gt;&#10;&lt;p&gt;&lt;img src="https://staging--kiali.netlify.app/images/documentation/integration/kiali-tab.png" alt="Kiali-Backstage-tab"&gt;&lt;/p&gt;&#10;&lt;p&gt;The plugin has different views to be included in Backstage:&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Added as cards to see resource lists&lt;/li&gt;&#10;&lt;li&gt;Added as a tab which includes all the predefined Kiali cards&lt;/li&gt;&#10;&lt;li&gt;Added as a page, which views are not going to be filtered by entities and offer a full Kiali view&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;&lt;img src="https://staging--kiali.netlify.app/images/documentation/integration/kiali-page.png" alt="Kiali-Backstage-page"&gt;&lt;/p&gt;</description></item><item><title>OpenShift</title><link>https://staging--kiali.netlify.app/docs/configuration/multi-cluster/external/external-openshift/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://staging--kiali.netlify.app/docs/configuration/multi-cluster/external/external-openshift/</guid><description>&lt;p&gt;These are specific notes for the External Kiali deployment model on OpenShift.&lt;/p&gt;&#10;&lt;h2 id="installation"&gt;Installation&lt;/h2&gt;&#10;&lt;p&gt;It is highly recommended that the Kiali Operator be deployed on all clusters, even if the Kiali Server itself is not deployed on some clusters. This will ensure that the proper namespace and remote cluster resources can be created. Clusters without a Kiali Server will require only the remote cluster resources necessary for remote Kiali Server authentication. To install these resources, configure the Kiali CR with:&lt;/p&gt;</description></item><item><title>OSSM Console</title><link>https://staging--kiali.netlify.app/docs/integrations/ossm-console/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://staging--kiali.netlify.app/docs/integrations/ossm-console/</guid><description>&lt;p&gt;OpenShift Service Mesh Console (OSSMC) is a dynamic plugin for OpenShift Console based on OpenShift &lt;a href="https://docs.redhat.com/en/documentation/openshift_container_platform/4.22/html/web_console/dynamic-plugins"&gt;dynamic plugins&lt;/a&gt; technology.&lt;/p&gt;&#10;&lt;p&gt;OSSMC lets you &lt;a href="https://staging--kiali.netlify.app/docs/ossmc/navigating-multiple-meshes/"&gt;navigate multiple meshes&lt;/a&gt; from the OpenShift Console through &lt;strong&gt;Istios&lt;/strong&gt; and &lt;strong&gt;Kialis&lt;/strong&gt; pages — browse every Istio and Kiali instance on the cluster without requiring a Kiali server connected to the plugin. When a Kiali instance is connected and reachable, OSSMC also provides Kiali-powered observability — a dedicated &lt;strong&gt;Service Mesh&lt;/strong&gt; navigation category with pages for overview, traffic graph, mesh infrastructure, namespaces, applications, services, workloads, and Istio configuration, plus &lt;strong&gt;Service Mesh&lt;/strong&gt; tabs on OpenShift resource detail pages.&lt;/p&gt;</description></item><item><title>OSSMC User Guide</title><link>https://staging--kiali.netlify.app/docs/ossmc/users-guide/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://staging--kiali.netlify.app/docs/ossmc/users-guide/</guid><description>&lt;p&gt;The OpenShift Service Mesh Console (OSSMC) is an extension to the OpenShift Console which provides visibility into your Service Mesh. With the OSSMC plugin installed, a new &lt;strong&gt;Service Mesh&lt;/strong&gt; menu category is available in the navigation menu on the left side of the web console.&lt;/p&gt;&#10;&lt;p&gt;Which pages appear depends on whether a Kiali server is connected to the plugin:&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;strong&gt;With a connected Kiali server&lt;/strong&gt; — When a Kiali instance is connected and reachable, OSSMC provides the full Kiali-powered experience: dedicated list and detail pages for mesh components, plus &lt;strong&gt;Service Mesh&lt;/strong&gt; tabs on OpenShift &lt;strong&gt;Workloads&lt;/strong&gt;, &lt;strong&gt;Services&lt;/strong&gt;, &lt;strong&gt;Projects&lt;/strong&gt;, and &lt;strong&gt;Istio configuration&lt;/strong&gt; detail pages. The features match those of the standalone Kiali Console, organized to integrate with the OpenShift Console.&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Without a connected Kiali server&lt;/strong&gt; — When no Kiali instance is connected (or Kiali is not reachable), OSSMC still provides &lt;strong&gt;Istios&lt;/strong&gt; and &lt;strong&gt;Kialis&lt;/strong&gt; pages that list every Istio and Kiali CR on the cluster. These pages do not require a Kiali server and are especially useful for navigating many mesh instances from one console. See &lt;a href="https://staging--kiali.netlify.app/docs/ossmc/navigating-multiple-meshes/"&gt;Navigating Multiple Meshes&lt;/a&gt;.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;The OSSMC plugin does not replace the standalone Kiali Console. After installing OSSMC, you can still access Kiali through its own route when a Kiali server is deployed. This User Guide discusses the extensions you see from within the OpenShift Console itself — primarily the Kiali-powered pages. For &lt;strong&gt;Istios&lt;/strong&gt; and &lt;strong&gt;Kialis&lt;/strong&gt;, see &lt;a href="https://staging--kiali.netlify.app/docs/ossmc/navigating-multiple-meshes/"&gt;Navigating Multiple Meshes&lt;/a&gt;.&lt;/p&gt;</description></item><item><title>Prometheus</title><link>https://staging--kiali.netlify.app/docs/configuration/external-services/metrics/prometheus/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://staging--kiali.netlify.app/docs/configuration/external-services/metrics/prometheus/</guid><description>&lt;h2 id="prometheus-configuration"&gt;Prometheus configuration&lt;/h2&gt;&#10;&lt;p&gt;Kiali uses Prometheus to generate the&#10;&lt;a href="https://staging--kiali.netlify.app/docs/features/topology/"&gt;topology graph&lt;/a&gt;,&#10;&lt;a href="https://staging--kiali.netlify.app/docs/features/details/#metrics"&gt;show metrics&lt;/a&gt;,&#10;&lt;a href="https://staging--kiali.netlify.app/docs/features/health/"&gt;calculate health&lt;/a&gt; and&#10;for several other features. Prometheus is enabled by default and is required&#10;for full Kiali functionality.&lt;/p&gt;&#10;&lt;h3 id="disabling-prometheus"&gt;Disabling Prometheus&lt;/h3&gt;&#10;&lt;p&gt;If you want to run Kiali without a Prometheus instance, you can disable it:&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-yaml" data-lang="yaml"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;spec&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;external_services&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;prometheus&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;enabled&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;false&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;When Prometheus is disabled, Kiali will still start and serve non-metrics features&#10;such as workload/service/app listing, Istio configuration, and mesh topology.&#10;However, the graph, metrics tabs, traffic tabs, and request-rate health will be&#10;unavailable. Health badges for workloads and apps will degrade to show only&#10;Kubernetes-level status (replica counts).&lt;/p&gt;</description></item><item><title>Token prices</title><link>https://staging--kiali.netlify.app/docs/ai/chatbot/kiali-chatbot-prices/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://staging--kiali.netlify.app/docs/ai/chatbot/kiali-chatbot-prices/</guid><description>&lt;p&gt;Kiali can estimate the monetary cost of ChatAI usage from a &lt;strong&gt;per-model token price catalog&lt;/strong&gt;. Those estimates appear on the AI consumption dashboard and can be used with optional per-user &lt;a href="https://staging--kiali.netlify.app/docs/ai/chatbot/kiali-chatbot-budgets/"&gt;budgets&lt;/a&gt;.&lt;/p&gt;&#10;&lt;p&gt;&lt;strong&gt;To use consumption tracking, token prices, and the AI consumption dashboard, &lt;code&gt;ai.metrics&lt;/code&gt; must be enabled (&lt;code&gt;ai.metrics: true&lt;/code&gt;).&lt;/strong&gt; If metrics are disabled, Kiali does not record token usage, does not estimate cost, and does not show consumption data.&lt;/p&gt;&#10;&lt;p&gt;Cost estimates, dashboard access, and the price catalog are configured under &lt;code&gt;ai.consumption&lt;/code&gt;. For the configuration keys, see &lt;code&gt;ai.metrics&lt;/code&gt; and &lt;code&gt;ai.consumption&lt;/code&gt; in the &lt;a href="https://staging--kiali.netlify.app/docs/configuration/kialis.kiali.io/#.spec.ai"&gt;Kiali CR spec&lt;/a&gt;.&lt;/p&gt;</description></item><item><title>Budgets</title><link>https://staging--kiali.netlify.app/docs/ai/chatbot/kiali-chatbot-budgets/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://staging--kiali.netlify.app/docs/ai/chatbot/kiali-chatbot-budgets/</guid><description>&lt;p&gt;You can cap ChatAI usage per user with &lt;code&gt;ai.consumption.budgets&lt;/code&gt;. Each budget sets a reset interval, optional cost and token limits, and optional provider/model allowlists. Cost limits use the same catalog described in &lt;a href="https://staging--kiali.netlify.app/docs/ai/chatbot/kiali-chatbot-prices/"&gt;Token prices&lt;/a&gt;.&lt;/p&gt;&#10;&lt;p&gt;&lt;strong&gt;To use consumption tracking, token prices, and budgets, &lt;code&gt;ai.metrics&lt;/code&gt; must be enabled (&lt;code&gt;ai.metrics: true&lt;/code&gt;).&lt;/strong&gt; If metrics are disabled, budgets are not enforced and remaining-budget data is not shown.&lt;/p&gt;&#10;&lt;p&gt;If &lt;code&gt;budgets&lt;/code&gt; is empty (the default), there are no budget restrictions.&lt;/p&gt;</description></item><item><title>Prerequisites</title><link>https://staging--kiali.netlify.app/docs/installation/installation-guide/prerequisites/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://staging--kiali.netlify.app/docs/installation/installation-guide/prerequisites/</guid><description>&lt;h2 id="istio"&gt;Istio&lt;/h2&gt;&#10;&lt;p&gt;Before you install Kiali you must have already installed Istio. For full&#10;functionality, you should also install a telemetry storage addon (e.g.&#10;Prometheus), though Kiali can run without it if you disable Prometheus in the&#10;configuration. You might also consider installing Istio&amp;rsquo;s optional tracing&#10;addon (e.g. Tempo) and optional Grafana addon but those are not required by&#10;Kiali. Refer to the&#10;&lt;a href="https://istio.io/docs/setup/getting-started"&gt;Istio documentation&lt;/a&gt; for details.&lt;/p&gt;&#10;&lt;h3 id="optionally-enable-the-debug-interface"&gt;Optionally Enable the Debug Interface&lt;/h3&gt;&#10;&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;</description></item><item><title>Tools (schemas)</title><link>https://staging--kiali.netlify.app/docs/ai/chatbot/kiali-chatbot-tools/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://staging--kiali.netlify.app/docs/ai/chatbot/kiali-chatbot-tools/</guid><description>&lt;p&gt;Kiali Chatbot uses &lt;strong&gt;internal MCP-style tools&lt;/strong&gt; (implemented inside Kiali) to fetch live data and perform safe actions. These are &lt;strong&gt;not&lt;/strong&gt; external MCP server tools.&lt;/p&gt;&#10;&lt;p&gt;Administrators can control which of these tools are exposed to the AI by using &lt;code&gt;ai.chat.tools&lt;/code&gt; for global filtering and &lt;code&gt;ai.chat.providers[].tools&lt;/code&gt; for provider-specific filtering. Use the exact tool names below in &lt;code&gt;enabled_tools&lt;/code&gt; and &lt;code&gt;disabled_tools&lt;/code&gt;.&lt;/p&gt;&#10;&lt;p&gt;The tool &lt;strong&gt;input schemas&lt;/strong&gt; are defined in Kiali under &lt;code&gt;kiali/ai/mcp/tools/*.yaml&lt;/code&gt;. The tool &lt;strong&gt;outputs&lt;/strong&gt; are JSON structures returned by the Kiali backend and consumed by the model and/or UI.&lt;/p&gt;</description></item><item><title>ACM Observability</title><link>https://staging--kiali.netlify.app/docs/configuration/multi-cluster/acm-observability/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://staging--kiali.netlify.app/docs/configuration/multi-cluster/acm-observability/</guid><description>&lt;div class="alert alert-warning" role="alert"&gt;&#10;&lt;p&gt;&lt;strong&gt;OpenShift Only&lt;/strong&gt;: This guide is specifically for Red Hat OpenShift environments using Red Hat Advanced Cluster Management (ACM) for Kubernetes. ACM is an OpenShift-specific product.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;h2 id="overview"&gt;Overview&lt;/h2&gt;&#10;&lt;p&gt;Red Hat Advanced Cluster Management (ACM) provides centralized observability for multi-cluster OpenShift environments through its Observability Service. Metrics from all managed clusters (including the hub cluster itself) are collected and aggregated into a central Thanos-based storage system&lt;/p&gt;&#10;&lt;p&gt;This guide uses the multicluster observability add-on (MCOA) to aggregate mesh metrics on managed clusters (introduced in ACM 4.17), federate selected series, and remote-write them to the central Thanos-based storage system.&lt;/p&gt;</description></item><item><title>Header strategy</title><link>https://staging--kiali.netlify.app/docs/configuration/authentication/header/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://staging--kiali.netlify.app/docs/configuration/authentication/header/</guid><description>&lt;h2 id="introduction"&gt;Introduction&lt;/h2&gt;&#10;&lt;p&gt;The &lt;code&gt;header&lt;/code&gt; strategy assumes a reverse proxy is in front of Kiali, such as&#10;OpenUnison or OAuth2 Proxy, injecting the user&amp;rsquo;s identity into each request to&#10;Kiali as an &lt;code&gt;Authorization&lt;/code&gt; header. This token can be an OpenID Connect&#10;token or any other token the cluster recognizes.&lt;/p&gt;&#10;&lt;p&gt;In addition to a user token, the &lt;code&gt;header&lt;/code&gt; strategy supports impersonation&#10;headers. If the impersonation headers are present in the request, then Kiali&#10;will act on behalf of the user specified by the impersonation (assuming the&#10;token supplied in the &lt;code&gt;Authorization&lt;/code&gt; header is authorized to do so).&lt;/p&gt;</description></item><item><title>Install via Helm</title><link>https://staging--kiali.netlify.app/docs/installation/installation-guide/install-with-helm/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://staging--kiali.netlify.app/docs/installation/installation-guide/install-with-helm/</guid><description>&lt;h2 id="introduction"&gt;Introduction&lt;/h2&gt;&#10;&lt;p&gt;&lt;a href="https://helm.sh/"&gt;Helm&lt;/a&gt; is a popular tool that lets you manage Kubernetes&#10;applications. Applications are defined in a package named &lt;em&gt;Helm chart&lt;/em&gt;, which&#10;contains all of the resources needed to run an application.&lt;/p&gt;&#10;&lt;p&gt;Kiali has a Helm Charts Repository at&#10;&lt;a href="https://kiali.org/helm-charts"&gt;https://kiali.org/helm-charts&lt;/a&gt;. Two Helm&#10;Charts are provided:&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;The &lt;code&gt;kiali-operator&lt;/code&gt; Helm Chart installs the Kiali operator which in turn&#10;installs Kiali when you create a Kiali CR.&lt;/li&gt;&#10;&lt;li&gt;The &lt;code&gt;kiali-server&lt;/code&gt; Helm Chart installs a standalone Kiali without the need of&#10;the Operator nor a Kiali CR.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;div class="alert alert-warning" role="alert"&gt;&#10;&lt;p&gt;The &lt;code&gt;kiali-server&lt;/code&gt; Helm Chart does not provide all the functionality that the Kiali Operator&#10;provides. Some features you read about in the documentation may only be available if&#10;you install the Kiali Server using the Kiali Operator (see this &lt;a href="https://staging--kiali.netlify.app/docs/faq/installation/#what-is-the-difference-between-the-operator-and-the-server-helm-chart"&gt;FAQ&lt;/a&gt; for details).&#10;Therefore, although the &lt;code&gt;kiali-server&lt;/code&gt; Helm Chart&#10;is actively maintained, it is not recommended and is only provided for convenience.&#10;If using Helm, the recommended method is to install the &lt;code&gt;kiali-operator&lt;/code&gt; Helm Chart&#10;and then create a Kiali CR to let the Operator deploy Kiali.&lt;/p&gt;&#10;&lt;/div&gt;</description></item><item><title>Kiali MCP</title><link>https://staging--kiali.netlify.app/docs/ai/kiali-mcp/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://staging--kiali.netlify.app/docs/ai/kiali-mcp/</guid><description>&lt;p&gt;Kiali MCP lets an MCP-capable assistant query a live service mesh, and optionally change Istio configuration, by calling tools that Kiali already implements. The assistant does not talk to Kiali directly. It talks to an MCP server, and that server calls the Kiali API with the caller&amp;rsquo;s Kubernetes token.&lt;/p&gt;&#10;&lt;p&gt;This is separate from the &lt;a href="https://staging--kiali.netlify.app/docs/ai/chatbot/kiali-chatbot/"&gt;Kiali Chatbot&lt;/a&gt;. The chatbot runs inside the Kiali UI and uses Kiali&amp;rsquo;s own tools. Kiali MCP is for an assistant outside Kiali, for example an IDE, that should use the same mesh data.&lt;/p&gt;</description></item><item><title>Perses</title><link>https://staging--kiali.netlify.app/docs/configuration/external-services/dashboards/perses/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://staging--kiali.netlify.app/docs/configuration/external-services/dashboards/perses/</guid><description>&lt;h2 id="perses-configuration"&gt;Perses configuration&lt;/h2&gt;&#10;&lt;p&gt;The Perses community dashboards provide &lt;a href="https://github.com/perses/community-dashboards?tab=readme-ov-file#istio"&gt;preconfigured Perses&#10;dashboards&lt;/a&gt; for the&#10;most relevant mesh metrics. Although Kiali offers similar views in its&#10;metrics dashboards, it is not in Kiali&amp;rsquo;s goals to provide the advanced querying&#10;options, nor the highly customizable settings, that are available in Perses.&#10;They are the same as those provided by Istio&amp;rsquo;s Grafana add-on.&#10;Thus, it is recommended that you use Perses if you need those advanced&#10;options.&lt;/p&gt;</description></item><item><title>Tempo</title><link>https://staging--kiali.netlify.app/docs/configuration/external-services/tracing/tempo/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://staging--kiali.netlify.app/docs/configuration/external-services/tracing/tempo/</guid><description>&lt;ul&gt;&#10;&lt;li&gt;&lt;a href="https://staging--kiali.netlify.app/docs/configuration/external-services/tracing/tempo/#grafana-tempo-configuration"&gt;Grafana Tempo Configuration&lt;/a&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;a href="https://staging--kiali.netlify.app/docs/configuration/external-services/tracing/tempo/#using-the-grafana-tempo-api"&gt;Using the Grafana Tempo API&lt;/a&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;a href="https://staging--kiali.netlify.app/docs/configuration/external-services/tracing/tempo/#set-up-the-kiali-cr"&gt;Setup the Kiali CR&lt;/a&gt;&lt;/li&gt;&#10;&lt;li&gt;&lt;a href="https://staging--kiali.netlify.app/docs/configuration/external-services/tracing/tempo/#set-up-a-tempo-datasource-in-grafana"&gt;Set up a Tempo Datasource in Grafana&lt;/a&gt;&lt;/li&gt;&#10;&lt;li&gt;&lt;a href="https://staging--kiali.netlify.app/docs/configuration/external-services/tracing/tempo/#additional-configuration"&gt;Additional Configuration&lt;/a&gt;&lt;/li&gt;&#10;&lt;li&gt;&lt;a href="https://staging--kiali.netlify.app/docs/configuration/external-services/tracing/tempo/#service-check-url"&gt;Service check URL&lt;/a&gt;&lt;/li&gt;&#10;&lt;li&gt;&lt;a href="https://staging--kiali.netlify.app/docs/configuration/external-services/tracing/tempo/#configuration-for-the-grafana-tempo-datasource"&gt;Configuration for the Grafana Tempo Datasource&lt;/a&gt;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&lt;a href="https://staging--kiali.netlify.app/docs/configuration/external-services/tracing/tempo/#using-the-jaeger-frontend-with-grafana-tempo-tracing-backend"&gt;Using the Jaeger frontend with Grafana Tempo tracing backend&lt;/a&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;a href="https://staging--kiali.netlify.app/docs/configuration/external-services/tracing/tempo/#tanka"&gt;Tanka&lt;/a&gt;&lt;/li&gt;&#10;&lt;li&gt;&lt;a href="https://staging--kiali.netlify.app/docs/configuration/external-services/tracing/tempo/#tempo-operator"&gt;Tempo Operator&lt;/a&gt;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&lt;a href="https://staging--kiali.netlify.app/docs/configuration/external-services/tracing/tempo/#configuration-table"&gt;Configuration table&lt;/a&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;a href="https://staging--kiali.netlify.app/docs/configuration/external-services/tracing/tempo/#supported-versions"&gt;Supported Versions&lt;/a&gt;&lt;/li&gt;&#10;&lt;li&gt;&lt;a href="https://staging--kiali.netlify.app/docs/configuration/external-services/tracing/tempo/#minimal-configuration-for-kiali--179"&gt;Minimal configuration for Kiali &amp;lt;= 1.79&lt;/a&gt;&lt;/li&gt;&#10;&lt;li&gt;&lt;a href="https://staging--kiali.netlify.app/docs/configuration/external-services/tracing/tempo/#minimal-configuration-for-kiali--179-1"&gt;Minimal configuration for Kiali &amp;gt; 1.79&lt;/a&gt;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&lt;a href="https://staging--kiali.netlify.app/docs/configuration/external-services/tracing/tempo/#tempo-tuning"&gt;Tempo tuning&lt;/a&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;a href="https://staging--kiali.netlify.app/docs/configuration/external-services/tracing/tempo/#resources-consumption"&gt;Resources consumption&lt;/a&gt;&lt;/li&gt;&#10;&lt;li&gt;&lt;a href="https://staging--kiali.netlify.app/docs/configuration/external-services/tracing/tempo/#caching"&gt;Caching&lt;/a&gt;&lt;/li&gt;&#10;&lt;li&gt;&lt;a href="https://staging--kiali.netlify.app/docs/configuration/external-services/tracing/tempo/#tune-search-pipeline"&gt;Tune search pipeline&lt;/a&gt;&lt;/li&gt;&#10;&lt;li&gt;&lt;a href="https://staging--kiali.netlify.app/docs/configuration/external-services/tracing/tempo/#dedicated-attribute-columns"&gt;Dedicated attribute columns&lt;/a&gt;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&lt;a href="https://staging--kiali.netlify.app/docs/configuration/external-services/tracing/tempo/#tempo-cache"&gt;Tempo cache&lt;/a&gt;&lt;/li&gt;&#10;&lt;li&gt;&lt;a href="https://staging--kiali.netlify.app/docs/configuration/external-services/tracing/tempo/#tempo-authentication-configuration"&gt;Tempo authentication configuration&lt;/a&gt;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h2 id="grafana-tempo-configuration"&gt;Grafana Tempo Configuration&lt;/h2&gt;&#10;&lt;p&gt;There are two possibilities to integrate Kiali with Grafana Tempo:&lt;/p&gt;</description></item><item><title>Tuning</title><link>https://staging--kiali.netlify.app/docs/configuration/external-services/metrics/tuning/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://staging--kiali.netlify.app/docs/configuration/external-services/metrics/tuning/</guid><description>&lt;p&gt;Production environments should not be using the Istio Prometheus add-on, or carrying over its configuration settings. That is useful only for small, or demo installations. Instead, Prometheus should have been installed in a production-oriented way, following the &lt;a href="https://prometheus.io/docs/prometheus/latest/installation"&gt;Prometheus documentation&lt;/a&gt;.&lt;/p&gt;&#10;&lt;p&gt;This page is primarily for users where Prometheus is being used specifically for Kiali, and possible optimizations that can be made knowing that Kiali does not utilize all of the default Istio and Envoy telemetry.&lt;/p&gt;</description></item><item><title>MultiCluster on OpenShift</title><link>https://staging--kiali.netlify.app/docs/tutorials/ossm-multicluster/ossm-acm-hub-spoke/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://staging--kiali.netlify.app/docs/tutorials/ossm-multicluster/ossm-acm-hub-spoke/</guid><description>&lt;p&gt;This guide sets up a two-cluster OpenShift environment from scratch where:&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;The &lt;strong&gt;hub cluster&lt;/strong&gt; runs Red Hat Advanced Cluster Management (ACM) for fleet management and centralized metrics collection (ACM Observability / Thanos)&lt;/li&gt;&#10;&lt;li&gt;The &lt;strong&gt;spoke cluster&lt;/strong&gt; is imported into ACM and runs OpenShift Service Mesh 3 (OSSM 3) with Kiali&lt;/li&gt;&#10;&lt;li&gt;The spoke mesh has two demo application namespaces: one using Istio ambient mode (via the &lt;code&gt;ZTunnel&lt;/code&gt; CR), one using Istio sidecar injection&lt;/li&gt;&#10;&lt;li&gt;Kiali queries metrics via the ACM Observatorium API on the hub cluster (mTLS), giving it access to Istio metrics collected and forwarded by ACM from the spoke&amp;rsquo;s User Workload Monitoring Prometheus&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;The result is a working Kiali installation that shows traffic graphs, metrics, and mesh topology across both the ambient-mode and sidecar-mode workloads running on the spoke.&lt;/p&gt;</description></item><item><title>Deployment Options</title><link>https://staging--kiali.netlify.app/docs/installation/deployment-options/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://staging--kiali.netlify.app/docs/installation/deployment-options/</guid><description>&lt;p&gt;There are other, more complex deployment settings, described in dedicated pages:&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;a href="https://staging--kiali.netlify.app/docs/configuration/authentication/"&gt;Authentication&lt;/a&gt;&lt;/li&gt;&#10;&lt;li&gt;&lt;a href="https://staging--kiali.netlify.app/docs/installation/installation-guide/accessing-kiali/#ingress-access"&gt;Customization of the Ingress resource&lt;/a&gt;&lt;/li&gt;&#10;&lt;li&gt;&lt;a href="https://staging--kiali.netlify.app/docs/installation/installation-guide/accessing-kiali/#accessing-kiali-through-a-loadbalancer-or-a-nodeport"&gt;Customization of the service type (LoadBalancer or&#10;NodePort)&lt;/a&gt;&lt;/li&gt;&#10;&lt;li&gt;&lt;a href="https://staging--kiali.netlify.app/docs/configuration/namespace-management/"&gt;Namespace management (configuring namespaces accessible and visible to&#10;Kiali)&lt;/a&gt;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;div class="alert alert-success" role="alert"&gt;&#10;&lt;p&gt;All examples on this page are focused&#10;on the Kiali CR (when installing via the Kiali operator). Remember&#10;that Helm charts mirror all these configurations.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;h2 id="kiali-and-istio-installation-namespaces"&gt;Kiali and Istio installation namespaces&lt;/h2&gt;&#10;&lt;p&gt;By default, the Kiali operator installs Kiali in the same namespace where the Kiali CR is created. However, it is possible to specify a different namespace for installation:&lt;/p&gt;</description></item><item><title>Install via OperatorHub</title><link>https://staging--kiali.netlify.app/docs/installation/installation-guide/installing-with-operatorhub/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://staging--kiali.netlify.app/docs/installation/installation-guide/installing-with-operatorhub/</guid><description>&lt;h2 id="introduction"&gt;Introduction&lt;/h2&gt;&#10;&lt;p&gt;The &lt;a href="https://operatorhub.io/"&gt;OperatorHub&lt;/a&gt; is a website that contains a&#10;catalog of &lt;a href="https://kubernetes.io/docs/concepts/extend-kubernetes/operator/"&gt;Kubernetes Operators&lt;/a&gt;.&#10;Its aim is to be the central location to find Operators.&lt;/p&gt;&#10;&lt;p&gt;The OperatorHub relies in the &lt;a href="https://github.com/operator-framework/operator-lifecycle-manager"&gt;Operator Lifecycle Manager (OLM)&lt;/a&gt;&#10;to install, manage and update Operators on any Kubernetes cluster.&lt;/p&gt;&#10;&lt;p&gt;The Kiali Operator is being published to the OperatorHub. So, you can use the&#10;OLM to install and manage the Kiali Operator installation.&lt;/p&gt;&#10;&lt;h2 id="installing-the-kiali-operator-using-the-olm"&gt;Installing the Kiali Operator using the OLM&lt;/h2&gt;&#10;&lt;p&gt;Go to the Kiali Operator page in the OperatorHub: &lt;a href="https://operatorhub.io/operator/kiali"&gt;https://operatorhub.io/operator/kiali&lt;/a&gt;.&lt;/p&gt;</description></item><item><title>Multi-Primary Mesh</title><link>https://staging--kiali.netlify.app/docs/tutorials/ossm-multicluster/ossm-acm-multi-primary/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://staging--kiali.netlify.app/docs/tutorials/ossm-multicluster/ossm-acm-multi-primary/</guid><description>&lt;h1 id="multi-primary-mesh-on-openshift-with-acm"&gt;Multi-Primary Mesh on OpenShift with ACM&lt;/h1&gt;&#10;&lt;p&gt;This guide extends the result of the &lt;a href="https://staging--kiali.netlify.app/docs/tutorials/ossm-multicluster/ossm-acm-hub-spoke/"&gt;MultiCluster on OpenShift&lt;/a&gt; guide into a &lt;strong&gt;two-primary Istio mesh&lt;/strong&gt; spanning two spoke clusters. The ACM hub cluster is not changed — it remains dedicated to fleet management and centralized metrics collection.&lt;/p&gt;&#10;&lt;p&gt;&lt;strong&gt;What this guide adds:&lt;/strong&gt;&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;A second spoke cluster (&lt;code&gt;ossm-kiali-spoke-two&lt;/code&gt;) is imported into ACM and gets OSSM 3 installed&lt;/li&gt;&#10;&lt;li&gt;Both spoke clusters are updated to share a single Istio mesh via East-West gateways and cross-cluster endpoint discovery&lt;/li&gt;&#10;&lt;li&gt;ACM Observability is extended to collect metrics from the second spoke&lt;/li&gt;&#10;&lt;li&gt;Kiali on the first spoke gains API access to the second spoke&amp;rsquo;s workloads via a remote cluster secret&lt;/li&gt;&#10;&lt;li&gt;A cross-cluster demo app demonstrates traffic flowing between the two spokes&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;&lt;strong&gt;Cluster roles after this guide:&lt;/strong&gt;&lt;/p&gt;</description></item><item><title>OpenID Connect strategy</title><link>https://staging--kiali.netlify.app/docs/configuration/authentication/openid/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://staging--kiali.netlify.app/docs/configuration/authentication/openid/</guid><description>&lt;h2 id="introduction"&gt;Introduction&lt;/h2&gt;&#10;&lt;p&gt;The &lt;code&gt;openid&lt;/code&gt; authentication strategy lets you integrate Kiali to an external&#10;identity provider that implements &lt;a href="https://openid.net/connect/"&gt;OpenID Connect&lt;/a&gt;, and allows&#10;users to login to Kiali using their existing accounts of a&#10;third-party system.&lt;/p&gt;&#10;&lt;p&gt;If your&#10;&lt;a href="https://kubernetes.io/docs/reference/access-authn-authz/authentication/#openid-connect-tokens"&gt;Kubernetes cluster is also integrated with your OpenId provider&lt;/a&gt;,&#10;then Kiali&amp;rsquo;s &lt;code&gt;openid&lt;/code&gt; strategy can offer&#10;&lt;a href="https://staging--kiali.netlify.app/docs/configuration/rbac/"&gt;namespace access control&lt;/a&gt;.&lt;/p&gt;&#10;&lt;p&gt;Kiali only supports the &lt;em&gt;authorization code flow&lt;/em&gt; of the &lt;a href="https://openid.net/connect/"&gt;OpenId Connect spec&lt;/a&gt;.&lt;/p&gt;&#10;&lt;h2 id="requirements"&gt;Requirements&lt;/h2&gt;&#10;&lt;p&gt;The &lt;a href="https://staging--kiali.netlify.app/docs/configuration/authentication/session-configs/"&gt;Kiali&amp;rsquo;s signing key&lt;/a&gt; needs to be 16, 24&#10;or 32 byte long. If you install Kiali via the operator and don&amp;rsquo;t set a custom&#10;signing key, the operator should create a 16 byte long signing key.&lt;/p&gt;</description></item><item><title>TLS Configuration</title><link>https://staging--kiali.netlify.app/docs/configuration/external-services/tls-configuration/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://staging--kiali.netlify.app/docs/configuration/external-services/tls-configuration/</guid><description>&lt;h2 id="overview"&gt;Overview&lt;/h2&gt;&#10;&lt;p&gt;When Kiali connects to external services (Prometheus, Grafana, Jaeger/Tempo, Perses) over HTTPS, it needs to verify the TLS certificates presented by those services. By default, Kiali trusts the system certificate authorities (CAs) that are built into the container image.&lt;/p&gt;&#10;&lt;p&gt;If your external services use certificates issued by a private CA (such as an internal corporate CA, a service mesh CA, or self-signed certificates), you need to configure Kiali to trust those additional CAs.&lt;/p&gt;</description></item><item><title>Dashboards and Tracing</title><link>https://staging--kiali.netlify.app/docs/tutorials/ossm-multicluster/ossm-dashboards-tracing/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://staging--kiali.netlify.app/docs/tutorials/ossm-multicluster/ossm-dashboards-tracing/</guid><description>&lt;p&gt;This guide extends the result of the &lt;a href="https://staging--kiali.netlify.app/docs/tutorials/ossm-multicluster/ossm-acm-multi-primary/"&gt;Multi-Primary Mesh&lt;/a&gt; guide by adding two observability tools that operate across both spoke clusters. Both tools are delivered through the Red Hat &lt;strong&gt;Cluster Observability Operator (COO)&lt;/strong&gt;, which manages their deployment and integrates them into the OpenShift console:&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;strong&gt;Phase 1 — Perses&lt;/strong&gt;: Deploys a Perses metrics dashboard server and OpenShift console plugin via COO. The datasource is pointed at hub Thanos so it queries aggregated metrics from both spokes, giving a true multi-cluster view.&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Phase 2 — Tempo&lt;/strong&gt;: Deploys a distributed tracing server and OpenShift console plugin via COO. A central Tempo instance on &lt;code&gt;spoke&lt;/code&gt; collects traces from both clusters via OpenTelemetry collectors. Kiali links to the console tracing UI and can filter traces by cluster. Neither ACM Observability nor any other component already in place aggregates traces — that requires an explicit OTEL pipeline, which this guide sets up.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;The diagram below shows the environment after this guide completes. Components from Guides 1–2 are marked &lt;code&gt;prior&lt;/code&gt;; badges such as &lt;code&gt;G3:P2.4-2.5&lt;/code&gt; mark which guide section(s) add each piece (Guide 3, §§2.4–2.5). Click the diagram to open a full-size SVG in a new tab.&lt;/p&gt;</description></item><item><title>Health Status Alerts</title><link>https://staging--kiali.netlify.app/docs/tutorials/ossm-multicluster/ossm-health-status-alerts/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://staging--kiali.netlify.app/docs/tutorials/ossm-multicluster/ossm-health-status-alerts/</guid><description>&lt;h2 id="overview"&gt;Overview&lt;/h2&gt;&#10;&lt;div class="alert alert-info" role="alert"&gt;&#10;&lt;p&gt;&lt;strong&gt;This guide is the fourth in the series but also works standalone.&lt;/strong&gt; The earlier guides focus on setting up a multi-cluster OpenShift environment; this guide applies to any OpenShift cluster running Kiali — single-cluster or multi-cluster. Follow Phases 1–5 on any cluster to set up health-status alerting. Phase 6 adds optional multi-cluster integration with ACM for readers who completed the earlier guides. Phase 7 is also optional: it installs the Network Observability Operator on the Kiali cluster and surfaces the same health rules on &lt;strong&gt;Observe &amp;gt; Network Health&lt;/strong&gt;.&lt;/p&gt;&#10;&lt;/div&gt;</description></item><item><title>OpenShift strategy</title><link>https://staging--kiali.netlify.app/docs/configuration/authentication/openshift/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://staging--kiali.netlify.app/docs/configuration/authentication/openshift/</guid><description>&lt;h2 id="introduction"&gt;Introduction&lt;/h2&gt;&#10;&lt;p&gt;The &lt;code&gt;openshift&lt;/code&gt; authentication strategy is the preferred and default strategy&#10;when Kiali is deployed on an OpenShift cluster.&lt;/p&gt;&#10;&lt;p&gt;When using the &lt;code&gt;openshift&lt;/code&gt; strategy, a user logging into Kiali will be&#10;redirected to the login page of the OpenShift console. Once the user provides&#10;his OpenShift credentials, he will be redireted back to Kiali and will be&#10;logged in if the user has enough privileges.&lt;/p&gt;&#10;&lt;p&gt;The &lt;code&gt;openshift&lt;/code&gt; strategy supports &lt;a href="https://staging--kiali.netlify.app/docs/configuration/rbac/"&gt;namespace access control&lt;/a&gt;.&lt;/p&gt;</description></item><item><title>The Kiali CR</title><link>https://staging--kiali.netlify.app/docs/installation/installation-guide/creating-updating-kiali-cr/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://staging--kiali.netlify.app/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="https://staging--kiali.netlify.app/docs/configuration/kialis.kiali.io/"&gt;Kiali CR&lt;/a&gt;), a custom resource that contains the Kiali Server deployment configuration. Creating, updating, or removing a&#10;Kiali CR will trigger the Kiali Operator to install, update, or remove Kiali.&lt;/p&gt;&#10;&lt;div class="alert alert-success" role="alert"&gt;&#10;&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;&#10;&lt;pre tabindex="0"&gt;&lt;code&gt;$ kubectl annotate kiali my-kiali -n istio-system --overwrite kiali.io/reconcile=&amp;#34;$(date)&amp;#34;&#10;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description></item><item><title>The OSSMConsole CR</title><link>https://staging--kiali.netlify.app/docs/installation/installation-guide/creating-updating-ossmconsole-cr/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://staging--kiali.netlify.app/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 when a Kiali server is connected to the plugin. OSSMC is applicable only within OpenShift environments.&lt;/p&gt;&#10;&lt;p&gt;The main component of OSSMC is a plugin that gets installed inside the OpenShift Console. Prior to installing this plugin, you must install the Kiali Operator. A Kiali Server is optional for the initial plugin install — without it, OSSMC still provides &lt;strong&gt;Istios&lt;/strong&gt; and &lt;strong&gt;Kialis&lt;/strong&gt; pages for navigating multiple mesh instances from the console. See &lt;a href="https://staging--kiali.netlify.app/docs/ossmc/navigating-multiple-meshes/"&gt;Navigating Multiple Meshes&lt;/a&gt;. Please see the &lt;a href="https://staging--kiali.netlify.app/docs/installation/installation-guide/"&gt;Installation Guide&lt;/a&gt; for Kiali Operator installation details.&lt;/p&gt;</description></item><item><title>Accessing Kiali</title><link>https://staging--kiali.netlify.app/docs/installation/installation-guide/accessing-kiali/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://staging--kiali.netlify.app/docs/installation/installation-guide/accessing-kiali/</guid><description>&lt;h2 id="introduction"&gt;Introduction&lt;/h2&gt;&#10;&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;&#10;&lt;p&gt;If exposing Kiali in a custom way, you may need to &lt;a href="https://staging--kiali.netlify.app/docs/installation/installation-guide/accessing-kiali/#route-configs"&gt;set some configurations&lt;/a&gt;&#10;to make Kiali aware of how users will access Kiali.&lt;/p&gt;&#10;&lt;div class="alert alert-warning" role="alert"&gt;&#10;&lt;p&gt;The examples on this page assume that you followed the &lt;a href="https://staging--kiali.netlify.app/docs/installation/installation-guide/"&gt;Installation guide&lt;/a&gt; to install Kiali, and that you&#10;installed Kiali in the &lt;code&gt;istio-system&lt;/code&gt; namespace.&lt;/p&gt;&#10;&lt;/div&gt;</description></item><item><title>Token strategy</title><link>https://staging--kiali.netlify.app/docs/configuration/authentication/token/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://staging--kiali.netlify.app/docs/configuration/authentication/token/</guid><description>&lt;h2 id="introduction"&gt;Introduction&lt;/h2&gt;&#10;&lt;p&gt;The &lt;code&gt;token&lt;/code&gt; authentication strategy allows a user to login to Kiali using the&#10;token of a Kubernetes ServiceAccount. This is similar to the&#10;&lt;a href="https://github.com/kubernetes/dashboard/blob/master/docs/user/access-control/README.md#login-view"&gt;login view of Kubernetes Dashboard&lt;/a&gt;.&lt;/p&gt;&#10;&lt;p&gt;The &lt;code&gt;token&lt;/code&gt; strategy supports &lt;a href="https://staging--kiali.netlify.app/docs/configuration/rbac/"&gt;namespace access control&lt;/a&gt;.&lt;/p&gt;&#10;&lt;p&gt;The &lt;code&gt;token&lt;/code&gt; strategy is only supported for single cluster.&lt;/p&gt;&#10;&lt;h2 id="set-up"&gt;Set-up&lt;/h2&gt;&#10;&lt;p&gt;Since &lt;code&gt;token&lt;/code&gt; is the default strategy when deploying Kiali in Kubernetes, you&#10;shouldn&amp;rsquo;t need to configure anything, unless your cluster is OpenShift. If you&#10;want to be verbose or if you need to enable the &lt;code&gt;token&lt;/code&gt; strategy in OpenShift,&#10;use the following configuration in the Kiali CR:&lt;/p&gt;</description></item><item><title>Advanced Install</title><link>https://staging--kiali.netlify.app/docs/installation/installation-guide/advanced-install-options/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://staging--kiali.netlify.app/docs/installation/installation-guide/advanced-install-options/</guid><description>&lt;h2 id="canary-upgrades"&gt;Canary upgrades&lt;/h2&gt;&#10;&lt;p&gt;During a canary upgrade where multiple controlplanes are present, Kiali will automatically&#10;detect both controlplanes. You can visit the &lt;a href="https://staging--kiali.netlify.app/docs/features/istio-component-status/#mesh-page"&gt;mesh page&lt;/a&gt;&#10;to visualize your controlplanes during a canary upgrade.&lt;/p&gt;&#10;&lt;h2 id="installing-a-kiali-server-of-a-different-version-than-the-operator"&gt;Installing a Kiali Server of a different version than the Operator&lt;/h2&gt;&#10;&lt;p&gt;When you install the Kiali Operator, it will be configured to install a Kiali&#10;Server that is the same version as the operator itself. For example, if you&#10;have Kiali Operator v1.34.0 installed, that operator will install Kiali Server&#10;v1.34.0. If you upgrade (or downgrade) the Kiali Operator, the operator will in&#10;turn upgrade (or downgrade) the Kiali Server.&lt;/p&gt;</description></item><item><title>Session options</title><link>https://staging--kiali.netlify.app/docs/configuration/authentication/session-configs/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://staging--kiali.netlify.app/docs/configuration/authentication/session-configs/</guid><description>&lt;p&gt;There are two settings that are available for the user&amp;rsquo;s session. The first one&#10;is the &lt;strong&gt;session expiration time&lt;/strong&gt;, which is only applicable to&#10;&lt;a href="https://staging--kiali.netlify.app/docs/configuration/authentication/token/"&gt;token&lt;/a&gt; and &lt;a href="https://staging--kiali.netlify.app/docs/configuration/authentication/header/"&gt;header&lt;/a&gt;&#10;authentication strategies:&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-yaml" data-lang="yaml"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;spec&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;login_token&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#8f5902;font-style:italic"&gt;# By default, users session expires in 24 hours.&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;expiration_seconds&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#0000cf;font-weight:bold"&gt;86400&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;The session expiration time is the amount of time before the user is asked to&#10;extend his session by another cycle. It does not matter if the user is actively&#10;using Kiali, the user will be asked if the session should be extended.&lt;/p&gt;</description></item><item><title>Example Install</title><link>https://staging--kiali.netlify.app/docs/installation/installation-guide/example-install/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://staging--kiali.netlify.app/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;&#10;&lt;p&gt;For this example, assume there is a Minikube Kubernetes cluster running with an&#10;Istio control plane installed in the namespace &lt;code&gt;istio-system&lt;/code&gt; and&#10;the Istio Bookinfo Demo installed in the namespace &lt;code&gt;bookinfo&lt;/code&gt;:&lt;/p&gt;</description></item><item><title>Uninstall Travel Demo</title><link>https://staging--kiali.netlify.app/docs/tutorials/travels/99-uninstall/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://staging--kiali.netlify.app/docs/tutorials/travels/99-uninstall/</guid><description>&lt;p&gt;Remove components in reverse order of installation: the Travel Demo application, Kiali, Istio, and (on Kind) the cluster itself.&lt;/p&gt;&#10;&lt;h2 id="uninstall-the-travel-demo"&gt;Uninstall the Travel Demo&lt;/h2&gt;&#10;&lt;p&gt;Delete the demo namespaces:&lt;/p&gt;&#10;&lt;pre tabindex="0"&gt;&lt;code&gt;kubectl delete namespace travel-agency&#10;kubectl delete namespace travel-portal&#10;kubectl delete namespace travel-control&#10;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Alternatively, delete the manifests first (this removes any Istio resources created in those namespaces during the tutorial):&lt;/p&gt;&#10;&lt;pre tabindex="0"&gt;&lt;code&gt;kubectl delete -f &amp;lt;(curl -L https://raw.githubusercontent.com/kiali/demos/master/travels/travel_agency.yaml) -n travel-agency --ignore-not-found&#10;kubectl delete -f &amp;lt;(curl -L https://raw.githubusercontent.com/kiali/demos/master/travels/travel_portal.yaml) -n travel-portal --ignore-not-found&#10;kubectl delete -f &amp;lt;(curl -L https://raw.githubusercontent.com/kiali/demos/master/travels/travel_control.yaml) -n travel-control --ignore-not-found&#10;&#10;kubectl delete namespace travel-agency&#10;kubectl delete namespace travel-portal&#10;kubectl delete namespace travel-control&#10;&lt;/code&gt;&lt;/pre&gt;&lt;div class="alert alert-warning" role="alert"&gt;&lt;div class="h4 alert-heading" role="heading"&gt;OpenShift&lt;/div&gt;&#10;&lt;p&gt;If you used the Kiali Travel Demo install script, it can also remove OpenShift-specific resources (SecurityContextConstraints and NetworkAttachmentDefinitions):&lt;/p&gt;&#10;&lt;pre tabindex="0"&gt;&lt;code&gt;./hack/istio/install-travel-agency-demo.sh -c oc -d true&#10;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description></item><item><title>AI</title><link>https://staging--kiali.netlify.app/docs/faq/ai/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://staging--kiali.netlify.app/docs/faq/ai/</guid><description>&lt;h3 id="what-is-kiali-chatbot-and-what-is-its-status"&gt;What is Kiali Chatbot and what is its status?&lt;/h3&gt;&#10;&lt;p&gt;Kiali Chatbot is Kiali&amp;rsquo;s built-in AI assistant in the Kiali UI. It helps users ask questions about their service mesh and get responses grounded in live Kiali data (for example, graph, metrics, traces, logs, and resource details).&lt;/p&gt;&#10;&lt;p&gt;The chatbot was first released in Kiali 2.22 and is currently in &lt;strong&gt;Dev preview&lt;/strong&gt;. See &lt;a href="https://staging--kiali.netlify.app/docs/ai/chatbot/kiali-chatbot/"&gt;Kiali Chatbot&lt;/a&gt; for details.&lt;/p&gt;&#10;&lt;h3 id="does-kiali-chatbot-require-an-external-mcp-server"&gt;Does Kiali Chatbot require an external MCP server?&lt;/h3&gt;&#10;&lt;p&gt;No. Kiali Chatbot does not require an external MCP server. It uses internal MCP-style tools implemented in Kiali itself.&lt;/p&gt;</description></item><item><title>Ambient</title><link>https://staging--kiali.netlify.app/docs/faq/ambient/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://staging--kiali.netlify.app/docs/faq/ambient/</guid><description>&lt;h3 id="why-cant-i-see-the-traffic-graph-when-not-using-a-waypoint"&gt;Why can&amp;rsquo;t I see the traffic graph when not using a Waypoint?&lt;/h3&gt;&#10;&lt;p&gt;There can be multiple reasons, but here are some troubleshooting steps:&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Is the application correctly enrolled in Ambient?&#10;Make sure you see the Ambient label in the control plane card in Kiali, or make sure the namespace is labeled with &lt;code&gt;istio.io/dataplane-mode=ambient&lt;/code&gt;.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;&lt;img src="https://staging--kiali.netlify.app/images/documentation/faq/ambient/dataplane.png" alt="Ambient dataplane"&gt;&lt;/p&gt;&#10;&lt;p&gt;This means that the traffic graph will have L4 metrics if there is traffic. You want to make sure the traffic selectors select &lt;code&gt;ZTunnel&lt;/code&gt; as well as the type of traffic (e.g. &lt;code&gt;Tcp&lt;/code&gt;) that is flowing:&lt;/p&gt;</description></item><item><title>Appearance</title><link>https://staging--kiali.netlify.app/docs/features/appearance/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://staging--kiali.netlify.app/docs/features/appearance/</guid><description>&lt;p&gt;The standalone Kiali Console lets you customize how the interface looks on your device. These choices are saved in your browser and persist across sessions.&lt;/p&gt;&#10;&lt;p&gt;For language settings, see &lt;a href="https://staging--kiali.netlify.app/docs/features/internationalization/"&gt;Internationalization&lt;/a&gt;.&lt;/p&gt;&#10;&lt;h2 id="opening-preferences"&gt;Opening Preferences&lt;/h2&gt;&#10;&lt;p&gt;Open the user dropdown in the top-right corner and select &lt;strong&gt;Preferences&lt;/strong&gt;.&lt;/p&gt;&#10;&lt;p&gt;&lt;img src="https://staging--kiali.netlify.app/images/documentation/features/appearance/preferences-user-dropdown.png" alt="User dropdown with Preferences menu item" title="User dropdown with Preferences menu item"&gt;&lt;/p&gt;&#10;&lt;p&gt;In the &lt;strong&gt;Preferences&lt;/strong&gt; modal, adjust color scheme, contrast mode, and theme:&lt;/p&gt;&#10;&lt;p&gt;&lt;img src="https://staging--kiali.netlify.app/images/documentation/features/appearance/appearance-preferences.png" alt="Preferences appearance settings" title="Preferences appearance settings"&gt;&lt;/p&gt;&#10;&lt;p&gt;The examples below use the Overview page so you can compare how each option changes the console.&lt;/p&gt;</description></item><item><title>Application Wizards</title><link>https://staging--kiali.netlify.app/docs/features/wizards/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://staging--kiali.netlify.app/docs/features/wizards/</guid><description>&lt;h2 id="wizards"&gt;Istio Application Wizards&lt;/h2&gt;&#10;&lt;p&gt;Kiali provides &lt;em&gt;Actions&lt;/em&gt; to create, update and delete Istio configuration, driven by wizards.&lt;/p&gt;&#10;&lt;p&gt;Actions can be applied to a &lt;em&gt;Service&lt;/em&gt;&lt;/p&gt;&#10;&lt;p&gt;&lt;img src="https://staging--kiali.netlify.app/images/documentation/features/actions-service.png" alt="Service Detail Actions" title="Service Detail Actions"&gt;&lt;/p&gt;&#10;&lt;p&gt;Actions can also be applied to a &lt;em&gt;Workload&lt;/em&gt;&lt;/p&gt;&#10;&lt;p&gt;&lt;img src="https://staging--kiali.netlify.app/images/documentation/features/actions-workload.png" alt="Workload Detail Actions" title="Workload Detail Actions"&gt;&lt;/p&gt;&#10;&lt;p&gt;And, actions are available for an entire &lt;em&gt;Namespace&lt;/em&gt;&lt;/p&gt;&#10;&lt;p&gt;&lt;img src="https://staging--kiali.netlify.app/images/documentation/features/actions-namespace.png" alt="Namespace Actions" title="Namespace Actions"&gt;&lt;/p&gt;&#10;&lt;h2 id="service-actions"&gt;Service Actions&lt;/h2&gt;&#10;&lt;p&gt;Kiali offers a robust set of service actions, with accompanying wizards.&lt;/p&gt;&#10;&lt;h3 id="traffic-management-request-routing"&gt;Traffic Management: Request Routing&lt;/h3&gt;&#10;&lt;p&gt;The Request Routing Wizard allows creating multiple routing rules.&lt;/p&gt;</description></item><item><title>Architecture</title><link>https://staging--kiali.netlify.app/docs/architecture/architecture/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://staging--kiali.netlify.app/docs/architecture/architecture/</guid><description>&lt;h2 id="kiali-architecture"&gt;Kiali architecture&lt;/h2&gt;&#10;&lt;p&gt;Kiali is composed of two components: a back-end application running in the&#10;container application platform, and a user-facing front-end application.&#10;Kiali depends on external services and components provided by the&#10;container application platform and Istio.&lt;/p&gt;&#10;&lt;p&gt;The following diagram illustrates the components involved in Kiali and its&#10;interactions:&lt;/p&gt;&#10;&lt;p&gt;&lt;img src="https://staging--kiali.netlify.app/images/documentation/architecture/arch.png" alt="Kiali architecture"&gt;&lt;/p&gt;&#10;&lt;h3 id="kiali-back-end"&gt;Kiali back-end&lt;/h3&gt;&#10;&lt;p&gt;The back-end is the application that runs in the container application platform.&#10;It&amp;rsquo;s written in &lt;a href="http://golang.org/"&gt;Go&lt;/a&gt;. The code can be found at&#10;&lt;a href="https://github.com/kiali/kiali"&gt;kiali/kiali GitHub repository&lt;/a&gt;.&lt;/p&gt;</description></item><item><title>Authentication</title><link>https://staging--kiali.netlify.app/docs/faq/authentication/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://staging--kiali.netlify.app/docs/faq/authentication/</guid><description>&lt;h3 id="how-to-obtain-a-token-when-logging-in-via-token-auth-strategy"&gt;How to obtain a token when logging in via token auth strategy&lt;/h3&gt;&#10;&lt;p&gt;When configuring Kiali to use the &lt;code&gt;token&lt;/code&gt; auth strategy, it requires users to log into Kiali as a specific user via the user&amp;rsquo;s service account token. Thus, in order to log into Kiali you must provide a valid Kubernetes token.&lt;/p&gt;&#10;&lt;p&gt;Note that the following examples assume you installed Kiali in the &lt;code&gt;istio-system&lt;/code&gt; namespace.&lt;/p&gt;&#10;&lt;p&gt;&lt;strong&gt;For Kubernetes prior to v1.24&lt;/strong&gt;&lt;/p&gt;</description></item><item><title>Concepts</title><link>https://staging--kiali.netlify.app/docs/architecture/terminology/concepts/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://staging--kiali.netlify.app/docs/architecture/terminology/concepts/</guid><description>&lt;h3 id="application"&gt;Application&lt;/h3&gt;&#10;&lt;p&gt;Is a logical grouping of &lt;a href="https://staging--kiali.netlify.app/docs/architecture/terminology/concepts/#workload"&gt;Workloads&lt;/a&gt; defined by the application labels that users apply to an object. In Istio it is defined by the &lt;a href="https://staging--kiali.netlify.app/docs/architecture/terminology/concepts/#label-app"&gt;Label App&lt;/a&gt;. See &lt;a href="https://istio.io/docs/setup/kubernetes/spec-requirements/"&gt;Istio Label Requirements&lt;/a&gt;.&lt;/p&gt;&#10;&lt;h3 id="application-name"&gt;Application Name&lt;/h3&gt;&#10;&lt;p&gt;It&amp;rsquo;s the name of the &lt;a href="https://staging--kiali.netlify.app/docs/architecture/terminology/concepts/#application"&gt;Application&lt;/a&gt; deployed in your environment. This name is provided by the &lt;a href="https://staging--kiali.netlify.app/docs/architecture/terminology/concepts/#label-app"&gt;Label App&lt;/a&gt; on the &lt;a href="https://staging--kiali.netlify.app/docs/architecture/terminology/concepts/#workload"&gt;Workload&lt;/a&gt;.&lt;/p&gt;&#10;&lt;h3 id="envoy"&gt;Envoy&lt;/h3&gt;&#10;&lt;p&gt;A proxy that Istio starts for each pod in the service mesh.&#10;For more information see the &lt;a href="https://istio.io/docs/ops/deployment/architecture/#envoy"&gt;Istio Envoy Documentation&lt;/a&gt;.&lt;/p&gt;&#10;&lt;h3 id="envoy-health"&gt;Envoy Health&lt;/h3&gt;&#10;&lt;p&gt;A health check performed by Envoy proxies, for inbound and outbound traffic: see membership_healthy and membership_total from &lt;a href="https://www.envoyproxy.io/docs/envoy/v1.7.1/configuration/cluster_manager/cluster_stats#general"&gt;Envoy documentation&lt;/a&gt;.&lt;/p&gt;</description></item><item><title>Console Customization</title><link>https://staging--kiali.netlify.app/docs/configuration/console-customization/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://staging--kiali.netlify.app/docs/configuration/console-customization/</guid><description>&lt;h2 id="custom-metric-aggregations"&gt;Custom metric aggregations&lt;/h2&gt;&#10;&lt;p&gt;The inbound and outbound metric pages, in the &lt;em&gt;Metrics settings&lt;/em&gt; drop-down,&#10;provides an opinionated set of groupings that work both for filtering out&#10;metric data that does not match the selection and for aggregating data into&#10;series. Each option is backed by a label on the collected Istio telemetry.&lt;/p&gt;&#10;&lt;p&gt;It is possible to add custom aggregations, like in the following example:&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-yaml" data-lang="yaml"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;spec&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;kiali_feature_flags&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;ui_defaults&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;metrics_inbound&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;aggregations&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;- &lt;span style="color:#204a87;font-weight:bold"&gt;display_name&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#000"&gt;Istio Network&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;label&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#000"&gt;topology_istio_io_network&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;- &lt;span style="color:#204a87;font-weight:bold"&gt;display_name&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#000"&gt;Istio Revision&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;label&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#000"&gt;istio_io_rev&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;metrics_outbound&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;aggregations&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;- &lt;span style="color:#204a87;font-weight:bold"&gt;display_name&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#000"&gt;Istio Revision&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;label&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#000"&gt;istio_io_rev&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Notice that custom aggregations for inbound and outbound metrics are defined separately.&lt;/p&gt;</description></item><item><title>Custom Dashboards</title><link>https://staging--kiali.netlify.app/docs/configuration/custom-dashboard/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://staging--kiali.netlify.app/docs/configuration/custom-dashboard/</guid><description>&lt;p&gt;&lt;a href="https://staging--kiali.netlify.app/docs/features/details/#custom-dash"&gt;Custom Dashboards&lt;/a&gt; require some configuration to work properly.&lt;/p&gt;&#10;&lt;h2 id="declaring-a-custom-dashboard"&gt;Declaring a custom dashboard&lt;/h2&gt;&#10;&lt;p&gt;When installing Kiali, you define your own custom dashboards in the Kiali CR &lt;code&gt;spec.custom_dashboards&lt;/code&gt; field. Here&amp;rsquo;s an example of what it looks like:&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-yaml" data-lang="yaml"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;custom_dashboards&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;- &lt;span style="color:#204a87;font-weight:bold"&gt;name&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#000"&gt;vertx-custom&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;title&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#000"&gt;Vert.x Metrics&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;runtime&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#000"&gt;Vert.x&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;discoverOn&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#4e9a06"&gt;&amp;#34;vertx_http_server_connections&amp;#34;&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;items&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;- &lt;span style="color:#204a87;font-weight:bold"&gt;chart&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;name&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#4e9a06"&gt;&amp;#34;Server response time&amp;#34;&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;unit&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#4e9a06"&gt;&amp;#34;seconds&amp;#34;&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;spans&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#0000cf;font-weight:bold"&gt;6&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;metrics&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;- &lt;span style="color:#204a87;font-weight:bold"&gt;metricName&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#4e9a06"&gt;&amp;#34;vertx_http_server_responseTime_seconds&amp;#34;&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;displayName&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#4e9a06"&gt;&amp;#34;Server response time&amp;#34;&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;dataType&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#4e9a06"&gt;&amp;#34;histogram&amp;#34;&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;aggregations&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;- &lt;span style="color:#204a87;font-weight:bold"&gt;label&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#4e9a06"&gt;&amp;#34;path&amp;#34;&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;displayName&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#4e9a06"&gt;&amp;#34;Path&amp;#34;&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;- &lt;span style="color:#204a87;font-weight:bold"&gt;label&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#4e9a06"&gt;&amp;#34;method&amp;#34;&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;displayName&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#4e9a06"&gt;&amp;#34;Method&amp;#34;&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;- &lt;span style="color:#204a87;font-weight:bold"&gt;chart&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;name&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#4e9a06"&gt;&amp;#34;Server active connections&amp;#34;&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;unit&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#4e9a06"&gt;&amp;#34;&amp;#34;&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;spans&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#0000cf;font-weight:bold"&gt;6&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;metricName&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#4e9a06"&gt;&amp;#34;vertx_http_server_connections&amp;#34;&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;dataType&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#4e9a06"&gt;&amp;#34;raw&amp;#34;&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;- &lt;span style="color:#204a87;font-weight:bold"&gt;include&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#4e9a06"&gt;&amp;#34;micrometer-1.1-jvm&amp;#34;&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;externalLinks&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;- &lt;span style="color:#204a87;font-weight:bold"&gt;name&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#4e9a06"&gt;&amp;#34;My custom Grafana dashboard&amp;#34;&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;type&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#4e9a06"&gt;&amp;#34;grafana&amp;#34;&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;variables&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;app&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#000"&gt;var-app&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;namespace&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#000"&gt;var-namespace&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;version&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#000"&gt;var-version&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;The &lt;em&gt;name&lt;/em&gt; field corresponds to what you can set in the pod annotation &lt;a href="https://staging--kiali.netlify.app/docs/configuration/custom-dashboard/#pod-annotations"&gt;kiali.io/dashboards&lt;/a&gt;.&lt;/p&gt;</description></item><item><title>Debugging Kiali</title><link>https://staging--kiali.netlify.app/docs/configuration/debugging-kiali/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://staging--kiali.netlify.app/docs/configuration/debugging-kiali/</guid><description>&lt;h2 id="logs"&gt;Logs&lt;/h2&gt;&#10;&lt;p&gt;The most basic way of debugging the internals of Kiali is to examine its log messages. A typical way of examining the log messages is via:&lt;/p&gt;&#10;&lt;pre tabindex="0"&gt;&lt;code&gt;kubectl logs -n istio-system deployment/kiali&#10;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Each log message is logged at a specific level. The different log levels are &lt;code&gt;trace&lt;/code&gt;, &lt;code&gt;debug&lt;/code&gt;, &lt;code&gt;info&lt;/code&gt;, &lt;code&gt;warn&lt;/code&gt;, &lt;code&gt;error&lt;/code&gt;, and &lt;code&gt;fatal&lt;/code&gt;. By default, log messages at &lt;code&gt;info&lt;/code&gt; level and higher will be logged. If you want to see more verbose logs, set the log level to &lt;code&gt;debug&lt;/code&gt; or &lt;code&gt;trace&lt;/code&gt; (&lt;code&gt;trace&lt;/code&gt; is the most verbose setting and will make the log output very &amp;ldquo;noisy&amp;rdquo;). You set the log level in the Kiali CR:&lt;/p&gt;</description></item><item><title>Detail Views</title><link>https://staging--kiali.netlify.app/docs/features/details/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://staging--kiali.netlify.app/docs/features/details/</guid><description>&lt;p&gt;Kiali provides filtered list views of all your service mesh definitions. Each view provides health, details, YAML definitions and links to help you visualize your mesh. There are list and detail views for:&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Applications&lt;/li&gt;&#10;&lt;li&gt;Istio Configuration&lt;/li&gt;&#10;&lt;li&gt;Services&lt;/li&gt;&#10;&lt;li&gt;Workloads&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;&lt;img src="https://staging--kiali.netlify.app/images/documentation/features/details/detail-list-app.png" alt="Detail list apps"&gt;&#10;&lt;img src="https://staging--kiali.netlify.app/images/documentation/features/details/detail-list-service.png" alt="Detail list service"&gt;&#10;&lt;img src="https://staging--kiali.netlify.app/images/documentation/features/details/detail-list-workload.png" alt="Detail list workload"&gt;&#10;&lt;img src="https://staging--kiali.netlify.app/images/documentation/features/details/detail-list-config.png" alt="Detail list Istio config"&gt;&lt;/p&gt;&#10;&lt;p&gt;Selecting an object from the list will bring you to its detail page. For Istio Config, Kiali will present its YAML, along with contextual validation information. Other mesh components present a variety of Tabs.&lt;/p&gt;</description></item><item><title>Development Environment</title><link>https://staging--kiali.netlify.app/docs/contribution-guidelines/development-environment/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://staging--kiali.netlify.app/docs/contribution-guidelines/development-environment/</guid><description>&lt;h3 id="introduction"&gt;Introduction&lt;/h3&gt;&#10;&lt;p&gt;In this section it is explained how to set up a development environment:&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;As described in &lt;a href="https://staging--kiali.netlify.app/docs/architecture/architecture/"&gt;Architecture&lt;/a&gt;, we would need to have the Kiali dependencies running in an OpenShift or Kubernetes&lt;/li&gt;&#10;&lt;li&gt;We will use a port forward to access those services outside the cluster.&lt;/li&gt;&#10;&lt;li&gt;We will have the project source running locally. In this case we will set up an IDE.&lt;/li&gt;&#10;&lt;li&gt;Bookinfo application example will also be running on our cluster.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;&lt;img src="https://staging--kiali.netlify.app/images/documentation/contribution/development_environment.png" alt="development_environment"&gt;&lt;/p&gt;</description></item><item><title>Distributed Tracing</title><link>https://staging--kiali.netlify.app/docs/faq/distributed-tracing/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://staging--kiali.netlify.app/docs/faq/distributed-tracing/</guid><description>&lt;h3 id="how-to-know-which-is-the-url-for-jaeger-or-tempo"&gt;How to know which is the URL for Jaeger or Tempo?&lt;/h3&gt;&#10;&lt;p&gt;From Kiali 2.11, a new &lt;a href="https://staging--kiali.netlify.app/docs/configuration/debugging-kiali/#tracing-integration"&gt;tracing tool&lt;/a&gt; in the Mesh page is provided to help troubleshooting and provide possible valid tracing configurations.&lt;/p&gt;&#10;&lt;h3 id="why-is-jaeger-unreachable-or-kiali-showing-the-error-could-not-fetch-traces"&gt;Why is Jaeger unreachable or Kiali showing the error &amp;ldquo;Could not fetch traces&amp;rdquo;?&lt;/h3&gt;&#10;&lt;p&gt;Istio components status indicator shows &amp;ldquo;Jaeger unreachable&amp;rdquo;:&lt;/p&gt;&#10;&lt;p&gt;&lt;img src="https://staging--kiali.netlify.app/images/documentation/faq/tracing/unreachable.png" alt="Jaeger unreachable"&gt;&lt;/p&gt;&#10;&lt;p&gt;While on any Tracing page, error &amp;ldquo;Could not fetch traces&amp;rdquo; is displayed:&lt;/p&gt;&#10;&lt;p&gt;&lt;img src="https://staging--kiali.netlify.app/images/documentation/faq/tracing/could-not-fetch-traces.png" alt="Could not fetch traces"&gt;&lt;/p&gt;</description></item><item><title>General</title><link>https://staging--kiali.netlify.app/docs/faq/general/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://staging--kiali.netlify.app/docs/faq/general/</guid><description>&lt;h3 id="how-do-i-determine-what-version-i-am-running"&gt;How do I determine what version I am running?&lt;/h3&gt;&#10;&lt;p&gt;There are several components within the Istio/Kiali infrastructure that have version information.&lt;/p&gt;&#10;&lt;ol&gt;&#10;&lt;li&gt;To see the Kiali version for the instance running your UI: Go to the Help dropdown menu found at the top-right of the Kiali Console window and select &amp;ldquo;About&amp;rdquo;. This will pop up the About dialog box which displays detailed information for the current Kiali instance. From here you can also link to the Mesh page.&lt;/li&gt;&#10;&lt;/ol&gt;&#10;&lt;p&gt;Help dropdown menu:&lt;/p&gt;</description></item><item><title>Graph</title><link>https://staging--kiali.netlify.app/docs/faq/graph/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://staging--kiali.netlify.app/docs/faq/graph/</guid><description>&lt;h3 id="emptygraph"&gt;Why is my graph empty?&lt;/h3&gt;&#10;&lt;p&gt;There are several reasons why a graph may be empty. First, make sure you have selected at least one namespace. Kiali will look for traffic into, out of, and within the selected namespaces. Another reason is that Istio is not actually generating the expected telemetry. This is typically an indication that workload pods have not been injected with the Istio sidecar proxy (Envoy proxy). But it can also mean that there is an issue with Prometheus configuration, and it is not scraping metrics as expected. To verify that telemetry is being reported to Prometheus, see &lt;a href="https://staging--kiali.netlify.app/docs/faq/graph/#queryprom"&gt;this FAQ entry&lt;/a&gt;.&lt;/p&gt;</description></item><item><title>Health</title><link>https://staging--kiali.netlify.app/docs/features/health/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://staging--kiali.netlify.app/docs/features/health/</guid><description>&lt;p&gt;Kiali help users know whether their service mesh is healthy. This includes the health of the mesh infrastructure itself, and the deployed application services.&lt;/p&gt;&#10;&lt;h2 id="service-mesh-infrastructure-health"&gt;Service Mesh Infrastructure Health&lt;/h2&gt;&#10;&lt;p&gt;Users can quickly confirm the health of their infrastructure by looking at the Kiali Masthead. If Kiali detects any health issues with the infrastructure of the mesh, including multi-cluster setups, it will show an indication in the masthead, severity will be reflected via color, and hovering will show the detail:&lt;/p&gt;</description></item><item><title>Installation</title><link>https://staging--kiali.netlify.app/docs/faq/installation/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://staging--kiali.netlify.app/docs/faq/installation/</guid><description>&lt;h3 id="what-is-the-difference-between-the-operator-and-the-server-helm-chart"&gt;What is the difference between the operator and the server helm chart?&lt;/h3&gt;&#10;&lt;p&gt;There are two installation mechanisms from which you can choose when installing the Kiali Server. The first is the recommended installation mechanism - the Kiali Operator. The second installation mechanism is the server helm chart. There are some features that you get with the Kiali Operator that you do not get with the server helm chart. The main differences between the two are mentioned below, though this list may be incomplete.&lt;/p&gt;</description></item><item><title>Internationalization</title><link>https://staging--kiali.netlify.app/docs/features/internationalization/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://staging--kiali.netlify.app/docs/features/internationalization/</guid><description>&lt;p&gt;Kiali is used worldwide and some users prefer to display Kiali in a language that they are more comfortable with than English. For this reason Kiali supports internationalization, and it can be localized into multiple languages.&lt;/p&gt;&#10;&lt;p&gt;Current supported languages are English, Chinese, Korean, and Spanish.&lt;/p&gt;&#10;&lt;p&gt;For color scheme, contrast, and theme settings, see &lt;a href="https://staging--kiali.netlify.app/docs/features/appearance/"&gt;Appearance&lt;/a&gt;.&lt;/p&gt;&#10;&lt;h2 id="language-preference"&gt;Language preference&lt;/h2&gt;&#10;&lt;p&gt;In the standalone Kiali Console, open &lt;strong&gt;Preferences&lt;/strong&gt; from the user dropdown as described in &lt;a href="https://staging--kiali.netlify.app/docs/features/appearance/"&gt;Appearance&lt;/a&gt;, then choose a value in the &lt;strong&gt;Language&lt;/strong&gt; dropdown.&lt;/p&gt;</description></item><item><title>Istio Ambient Mesh</title><link>https://staging--kiali.netlify.app/docs/features/ambient/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://staging--kiali.netlify.app/docs/features/ambient/</guid><description>&lt;p&gt;Kiali provides visualization for Ambient Mesh components:&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;a href="https://staging--kiali.netlify.app/docs/features/ambient/#control-plane-ambient-mesh"&gt;Control Plane Ambient Mesh&lt;/a&gt;&lt;/li&gt;&#10;&lt;li&gt;&lt;a href="https://staging--kiali.netlify.app/docs/features/ambient/#ambient-namespace"&gt;Ambient namespace&lt;/a&gt;&lt;/li&gt;&#10;&lt;li&gt;&lt;a href="https://staging--kiali.netlify.app/docs/features/ambient/#workloads-in-ambient-mesh"&gt;Workloads in Ambient Mesh&lt;/a&gt;&lt;/li&gt;&#10;&lt;li&gt;&lt;a href="https://staging--kiali.netlify.app/docs/features/ambient/#waypoint-proxy-details"&gt;Waypoint proxy details&lt;/a&gt;&lt;/li&gt;&#10;&lt;li&gt;&lt;a href="https://staging--kiali.netlify.app/docs/features/ambient/#ztunnel-details"&gt;Ztunnel details&lt;/a&gt;&lt;/li&gt;&#10;&lt;li&gt;&lt;a href="https://staging--kiali.netlify.app/docs/features/ambient/#ambient-telemetry"&gt;Ambient Telemetry&lt;/a&gt;&lt;/li&gt;&#10;&lt;li&gt;&lt;a href="https://staging--kiali.netlify.app/docs/features/ambient/#ambient-tracing"&gt;Ambient tracing&lt;/a&gt;&lt;/li&gt;&#10;&lt;li&gt;&lt;a href="https://staging--kiali.netlify.app/docs/features/ambient/#ambient-l7-istio-config-validations"&gt;Ambient L7 Istio config validations&lt;/a&gt;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;div class="alert alert-warning" role="alert"&gt;&#10;&lt;p&gt;The Kiali Ambient features, as well as Ambient Mesh, are evolving. Some of these features are in alpha status. For enhancements or detected issues, don’t hesitate to open a &lt;a href="https://github.com/kiali/kiali/issues/new/choose"&gt;GitHub issue&lt;/a&gt;.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;h3 id="control-plane-ambient-mesh"&gt;Control Plane Ambient Mesh&lt;/h3&gt;&#10;&lt;p&gt;When the control plane is in Ambient mode, Kiali will show an Ambient badge on the Namespaces page, for the control plane namespace,&#10;in the &lt;code&gt;Type&lt;/code&gt; column. It will also be reflected in the control plane side-panel on the Mesh page.&#10;This badge indicates that Kiali has detected a &lt;code&gt;ztunnel&lt;/code&gt; (the L4 component for Ambient) in the control plane namespace.&lt;/p&gt;</description></item><item><title>Istio Component Status</title><link>https://staging--kiali.netlify.app/docs/faq/istio-component-status/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://staging--kiali.netlify.app/docs/faq/istio-component-status/</guid><description>&lt;h3 id="how-can-i-add-one-component-to-the-list"&gt;How can I add one component to the list?&lt;/h3&gt;&#10;&lt;p&gt;If you are interested in adding one more component to the Istio Component Status tooltip, you have the option to add one new component into the&#10;&lt;a href="https://staging--kiali.netlify.app/docs/configuration/kialis.kiali.io/"&gt;Kiali CR&lt;/a&gt;, under the &lt;code&gt;spec.external_services.istio.component_status&lt;/code&gt; field.&lt;/p&gt;&#10;&lt;p&gt;For each component there, you will need to specify the &lt;code&gt;app&lt;/code&gt; label of the deployment&amp;rsquo;s pods, the namespace and whether is a core component or add-on.&lt;/p&gt;&#10;&lt;h3 id="one-component-is-not-found-but-i-can-see-it-running-what-can-i-do"&gt;One component is &amp;lsquo;Not found&amp;rsquo; but I can see it running. What can I do?&lt;/h3&gt;&#10;&lt;p&gt;The first thing you should do is check the Kiali CR for the &lt;code&gt;spec.external_services.istio.component_status&lt;/code&gt; field (see the &lt;a href="https://staging--kiali.netlify.app/docs/configuration/kialis.kiali.io/#.spec.external_services.istio.component_status"&gt;reference documentation here&lt;/a&gt;)&lt;/p&gt;</description></item><item><title>Istio Configuration</title><link>https://staging--kiali.netlify.app/docs/features/configuration/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://staging--kiali.netlify.app/docs/features/configuration/</guid><description>&lt;p&gt;Kiali is more than observability, it also helps you to configure, update and validate your Istio service mesh.&lt;/p&gt;&#10;&lt;p&gt;The Istio configuration view provides advanced filtering and navigation for Istio configuration objects, such as Virtual Services and Gateways.&#10;Kiali provides inline config editing and powerful semantic validation for Istio resources.&lt;/p&gt;&#10;&lt;p&gt;&lt;img src="https://staging--kiali.netlify.app/images/documentation/features/configuration/istio-config-list.png" alt="Istio Config List" title="Istio Config List"&gt;&lt;/p&gt;&#10;&lt;h2 id="validations"&gt;Validations&lt;/h2&gt;&#10;&lt;p&gt;Kiali performs a set of validations on your Istio Objects, such as Destination Rules, Service Entries, and Virtual Services. Kiali&amp;rsquo;s validations go above and beyond what Istio offers. Where Istio offers mainly static checks for well-formed definitions, Kiali performs semantic validations to ensure that the definitions make sense, across objects, and in some cases even across namespaces. Kiali validations are based on the runtime status of your service mesh.&lt;/p&gt;</description></item><item><title>Istio Environment</title><link>https://staging--kiali.netlify.app/docs/configuration/istio/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://staging--kiali.netlify.app/docs/configuration/istio/</guid><description>&lt;h2 id="labels-and-resource-names"&gt;Labels and resource names&lt;/h2&gt;&#10;&lt;p&gt;Istio recommends &lt;a href="https://istio.io/latest/docs/ops/deployment/application-requirements/#pod-requirements"&gt;adding &lt;code&gt;app&lt;/code&gt; and &lt;code&gt;version&lt;/code&gt; labels to&#10;pods&lt;/a&gt; to attach this information to telemetry. Kiali relies on correctness of these labels for several features.&lt;/p&gt;&#10;&lt;p&gt;In Istio, it is possible to use a different set of labels, like&#10;&lt;code&gt;app.kubernetes.io/name&lt;/code&gt; and &lt;code&gt;app.kubernetes.io/version&lt;/code&gt;, however you must&#10;configure Kiali to the labels you are using. By default, Kiali uses Istio&amp;rsquo;s&#10;recommended labels:&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-yaml" data-lang="yaml"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;spec&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;istio_labels&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;app_label_name&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#4e9a06"&gt;&amp;#34;app&amp;#34;&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;version_label_name&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#4e9a06"&gt;&amp;#34;version&amp;#34;&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div class="alert alert-warning" role="alert"&gt;&#10;&lt;p&gt;Although Istio lets you use different labels on different pods, Kiali can only&#10;use a single set.&lt;/p&gt;&#10;&lt;p&gt;For example, Istio lets you use the &lt;code&gt;app&lt;/code&gt; label in one pod and the&#10;&lt;code&gt;app.kubernetes.io/name&lt;/code&gt; in another pod and it will generate telemetry&#10;correctly. However, you will have no way to configure Kiali for this case.&lt;/p&gt;&#10;&lt;/div&gt;</description></item><item><title>Istio Infrastructure Status</title><link>https://staging--kiali.netlify.app/docs/features/istio-component-status/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://staging--kiali.netlify.app/docs/features/istio-component-status/</guid><description>&lt;p&gt;A service mesh simplifies application services by deferring the non-business logic to the mesh. But for healthy applications the service mesh infrastructure must also be running normally. Kiali monitors the multiple components that make up the service mesh, letting you know if there is an underlying problem.&lt;/p&gt;&#10;&lt;p&gt;&lt;img src="https://staging--kiali.netlify.app/images/documentation/features/istio-status-masthead.png" alt="Istio component status" title="Istio component status"&gt;&lt;/p&gt;&#10;&lt;p&gt;A component &lt;em&gt;status&lt;/em&gt; will be one of: &lt;code&gt;Not found&lt;/code&gt;, &lt;code&gt;Not ready&lt;/code&gt;, &lt;code&gt;Unreachable&lt;/code&gt;, &lt;code&gt;Not healthy&lt;/code&gt; and &lt;code&gt;Healthy&lt;/code&gt;. &lt;code&gt;Not found&lt;/code&gt; means that Kiali is not able to find the deployment. &lt;code&gt;Not ready&lt;/code&gt; means no pods are running. &lt;code&gt;Unreachable&lt;/code&gt; means that Kiali hasn&amp;rsquo;t been successfully able to communicate with the component (Prometheus, Grafana and Jaeger). &lt;code&gt;Not healthy&lt;/code&gt; means that the deployment doesn&amp;rsquo;t have the desired amount of replicas running. Otherwise, the component is &lt;code&gt;Healthy&lt;/code&gt; and it won&amp;rsquo;t be shown in the list.&lt;/p&gt;</description></item><item><title>Kiali CR Reference</title><link>https://staging--kiali.netlify.app/docs/configuration/kialis.kiali.io/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://staging--kiali.netlify.app/docs/configuration/kialis.kiali.io/</guid><description>&lt;div class="crd-schema-version"&gt;&#10;&lt;h3 id="example-cr"&gt;Example CR&lt;/h3&gt;&#10;&lt;em&gt;(all values shown here are the defaults unless otherwise noted)&lt;/em&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-yaml" data-lang="yaml"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;apiVersion&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#000"&gt;kiali.io/v1alpha1&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;kind&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#000"&gt;Kiali&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;metadata&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;name&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#000"&gt;kiali&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;annotations&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;ansible.sdk.operatorframework.io/verbosity&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#4e9a06"&gt;&amp;#34;1&amp;#34;&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;spec&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;additional_display_details&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;- &lt;span style="color:#204a87;font-weight:bold"&gt;title&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#4e9a06"&gt;&amp;#34;API Documentation&amp;#34;&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;annotation&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#4e9a06"&gt;&amp;#34;kiali.io/api-spec&amp;#34;&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;icon_annotation&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#4e9a06"&gt;&amp;#34;kiali.io/api-type&amp;#34;&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;installation_tag&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#4e9a06"&gt;&amp;#34;&amp;#34;&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;version&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#4e9a06"&gt;&amp;#34;default&amp;#34;&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;ai&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;chat&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;allowed_users&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;[]&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;default_provider&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#4e9a06"&gt;&amp;#34;&amp;#34;&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;enabled&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;false&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;max_tool_iterations&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#0000cf;font-weight:bold"&gt;5&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;providers&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;[]&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;store_config&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;enabled&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;true&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;inactivity_timeout&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#4e9a06"&gt;&amp;#34;30m&amp;#34;&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;max_cache_memory_mb&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#0000cf;font-weight:bold"&gt;1024&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;reduce_threshold&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#0000cf;font-weight:bold"&gt;15&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;reduce_with_ai&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;false&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;tools&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;{}&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;consumption&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;allowed_users_dashboard&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;[]&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;budgets&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;[]&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;prices_config_map&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#4e9a06"&gt;&amp;#34;&amp;#34;&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;enabled&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;false&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;metrics&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;false&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;auth&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;strategy&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#4e9a06"&gt;&amp;#34;&amp;#34;&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;openid&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#8f5902;font-style:italic"&gt;# default: additional_request_params is empty&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;additional_request_params&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;openIdReqParam&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#4e9a06"&gt;&amp;#34;openIdReqParamValue&amp;#34;&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#8f5902;font-style:italic"&gt;# default: allowed_domains is an empty list&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;allowed_domains&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;[&lt;/span&gt;&lt;span style="color:#4e9a06"&gt;&amp;#34;allowed.domain&amp;#34;&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;]&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;api_proxy&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#4e9a06"&gt;&amp;#34;&amp;#34;&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;api_proxy_ca_data&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#4e9a06"&gt;&amp;#34;&amp;#34;&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;api_token&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#4e9a06"&gt;&amp;#34;id_token&amp;#34;&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;authentication_timeout&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#0000cf;font-weight:bold"&gt;300&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;authorization_endpoint&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#4e9a06"&gt;&amp;#34;&amp;#34;&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;client_id&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#4e9a06"&gt;&amp;#34;&amp;#34;&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;disable_rbac&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;false&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;http_proxy&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#4e9a06"&gt;&amp;#34;&amp;#34;&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;https_proxy&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#4e9a06"&gt;&amp;#34;&amp;#34;&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;insecure_skip_verify_tls&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;false&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;issuer_uri&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#4e9a06"&gt;&amp;#34;&amp;#34;&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;post_logout_redirect_uri&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#4e9a06"&gt;&amp;#34;&amp;#34;&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;scopes&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;[&lt;/span&gt;&lt;span style="color:#4e9a06"&gt;&amp;#34;openid&amp;#34;&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;,&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#4e9a06"&gt;&amp;#34;profile&amp;#34;&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;,&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#4e9a06"&gt;&amp;#34;email&amp;#34;&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;]&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;username_claim&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#4e9a06"&gt;&amp;#34;sub&amp;#34;&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;discovery_override&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;authorization_endpoint&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#4e9a06"&gt;&amp;#34;&amp;#34;&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;end_session_endpoint&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#4e9a06"&gt;&amp;#34;&amp;#34;&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;jwks_uri&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#4e9a06"&gt;&amp;#34;&amp;#34;&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;token_endpoint&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#4e9a06"&gt;&amp;#34;&amp;#34;&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;userinfo_endpoint&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#4e9a06"&gt;&amp;#34;&amp;#34;&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;openshift&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;impersonation&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;allowed_groups&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;[]&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;allowed_users&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;[]&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;enabled&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;false&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#8f5902;font-style:italic"&gt;#redirect_uris:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#8f5902;font-style:italic"&gt;#token_inactivity_timeout:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#8f5902;font-style:italic"&gt;#token_max_age: &lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;clustering&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;autodetect_secrets&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;enabled&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;true&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;label&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#4e9a06"&gt;&amp;#34;kiali.io/multiCluster=true&amp;#34;&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;clusters&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;[]&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;ignore_home_cluster&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;false&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;kiali_urls&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;[]&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#8f5902;font-style:italic"&gt;# default: custom_dashboards is an empty list&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;custom_dashboards&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;- &lt;span style="color:#204a87;font-weight:bold"&gt;name&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#4e9a06"&gt;&amp;#34;envoy&amp;#34;&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;deployment&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;additional_pod_containers_yaml&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;[]&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;additional_pod_init_containers_yaml&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;[]&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#8f5902;font-style:italic"&gt;# default: additional_service_yaml is empty&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;additional_service_yaml&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;externalName&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#4e9a06"&gt;&amp;#34;kiali.example.com&amp;#34;&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;affinity&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#8f5902;font-style:italic"&gt;# default: node is empty&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;node&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;requiredDuringSchedulingIgnoredDuringExecution&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;nodeSelectorTerms&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;- &lt;span style="color:#204a87;font-weight:bold"&gt;matchExpressions&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;- &lt;span style="color:#204a87;font-weight:bold"&gt;key&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#000"&gt;kubernetes.io/e2e-az-name&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;operator&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#000"&gt;In&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;values&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;- &lt;span style="color:#000"&gt;e2e-az1&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;- &lt;span style="color:#000"&gt;e2e-az2&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#8f5902;font-style:italic"&gt;# default: pod is empty&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;pod&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;requiredDuringSchedulingIgnoredDuringExecution&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;- &lt;span style="color:#204a87;font-weight:bold"&gt;labelSelector&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;matchExpressions&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;- &lt;span style="color:#204a87;font-weight:bold"&gt;key&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#000"&gt;security&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;operator&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#000"&gt;In&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;values&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;- &lt;span style="color:#000"&gt;S1&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;topologyKey&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#000"&gt;topology.kubernetes.io/zone&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#8f5902;font-style:italic"&gt;# default: pod_anti is empty&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;pod_anti&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;preferredDuringSchedulingIgnoredDuringExecution&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;- &lt;span style="color:#204a87;font-weight:bold"&gt;weight&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#0000cf;font-weight:bold"&gt;100&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;podAffinityTerm&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;labelSelector&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;matchExpressions&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;- &lt;span style="color:#204a87;font-weight:bold"&gt;key&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#000"&gt;security&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;operator&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#000"&gt;In&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;values&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;- &lt;span style="color:#000"&gt;S2&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;topologyKey&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#000"&gt;topology.kubernetes.io/zone&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;cluster_wide_access&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;true&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#8f5902;font-style:italic"&gt;# default: configmap_annotations is empty&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;configmap_annotations&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;strategy.spinnaker.io/versioned&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#4e9a06"&gt;&amp;#34;false&amp;#34;&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#8f5902;font-style:italic"&gt;# default: custom_envs is an empty list&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;custom_envs&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;- &lt;span style="color:#204a87;font-weight:bold"&gt;name&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#4e9a06"&gt;&amp;#34;HTTP_PROXY&amp;#34;&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;value&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#4e9a06"&gt;&amp;#34;http://my.proxy.com:1234&amp;#34;&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;- &lt;span style="color:#204a87;font-weight:bold"&gt;name&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#4e9a06"&gt;&amp;#34;NO_PROXY&amp;#34;&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;value&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#4e9a06"&gt;&amp;#34;hostname.example.com&amp;#34;&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#8f5902;font-style:italic"&gt;# default: custom_secrets is an empty list&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;custom_secrets&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;- &lt;span style="color:#204a87;font-weight:bold"&gt;name&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#4e9a06"&gt;&amp;#34;a-custom-secret&amp;#34;&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;mount&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#4e9a06"&gt;&amp;#34;/a-custom-secret-path&amp;#34;&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;optional&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;true&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;- &lt;span style="color:#204a87;font-weight:bold"&gt;name&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#4e9a06"&gt;&amp;#34;a-csi-secret&amp;#34;&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;mount&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#4e9a06"&gt;&amp;#34;/a-csi-secret-path&amp;#34;&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;csi&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;driver&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#000"&gt;secrets-store.csi.k8s.io&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;readOnly&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;true&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;volumeAttributes&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;secretProviderClass&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#000"&gt;kiali-secretprovider&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#8f5902;font-style:italic"&gt;# default: discovery_selectors is empty&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;discovery_selectors&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;default&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;- &lt;span style="color:#204a87;font-weight:bold"&gt;matchLabels&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;region&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#000"&gt;north&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;- &lt;span style="color:#204a87;font-weight:bold"&gt;matchExpressions&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;- &lt;span style="color:#204a87;font-weight:bold"&gt;key&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#000"&gt;organization&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;operator&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#4e9a06"&gt;&amp;#34;In&amp;#34;&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;values&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;[&lt;/span&gt;&lt;span style="color:#4e9a06"&gt;&amp;#34;engineering&amp;#34;&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;,&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#4e9a06"&gt;&amp;#34;accounting&amp;#34;&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;]&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;- &lt;span style="color:#204a87;font-weight:bold"&gt;matchLabels&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;region&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#000"&gt;south&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;matchExpressions&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;- &lt;span style="color:#204a87;font-weight:bold"&gt;key&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#000"&gt;app&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;operator&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#4e9a06"&gt;&amp;#34;DoesNotExist&amp;#34;&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;- &lt;span style="color:#204a87;font-weight:bold"&gt;key&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#000"&gt;domain&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;operator&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#4e9a06"&gt;&amp;#34;NotIn&amp;#34;&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;values&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;[&lt;/span&gt;&lt;span style="color:#4e9a06"&gt;&amp;#34;production&amp;#34;&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;]&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;overrides&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;myRemoteCluster&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;- &lt;span style="color:#204a87;font-weight:bold"&gt;matchLabels&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;region&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#000"&gt;world&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;- &lt;span style="color:#204a87;font-weight:bold"&gt;matchExpressions&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;- &lt;span style="color:#204a87;font-weight:bold"&gt;key&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#000"&gt;organization&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;operator&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#4e9a06"&gt;&amp;#34;NotIn&amp;#34;&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;values&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;[&lt;/span&gt;&lt;span style="color:#4e9a06"&gt;&amp;#34;marketing&amp;#34;&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;]&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;- &lt;span style="color:#204a87;font-weight:bold"&gt;matchLabels&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;region&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#000"&gt;antarctica&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;matchExpressions&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;- &lt;span style="color:#204a87;font-weight:bold"&gt;key&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#000"&gt;app&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;operator&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#4e9a06"&gt;&amp;#34;DoesNotExist&amp;#34;&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;- &lt;span style="color:#204a87;font-weight:bold"&gt;key&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#000"&gt;domain&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;operator&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#4e9a06"&gt;&amp;#34;In&amp;#34;&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;values&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;[&lt;/span&gt;&lt;span style="color:#4e9a06"&gt;&amp;#34;staging&amp;#34;&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;]&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;dns&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#8f5902;font-style:italic"&gt;# default: config is empty&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;config&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;options&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;- &lt;span style="color:#204a87;font-weight:bold"&gt;name&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#000"&gt;ndots&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;value&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#4e9a06"&gt;&amp;#34;1&amp;#34;&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#8f5902;font-style:italic"&gt;# default: policy is empty&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;policy&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#4e9a06"&gt;&amp;#34;ClusterFirst&amp;#34;&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;extra_labels&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;{}&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#8f5902;font-style:italic"&gt;# default: host_aliases is an empty list&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;host_aliases&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;- &lt;span style="color:#204a87;font-weight:bold"&gt;ip&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#4e9a06"&gt;&amp;#34;192.168.1.100&amp;#34;&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;hostnames&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;- &lt;span style="color:#4e9a06"&gt;&amp;#34;foo.local&amp;#34;&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;- &lt;span style="color:#4e9a06"&gt;&amp;#34;bar.local&amp;#34;&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;hpa&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;api_version&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#4e9a06"&gt;&amp;#34;&amp;#34;&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#8f5902;font-style:italic"&gt;# default: spec is empty&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;spec&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;maxReplicas&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#0000cf;font-weight:bold"&gt;2&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;minReplicas&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#0000cf;font-weight:bold"&gt;1&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;metrics&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;- &lt;span style="color:#204a87;font-weight:bold"&gt;type&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#000"&gt;Resource&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;resource&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;name&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#000"&gt;cpu&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;target&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;type&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#000"&gt;Utilization&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;averageUtilization&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#0000cf;font-weight:bold"&gt;50&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;image_digest&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#4e9a06"&gt;&amp;#34;&amp;#34;&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;image_name&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#4e9a06"&gt;&amp;#34;&amp;#34;&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;image_pull_policy&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#4e9a06"&gt;&amp;#34;IfNotPresent&amp;#34;&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#8f5902;font-style:italic"&gt;# default: image_pull_secrets is an empty list&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;image_pull_secrets&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;[&lt;/span&gt;&lt;span style="color:#4e9a06"&gt;&amp;#34;image.pull.secret&amp;#34;&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;]&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;image_version&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#4e9a06"&gt;&amp;#34;&amp;#34;&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;ingress&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#8f5902;font-style:italic"&gt;# default: additional_labels is empty&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;additional_labels&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;ingressAdditionalLabel&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#4e9a06"&gt;&amp;#34;ingressAdditionalLabelValue&amp;#34;&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;class_name&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#4e9a06"&gt;&amp;#34;nginx&amp;#34;&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#8f5902;font-style:italic"&gt;# default: enabled is undefined&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;enabled&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;false&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#8f5902;font-style:italic"&gt;# default: override_yaml is undefined&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;override_yaml&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;metadata&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;annotations&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;nginx.ingress.kubernetes.io/secure-backends&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#4e9a06"&gt;&amp;#34;true&amp;#34;&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;nginx.ingress.kubernetes.io/backend-protocol&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#4e9a06"&gt;&amp;#34;HTTPS&amp;#34;&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;spec&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;rules&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;- &lt;span style="color:#204a87;font-weight:bold"&gt;http&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;paths&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;- &lt;span style="color:#204a87;font-weight:bold"&gt;path&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#4e9a06"&gt;&amp;#34;/kiali&amp;#34;&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;pathType&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#000"&gt;Prefix&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;backend&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;service&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;name&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#4e9a06"&gt;&amp;#34;kiali&amp;#34;&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;port&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;number&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#0000cf;font-weight:bold"&gt;20001&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;instance_name&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#4e9a06"&gt;&amp;#34;kiali&amp;#34;&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;logger&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;log_level&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#4e9a06"&gt;&amp;#34;info&amp;#34;&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;log_format&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#4e9a06"&gt;&amp;#34;text&amp;#34;&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;sampler_rate&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#4e9a06"&gt;&amp;#34;1&amp;#34;&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;time_field_format&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#4e9a06"&gt;&amp;#34;2006-01-02T15:04:05Z07:00&amp;#34;&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;namespace&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#4e9a06"&gt;&amp;#34;istio-system&amp;#34;&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;network_policy&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;enabled&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;true&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#8f5902;font-style:italic"&gt;# default: node_selector is empty&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;node_selector&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;nodeSelector&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#4e9a06"&gt;&amp;#34;nodeSelectorValue&amp;#34;&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#8f5902;font-style:italic"&gt;# default: pod_annotations is empty&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;pod_annotations&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;proxy.istio.io/config&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#4e9a06"&gt;&amp;#39;{ &amp;#34;holdApplicationUntilProxyStarts&amp;#34;: true }&amp;#39;&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;pod_disruption_budget&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;api_version&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#4e9a06"&gt;&amp;#34;&amp;#34;&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#8f5902;font-style:italic"&gt;# default: spec is empty&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;spec&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;minAvailable&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#0000cf;font-weight:bold"&gt;1&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#8f5902;font-style:italic"&gt;# default: pod_labels is empty&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;pod_labels&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;sidecar.istio.io/inject&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#4e9a06"&gt;&amp;#34;true&amp;#34;&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;priority_class_name&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#4e9a06"&gt;&amp;#34;&amp;#34;&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;probes&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;liveness&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;initial_delay_seconds&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#0000cf;font-weight:bold"&gt;5&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;period_seconds&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#0000cf;font-weight:bold"&gt;30&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;readiness&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;initial_delay_seconds&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#0000cf;font-weight:bold"&gt;5&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;period_seconds&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#0000cf;font-weight:bold"&gt;30&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;startup&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;failure_threshold&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#0000cf;font-weight:bold"&gt;6&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;initial_delay_seconds&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#0000cf;font-weight:bold"&gt;30&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;period_seconds&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#0000cf;font-weight:bold"&gt;10&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;remote_cluster_resources_only&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;false&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;replicas&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#0000cf;font-weight:bold"&gt;1&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#8f5902;font-style:italic"&gt;# default: resources is undefined&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;resources&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;requests&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;cpu&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#4e9a06"&gt;&amp;#34;10m&amp;#34;&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;memory&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#4e9a06"&gt;&amp;#34;64Mi&amp;#34;&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;limits&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;memory&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#4e9a06"&gt;&amp;#34;1Gi&amp;#34;&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;secret_name&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#4e9a06"&gt;&amp;#34;kiali&amp;#34;&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;security_context&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;{}&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#8f5902;font-style:italic"&gt;# default: service_annotations is empty&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;service_annotations&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;svcAnnotation&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#4e9a06"&gt;&amp;#34;svcAnnotationValue&amp;#34;&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#8f5902;font-style:italic"&gt;# default: service_labels is empty&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;service_labels&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;svcLabel&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#4e9a06"&gt;&amp;#34;svcLabelValue&amp;#34;&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#8f5902;font-style:italic"&gt;# default: service_type is undefined&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;service_type&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#4e9a06"&gt;&amp;#34;NodePort&amp;#34;&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;strategy&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;{}&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#8f5902;font-style:italic"&gt;# default: tolerations is an empty list&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;tolerations&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;- &lt;span style="color:#204a87;font-weight:bold"&gt;key&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#4e9a06"&gt;&amp;#34;example-key&amp;#34;&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;operator&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#4e9a06"&gt;&amp;#34;Exists&amp;#34;&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;effect&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#4e9a06"&gt;&amp;#34;NoSchedule&amp;#34;&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;topology_spread_constraints&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;[]&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;version_label&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#4e9a06"&gt;&amp;#34;&amp;#34;&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;view_only_mode&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;false&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#8f5902;font-style:italic"&gt;# default: extensions is an empty list&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;extensions&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;- &lt;span style="color:#204a87;font-weight:bold"&gt;enabled&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;true&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;name&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#4e9a06"&gt;&amp;#34;skupper&amp;#34;&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;external_services&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;custom_dashboards&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;discovery_auto_threshold&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#0000cf;font-weight:bold"&gt;10&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;discovery_enabled&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#4e9a06"&gt;&amp;#34;auto&amp;#34;&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;enabled&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;true&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;is_core&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;false&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;namespace_label&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#4e9a06"&gt;&amp;#34;namespace&amp;#34;&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;prometheus&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;auth&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;insecure_skip_verify&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;false&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;oauth2&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;audience&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#4e9a06"&gt;&amp;#34;&amp;#34;&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;auth_style&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#4e9a06"&gt;&amp;#34;header&amp;#34;&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;client_id&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#4e9a06"&gt;&amp;#34;&amp;#34;&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;client_secret&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#4e9a06"&gt;&amp;#34;&amp;#34;&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;scopes&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;[]&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;token_url&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#4e9a06"&gt;&amp;#34;&amp;#34;&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;password&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#4e9a06"&gt;&amp;#34;&amp;#34;&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;token&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#4e9a06"&gt;&amp;#34;&amp;#34;&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;type&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#4e9a06"&gt;&amp;#34;none&amp;#34;&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#8f5902;font-style:italic"&gt;# Valid values: none, basic, bearer, oauth2&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;use_kiali_token&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;false&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;username&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#4e9a06"&gt;&amp;#34;&amp;#34;&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;cache_duration&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#0000cf;font-weight:bold"&gt;7&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;cache_enabled&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;true&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;cache_expiration&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#0000cf;font-weight:bold"&gt;300&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#8f5902;font-style:italic"&gt;# default: custom_headers is empty&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;custom_headers&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;customHeader1&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#4e9a06"&gt;&amp;#34;customHeader1Value&amp;#34;&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;health_check_url&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#4e9a06"&gt;&amp;#34;&amp;#34;&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;is_core&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;true&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#8f5902;font-style:italic"&gt;# default: query_scope is empty&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;query_scope&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;mesh_id&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#4e9a06"&gt;&amp;#34;mesh-1&amp;#34;&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;cluster&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#4e9a06"&gt;&amp;#34;cluster-east&amp;#34;&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;thanos_proxy&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;enabled&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;false&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;retention_period&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#4e9a06"&gt;&amp;#34;7d&amp;#34;&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;scrape_interval&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#4e9a06"&gt;&amp;#34;30s&amp;#34;&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;url&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#4e9a06"&gt;&amp;#34;&amp;#34;&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;grafana&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;auth&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;insecure_skip_verify&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;false&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;oauth2&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;audience&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#4e9a06"&gt;&amp;#34;&amp;#34;&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;auth_style&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#4e9a06"&gt;&amp;#34;header&amp;#34;&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;client_id&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#4e9a06"&gt;&amp;#34;&amp;#34;&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;client_secret&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#4e9a06"&gt;&amp;#34;&amp;#34;&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;scopes&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;[]&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;token_url&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#4e9a06"&gt;&amp;#34;&amp;#34;&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;password&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#4e9a06"&gt;&amp;#34;&amp;#34;&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;token&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#4e9a06"&gt;&amp;#34;&amp;#34;&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;type&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#4e9a06"&gt;&amp;#34;none&amp;#34;&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#8f5902;font-style:italic"&gt;# Valid values: none, basic, bearer, oauth2&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;use_kiali_token&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;false&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;username&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#4e9a06"&gt;&amp;#34;&amp;#34;&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;dashboards&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;- &lt;span style="color:#204a87;font-weight:bold"&gt;name&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#4e9a06"&gt;&amp;#34;Istio Service Dashboard&amp;#34;&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;variables&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;datasource&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#4e9a06"&gt;&amp;#34;var-datasource&amp;#34;&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;namespace&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#4e9a06"&gt;&amp;#34;var-namespace&amp;#34;&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;service&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#4e9a06"&gt;&amp;#34;var-service&amp;#34;&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;version&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#4e9a06"&gt;&amp;#34;var-version&amp;#34;&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;- &lt;span style="color:#204a87;font-weight:bold"&gt;name&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#4e9a06"&gt;&amp;#34;Istio Workload Dashboard&amp;#34;&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;variables&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;datasource&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#4e9a06"&gt;&amp;#34;var-datasource&amp;#34;&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;namespace&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#4e9a06"&gt;&amp;#34;var-namespace&amp;#34;&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;workload&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#4e9a06"&gt;&amp;#34;var-workload&amp;#34;&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;version&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#4e9a06"&gt;&amp;#34;var-version&amp;#34;&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;- &lt;span style="color:#204a87;font-weight:bold"&gt;name&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#4e9a06"&gt;&amp;#34;Istio Mesh Dashboard&amp;#34;&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;- &lt;span style="color:#204a87;font-weight:bold"&gt;name&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#4e9a06"&gt;&amp;#34;Istio Control Plane Dashboard&amp;#34;&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;- &lt;span style="color:#204a87;font-weight:bold"&gt;name&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#4e9a06"&gt;&amp;#34;Istio Performance Dashboard&amp;#34;&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;- &lt;span style="color:#204a87;font-weight:bold"&gt;name&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#4e9a06"&gt;&amp;#34;Istio Wasm Extension Dashboard&amp;#34;&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;datasource_uid&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#4e9a06"&gt;&amp;#34;&amp;#34;&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;enabled&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;true&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;external_url&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#4e9a06"&gt;&amp;#34;&amp;#34;&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;health_check_url&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#4e9a06"&gt;&amp;#34;&amp;#34;&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;internal_url&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#4e9a06"&gt;&amp;#34;http://grafana.istio-system:3000&amp;#34;&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;is_core&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;false&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;istio&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;component_status&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;components&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;[]&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;enabled&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;true&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;gateway_api_classes&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;[]&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;gateway_api_classes_label_selector&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#4e9a06"&gt;&amp;#34;&amp;#34;&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;istio_api_enabled&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;true&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;istio_identity_domain&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#4e9a06"&gt;&amp;#34;&amp;#34;&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;istiod_polling_interval_seconds&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#0000cf;font-weight:bold"&gt;20&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;validation_change_detection_enabled&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;true&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;validation_reconcile_interval&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#4e9a06"&gt;&amp;#34;1m&amp;#34;&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;perses&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;auth&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;insecure_skip_verify&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;false&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;oauth2&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;audience&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#4e9a06"&gt;&amp;#34;&amp;#34;&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;auth_style&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#4e9a06"&gt;&amp;#34;header&amp;#34;&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;client_id&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#4e9a06"&gt;&amp;#34;&amp;#34;&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;client_secret&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#4e9a06"&gt;&amp;#34;&amp;#34;&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;scopes&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;[]&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;token_url&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#4e9a06"&gt;&amp;#34;&amp;#34;&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;password&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#4e9a06"&gt;&amp;#34;&amp;#34;&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;type&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#4e9a06"&gt;&amp;#34;none&amp;#34;&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#8f5902;font-style:italic"&gt;# Valid values: none, basic, bearer, oauth2&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;use_kiali_token&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;false&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;username&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#4e9a06"&gt;&amp;#34;&amp;#34;&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;dashboards&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;- &lt;span style="color:#204a87;font-weight:bold"&gt;name&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#4e9a06"&gt;&amp;#34;Istio Service Dashboard&amp;#34;&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;variables&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;datasource&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#4e9a06"&gt;&amp;#34;var-datasource&amp;#34;&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;namespace&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#4e9a06"&gt;&amp;#34;var-namespace&amp;#34;&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;service&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#4e9a06"&gt;&amp;#34;var-service&amp;#34;&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;version&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#4e9a06"&gt;&amp;#34;var-version&amp;#34;&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;- &lt;span style="color:#204a87;font-weight:bold"&gt;name&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#4e9a06"&gt;&amp;#34;Istio Workload Dashboard&amp;#34;&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;variables&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;datasource&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#4e9a06"&gt;&amp;#34;var-datasource&amp;#34;&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;namespace&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#4e9a06"&gt;&amp;#34;var-namespace&amp;#34;&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;workload&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#4e9a06"&gt;&amp;#34;var-workload&amp;#34;&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;version&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#4e9a06"&gt;&amp;#34;var-version&amp;#34;&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;- &lt;span style="color:#204a87;font-weight:bold"&gt;name&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#4e9a06"&gt;&amp;#34;Istio Mesh Dashboard&amp;#34;&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;- &lt;span style="color:#204a87;font-weight:bold"&gt;name&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#4e9a06"&gt;&amp;#34;Istio Control Plane Dashboard&amp;#34;&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;- &lt;span style="color:#204a87;font-weight:bold"&gt;name&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#4e9a06"&gt;&amp;#34;Istio Performance Dashboard&amp;#34;&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;- &lt;span style="color:#204a87;font-weight:bold"&gt;name&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#4e9a06"&gt;&amp;#34;Istio Wasm Extension Dashboard&amp;#34;&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;enabled&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;false&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;external_url&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#4e9a06"&gt;&amp;#34;&amp;#34;&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;health_check_url&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#4e9a06"&gt;&amp;#34;&amp;#34;&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;internal_url&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#4e9a06"&gt;&amp;#34;&amp;#34;&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;is_core&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;false&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;project&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#4e9a06"&gt;&amp;#34;istio&amp;#34;&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;url_format&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#4e9a06"&gt;&amp;#34;&amp;#34;&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;prometheus&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;auth&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;insecure_skip_verify&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;false&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;oauth2&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;audience&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#4e9a06"&gt;&amp;#34;&amp;#34;&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;auth_style&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#4e9a06"&gt;&amp;#34;header&amp;#34;&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;client_id&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#4e9a06"&gt;&amp;#34;&amp;#34;&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;client_secret&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#4e9a06"&gt;&amp;#34;&amp;#34;&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;scopes&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;[]&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;token_url&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#4e9a06"&gt;&amp;#34;&amp;#34;&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;password&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#4e9a06"&gt;&amp;#34;&amp;#34;&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;token&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#4e9a06"&gt;&amp;#34;&amp;#34;&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;type&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#4e9a06"&gt;&amp;#34;none&amp;#34;&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#8f5902;font-style:italic"&gt;# Valid values: none, basic, bearer, oauth2&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;use_kiali_token&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;false&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;username&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#4e9a06"&gt;&amp;#34;&amp;#34;&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;cache_duration&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#0000cf;font-weight:bold"&gt;7&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;cache_enabled&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;true&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;cache_expiration&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#0000cf;font-weight:bold"&gt;300&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#8f5902;font-style:italic"&gt;# default: custom_headers is empty&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;custom_headers&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;customHeader1&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#4e9a06"&gt;&amp;#34;customHeader1Value&amp;#34;&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;enabled&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;true&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;health_check_url&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#4e9a06"&gt;&amp;#34;&amp;#34;&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;is_core&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;true&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#8f5902;font-style:italic"&gt;# default: query_scope is empty&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;query_scope&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;mesh_id&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#4e9a06"&gt;&amp;#34;mesh-1&amp;#34;&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;cluster&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#4e9a06"&gt;&amp;#34;cluster-east&amp;#34;&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;thanos_proxy&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;enabled&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;false&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;retention_period&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#4e9a06"&gt;&amp;#34;7d&amp;#34;&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;scrape_interval&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#4e9a06"&gt;&amp;#34;30s&amp;#34;&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;url&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#4e9a06"&gt;&amp;#34;&amp;#34;&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;tracing&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;auth&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;insecure_skip_verify&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;false&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;oauth2&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;audience&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#4e9a06"&gt;&amp;#34;&amp;#34;&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;auth_style&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#4e9a06"&gt;&amp;#34;header&amp;#34;&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;client_id&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#4e9a06"&gt;&amp;#34;&amp;#34;&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;client_secret&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#4e9a06"&gt;&amp;#34;&amp;#34;&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;scopes&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;[]&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;token_url&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#4e9a06"&gt;&amp;#34;&amp;#34;&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;password&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#4e9a06"&gt;&amp;#34;&amp;#34;&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;token&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#4e9a06"&gt;&amp;#34;&amp;#34;&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;type&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#4e9a06"&gt;&amp;#34;none&amp;#34;&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#8f5902;font-style:italic"&gt;# Valid values: none, basic, bearer, oauth2&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;use_kiali_token&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;false&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;username&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#4e9a06"&gt;&amp;#34;&amp;#34;&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#8f5902;font-style:italic"&gt;# default: custom_headers is empty&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;custom_headers&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;customHeader1&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#4e9a06"&gt;&amp;#34;customHeader1Value&amp;#34;&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;disable_version_check&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;false&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;enabled&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;false&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;external_url&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#4e9a06"&gt;&amp;#34;&amp;#34;&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;grpc_port&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#0000cf;font-weight:bold"&gt;9095&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;health_check_url&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#4e9a06"&gt;&amp;#34;&amp;#34;&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;internal_url&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#4e9a06"&gt;&amp;#34;&amp;#34;&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;is_core&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;false&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;namespace_selector&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;true&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;provider&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#4e9a06"&gt;&amp;#34;jaeger&amp;#34;&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#8f5902;font-style:italic"&gt;# default: query_scope is empty&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;query_scope&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;mesh_id&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#4e9a06"&gt;&amp;#34;mesh-1&amp;#34;&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;cluster&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#4e9a06"&gt;&amp;#34;cluster-east&amp;#34;&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;query_timeout&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#0000cf;font-weight:bold"&gt;5&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;tempo_config&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;cache_capacity&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#0000cf;font-weight:bold"&gt;200&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;cache_enabled&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;true&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;datasource_uid&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#4e9a06"&gt;&amp;#34;&amp;#34;&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;name&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#4e9a06"&gt;&amp;#34;&amp;#34;&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;namespace&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#4e9a06"&gt;&amp;#34;&amp;#34;&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;org_id&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#4e9a06"&gt;&amp;#34;&amp;#34;&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;tenant&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#4e9a06"&gt;&amp;#34;&amp;#34;&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;url_format&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#4e9a06"&gt;&amp;#34;grafana&amp;#34;&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;use_grpc&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;true&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;use_waypoint_name&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;false&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;whitelist_istio_system&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;[&lt;/span&gt;&lt;span style="color:#4e9a06"&gt;&amp;#34;jaeger-query&amp;#34;&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;,&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#4e9a06"&gt;&amp;#34;istio-ingressgateway&amp;#34;&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;]&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;health_config&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;compute&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;duration&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#4e9a06"&gt;&amp;#34;5m&amp;#34;&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;refresh_interval&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#4e9a06"&gt;&amp;#34;3m&amp;#34;&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;timeout&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#4e9a06"&gt;&amp;#34;10m&amp;#34;&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#8f5902;font-style:italic"&gt;# default: rate is an empty list&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;rate&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;- &lt;span style="color:#204a87;font-weight:bold"&gt;namespace&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#4e9a06"&gt;&amp;#34;.*&amp;#34;&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;kind&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#4e9a06"&gt;&amp;#34;.*&amp;#34;&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;name&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#4e9a06"&gt;&amp;#34;.*&amp;#34;&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;tolerance&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;- &lt;span style="color:#204a87;font-weight:bold"&gt;protocol&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#4e9a06"&gt;&amp;#34;http&amp;#34;&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;direction&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#4e9a06"&gt;&amp;#34;.*&amp;#34;&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;code&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#4e9a06"&gt;&amp;#34;[1234]00&amp;#34;&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;degraded&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#0000cf;font-weight:bold"&gt;5&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;failure&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#0000cf;font-weight:bold"&gt;10&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;identity&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#8f5902;font-style:italic"&gt;# default: cert_file is undefined&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;cert_file&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#4e9a06"&gt;&amp;#34;&amp;#34;&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#8f5902;font-style:italic"&gt;# default: private_key_file is undefined&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;private_key_file&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#4e9a06"&gt;&amp;#34;&amp;#34;&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;istio_labels&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;app_label_name&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#4e9a06"&gt;&amp;#34;&amp;#34;&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;version_label_name&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#4e9a06"&gt;&amp;#34;&amp;#34;&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;kiali_feature_flags&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;authz&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;require_namespace_get&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;false&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;clustering&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;enable_exec_provider&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;false&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#8f5902;font-style:italic"&gt;# default: custom_workload_types is an empty list&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;custom_workload_types&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;- &lt;span style="color:#204a87;font-weight:bold"&gt;group&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#4e9a06"&gt;&amp;#34;argoproj.io&amp;#34;&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;version&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#4e9a06"&gt;&amp;#34;v1alpha1&amp;#34;&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;kind&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#4e9a06"&gt;&amp;#34;Rollout&amp;#34;&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;disabled_features&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;[]&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;istio_annotation_action&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;true&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;istio_injection_action&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;true&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;istio_upgrade_action&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;false&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;ui_defaults&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;graph&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;find_options&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;- &lt;span style="color:#204a87;font-weight:bold"&gt;description&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#4e9a06"&gt;&amp;#34;Find: slow edges (&amp;gt; 1s)&amp;#34;&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;expression&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#4e9a06"&gt;&amp;#34;rt &amp;gt; 1000&amp;#34;&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;- &lt;span style="color:#204a87;font-weight:bold"&gt;description&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#4e9a06"&gt;&amp;#34;Find: unhealthy nodes&amp;#34;&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;expression&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#4e9a06"&gt;&amp;#34;! healthy&amp;#34;&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;- &lt;span style="color:#204a87;font-weight:bold"&gt;description&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#4e9a06"&gt;&amp;#34;Find: unknown nodes&amp;#34;&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;expression&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#4e9a06"&gt;&amp;#34;name = unknown&amp;#34;&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;hide_options&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;- &lt;span style="color:#204a87;font-weight:bold"&gt;description&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#4e9a06"&gt;&amp;#34;Hide: healthy nodes&amp;#34;&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;expression&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#4e9a06"&gt;&amp;#34;healthy&amp;#34;&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;- &lt;span style="color:#204a87;font-weight:bold"&gt;description&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#4e9a06"&gt;&amp;#34;Hide: unknown nodes&amp;#34;&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;expression&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#4e9a06"&gt;&amp;#34;name = unknown&amp;#34;&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;settings&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;animation&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#4e9a06"&gt;&amp;#34;point&amp;#34;&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;traffic&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;ambient&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#4e9a06"&gt;&amp;#34;total&amp;#34;&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;grpc&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#4e9a06"&gt;&amp;#34;requests&amp;#34;&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;http&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#4e9a06"&gt;&amp;#34;requests&amp;#34;&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;tcp&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#4e9a06"&gt;&amp;#34;sent&amp;#34;&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;i18n&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;language&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#4e9a06"&gt;&amp;#34;en&amp;#34;&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;list&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;include_health&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;true&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;include_istio_resources&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;true&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;include_validations&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;true&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;show_include_toggles&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;false&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;mesh&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;find_options&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;- &lt;span style="color:#204a87;font-weight:bold"&gt;description&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#4e9a06"&gt;&amp;#34;Find: unhealthy nodes&amp;#34;&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;expression&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#4e9a06"&gt;&amp;#34;! healthy&amp;#34;&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;hide_options&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;- &lt;span style="color:#204a87;font-weight:bold"&gt;description&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#4e9a06"&gt;&amp;#34;Hide: healthy nodes&amp;#34;&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;expression&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#4e9a06"&gt;&amp;#34;healthy&amp;#34;&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#8f5902;font-style:italic"&gt;# default: metrics_inbound is undefined&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;metrics_inbound&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;aggregations&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;- &lt;span style="color:#204a87;font-weight:bold"&gt;display_name&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#4e9a06"&gt;&amp;#34;Istio Network&amp;#34;&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;label&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#4e9a06"&gt;&amp;#34;topology_istio_io_network&amp;#34;&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;single_selection&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;false&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;- &lt;span style="color:#204a87;font-weight:bold"&gt;display_name&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#4e9a06"&gt;&amp;#34;Istio Revision&amp;#34;&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;label&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#4e9a06"&gt;&amp;#34;istio_io_rev&amp;#34;&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;single_selection&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;false&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#8f5902;font-style:italic"&gt;# default: metrics_outbound is undefined&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;metrics_outbound&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;aggregations&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;- &lt;span style="color:#204a87;font-weight:bold"&gt;display_name&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#4e9a06"&gt;&amp;#34;Istio Network&amp;#34;&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;label&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#4e9a06"&gt;&amp;#34;topology_istio_io_network&amp;#34;&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;single_selection&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;false&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;- &lt;span style="color:#204a87;font-weight:bold"&gt;display_name&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#4e9a06"&gt;&amp;#34;Istio Revision&amp;#34;&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;label&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#4e9a06"&gt;&amp;#34;istio_io_rev&amp;#34;&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;single_selection&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;false&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;metrics_per_refresh&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#4e9a06"&gt;&amp;#34;1m&amp;#34;&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#8f5902;font-style:italic"&gt;# default: namespaces is an empty list&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;namespaces&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;[&lt;/span&gt;&lt;span style="color:#4e9a06"&gt;&amp;#34;istio-system&amp;#34;&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;]&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;refresh_interval&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#4e9a06"&gt;&amp;#34;1m&amp;#34;&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;tracing&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;limit&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#0000cf;font-weight:bold"&gt;100&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;validations&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;ignore&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;[&lt;/span&gt;&lt;span style="color:#4e9a06"&gt;&amp;#34;KIA1301&amp;#34;&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;]&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;skip_wildcard_gateway_hosts&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;false&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;kubernetes_config&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;burst&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#0000cf;font-weight:bold"&gt;200&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;cache_duration&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#0000cf;font-weight:bold"&gt;300&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;cache_token_namespace_duration&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#0000cf;font-weight:bold"&gt;10&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;excluded_workloads&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;- &lt;span style="color:#4e9a06"&gt;&amp;#34;CronJob&amp;#34;&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;- &lt;span style="color:#4e9a06"&gt;&amp;#34;DeploymentConfig&amp;#34;&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;- &lt;span style="color:#4e9a06"&gt;&amp;#34;Job&amp;#34;&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;- &lt;span style="color:#4e9a06"&gt;&amp;#34;ReplicationController&amp;#34;&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;qps&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#0000cf;font-weight:bold"&gt;175&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;login_token&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;expiration_seconds&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#0000cf;font-weight:bold"&gt;86400&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;signing_key&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#4e9a06"&gt;&amp;#34;&amp;#34;&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;server&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;address&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#4e9a06"&gt;&amp;#34;&amp;#34;&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;audit_log&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;true&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;cors_allow_all&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;false&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;gzip_enabled&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;true&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#8f5902;font-style:italic"&gt;# default: node_port is undefined&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;node_port&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#0000cf;font-weight:bold"&gt;32475&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;observability&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;metrics&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;enabled&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;true&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;health_status&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;enabled&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;false&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;max_consecutive_na&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#0000cf;font-weight:bold"&gt;3&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;port&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#0000cf;font-weight:bold"&gt;9090&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;tracing&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;collector_type&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#4e9a06"&gt;&amp;#34;otel&amp;#34;&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;collector_url&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#4e9a06"&gt;&amp;#34;jaeger-collector.istio-system:4318&amp;#34;&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;enabled&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;false&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;otel&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;ca_name&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#4e9a06"&gt;&amp;#34;&amp;#34;&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;protocol&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#4e9a06"&gt;&amp;#34;http&amp;#34;&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;skip_verify&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;false&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;tls_enabled&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;false&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;sampling_rate&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#0000cf;font-weight:bold"&gt;0.5&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;port&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#0000cf;font-weight:bold"&gt;20001&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;profiler&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;enabled&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;false&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;require_auth&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;false&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;web_fqdn&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#4e9a06"&gt;&amp;#34;&amp;#34;&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;web_history_mode&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#4e9a06"&gt;&amp;#34;browser&amp;#34;&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;web_port&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#4e9a06"&gt;&amp;#34;&amp;#34;&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;web_root&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#4e9a06"&gt;&amp;#34;&amp;#34;&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;web_schema&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#4e9a06"&gt;&amp;#34;&amp;#34;&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;write_timeout&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#4e9a06"&gt;&amp;#34;60s&amp;#34;&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="validating-your-kiali-cr"&gt;Validating your Kiali CR&lt;/h3&gt;&#10;&lt;p&gt;The Kiali CR has a CRD Schema so it will be validated when you create or update it in your cluster.&lt;/p&gt;&#10;&lt;h3 id="property-details"&gt;Properties&lt;/h3&gt;&#10;&lt;div class="property depth-0"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec"&gt;.spec&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(object)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;This is the CRD for the resources called Kiali CRs. The Kiali Operator will watch for resources of this type and when it detects a Kiali CR has been added, deleted, or modified, it will install, uninstall, and update the associated Kiali Server installation. The settings here will configure the Kiali Server as well as the Kiali Operator. All of these settings will be stored in the Kiali ConfigMap. Do not modify the ConfigMap; it will be managed by the Kiali Operator. Only modify the Kiali CR when you want to change a configuration setting.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-1"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.additional_display_details"&gt;.spec.additional_display_details&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(array)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;A list of additional details that Kiali will look for in annotations. When found on any workload or service, Kiali will display the additional details in the respective workload or service details page. This is typically used to inject some CI metadata or documentation links into Kiali views. For example, by default, Kiali will recognize these annotations on a service or workload (e.g. a Deployment, StatefulSet, etc.):&lt;/p&gt;&#10;&lt;pre&gt;&lt;code&gt;spec:&#10; annotations:&#10; kiali.io/api-spec: http://list/to/my/api/doc&#10; kiali.io/api-type: rest&#10;&lt;/code&gt;&lt;/pre&gt;&#10;&lt;p&gt;Note that if you change this setting for your own custom annotations, keep in mind that it would override the current default. So you would have to add the default setting as shown in the example CR if you want to preserve the default links.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-2"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.additional_display_details[*]"&gt;.spec.additional_display_details[*]&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(object)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-3"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.additional_display_details[*].annotation"&gt;.spec.additional_display_details[*].annotation&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(string)&lt;/span&gt;&#10;&lt;span class="property-required"&gt;*Required*&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;The name of the annotation whose value is a URL to additional documentation useful to the user.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-3"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.additional_display_details[*].icon_annotation"&gt;.spec.additional_display_details[*].icon_annotation&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(string)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;The name of the annotation whose value is used to determine what icon to display. The annotation name itself can be anything, but note that the value of that annotation must be one of: &lt;code&gt;rest&lt;/code&gt;, &lt;code&gt;grpc&lt;/code&gt;, and &lt;code&gt;graphql&lt;/code&gt; - any other value is ignored.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-3"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.additional_display_details[*].title"&gt;.spec.additional_display_details[*].title&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(string)&lt;/span&gt;&#10;&lt;span class="property-required"&gt;*Required*&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;The title of the link that Kiali will display. The link will go to the URL specified in the value of the configured &lt;code&gt;annotation&lt;/code&gt;.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-1"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.ai"&gt;.spec.ai&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(object)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;Configuration for the AI feature.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-2"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.ai.chat"&gt;.spec.ai.chat&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(object)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;Configuration for the ChatAI feature.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-3"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.ai.chat.allowed_users"&gt;.spec.ai.chat.allowed_users&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(array)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;A list of users that are allowed to use the ChatAI feature. If this list is empty, all users have access. If populated, only the specified users can see and interact with the Chatbot.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-4"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.ai.chat.allowed_users[*]"&gt;.spec.ai.chat.allowed_users[*]&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(string)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-3"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.ai.chat.default_provider"&gt;.spec.ai.chat.default_provider&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(string)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;The default provider to use for the ChatAI feature. This is the provider that will be used if no provider is specified in the request.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-3"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.ai.chat.enabled"&gt;.spec.ai.chat.enabled&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(boolean)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;Enable or disable the ChatAI feature.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-3"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.ai.chat.max_tool_iterations"&gt;.spec.ai.chat.max_tool_iterations&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(integer)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;Maximum number of tool-call iterations (LLM call + tool execution round) allowed per request before the loop is force-aborted. Must be between 1 and 20.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-3"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.ai.chat.providers"&gt;.spec.ai.chat.providers&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(array)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;A list of providers that can be used for the ChatAI feature. This is the list of providers that will be available to the user to choose from.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-4"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.ai.chat.providers[*]"&gt;.spec.ai.chat.providers[*]&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(object)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-5"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.ai.chat.providers[*].config"&gt;.spec.ai.chat.providers[*].config&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(string)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;The provider configuration variant. Valid values depend on &lt;code&gt;type&lt;/code&gt;: &lt;code&gt;anthropic&lt;/code&gt; requires &lt;code&gt;default&lt;/code&gt;; &lt;code&gt;google&lt;/code&gt; requires &lt;code&gt;gemini&lt;/code&gt;; &lt;code&gt;openai&lt;/code&gt; supports &lt;code&gt;default&lt;/code&gt;, &lt;code&gt;gemini&lt;/code&gt;, or &lt;code&gt;azure&lt;/code&gt;. Default value is &lt;code&gt;default&lt;/code&gt;.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-5"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.ai.chat.providers[*].default_model"&gt;.spec.ai.chat.providers[*].default_model&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(string)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;The default model of the provider.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-5"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.ai.chat.providers[*].description"&gt;.spec.ai.chat.providers[*].description&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(string)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;The description of the provider.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-5"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.ai.chat.providers[*].enabled"&gt;.spec.ai.chat.providers[*].enabled&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(boolean)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;Enable or disable the provider.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-5"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.ai.chat.providers[*].endpoint"&gt;.spec.ai.chat.providers[*].endpoint&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(string)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;The endpoint of the provider. This is only used if a model has no endpoint specified.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-5"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.ai.chat.providers[*].insecure_skip_verify"&gt;.spec.ai.chat.providers[*].insecure_skip_verify&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(boolean)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;Set true to skip verifying certificate validity when Kiali contacts the AI provider over https. When false (the default), the provider&amp;rsquo;s TLS certificate is validated against the Kiali CA bundle.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-5"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.ai.chat.providers[*].key"&gt;.spec.ai.chat.providers[*].key&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(string)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;The key of the provider. May refer to a secret using the pattern &lt;code&gt;secret:&amp;lt;secretName&amp;gt;:&amp;lt;secretKey&amp;gt;&lt;/code&gt;. When using a secret, the token is cached and automatically refreshed when the secret changes, enabling rotation without pod restart.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-5"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.ai.chat.providers[*].models"&gt;.spec.ai.chat.providers[*].models&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(array)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;A list of models that can be used for the ChatAI feature. This is the list of models that will be available to the user to choose from.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-6"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.ai.chat.providers[*].models[*]"&gt;.spec.ai.chat.providers[*].models[*]&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(object)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-7"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.ai.chat.providers[*].models[*].description"&gt;.spec.ai.chat.providers[*].models[*].description&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(string)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;The description of the model.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-7"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.ai.chat.providers[*].models[*].enabled"&gt;.spec.ai.chat.providers[*].models[*].enabled&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(boolean)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;Enable or disable the model.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-7"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.ai.chat.providers[*].models[*].endpoint"&gt;.spec.ai.chat.providers[*].models[*].endpoint&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(string)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;The endpoint of the model.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-7"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.ai.chat.providers[*].models[*].key"&gt;.spec.ai.chat.providers[*].models[*].key&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(string)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;The key of the model. May refer to a secret using the pattern &lt;code&gt;secret:&amp;lt;secretName&amp;gt;:&amp;lt;secretKey&amp;gt;&lt;/code&gt;. When using a secret, the token is cached and automatically refreshed when the secret changes, enabling rotation without pod restart.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-7"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.ai.chat.providers[*].models[*].model"&gt;.spec.ai.chat.providers[*].models[*].model&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(string)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;The model of the model.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-7"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.ai.chat.providers[*].models[*].name"&gt;.spec.ai.chat.providers[*].models[*].name&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(string)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;The name of the model.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-5"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.ai.chat.providers[*].name"&gt;.spec.ai.chat.providers[*].name&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(string)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;The name of the provider.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-5"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.ai.chat.providers[*].tools"&gt;.spec.ai.chat.providers[*].tools&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(object)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;Optional provider-specific filter for the ChatAI toolset. Applied after the global &lt;code&gt;ai.chat.tools&lt;/code&gt; filter. It can further restrict tools for this provider, but it cannot re-enable tools that were already filtered out globally or by feature availability.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-6"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.ai.chat.providers[*].tools.disabled_tools"&gt;.spec.ai.chat.providers[*].tools.disabled_tools&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(array)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;A denylist of tool names to hide from this ChatAI provider. Applied after &lt;code&gt;enabled_tools&lt;/code&gt;.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-7"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.ai.chat.providers[*].tools.disabled_tools[*]"&gt;.spec.ai.chat.providers[*].tools.disabled_tools[*]&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(string)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-6"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.ai.chat.providers[*].tools.enabled_tools"&gt;.spec.ai.chat.providers[*].tools.enabled_tools&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(array)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;An allowlist of tool names to expose to this ChatAI provider. If set, only the listed tool names remain available for this provider.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-7"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.ai.chat.providers[*].tools.enabled_tools[*]"&gt;.spec.ai.chat.providers[*].tools.enabled_tools[*]&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(string)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-5"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.ai.chat.providers[*].type"&gt;.spec.ai.chat.providers[*].type&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(string)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;The type of the AI models provider. Available values are &lt;code&gt;openai&lt;/code&gt;, &lt;code&gt;anthropic&lt;/code&gt;, and &lt;code&gt;google&lt;/code&gt;. Default value is &lt;code&gt;openai&lt;/code&gt;.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-3"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.ai.chat.store_config"&gt;.spec.ai.chat.store_config&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(object)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;Configuration for the ChatAI store.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-4"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.ai.chat.store_config.enabled"&gt;.spec.ai.chat.store_config.enabled&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(boolean)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;Enable or disable the ChatAI store.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-4"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.ai.chat.store_config.inactivity_timeout"&gt;.spec.ai.chat.store_config.inactivity_timeout&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(string)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;Idle time allowed before the conversation is deleted due to inactivity.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-4"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.ai.chat.store_config.max_cache_memory_mb"&gt;.spec.ai.chat.store_config.max_cache_memory_mb&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(integer)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;The maximum cache memory for the ChatAI store.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-4"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.ai.chat.store_config.reduce_threshold"&gt;.spec.ai.chat.store_config.reduce_threshold&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(integer)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;The threshold for the ChatAI store reduction with AI. This is the number of messages in a conversation before the conversation is reduced.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-4"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.ai.chat.store_config.reduce_with_ai"&gt;.spec.ai.chat.store_config.reduce_with_ai&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(boolean)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;Enable or disable the ChatAI store reduction with AI.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-3"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.ai.chat.tools"&gt;.spec.ai.chat.tools&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(object)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;Optional global filter for the ChatAI toolset. &lt;code&gt;enabled_tools&lt;/code&gt; acts as an allowlist. &lt;code&gt;disabled_tools&lt;/code&gt; acts as a denylist and is applied afterwards.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-4"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.ai.chat.tools.disabled_tools"&gt;.spec.ai.chat.tools.disabled_tools&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(array)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;A denylist of tool names to hide from all ChatAI providers. Applied after &lt;code&gt;enabled_tools&lt;/code&gt;.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-5"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.ai.chat.tools.disabled_tools[*]"&gt;.spec.ai.chat.tools.disabled_tools[*]&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(string)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-4"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.ai.chat.tools.enabled_tools"&gt;.spec.ai.chat.tools.enabled_tools&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(array)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;An allowlist of tool names to expose to ChatAI providers. If set, only the listed tool names remain available.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-5"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.ai.chat.tools.enabled_tools[*]"&gt;.spec.ai.chat.tools.enabled_tools[*]&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(string)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-2"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.ai.consumption"&gt;.spec.ai.consumption&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(object)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;Configuration for the AI consumption/cost-tracking subsystem. Requires &lt;code&gt;ai.metrics&lt;/code&gt; to be enabled. Kiali ships with a built-in default token pricing catalog; set &lt;code&gt;prices_config_map&lt;/code&gt; to load a replacement catalog from a user-managed ConfigMap.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-3"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.ai.consumption.allowed_users_dashboard"&gt;.spec.ai.consumption.allowed_users_dashboard&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(array)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;A list of users that are allowed to view the AI consumption dashboard. If this list is empty, all users have access.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-4"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.ai.consumption.allowed_users_dashboard[*]"&gt;.spec.ai.consumption.allowed_users_dashboard[*]&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(string)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-3"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.ai.consumption.budgets"&gt;.spec.ai.consumption.budgets&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(array)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;Budget limits and model/provider restrictions applied per user. If empty, no budget restrictions are applied.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-4"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.ai.consumption.budgets[*]"&gt;.spec.ai.consumption.budgets[*]&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(object)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-5"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.ai.consumption.budgets[*].allowed_models"&gt;.spec.ai.consumption.budgets[*].allowed_models&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(array)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;Model names or IDs this budget allows. Supports &lt;code&gt;*&lt;/code&gt; wildcards. If empty, all models of the allowed providers may be used.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-6"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.ai.consumption.budgets[*].allowed_models[*]"&gt;.spec.ai.consumption.budgets[*].allowed_models[*]&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(string)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-5"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.ai.consumption.budgets[*].allowed_providers"&gt;.spec.ai.consumption.budgets[*].allowed_providers&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(array)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;Provider types this budget allows (&lt;code&gt;openai&lt;/code&gt;, &lt;code&gt;anthropic&lt;/code&gt;, &lt;code&gt;google&lt;/code&gt;, &lt;code&gt;lightspeed&lt;/code&gt;). If empty, all configured providers may be used.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-6"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.ai.consumption.budgets[*].allowed_providers[*]"&gt;.spec.ai.consumption.budgets[*].allowed_providers[*]&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(string)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-5"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.ai.consumption.budgets[*].interval"&gt;.spec.ai.consumption.budgets[*].interval&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(string)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;Budget reset interval. Valid values are &lt;code&gt;weekly&lt;/code&gt; and &lt;code&gt;monthly&lt;/code&gt;.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-5"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.ai.consumption.budgets[*].max_cost"&gt;.spec.ai.consumption.budgets[*].max_cost&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(number)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;Maximum estimated cost allowed in the budget interval, in the pricing currency (typically USD).&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-5"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.ai.consumption.budgets[*].max_tokens"&gt;.spec.ai.consumption.budgets[*].max_tokens&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(number)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;Maximum number of tokens allowed in the budget interval, expressed in millions of tokens.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-5"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.ai.consumption.budgets[*].usernames"&gt;.spec.ai.consumption.budgets[*].usernames&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(array)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;Users this budget applies to. Use &lt;code&gt;*&lt;/code&gt; as a catch-all. Required and must not be empty.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-6"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.ai.consumption.budgets[*].usernames[*]"&gt;.spec.ai.consumption.budgets[*].usernames[*]&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(string)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-3"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.ai.consumption.prices_config_map"&gt;.spec.ai.consumption.prices_config_map&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(string)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;Name of a ConfigMap in the Kiali deployment namespace that holds a custom token pricing catalog. The ConfigMap is user-managed (the operator never creates or writes it). The operator mounts it read-only at &lt;code&gt;/kiali-ai-pricing&lt;/code&gt; with &lt;code&gt;optional: true&lt;/code&gt;. If omitted or empty, or if the file cannot be read, Kiali uses its built-in catalog. For the ConfigMap format and how to install it, see the documentation at &lt;a href="https://kiali.io/docs/ai/chatbot/kiali-chatbot-prices/"&gt;https://kiali.io/docs/ai/chatbot/kiali-chatbot-prices/&lt;/a&gt;&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-2"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.ai.enabled"&gt;.spec.ai.enabled&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(boolean)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;Enable or disable the AI feature.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-2"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.ai.metrics"&gt;.spec.ai.metrics&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(boolean)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;Enable or disable ChatAI usage metrics. Required for consumption tracking and the AI dashboard.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-1"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.api"&gt;.spec.api&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(object)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;DEPRECATED AFTER v1.73: These settings control how the Kiali API should be accessed.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-2"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.api.namespaces"&gt;.spec.api.namespaces&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(object)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;DEPRECATED AFTER v1.73: Settings for the API namespaces feature.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-3"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.api.namespaces.exclude"&gt;.spec.api.namespaces.exclude&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(array)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;DEPRECATED AFTER v1.73: A list of namespace names that will be excluded from Kiali API.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-4"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.api.namespaces.exclude[*]"&gt;.spec.api.namespaces.exclude[*]&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(string)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-3"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.api.namespaces.include"&gt;.spec.api.namespaces.include&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(array)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;DEPRECATED AFTER v1.73: A list of namespace names that will be included in Kiali API.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-4"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.api.namespaces.include[*]"&gt;.spec.api.namespaces.include[*]&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(string)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-3"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.api.namespaces.label_selector_exclude"&gt;.spec.api.namespaces.label_selector_exclude&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(string)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;DEPRECATED AFTER v1.73: A Kubernetes label selector expression that will be used to exclude namespaces.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-3"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.api.namespaces.label_selector_include"&gt;.spec.api.namespaces.label_selector_include&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(string)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;DEPRECATED AFTER v1.73: A Kubernetes label selector expression that will be used to include namespaces.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-1"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.auth"&gt;.spec.auth&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(object)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-2"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.auth.openid"&gt;.spec.auth.openid&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(object)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;To learn more about these settings and how to configure the OpenId authentication strategy, read the documentation at &lt;a href="https://kiali.io/docs/configuration/authentication/openid/"&gt;https://kiali.io/docs/configuration/authentication/openid/&lt;/a&gt;&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-3"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.auth.openid.additional_request_params"&gt;.spec.auth.openid.additional_request_params&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(object)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-3"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.auth.openid.allowed_domains"&gt;.spec.auth.openid.allowed_domains&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(array)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-4"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.auth.openid.allowed_domains[*]"&gt;.spec.auth.openid.allowed_domains[*]&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(string)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-3"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.auth.openid.api_proxy"&gt;.spec.auth.openid.api_proxy&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(string)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-3"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.auth.openid.api_proxy_ca_data"&gt;.spec.auth.openid.api_proxy_ca_data&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(string)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-3"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.auth.openid.api_token"&gt;.spec.auth.openid.api_token&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(string)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-3"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.auth.openid.authentication_timeout"&gt;.spec.auth.openid.authentication_timeout&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(integer)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-3"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.auth.openid.authorization_endpoint"&gt;.spec.auth.openid.authorization_endpoint&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(string)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;DEPRECATED since v2.21: Use auth.openid.discovery_override.authorization_endpoint instead. The URL of the provider&amp;rsquo;s authorization endpoint.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-3"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.auth.openid.client_id"&gt;.spec.auth.openid.client_id&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(string)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-3"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.auth.openid.disable_rbac"&gt;.spec.auth.openid.disable_rbac&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(boolean)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-3"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.auth.openid.discovery_override"&gt;.spec.auth.openid.discovery_override&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(object)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;Optional configuration to override OpenID Connect auto-discovery. Use when the IdP restricts access to /.well-known/openid-configuration endpoint.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-4"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.auth.openid.discovery_override.authorization_endpoint"&gt;.spec.auth.openid.discovery_override.authorization_endpoint&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(string)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;The URL of the provider&amp;rsquo;s authorization endpoint.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-4"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.auth.openid.discovery_override.end_session_endpoint"&gt;.spec.auth.openid.discovery_override.end_session_endpoint&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(string)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;The URL of the provider&amp;rsquo;s RP-Initiated Logout endpoint. If set, logout will terminate both the local Kiali session and the IdP session. If not set, logout will only clear the local Kiali session.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-4"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.auth.openid.discovery_override.jwks_uri"&gt;.spec.auth.openid.discovery_override.jwks_uri&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(string)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;The URL of the provider&amp;rsquo;s JWK Set document.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-4"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.auth.openid.discovery_override.token_endpoint"&gt;.spec.auth.openid.discovery_override.token_endpoint&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(string)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;The URL of the provider&amp;rsquo;s token endpoint.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-4"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.auth.openid.discovery_override.userinfo_endpoint"&gt;.spec.auth.openid.discovery_override.userinfo_endpoint&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(string)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;The URL of the provider&amp;rsquo;s UserInfo endpoint.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-3"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.auth.openid.http_proxy"&gt;.spec.auth.openid.http_proxy&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(string)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-3"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.auth.openid.https_proxy"&gt;.spec.auth.openid.https_proxy&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(string)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-3"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.auth.openid.insecure_skip_verify_tls"&gt;.spec.auth.openid.insecure_skip_verify_tls&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(boolean)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-3"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.auth.openid.issuer_uri"&gt;.spec.auth.openid.issuer_uri&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(string)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-3"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.auth.openid.post_logout_redirect_uri"&gt;.spec.auth.openid.post_logout_redirect_uri&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(string)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;The URL to redirect the browser to after the IdP terminates the session during RP-Initiated Logout. Must be registered in the IdP&amp;rsquo;s client configuration. If not set, defaults to the Kiali root URL.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-3"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.auth.openid.scopes"&gt;.spec.auth.openid.scopes&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(array)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-4"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.auth.openid.scopes[*]"&gt;.spec.auth.openid.scopes[*]&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(string)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-3"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.auth.openid.username_claim"&gt;.spec.auth.openid.username_claim&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(string)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-2"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.auth.openshift"&gt;.spec.auth.openshift&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(object)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;To learn more about these settings and how to configure the OpenShift authentication strategy, read the documentation at &lt;a href="https://kiali.io/docs/configuration/authentication/openshift/"&gt;https://kiali.io/docs/configuration/authentication/openshift/&lt;/a&gt;&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-3"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.auth.openshift.auth_timeout"&gt;.spec.auth.openshift.auth_timeout&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(integer)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;DEPRECATED AFTER v1.73: The amount of time in seconds Kiali will wait for a response from the OpenShift API when requesting authentication information.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-3"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.auth.openshift.client_id_prefix"&gt;.spec.auth.openshift.client_id_prefix&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(string)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;DEPRECATED AFTER v1.73: A prefix that will be applied to the OpenShift OAuth client identifier.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-3"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.auth.openshift.impersonation"&gt;.spec.auth.openshift.impersonation&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(object)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;Settings for Kubernetes API impersonation. When enabled, users authenticate once to the home cluster and Kiali uses its service account to impersonate the user on all clusters (including home).&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-4"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.auth.openshift.impersonation.allowed_groups"&gt;.spec.auth.openshift.impersonation.allowed_groups&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(array)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;When set, only these groups will be included in impersonation headers (in addition to system:authenticated and system:authenticated:oauth which are always included). If empty, all of the user&amp;rsquo;s groups are impersonated. This also restricts the Kiali SA&amp;rsquo;s ClusterRole via resourceNames. Must not contain system: prefixed groups. For full RBAC defense-in-depth, configure both allowed_users and allowed_groups.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-5"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.auth.openshift.impersonation.allowed_groups[*]"&gt;.spec.auth.openshift.impersonation.allowed_groups[*]&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(string)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-4"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.auth.openshift.impersonation.allowed_users"&gt;.spec.auth.openshift.impersonation.allowed_users&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(array)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;When set, only users in this list are permitted to use Kiali with impersonation. Users not in this list will be denied access (HTTP 403). This also restricts the Kiali SA&amp;rsquo;s ClusterRole via resourceNames, limiting which identities the SA can impersonate even at the Kubernetes RBAC level. Must not contain system: prefixed identities. For full RBAC defense-in-depth, configure both allowed_users and allowed_groups.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-5"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.auth.openshift.impersonation.allowed_users[*]"&gt;.spec.auth.openshift.impersonation.allowed_users[*]&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(string)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-4"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.auth.openshift.impersonation.enabled"&gt;.spec.auth.openshift.impersonation.enabled&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(boolean)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;When true, Kiali will use Kubernetes API impersonation for accessing all clusters instead of requiring per-cluster OAuth login. The user logs in once to the home cluster, and Kiali uses its service account credentials with impersonation headers carrying the user&amp;rsquo;s identity. Requires the Kiali service account on each cluster to have ClusterRole permissions to impersonate users and groups. SECURITY NOTE: Enabling this grants the Kiali service account the ability to impersonate any user. Protect the service account token accordingly.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-3"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.auth.openshift.insecure_skip_verify_tls"&gt;.spec.auth.openshift.insecure_skip_verify_tls&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(boolean)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;Set true to skip verifying certificate validity when Kiali contacts OpenShift over https.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-3"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.auth.openshift.redirect_uris"&gt;.spec.auth.openshift.redirect_uris&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(array)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;Custom redirect URIs for the OpenShift OAuth client. These URIs specify where users will be redirected after successful authentication. If not specified, Kiali will automatically generate appropriate redirect URIs based on the Kiali server&amp;rsquo;s route. You normally do not have to set this unless you are creating remote cluster resources (see &lt;code&gt;deployment.remote_cluster_resources_only&lt;/code&gt;) with &lt;code&gt;auth.strategy&lt;/code&gt; set to &lt;code&gt;openshift&lt;/code&gt;.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-4"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.auth.openshift.redirect_uris[*]"&gt;.spec.auth.openshift.redirect_uris[*]&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(string)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-3"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.auth.openshift.token_inactivity_timeout"&gt;.spec.auth.openshift.token_inactivity_timeout&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(integer)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;Sets the maximum time in seconds that can elapse between consecutive uses of an OAuth access token before it expires due to inactivity. This helps improve security by automatically expiring unused tokens. If set to 0, tokens will not expire due to inactivity. Note that OpenShift may enforce minimum values for this setting, and existing tokens are not affected by changes to this configuration.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-3"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.auth.openshift.token_max_age"&gt;.spec.auth.openshift.token_max_age&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(integer)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;Sets the absolute maximum lifetime in seconds for OAuth access tokens, regardless of activity. After this time period, tokens will expire and users must re-authenticate. If set to 0, tokens will not have an absolute expiration time and will only expire due to inactivity (if token_inactivity_timeout is configured).&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-2"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.auth.strategy"&gt;.spec.auth.strategy&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(string)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;Determines what authentication strategy to use when users log into Kiali.&#10;Options are &lt;code&gt;anonymous&lt;/code&gt;, &lt;code&gt;token&lt;/code&gt;, &lt;code&gt;openshift&lt;/code&gt;, &lt;code&gt;openid&lt;/code&gt;, or &lt;code&gt;header&lt;/code&gt;.&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Choose &lt;code&gt;anonymous&lt;/code&gt; to allow full access to Kiali without requiring any credentials.&lt;/li&gt;&#10;&lt;li&gt;Choose &lt;code&gt;token&lt;/code&gt; to allow access to Kiali using service account tokens, which controls&#10;access based on RBAC roles assigned to the service account.&lt;/li&gt;&#10;&lt;li&gt;Choose &lt;code&gt;openshift&lt;/code&gt; to use the OpenShift OAuth login which controls access based on&#10;the individual&amp;rsquo;s RBAC roles in OpenShift. Not valid for non-OpenShift environments.&lt;/li&gt;&#10;&lt;li&gt;Choose &lt;code&gt;openid&lt;/code&gt; to enable OpenID Connect-based authentication. Your cluster is required to&#10;be configured to accept the tokens issued by your IdP. There are additional required&#10;configurations for this strategy. See below for the additional OpenID configuration section.&lt;/li&gt;&#10;&lt;li&gt;Choose &lt;code&gt;header&lt;/code&gt; when Kiali is running behind a reverse proxy that will inject an&#10;Authorization header and potentially impersonation headers.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;When empty, this value will default to &lt;code&gt;openshift&lt;/code&gt; on OpenShift and &lt;code&gt;token&lt;/code&gt; on other Kubernetes environments.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-1"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.chat_ai"&gt;.spec.chat_ai&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(object)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;DEPRECATED AFTER v2.31: Configuration for the ChatAI feature.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-2"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.chat_ai.default_provider"&gt;.spec.chat_ai.default_provider&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(string)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;The default provider to use for the ChatAI feature. This is the provider that will be used if no provider is specified in the request.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-2"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.chat_ai.enabled"&gt;.spec.chat_ai.enabled&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(boolean)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;Enable or disable the ChatAI feature.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-2"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.chat_ai.max_tool_iterations"&gt;.spec.chat_ai.max_tool_iterations&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(integer)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;Maximum number of tool-call iterations (LLM call + tool execution round) allowed per request before the loop is force-aborted. Must be between 1 and 20.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-2"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.chat_ai.providers"&gt;.spec.chat_ai.providers&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(array)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;A list of providers that can be used for the ChatAI feature. This is the list of providers that will be available to the user to choose from.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-3"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.chat_ai.providers[*]"&gt;.spec.chat_ai.providers[*]&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(object)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-4"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.chat_ai.providers[*].config"&gt;.spec.chat_ai.providers[*].config&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(string)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;The provider configuration variant. Valid values depend on &lt;code&gt;type&lt;/code&gt;: &lt;code&gt;anthropic&lt;/code&gt; requires &lt;code&gt;default&lt;/code&gt;; &lt;code&gt;google&lt;/code&gt; requires &lt;code&gt;gemini&lt;/code&gt;; &lt;code&gt;openai&lt;/code&gt; supports &lt;code&gt;default&lt;/code&gt;, &lt;code&gt;gemini&lt;/code&gt;, or &lt;code&gt;azure&lt;/code&gt;. Default value is &lt;code&gt;default&lt;/code&gt;.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-4"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.chat_ai.providers[*].default_model"&gt;.spec.chat_ai.providers[*].default_model&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(string)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;The default model of the provider.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-4"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.chat_ai.providers[*].description"&gt;.spec.chat_ai.providers[*].description&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(string)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;The description of the provider.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-4"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.chat_ai.providers[*].enabled"&gt;.spec.chat_ai.providers[*].enabled&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(boolean)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;Enable or disable the provider.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-4"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.chat_ai.providers[*].endpoint"&gt;.spec.chat_ai.providers[*].endpoint&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(string)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;The endpoint of the provider. This is only used if a model has no endpoint specified.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-4"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.chat_ai.providers[*].insecure_skip_verify"&gt;.spec.chat_ai.providers[*].insecure_skip_verify&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(boolean)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;Set true to skip verifying certificate validity when Kiali contacts the AI provider over https. When false (the default), the provider&amp;rsquo;s TLS certificate is validated against the Kiali CA bundle.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-4"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.chat_ai.providers[*].key"&gt;.spec.chat_ai.providers[*].key&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(string)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;The key of the provider. May refer to a secret using the pattern &lt;code&gt;secret:&amp;lt;secretName&amp;gt;:&amp;lt;secretKey&amp;gt;&lt;/code&gt;. When using a secret, the token is cached and automatically refreshed when the secret changes, enabling rotation without pod restart.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-4"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.chat_ai.providers[*].models"&gt;.spec.chat_ai.providers[*].models&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(array)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;A list of models that can be used for the ChatAI feature. This is the list of models that will be available to the user to choose from.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-5"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.chat_ai.providers[*].models[*]"&gt;.spec.chat_ai.providers[*].models[*]&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(object)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-6"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.chat_ai.providers[*].models[*].description"&gt;.spec.chat_ai.providers[*].models[*].description&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(string)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;The description of the model.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-6"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.chat_ai.providers[*].models[*].enabled"&gt;.spec.chat_ai.providers[*].models[*].enabled&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(boolean)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;Enable or disable the model.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-6"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.chat_ai.providers[*].models[*].endpoint"&gt;.spec.chat_ai.providers[*].models[*].endpoint&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(string)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;The endpoint of the model.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-6"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.chat_ai.providers[*].models[*].key"&gt;.spec.chat_ai.providers[*].models[*].key&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(string)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;The key of the model. May refer to a secret using the pattern &lt;code&gt;secret:&amp;lt;secretName&amp;gt;:&amp;lt;secretKey&amp;gt;&lt;/code&gt;. When using a secret, the token is cached and automatically refreshed when the secret changes, enabling rotation without pod restart.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-6"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.chat_ai.providers[*].models[*].model"&gt;.spec.chat_ai.providers[*].models[*].model&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(string)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;The model of the model.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-6"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.chat_ai.providers[*].models[*].name"&gt;.spec.chat_ai.providers[*].models[*].name&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(string)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;The name of the model.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-4"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.chat_ai.providers[*].name"&gt;.spec.chat_ai.providers[*].name&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(string)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;The name of the provider.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-4"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.chat_ai.providers[*].tools"&gt;.spec.chat_ai.providers[*].tools&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(object)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;Optional provider-specific filter for the ChatAI toolset. Applied after the global &lt;code&gt;chat_ai.tools&lt;/code&gt; filter. It can further restrict tools for this provider, but it cannot re-enable tools that were already filtered out globally or by feature availability.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-5"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.chat_ai.providers[*].tools.disabled_tools"&gt;.spec.chat_ai.providers[*].tools.disabled_tools&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(array)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;A denylist of tool names to hide from this ChatAI provider. Applied after &lt;code&gt;enabled_tools&lt;/code&gt;.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-6"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.chat_ai.providers[*].tools.disabled_tools[*]"&gt;.spec.chat_ai.providers[*].tools.disabled_tools[*]&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(string)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-5"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.chat_ai.providers[*].tools.enabled_tools"&gt;.spec.chat_ai.providers[*].tools.enabled_tools&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(array)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;An allowlist of tool names to expose to this ChatAI provider. If set, only the listed tool names remain available for this provider.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-6"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.chat_ai.providers[*].tools.enabled_tools[*]"&gt;.spec.chat_ai.providers[*].tools.enabled_tools[*]&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(string)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-4"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.chat_ai.providers[*].type"&gt;.spec.chat_ai.providers[*].type&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(string)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;The type of the AI models provider. Available values are &lt;code&gt;openai&lt;/code&gt;, &lt;code&gt;anthropic&lt;/code&gt;, and &lt;code&gt;google&lt;/code&gt;. Default value is &lt;code&gt;openai&lt;/code&gt;.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-2"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.chat_ai.store_config"&gt;.spec.chat_ai.store_config&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(object)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;Configuration for the ChatAI store.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-3"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.chat_ai.store_config.enabled"&gt;.spec.chat_ai.store_config.enabled&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(boolean)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;Enable or disable the ChatAI store.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-3"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.chat_ai.store_config.inactivity_timeout"&gt;.spec.chat_ai.store_config.inactivity_timeout&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(string)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;Idle time allowed before the conversation is deleted due to inactivity.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-3"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.chat_ai.store_config.max_cache_memory_mb"&gt;.spec.chat_ai.store_config.max_cache_memory_mb&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(integer)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;The maximum cache memory for the ChatAI store.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-3"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.chat_ai.store_config.reduce_threshold"&gt;.spec.chat_ai.store_config.reduce_threshold&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(integer)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;The threshold for the ChatAI store reduction with AI. This is the number of messages in a conversation before the conversation is reduced.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-3"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.chat_ai.store_config.reduce_with_ai"&gt;.spec.chat_ai.store_config.reduce_with_ai&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(boolean)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;Enable or disable the ChatAI store reduction with AI.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-2"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.chat_ai.tools"&gt;.spec.chat_ai.tools&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(object)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;Optional global filter for the ChatAI toolset. &lt;code&gt;enabled_tools&lt;/code&gt; acts as an allowlist. &lt;code&gt;disabled_tools&lt;/code&gt; acts as a denylist and is applied afterwards.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-3"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.chat_ai.tools.disabled_tools"&gt;.spec.chat_ai.tools.disabled_tools&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(array)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;A denylist of tool names to hide from all ChatAI providers. Applied after &lt;code&gt;enabled_tools&lt;/code&gt;.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-4"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.chat_ai.tools.disabled_tools[*]"&gt;.spec.chat_ai.tools.disabled_tools[*]&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(string)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-3"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.chat_ai.tools.enabled_tools"&gt;.spec.chat_ai.tools.enabled_tools&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(array)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;An allowlist of tool names to expose to ChatAI providers. If set, only the listed tool names remain available.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-4"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.chat_ai.tools.enabled_tools[*]"&gt;.spec.chat_ai.tools.enabled_tools[*]&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(string)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-1"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.clustering"&gt;.spec.clustering&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(object)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;Multi-cluster related features.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-2"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.clustering.autodetect_secrets"&gt;.spec.clustering.autodetect_secrets&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(object)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;Settings to allow cluster secrets to be auto-detected. Secrets must exist in the Kiali deployment namespace.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-3"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.clustering.autodetect_secrets.enabled"&gt;.spec.clustering.autodetect_secrets.enabled&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(boolean)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;If true then remote cluster secrets will be autodetected during the installation of the Kiali Server Deployment. Any remote cluster secrets found in the Kiali deployment namespace will be mounted to the Kiali Server&amp;rsquo;s file system. If false, you can still manually specify the remote cluster secret information in the &amp;lsquo;clusters&amp;rsquo; setting if you wish to utilize multicluster features.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-3"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.clustering.autodetect_secrets.label"&gt;.spec.clustering.autodetect_secrets.label&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(string)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;The name and value of a label that exists on all remote cluster secrets.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-2"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.clustering.clusters"&gt;.spec.clustering.clusters&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(array)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;A list of clusters that the Kiali Server can access. You need to specify the remote clusters here if &amp;lsquo;autodetect_secrets.enabled&amp;rsquo; is false.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-3"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.clustering.clusters[*]"&gt;.spec.clustering.clusters[*]&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(object)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-4"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.clustering.clusters[*].name"&gt;.spec.clustering.clusters[*].name&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(string)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;The name of the cluster.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-4"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.clustering.clusters[*].secret_name"&gt;.spec.clustering.clusters[*].secret_name&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(string)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;The name of the secret that contains the credentials necessary to connect to the remote cluster. This secret must exist in the Kiali deployment namespace. If a secret name is not provided then it&amp;rsquo;s assumed that the cluster is inaccessible.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-2"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.clustering.enable_exec_provider"&gt;.spec.clustering.enable_exec_provider&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(boolean)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;Flag to enable exec provider for clustering authentication.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-2"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.clustering.ignore_home_cluster"&gt;.spec.clustering.ignore_home_cluster&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(boolean)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;Set to true for an external Kiali deployment, or if Kiali should not try to discover Istio on the home cluster. When set to &lt;code&gt;true&lt;/code&gt;, it is required to set &lt;code&gt;kubernetes_config.cluster_name&lt;/code&gt;.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-2"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.clustering.kiali_urls"&gt;.spec.clustering.kiali_urls&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(array)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;A map between cluster name, instance name and namespace to a Kiali URL. Will be used showing the Mesh page&amp;rsquo;s Kiali URLs. The Kiali service&amp;rsquo;s &amp;lsquo;kiali.io/external-url&amp;rsquo; annotation will be overridden when this property is set.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-3"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.clustering.kiali_urls[*]"&gt;.spec.clustering.kiali_urls[*]&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(object)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-4"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.clustering.kiali_urls[*].cluster_name"&gt;.spec.clustering.kiali_urls[*].cluster_name&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(string)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;The name of the cluster.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-4"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.clustering.kiali_urls[*].instance_name"&gt;.spec.clustering.kiali_urls[*].instance_name&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(string)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;The instance name of this Kiali installation. This should be the value used in &lt;code&gt;deployment.instance_name&lt;/code&gt; for Kiali resource name.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-4"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.clustering.kiali_urls[*].namespace"&gt;.spec.clustering.kiali_urls[*].namespace&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(string)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;The namespace into which Kiali is installed.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-4"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.clustering.kiali_urls[*].url"&gt;.spec.clustering.kiali_urls[*].url&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(string)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;The URL of Kiali in the cluster.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-1"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.custom_dashboards"&gt;.spec.custom_dashboards&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(array)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;A list of user-defined custom monitoring dashboards that you can use to generate metrics charts&#10;for your applications. The server has some built-in dashboards; if you define a custom dashboard here&#10;with the same name as a built-in dashboard, your custom dashboard takes precedence and will overwrite&#10;the built-in dashboard. You can disable one or more of the built-in dashboards by simply defining an&#10;empty dashboard.&lt;/p&gt;&#10;&lt;p&gt;An example of an additional user-defined dashboard,&lt;/p&gt;&#10;&lt;pre&gt;&lt;code&gt;spec:&#10; custom_dashboards:&#10; - name: myapp&#10; title: My App Metrics&#10; items:&#10; - chart:&#10; name: &amp;quot;Thread Count&amp;quot;&#10; spans: 4&#10; metricName: &amp;quot;thread-count&amp;quot;&#10; dataType: &amp;quot;raw&amp;quot;&#10;&lt;/code&gt;&lt;/pre&gt;&#10;&lt;p&gt;An example of disabling a built-in dashboard (in this case, disabling the Envoy dashboard),&lt;/p&gt;&#10;&lt;pre&gt;&lt;code&gt;spec:&#10; custom_dashboards:&#10; - name: envoy&#10;&lt;/code&gt;&lt;/pre&gt;&#10;&lt;p&gt;To learn more about custom monitoring dashboards, see the documentation at &lt;a href="https://kiali.io/docs/configuration/custom-dashboard/"&gt;https://kiali.io/docs/configuration/custom-dashboard/&lt;/a&gt;&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-2"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.custom_dashboards[*]"&gt;.spec.custom_dashboards[*]&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(object)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-1"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.deployment"&gt;.spec.deployment&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(object)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-2"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.deployment.accessible_namespaces"&gt;.spec.deployment.accessible_namespaces&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(array)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;DEPRECATED AFTER v1.73: A list of namespaces Kiali is allowed to access. This replaces discovery selectors.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-3"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.deployment.accessible_namespaces[*]"&gt;.spec.deployment.accessible_namespaces[*]&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(string)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-2"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.deployment.additional_pod_containers_yaml"&gt;.spec.deployment.additional_pod_containers_yaml&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(array)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;Additional containers to add to the list of pod containers. Use this to add container(s) to the Kiali pod. SECURITY: By default, the operator will forcibly apply a restrictive security context to all containers (allowPrivilegeEscalation: false, privileged: false, readOnlyRootFilesystem: true, runAsNonRoot: true, seccompProfile: RuntimeDefault, capabilities dropped). However, if the operator&amp;rsquo;s ALLOW_SECURITY_CONTEXT_OVERRIDE environment variable is set to &amp;lsquo;true&amp;rsquo;, containers can define their own security contexts which will be preserved. Secret-backed volumes are automatically forced to read-only regardless of the security context override setting. Use with care since containers may cause the Kiali container itself to operate incorrectly. It is up to the user who added the additional containers to ensure it works properly inside the Kiali pod; Kiali makes no guarantee additional containers will work.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-3"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.deployment.additional_pod_containers_yaml[*]"&gt;.spec.deployment.additional_pod_containers_yaml[*]&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(object)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-2"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.deployment.additional_pod_init_containers_yaml"&gt;.spec.deployment.additional_pod_init_containers_yaml&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(array)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;Additional initContainers to add to the list of pod initContainers. Use this to add initContainer(s) to the Kiali pod. SECURITY: By default, the operator will forcibly apply a restrictive security context to all initContainers (allowPrivilegeEscalation: false, privileged: false, readOnlyRootFilesystem: true, runAsNonRoot: true, seccompProfile: RuntimeDefault, capabilities dropped). However, if the operator&amp;rsquo;s ALLOW_SECURITY_CONTEXT_OVERRIDE environment variable is set to &amp;lsquo;true&amp;rsquo;, initContainers can define their own security contexts which will be preserved. Secret-backed volumes are automatically forced to read-only regardless of the security context override setting. Use with care since initContainers may cause the Kiali container itself to operate incorrectly. It is up to the user who added the additional initContainers to ensure it works properly inside the Kiali pod; Kiali makes no guarantee additional initContainers will work.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-3"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.deployment.additional_pod_init_containers_yaml[*]"&gt;.spec.deployment.additional_pod_init_containers_yaml[*]&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(object)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-2"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.deployment.additional_service_yaml"&gt;.spec.deployment.additional_service_yaml&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(object)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;Additional custom yaml to add to the service definition. This is used mainly to customize the service type. For example, if the &lt;code&gt;deployment.service_type&lt;/code&gt; is set to &amp;lsquo;LoadBalancer&amp;rsquo; and you want to set the loadBalancerIP, you can do so here with: &lt;code&gt;additional_service_yaml: { 'loadBalancerIP': '78.11.24.19' }&lt;/code&gt;. Another example would be if the &lt;code&gt;deployment.service_type&lt;/code&gt; is set to &amp;lsquo;ExternalName&amp;rsquo; you will need to configure the name via: &lt;code&gt;additional_service_yaml: { 'externalName': 'my.kiali.example.com' }&lt;/code&gt;. A final example would be if external IPs need to be set: &lt;code&gt;additional_service_yaml: { 'externalIPs': ['80.11.12.10'] }&lt;/code&gt;&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-2"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.deployment.affinity"&gt;.spec.deployment.affinity&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(object)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;Affinity definitions that are to be used to define the nodes where the Kiali pod should be constrained. See the Kubernetes documentation on Assigning Pods to Nodes for the proper syntax for these three different affinity types.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-3"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.deployment.affinity.node"&gt;.spec.deployment.affinity.node&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(object)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-3"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.deployment.affinity.pod"&gt;.spec.deployment.affinity.pod&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(object)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-3"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.deployment.affinity.pod_anti"&gt;.spec.deployment.affinity.pod_anti&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(object)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-2"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.deployment.cluster_wide_access"&gt;.spec.deployment.cluster_wide_access&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(boolean)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;Determines if the Kiali server will be granted cluster-wide permissions to see all namespaces. When true, this provides more efficient caching within the Kiali server. It must be &lt;code&gt;true&lt;/code&gt; if &lt;code&gt;deployment.discovery_selectors.default&lt;/code&gt; is left unset. To limit the namespaces for which Kiali has permissions, set to &lt;code&gt;false&lt;/code&gt; and define the desired selectors in &lt;code&gt;deployment.discovery_selectors.default&lt;/code&gt;.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-2"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.deployment.configmap_annotations"&gt;.spec.deployment.configmap_annotations&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(object)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;Custom annotations to be created on the Kiali ConfigMap.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-2"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.deployment.custom_envs"&gt;.spec.deployment.custom_envs&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(array)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;Defines additional environment variables to be set in the Kiali server pod. This is typically used for (but not limited to) setting proxy environment variables such as HTTP_PROXY, HTTPS_PROXY, and/or NO_PROXY.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-3"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.deployment.custom_envs[*]"&gt;.spec.deployment.custom_envs[*]&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(object)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-4"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.deployment.custom_envs[*].name"&gt;.spec.deployment.custom_envs[*].name&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(string)&lt;/span&gt;&#10;&lt;span class="property-required"&gt;*Required*&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;The name of the custom environment variable.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-4"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.deployment.custom_envs[*].value"&gt;.spec.deployment.custom_envs[*].value&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(string)&lt;/span&gt;&#10;&lt;span class="property-required"&gt;*Required*&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;The value of the custom environment variable.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-2"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.deployment.custom_secrets"&gt;.spec.deployment.custom_secrets&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(array)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;Defines additional secrets that are to be mounted in the Kiali pod.&lt;/p&gt;&#10;&lt;p&gt;These are useful to contain client certificates that are used by Kiali to authenticate to third party systems&#10;using mTLS (for example, see &lt;code&gt;external_services.tracing.auth.cert_file&lt;/code&gt; and &lt;code&gt;external_services.tracing.auth.key_file&lt;/code&gt;).&lt;/p&gt;&#10;&lt;p&gt;These secrets must be created by an external mechanism. Kiali will not generate these secrets; it&#10;is assumed these secrets are externally managed. You can define 0, 1, or more secrets.&#10;An example configuration is,&lt;/p&gt;&#10;&lt;pre&gt;&lt;code&gt;spec:&#10; deployment:&#10; custom_secrets:&#10; - name: mysecret&#10; mount: /mysecret-path&#10; - name: my-other-secret&#10; mount: /my-other-secret-location&#10; optional: true&#10;&lt;/code&gt;&lt;/pre&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-3"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.deployment.custom_secrets[*]"&gt;.spec.deployment.custom_secrets[*]&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(object)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-4"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.deployment.custom_secrets[*].csi"&gt;.spec.deployment.custom_secrets[*].csi&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(object)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;Defines CSI-specific settings that allows a secret from an external CSI secret store to be injected in the pod via a volume mount. For details, see &lt;a href="https://secrets-store-csi-driver.sigs.k8s.io/"&gt;https://secrets-store-csi-driver.sigs.k8s.io/&lt;/a&gt;&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-4"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.deployment.custom_secrets[*].mount"&gt;.spec.deployment.custom_secrets[*].mount&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(string)&lt;/span&gt;&#10;&lt;span class="property-required"&gt;*Required*&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;The file path location where the secret content will be mounted. The custom secret cannot be mounted on a path that the operator will use to mount its secrets. Make sure you set your custom secret mount path to a unique, unused path. Paths such as &lt;code&gt;/kiali-configuration&lt;/code&gt;, &lt;code&gt;/kiali-cert&lt;/code&gt;, &lt;code&gt;/kiali-cabundle&lt;/code&gt;, &lt;code&gt;/kiali-secret&lt;/code&gt;, &lt;code&gt;/kiali-override-secrets&lt;/code&gt;, and &lt;code&gt;/kiali-remote-cluster-secrets&lt;/code&gt; should not be used as mount paths for custom secrets because the operator may want to use one of those paths.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-4"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.deployment.custom_secrets[*].name"&gt;.spec.deployment.custom_secrets[*].name&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(string)&lt;/span&gt;&#10;&lt;span class="property-required"&gt;*Required*&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;The name of the secret that is to be mounted to the Kiali pod&amp;rsquo;s file system. The name of the custom secret must not be the same name as one created by the operator. Names such as &lt;code&gt;kiali&lt;/code&gt;, &lt;code&gt;kiali-cert-secret&lt;/code&gt;, and &lt;code&gt;kiali-cabundle&lt;/code&gt; should not be used as a custom secret name because the operator may want to create one with one of those names.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-4"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.deployment.custom_secrets[*].optional"&gt;.spec.deployment.custom_secrets[*].optional&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(boolean)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;Indicates if the secret may or may not exist at the time the Kiali pod starts. This is ignored if &lt;code&gt;csi&lt;/code&gt; is specified - CSI secrets must exist when specified.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-2"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.deployment.discovery_selectors"&gt;.spec.deployment.discovery_selectors&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(object)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;Discovery selectors used to determine which namespaces are accessible to Kiali and which namespaces are visible to Kiali users.&#10;You can define discovery selectors to match namespaces on the local cluster as well as remote clusters.&#10;The list of namespaces that a user can access is a subset of these namespaces, given that user&amp;rsquo;s RBAC permissions.&#10;These selectors will have similar semantics as defined by Istio ( &lt;a href="https://istio.io/latest/docs/reference/config/istio.mesh.v1alpha1/#MeshConfig"&gt;https://istio.io/latest/docs/reference/config/istio.mesh.v1alpha1/#MeshConfig&lt;/a&gt; )&#10;and the syntax of the equality-based and set-based label selectors are documented by Kubernetes here&#10;( &lt;a href="https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/#resources-that-support-set-based-requirements"&gt;https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/#resources-that-support-set-based-requirements&lt;/a&gt; )&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-3"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.deployment.discovery_selectors.default"&gt;.spec.deployment.discovery_selectors.default&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(array)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;These are label selectors for the Kiali local cluster and for all remote clusters that do not have overrides.&#10;Namespaces that match these selectors are visible to Kiali users.&#10;When &lt;code&gt;cluster_wide_access=false&lt;/code&gt; these &lt;code&gt;default&lt;/code&gt; selectors are used to restrict which namespaces Kiali will have access to.&#10;If there are no default discovery selectors, then &lt;code&gt;cluster_wide_access&lt;/code&gt; should be &lt;code&gt;true&lt;/code&gt; in which case Kiali will have&#10;permissions to access all namespaces.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-4"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.deployment.discovery_selectors.default[*]"&gt;.spec.deployment.discovery_selectors.default[*]&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(object)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-5"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.deployment.discovery_selectors.default[*].matchExpressions"&gt;.spec.deployment.discovery_selectors.default[*].matchExpressions&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(array)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-6"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.deployment.discovery_selectors.default[*].matchExpressions[*]"&gt;.spec.deployment.discovery_selectors.default[*].matchExpressions[*]&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(object)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-7"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.deployment.discovery_selectors.default[*].matchExpressions[*].key"&gt;.spec.deployment.discovery_selectors.default[*].matchExpressions[*].key&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(string)&lt;/span&gt;&#10;&lt;span class="property-required"&gt;*Required*&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-7"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.deployment.discovery_selectors.default[*].matchExpressions[*].operator"&gt;.spec.deployment.discovery_selectors.default[*].matchExpressions[*].operator&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(string)&lt;/span&gt;&#10;&lt;span class="property-required"&gt;*Required*&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-7"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.deployment.discovery_selectors.default[*].matchExpressions[*].values"&gt;.spec.deployment.discovery_selectors.default[*].matchExpressions[*].values&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(array)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-8"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.deployment.discovery_selectors.default[*].matchExpressions[*].values[*]"&gt;.spec.deployment.discovery_selectors.default[*].matchExpressions[*].values[*]&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(string)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-5"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.deployment.discovery_selectors.default[*].matchLabels"&gt;.spec.deployment.discovery_selectors.default[*].matchLabels&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(object)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-3"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.deployment.discovery_selectors.overrides"&gt;.spec.deployment.discovery_selectors.overrides&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(object)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;If a remote cluster has different namespaces than the local cluster, these overrides provide a way for you to match those remote namespaces. Kiali will make these remote namespaces visible to users. The name of the overrides section is the name of the remote cluster. Note that the &lt;code&gt;default&lt;/code&gt; selectors are ignored when matching namespaces on a remote cluster if that remote cluster has overrides defined.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-2"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.deployment.dns"&gt;.spec.deployment.dns&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(object)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;The Kiali server pod&amp;rsquo;s DNS configuration. Kubernetes supports different DNS policies and configurations.&#10;For further details, consult the Kubernetes documentation - &lt;a href="https://kubernetes.io/docs/concepts/services-networking/dns-pod-service/"&gt;https://kubernetes.io/docs/concepts/services-networking/dns-pod-service/&lt;/a&gt;&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-3"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.deployment.dns.config"&gt;.spec.deployment.dns.config&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(object)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;DNS configuration that is applied to the DNS policy. See the Kubernetes documentation for the different configuration settings that are supported.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-3"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.deployment.dns.policy"&gt;.spec.deployment.dns.policy&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(string)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;DNS policy. See the Kubernetes documentation for the different policies that are supported.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-2"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.deployment.extra_labels"&gt;.spec.deployment.extra_labels&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(object)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;Extra name/value pairs to be added to the labels of all resources created by the operator.&#10;These are added to the labels the operator creates by default. These will not overwrite&#10;labels that the operator creates itself. For example, if you set &amp;ldquo;app.kubernetes.io/name&amp;rdquo;&#10;as an extra label, it will be silently ignored because that is one of the labels the operator&#10;creates on all resources.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-2"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.deployment.host_aliases"&gt;.spec.deployment.host_aliases&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(array)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;This is content for the Kubernetes &amp;lsquo;hostAliases&amp;rsquo; setting for the Kiali server.&#10;This allows you to modify the Kiali server pod &amp;lsquo;/etc/hosts&amp;rsquo; file.&#10;A typical way to configure this setting is,&lt;/p&gt;&#10;&lt;pre&gt;&lt;code&gt;spec:&#10; deployment:&#10; host_aliases:&#10; - ip: 192.168.1.100&#10; hostnames:&#10; - &amp;quot;foo.local&amp;quot;&#10; - &amp;quot;bar.local&amp;quot;&#10;&lt;/code&gt;&lt;/pre&gt;&#10;&lt;p&gt;For details on the content of this setting, see &lt;a href="https://kubernetes.io/docs/tasks/network/customize-hosts-file-for-pods/#adding-additional-entries-with-hostaliases"&gt;https://kubernetes.io/docs/tasks/network/customize-hosts-file-for-pods/#adding-additional-entries-with-hostaliases&lt;/a&gt;&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-3"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.deployment.host_aliases[*]"&gt;.spec.deployment.host_aliases[*]&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(object)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-4"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.deployment.host_aliases[*].hostnames"&gt;.spec.deployment.host_aliases[*].hostnames&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(array)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-5"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.deployment.host_aliases[*].hostnames[*]"&gt;.spec.deployment.host_aliases[*].hostnames[*]&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(string)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-4"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.deployment.host_aliases[*].ip"&gt;.spec.deployment.host_aliases[*].ip&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(string)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-2"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.deployment.hpa"&gt;.spec.deployment.hpa&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(object)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;Determines what (if any) HorizontalPodAutoscaler should be created to autoscale the Kiali pod.&#10;A typical way to configure HPA for Kiali is,&lt;/p&gt;&#10;&lt;pre&gt;&lt;code&gt;spec:&#10; deployment:&#10; hpa:&#10; api_version: &amp;quot;autoscaling/v2&amp;quot;&#10; spec:&#10; maxReplicas: 2&#10; minReplicas: 1&#10; metrics:&#10; - type: Resource&#10; resource:&#10; name: cpu&#10; target:&#10; type: Utilization&#10; averageUtilization: 50&#10;&lt;/code&gt;&lt;/pre&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-3"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.deployment.hpa.api_version"&gt;.spec.deployment.hpa.api_version&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(string)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;A specific HPA API version that can be specified in case there is some HPA feature you want to use that is only supported in that specific version. If value is an empty string, an attempt will be made to determine a valid version.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-3"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.deployment.hpa.spec"&gt;.spec.deployment.hpa.spec&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(object)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;The &lt;code&gt;spec&lt;/code&gt; specified here will be placed in the created HPA resource&amp;rsquo;s &amp;lsquo;spec&amp;rsquo; section. If &lt;code&gt;spec&lt;/code&gt; is left empty, no HPA resource will be created. Note that you must not specify the &amp;lsquo;scaleTargetRef&amp;rsquo; section in &lt;code&gt;spec&lt;/code&gt;; the Kiali Operator will populate that for you.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-2"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.deployment.image_digest"&gt;.spec.deployment.image_digest&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(string)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;If &lt;code&gt;deployment.image_version&lt;/code&gt; is a digest hash, this value indicates what type of digest it is. A typical value would be &amp;lsquo;sha256&amp;rsquo;. Note: do NOT prefix this value with a &amp;lsquo;@&amp;rsquo;.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-2"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.deployment.image_name"&gt;.spec.deployment.image_name&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(string)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;Determines which Kiali image to download and install. If you set this to a specific name (i.e. you do not leave it as the default empty string), you must make sure that image is supported by the operator. If empty, the operator will use a known supported image name based on which &lt;code&gt;version&lt;/code&gt; was defined. Note that, as a security measure, a cluster admin may have configured the Kiali operator to ignore this setting. A cluster admin may do this to ensure the Kiali operator only installs a single, specific Kiali version, thus this setting may have no effect depending on how the operator itself was configured.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-2"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.deployment.image_pull_policy"&gt;.spec.deployment.image_pull_policy&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(string)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;The Kubernetes pull policy for the Kiali deployment. This is overridden to be &amp;lsquo;Always&amp;rsquo; if &lt;code&gt;deployment.image_version&lt;/code&gt; is set to &amp;lsquo;latest&amp;rsquo;.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-2"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.deployment.image_pull_secrets"&gt;.spec.deployment.image_pull_secrets&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(array)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;The names of the secrets to be used when container images are to be pulled.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-3"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.deployment.image_pull_secrets[*]"&gt;.spec.deployment.image_pull_secrets[*]&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(string)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-2"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.deployment.image_version"&gt;.spec.deployment.image_version&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(string)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;Determines which version of Kiali to install.&#10;Choose &amp;lsquo;lastrelease&amp;rsquo; to use the last Kiali release.&#10;Choose &amp;lsquo;latest&amp;rsquo; to use the latest image (which may or may not be a released version of Kiali).&#10;Choose &amp;lsquo;operator_version&amp;rsquo; to use the image whose version is the same as the operator version.&#10;Otherwise, you can set this to any valid Kiali version (such as &amp;lsquo;v1.0&amp;rsquo;) or any valid Kiali&#10;digest hash (if you set this to a digest hash, you must indicate the digest in &lt;code&gt;deployment.image_digest&lt;/code&gt;).&lt;/p&gt;&#10;&lt;p&gt;Note that if this is set to &amp;lsquo;latest&amp;rsquo; then the &lt;code&gt;deployment.image_pull_policy&lt;/code&gt; will be set to &amp;lsquo;Always&amp;rsquo;.&lt;/p&gt;&#10;&lt;p&gt;If you set this to a specific version (i.e. you do not leave it as the default empty string),&#10;you must make sure that image is supported by the operator.&lt;/p&gt;&#10;&lt;p&gt;If empty, the operator will use a known supported image version based on which &amp;lsquo;version&amp;rsquo; was defined.&#10;Note that, as a security measure, a cluster admin may have configured the Kiali operator to&#10;ignore this setting. A cluster admin may do this to ensure the Kiali operator only installs&#10;a single, specific Kiali version, thus this setting may have no effect depending on how the&#10;operator itself was configured.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-2"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.deployment.ingress"&gt;.spec.deployment.ingress&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(object)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;Configures if/how the Kiali endpoint should be exposed externally.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-3"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.deployment.ingress.additional_labels"&gt;.spec.deployment.ingress.additional_labels&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(object)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;Additional labels to add to the Ingress (or Route if on OpenShift). These are added to the labels that are created by default; these do not override the default labels.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-3"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.deployment.ingress.class_name"&gt;.spec.deployment.ingress.class_name&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(string)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;If &lt;code&gt;class_name&lt;/code&gt; is a non-empty string, it will be used as the &amp;lsquo;spec.ingressClassName&amp;rsquo; in the created Kubernetes Ingress resource. This setting is ignored if on OpenShift. This is also ignored if &lt;code&gt;override_yaml.spec&lt;/code&gt; is defined (i.e. you must define the &amp;lsquo;ingressClassName&amp;rsquo; directly in your override yaml).&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-3"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.deployment.ingress.enabled"&gt;.spec.deployment.ingress.enabled&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(boolean)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;Determines if the Kiali endpoint should be exposed externally. If &amp;lsquo;true&amp;rsquo;, an Ingress will be created if on Kubernetes or a Route if on OpenShift. If left undefined, this will be &amp;lsquo;false&amp;rsquo; on Kubernetes and &amp;lsquo;true&amp;rsquo; on OpenShift.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-3"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.deployment.ingress.override_yaml"&gt;.spec.deployment.ingress.override_yaml&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(object)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;Because an Ingress into a cluster can vary wildly in its desired configuration,&#10;this setting provides a way to override complete portions of the Ingress resource&#10;configuration (Ingress on Kubernetes and Route on OpenShift). It is up to the user&#10;to ensure this override YAML configuration is valid and supports the cluster environment&#10;since the operator will blindly copy this custom configuration into the resource it&#10;creates.&lt;/p&gt;&#10;&lt;p&gt;This setting is not used if &lt;code&gt;deployment.ingress.enabled&lt;/code&gt; is set to &amp;lsquo;false&amp;rsquo;.&#10;Note that only &amp;lsquo;metadata.annotations&amp;rsquo; and &amp;lsquo;spec&amp;rsquo; is valid and only they will&#10;be used to override those same sections in the created resource. You can define&#10;either one or both.&lt;/p&gt;&#10;&lt;p&gt;Note that &lt;code&gt;override_yaml.metadata.labels&lt;/code&gt; is not allowed - you cannot override the labels; to add&#10;labels to the default set of labels, use the &lt;code&gt;deployment.ingress.additional_labels&lt;/code&gt; setting.&#10;Example,&lt;/p&gt;&#10;&lt;pre&gt;&lt;code&gt;spec:&#10; deployment:&#10; ingress:&#10; override_yaml:&#10; metadata:&#10; annotations:&#10; nginx.ingress.kubernetes.io/secure-backends: &amp;quot;true&amp;quot;&#10; nginx.ingress.kubernetes.io/backend-protocol: &amp;quot;HTTPS&amp;quot;&#10; spec:&#10; rules:&#10; - http:&#10; paths:&#10; - path: /kiali&#10; pathType: Prefix&#10; backend:&#10; service&#10; name: &amp;quot;kiali&amp;quot;&#10; port:&#10; number: 20001&#10;&lt;/code&gt;&lt;/pre&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-4"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.deployment.ingress.override_yaml.metadata"&gt;.spec.deployment.ingress.override_yaml.metadata&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(object)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-5"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.deployment.ingress.override_yaml.metadata.annotations"&gt;.spec.deployment.ingress.override_yaml.metadata.annotations&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(object)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-4"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.deployment.ingress.override_yaml.spec"&gt;.spec.deployment.ingress.override_yaml.spec&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(object)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-2"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.deployment.instance_name"&gt;.spec.deployment.instance_name&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(string)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;The instance name of this Kiali installation. This instance name will be the prefix prepended to the names of all Kiali resources created by the operator and will be used to label those resources as belonging to this Kiali installation instance. You cannot change this instance name after a Kiali CR is created. If you attempt to change it, the operator will abort with an error. If you want to change it, you must first delete the original Kiali CR and create a new one. Note that this does not affect the name of the auto-generated signing key secret. If you do not supply a signing key, the operator will create one for you in a secret, but that secret will always be named &amp;lsquo;kiali-signing-key&amp;rsquo; and shared across all Kiali instances in the same deployment namespace. If you want a different signing key secret, you are free to create your own and tell the operator about it via &lt;code&gt;login_token.signing_key&lt;/code&gt;. See the docs on that setting for more details. Note also that if you are setting this value, you may also want to change the &lt;code&gt;installation_tag&lt;/code&gt; setting, but this is not required.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-2"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.deployment.logger"&gt;.spec.deployment.logger&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(object)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;Configures the logger that emits messages to the Kiali server pod logs.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-3"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.deployment.logger.log_format"&gt;.spec.deployment.logger.log_format&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(string)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;Indicates if the logs should be written with one log message per line or using a JSON format. Must be one of: &lt;code&gt;text&lt;/code&gt; or &lt;code&gt;json&lt;/code&gt;.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-3"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.deployment.logger.log_level"&gt;.spec.deployment.logger.log_level&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(string)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;The lowest priority of messages to log. Must be one of: &lt;code&gt;trace&lt;/code&gt;, &lt;code&gt;debug&lt;/code&gt;, &lt;code&gt;info&lt;/code&gt;, &lt;code&gt;warn&lt;/code&gt;, &lt;code&gt;error&lt;/code&gt;, or &lt;code&gt;fatal&lt;/code&gt;.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-3"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.deployment.logger.log_prometheus_queries"&gt;.spec.deployment.logger.log_prometheus_queries&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(boolean)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;When true and log_level is trace, Kiali logs PromQL instant and range queries used to obtain metrics.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-3"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.deployment.logger.sampler_rate"&gt;.spec.deployment.logger.sampler_rate&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(string)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;With this setting every sampler_rate-th message will be logged. By default, every message is logged. As an example, setting this to &lt;code&gt;'2'&lt;/code&gt; means every other message will be logged. The value of this setting is a string but must be parsable as an integer.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-3"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.deployment.logger.time_field_format"&gt;.spec.deployment.logger.time_field_format&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(string)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;The log message timestamp format. This supports a golang time format (see &lt;a href="https://golang.org/pkg/time/"&gt;https://golang.org/pkg/time/&lt;/a&gt;)&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-2"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.deployment.namespace"&gt;.spec.deployment.namespace&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(string)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;The namespace into which Kiali is to be installed. If this is empty or not defined, the default will be the namespace where the Kiali CR is located.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-2"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.deployment.network_policy"&gt;.spec.deployment.network_policy&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(object)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;Configures if the Kiali server pod should be protected by a NetworkPolicy resource that restricts both ingress and egress traffic.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-3"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.deployment.network_policy.enabled"&gt;.spec.deployment.network_policy.enabled&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(boolean)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;If true, a NetworkPolicy resource is created to restrict traffic to the Kiali server pod. The NetworkPolicy will allow ingress traffic only to the Kiali server API port and, if enabled, the metrics port.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-2"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.deployment.node_selector"&gt;.spec.deployment.node_selector&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(object)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;A set of node labels that dictate onto which node the Kiali pod will be deployed.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-2"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.deployment.pod_annotations"&gt;.spec.deployment.pod_annotations&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(object)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;Custom annotations to be created on the Kiali pod.&#10;By default, the following annotation is applied:&lt;/p&gt;&#10;&lt;pre&gt;&lt;code&gt;proxy.istio.io/config: '{ &amp;quot;holdApplicationUntilProxyStarts&amp;quot;: true }'&#10;&lt;/code&gt;&lt;/pre&gt;&#10;&lt;p&gt;If you define your own pod_annotations, they will overwrite this default.&#10;To retain the default behavior while adding your own annotations,&#10;make sure to include this value alongside your custom annotations.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-2"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.deployment.pod_disruption_budget"&gt;.spec.deployment.pod_disruption_budget&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(object)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;Determines what (if any) PodDisruptionBudget should be created for the Kiali pod.&#10;A typical way to configure PDB for Kiali is,&lt;/p&gt;&#10;&lt;pre&gt;&lt;code&gt;spec:&#10; deployment:&#10; pod_disruption_budget:&#10; api_version: &amp;quot;policy/v1&amp;quot;&#10; spec:&#10; minAvailable: 1&#10;&lt;/code&gt;&lt;/pre&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-3"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.deployment.pod_disruption_budget.api_version"&gt;.spec.deployment.pod_disruption_budget.api_version&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(string)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;A specific PDB API version that can be specified in case there is some PDB feature you want to use that is only supported in that specific version. If value is an empty string, the default version of &amp;lsquo;policy/v1&amp;rsquo; will be used.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-3"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.deployment.pod_disruption_budget.spec"&gt;.spec.deployment.pod_disruption_budget.spec&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(object)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;The &lt;code&gt;spec&lt;/code&gt; specified here will be placed in the created PDB resource&amp;rsquo;s &amp;lsquo;spec&amp;rsquo; section. If &lt;code&gt;spec&lt;/code&gt; is left empty, no PDB resource will be created. Note that you must not specify the &amp;lsquo;selector&amp;rsquo; section in &lt;code&gt;spec&lt;/code&gt;; the Kiali Operator will populate that for you.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-2"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.deployment.pod_labels"&gt;.spec.deployment.pod_labels&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(object)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;Custom labels to be created on the Kiali pod.&#10;An example use for this setting is to inject an Istio sidecar such as,&lt;/p&gt;&#10;&lt;pre&gt;&lt;code&gt;sidecar.istio.io/inject: &amp;quot;true&amp;quot;&#10;&lt;/code&gt;&lt;/pre&gt;&#10;&lt;p&gt;Note that if you set a label key that conflicts with a standard Kiali label,&#10;your value will take precedence (user labels win on collision).&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-2"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.deployment.priority_class_name"&gt;.spec.deployment.priority_class_name&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(string)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;The priorityClassName used to assign the priority of the Kiali pod.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-2"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.deployment.probes"&gt;.spec.deployment.probes&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(object)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;Configures the liveness, readiness, and startup probes of the Kiali pod.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-3"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.deployment.probes.liveness"&gt;.spec.deployment.probes.liveness&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(object)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;Configures the liveness probe of the Kiali pod.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-4"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.deployment.probes.liveness.initial_delay_seconds"&gt;.spec.deployment.probes.liveness.initial_delay_seconds&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(integer)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-4"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.deployment.probes.liveness.period_seconds"&gt;.spec.deployment.probes.liveness.period_seconds&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(integer)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-3"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.deployment.probes.readiness"&gt;.spec.deployment.probes.readiness&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(object)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;Configures the readiness probe of the Kiali pod.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-4"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.deployment.probes.readiness.initial_delay_seconds"&gt;.spec.deployment.probes.readiness.initial_delay_seconds&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(integer)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-4"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.deployment.probes.readiness.period_seconds"&gt;.spec.deployment.probes.readiness.period_seconds&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(integer)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-3"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.deployment.probes.startup"&gt;.spec.deployment.probes.startup&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(object)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;Configures the startup probe of the Kiali pod.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-4"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.deployment.probes.startup.failure_threshold"&gt;.spec.deployment.probes.startup.failure_threshold&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(integer)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-4"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.deployment.probes.startup.initial_delay_seconds"&gt;.spec.deployment.probes.startup.initial_delay_seconds&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(integer)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-4"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.deployment.probes.startup.period_seconds"&gt;.spec.deployment.probes.startup.period_seconds&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(integer)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-2"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.deployment.remote_cluster_resources_only"&gt;.spec.deployment.remote_cluster_resources_only&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(boolean)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;When &lt;code&gt;true&lt;/code&gt;, only those resources necessary for a remote Kiali Server to access this cluster are created (such as the service account and roles/bindings). There will be no Kiali Server deployment/pod created when this is &lt;code&gt;true&lt;/code&gt;.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-2"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.deployment.replicas"&gt;.spec.deployment.replicas&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(integer)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;The replica count for the Kiail deployment. If &lt;code&gt;deployment.hpa&lt;/code&gt; is specified, this setting is ignored.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-2"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.deployment.resources"&gt;.spec.deployment.resources&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(object)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;Defines compute resources that are to be given to the Kiali pod&amp;rsquo;s container. The value is a dict as defined by Kubernetes. See the Kubernetes documentation (&lt;a href="https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container"&gt;https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container&lt;/a&gt;).&#10;If you set this to an empty dict (&lt;code&gt;{}&lt;/code&gt;) then no resources will be defined in the Deployment.&#10;If you do not set this at all, the default is,&lt;/p&gt;&#10;&lt;pre&gt;&lt;code&gt;spec:&#10; deployment:&#10; resources:&#10; requests:&#10; cpu: &amp;quot;10m&amp;quot;&#10; memory: &amp;quot;64Mi&amp;quot;&#10; limits:&#10; memory: &amp;quot;1Gi&amp;quot;&#10;&lt;/code&gt;&lt;/pre&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-2"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.deployment.secret_name"&gt;.spec.deployment.secret_name&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(string)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;The name of a secret used by the Kiali. This secret is optionally used when configuring the OpenID authentication strategy. Consult the OpenID docs for more information at &lt;a href="https://kiali.io/docs/configuration/authentication/openid/"&gt;https://kiali.io/docs/configuration/authentication/openid/&lt;/a&gt;&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-2"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.deployment.security_context"&gt;.spec.deployment.security_context&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(object)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;Custom security context to be placed on the server container. The entire security context on the container will be the value of this setting if the operator is configured to allow it. Note that, as a security measure, a cluster admin may have configured the Kiali operator to not allow portions of this override setting - in this case you can specify additional security context settings but you cannot replace existing, default ones.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-2"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.deployment.service_annotations"&gt;.spec.deployment.service_annotations&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(object)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;Custom annotations to be created on the Kiali Service resource.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-2"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.deployment.service_labels"&gt;.spec.deployment.service_labels&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(object)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;Custom labels to be created on the Kiali Service resource.&#10;Note that if you set a label key that conflicts with a standard Kiali label,&#10;your value will take precedence (user labels win on collision).&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-2"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.deployment.service_type"&gt;.spec.deployment.service_type&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(string)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;The Kiali service type. Kubernetes determines what values are valid. Common values are &amp;lsquo;NodePort&amp;rsquo;, &amp;lsquo;ClusterIP&amp;rsquo;, and &amp;lsquo;LoadBalancer&amp;rsquo;.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-2"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.deployment.strategy"&gt;.spec.deployment.strategy&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(object)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;Configures the update strategy for the Kiali deployment. If not specified, a RollingUpdate strategy is used with maxSurge=1 and maxUnavailable=1. See the Kubernetes documentation on Deployment Strategy for details.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-2"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.deployment.tls_config"&gt;.spec.deployment.tls_config&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(object)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;TLS policy configuration. When source is &amp;lsquo;auto&amp;rsquo; on OpenShift, the APIServer TLSSecurityProfile is used. Otherwise, the explicit config values are enforced.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-3"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.deployment.tls_config.cipher_suites"&gt;.spec.deployment.tls_config.cipher_suites&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(array)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;Explicit TLS cipher suites (OpenSSL names). Ignored for TLS 1.3.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-4"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.deployment.tls_config.cipher_suites[*]"&gt;.spec.deployment.tls_config.cipher_suites[*]&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(string)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-3"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.deployment.tls_config.groups"&gt;.spec.deployment.tls_config.groups&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(array)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;Explicit TLS groups (supported key exchange mechanisms, e.g., X25519, secp256r1).&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-4"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.deployment.tls_config.groups[*]"&gt;.spec.deployment.tls_config.groups[*]&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(string)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-3"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.deployment.tls_config.max_version"&gt;.spec.deployment.tls_config.max_version&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(string)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;Maximum TLS version (e.g., TLSv1.3, TLSv1.2).&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-3"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.deployment.tls_config.min_version"&gt;.spec.deployment.tls_config.min_version&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(string)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;Minimum TLS version (e.g., TLSv1.3, TLSv1.2).&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-3"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.deployment.tls_config.source"&gt;.spec.deployment.tls_config.source&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(string)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;TLS policy source: &amp;lsquo;auto&amp;rsquo; to use OpenShift TLSSecurityProfile; &amp;lsquo;config&amp;rsquo; to use explicit settings.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-2"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.deployment.tolerations"&gt;.spec.deployment.tolerations&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(array)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;A list of tolerations which declare which node taints Kiali can tolerate. See the Kubernetes documentation on Taints and Tolerations for more details.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-3"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.deployment.tolerations[*]"&gt;.spec.deployment.tolerations[*]&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(object)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-2"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.deployment.topology_spread_constraints"&gt;.spec.deployment.topology_spread_constraints&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(array)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;A list of constraints which control how the Kiali pods are spread across your cluster to help achieve high availability as well as efficient resource utilization. See the Kubernetes documentation on Topology Spread Constraints for more details.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-3"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.deployment.topology_spread_constraints[*]"&gt;.spec.deployment.topology_spread_constraints[*]&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(object)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-2"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.deployment.verbose_mode"&gt;.spec.deployment.verbose_mode&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(boolean)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;DEPRECATED AFTER v1.73: When true, Kiali will log additional debug information about its operations.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-2"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.deployment.version_label"&gt;.spec.deployment.version_label&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(string)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;Kiali resources will be assigned a &amp;lsquo;version&amp;rsquo; label when they are deployed.&#10;This setting determines what value those &amp;lsquo;version&amp;rsquo; labels will have.&#10;When empty, its default will be determined as follows,&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;If &lt;code&gt;deployment.image_version&lt;/code&gt; is &amp;lsquo;latest&amp;rsquo;, &lt;code&gt;version_label&lt;/code&gt; will be fixed to &amp;lsquo;master&amp;rsquo;.&lt;/li&gt;&#10;&lt;li&gt;If &lt;code&gt;deployment.image_version&lt;/code&gt; is &amp;lsquo;lastrelease&amp;rsquo;, &lt;code&gt;version_label&lt;/code&gt; will be fixed to the last Kiali release version string.&lt;/li&gt;&#10;&lt;li&gt;If &lt;code&gt;deployment.image_version&lt;/code&gt; is anything else, &lt;code&gt;version_label&lt;/code&gt; will be that value, too.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-2"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.deployment.view_only_mode"&gt;.spec.deployment.view_only_mode&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(boolean)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;When true, Kiali will be in &amp;lsquo;view only&amp;rsquo; mode, allowing the user to view and retrieve management and monitoring data for the service mesh, but not allow the user to modify the service mesh.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-1"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.extensions"&gt;.spec.extensions&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(array)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;Defines third-party extensions whose metrics can be integrated into the Kiali traffic graph.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-2"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.extensions[*]"&gt;.spec.extensions[*]&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(object)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-3"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.extensions[*].enabled"&gt;.spec.extensions[*].enabled&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(boolean)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;Determines if the Kiali traffic graph should incorporate the extension&amp;rsquo;s metrics.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-3"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.extensions[*].name"&gt;.spec.extensions[*].name&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(string)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;The name that is used to identify the metric time series for the extension.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-1"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.external_services"&gt;.spec.external_services&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(object)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;These external service configuration settings define how to connect to the external services&#10;like Prometheus, Grafana, and Jaeger.&lt;/p&gt;&#10;&lt;p&gt;Regarding sensitive values in the external_services &amp;lsquo;auth&amp;rsquo; sections:&#10;Some external services configured below support an &amp;lsquo;auth&amp;rsquo; sub-section in order to tell Kiali&#10;how it should authenticate with the external services. Credentials used to authenticate Kiali&#10;to those external services can be defined in the &lt;code&gt;auth.password&lt;/code&gt; and &lt;code&gt;auth.token&lt;/code&gt; values&#10;within the &lt;code&gt;auth&lt;/code&gt; sub-section. Because these are sensitive values, you may not want to declare&#10;the actual credentials here in the Kiali CR. In this case, you may store the actual password&#10;or token string in a Kubernetes secret. If you do, you need to set the &lt;code&gt;auth.password&lt;/code&gt; or&#10;&lt;code&gt;auth.token&lt;/code&gt; to a value in the format &lt;code&gt;secret:&amp;lt;secretName&amp;gt;:&amp;lt;secretKey&amp;gt;&lt;/code&gt; where &lt;code&gt;&amp;lt;secretName&amp;gt;&lt;/code&gt;&#10;is the name of the secret object that Kiali can access, and &lt;code&gt;&amp;lt;secretKey&amp;gt;&lt;/code&gt; is the name of the&#10;key within the named secret that contains the actual password or token string. For example,&#10;if Grafana requires a password, you can store that password in a secret named &amp;lsquo;myGrafanaCredentials&amp;rsquo;&#10;in a key named &amp;lsquo;myGrafanaPw&amp;rsquo;. In this case, you would set &lt;code&gt;external_services.grafana.auth.password&lt;/code&gt;&#10;to &lt;code&gt;secret:myGrafanaCredentials:myGrafanaPw&lt;/code&gt;.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-2"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.external_services.custom_dashboards"&gt;.spec.external_services.custom_dashboards&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(object)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;Settings for enabling and discovering custom dashboards.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-3"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.external_services.custom_dashboards.discovery_auto_threshold"&gt;.spec.external_services.custom_dashboards.discovery_auto_threshold&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(integer)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;Threshold of the number of pods, for a given Application or Workload, above which dashboards discovery will be skipped. This setting only takes effect when &lt;code&gt;discovery_enabled&lt;/code&gt; is set to &amp;lsquo;auto&amp;rsquo;.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-3"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.external_services.custom_dashboards.discovery_enabled"&gt;.spec.external_services.custom_dashboards.discovery_enabled&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(string)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;Enable, disable or set &amp;lsquo;auto&amp;rsquo; mode to the dashboards discovery process. If set to &amp;lsquo;true&amp;rsquo;, Kiali will always try to discover dashboards based on metrics. Note that this can generate performance penalties while discovering dashboards for workloads having many pods (thus many metrics). When set to &amp;lsquo;auto&amp;rsquo;, Kiali will skip dashboards discovery for workloads with more than a configured threshold of pods (see &lt;code&gt;discovery_auto_threshold&lt;/code&gt;). When discovery is disabled or auto/skipped, it is still possible to tie workloads with dashboards through annotations on pods (refer to the doc &lt;a href="https://kiali.io/docs/configuration/custom-dashboard/#pod-annotations"&gt;https://kiali.io/docs/configuration/custom-dashboard/#pod-annotations&lt;/a&gt;). Value must be a string and be one of: &lt;code&gt;true&lt;/code&gt;, &lt;code&gt;false&lt;/code&gt;, &lt;code&gt;auto&lt;/code&gt;.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-3"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.external_services.custom_dashboards.enabled"&gt;.spec.external_services.custom_dashboards.enabled&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(boolean)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;Enable or disable custom dashboards, including the dashboards discovery process.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-3"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.external_services.custom_dashboards.is_core"&gt;.spec.external_services.custom_dashboards.is_core&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(boolean)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;Used in the Components health feature. When true, the unhealthy scenarios will be raised as errors. Otherwise, they will be raised as a warning.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-3"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.external_services.custom_dashboards.namespace_label"&gt;.spec.external_services.custom_dashboards.namespace_label&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(string)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;The Prometheus label name used for identifying namespaces in metrics for custom dashboards. The default is &lt;code&gt;namespace&lt;/code&gt; but you may want to use &lt;code&gt;kubernetes_namespace&lt;/code&gt; depending on your Prometheus configuration.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-3"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.external_services.custom_dashboards.prometheus"&gt;.spec.external_services.custom_dashboards.prometheus&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(object)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;The Prometheus configuration defined here refers to the Prometheus instance that is dedicated to fetching metrics for custom dashboards. This means you can obtain these metrics for the custom dashboards from a Prometheus instance that is different from the one that Istio uses. If this section is omitted, the same Prometheus that is used to obtain the Istio metrics will also be used for retrieving custom dashboard metrics.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-4"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.external_services.custom_dashboards.prometheus.auth"&gt;.spec.external_services.custom_dashboards.prometheus.auth&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(object)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;Settings used to authenticate with the Prometheus instance.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-5"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.external_services.custom_dashboards.prometheus.auth.ca_file"&gt;.spec.external_services.custom_dashboards.prometheus.auth.ca_file&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(string)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;DEPRECATED since v2.20: This setting is deprecated and will be ignored. To configure custom CA certificates, use the kiali-cabundle ConfigMap instead. See the TLS Configuration documentation for details.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-5"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.external_services.custom_dashboards.prometheus.auth.cert_file"&gt;.spec.external_services.custom_dashboards.prometheus.auth.cert_file&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(string)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;The client certificate file to use when accessing Prometheus using https with mTLS. An empty string means no client certificate is used. May refer to a secret using the pattern &lt;code&gt;secret:&amp;lt;secretName&amp;gt;:&amp;lt;secretKey&amp;gt;&lt;/code&gt;. When using a secret, the certificate is cached and automatically refreshed when the secret changes, enabling rotation without pod restart.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-5"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.external_services.custom_dashboards.prometheus.auth.insecure_skip_verify"&gt;.spec.external_services.custom_dashboards.prometheus.auth.insecure_skip_verify&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(boolean)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;Set true to skip verifying certificate validity when Kiali contacts Prometheus over https.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-5"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.external_services.custom_dashboards.prometheus.auth.key_file"&gt;.spec.external_services.custom_dashboards.prometheus.auth.key_file&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(string)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;The client private key file to use when accessing Prometheus using https with mTLS. An empty string means no client private key is used. May refer to a secret using the pattern &lt;code&gt;secret:&amp;lt;secretName&amp;gt;:&amp;lt;secretKey&amp;gt;&lt;/code&gt;. When using a secret, the key is cached and automatically refreshed when the secret changes, enabling rotation without pod restart.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-5"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.external_services.custom_dashboards.prometheus.auth.oauth2"&gt;.spec.external_services.custom_dashboards.prometheus.auth.oauth2&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(object)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;Settings for OAuth2 client_credentials authentication. When auth.type is &lt;code&gt;oauth2&lt;/code&gt;, these settings are used to obtain an access token.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-6"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.external_services.custom_dashboards.prometheus.auth.oauth2.audience"&gt;.spec.external_services.custom_dashboards.prometheus.auth.oauth2.audience&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(string)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;The audience parameter sent with the token request. Some providers require this to scope the token.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-6"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.external_services.custom_dashboards.prometheus.auth.oauth2.auth_style"&gt;.spec.external_services.custom_dashboards.prometheus.auth.oauth2.auth_style&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(string)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;How to send client credentials to the token endpoint. Use &lt;code&gt;params&lt;/code&gt; to send in the request body or &lt;code&gt;header&lt;/code&gt; to send as HTTP Basic Auth (default).&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-6"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.external_services.custom_dashboards.prometheus.auth.oauth2.client_id"&gt;.spec.external_services.custom_dashboards.prometheus.auth.oauth2.client_id&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(string)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;The OAuth2 client ID (a public identifier per RFC 6749 §2.2).&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-6"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.external_services.custom_dashboards.prometheus.auth.oauth2.client_secret"&gt;.spec.external_services.custom_dashboards.prometheus.auth.oauth2.client_secret&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(string)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;The OAuth2 client secret. May refer to a secret using the pattern &lt;code&gt;secret:&amp;lt;secretName&amp;gt;:&amp;lt;secretKey&amp;gt;&lt;/code&gt;. When using a secret, the value is cached and automatically refreshed when the secret changes, enabling rotation without pod restart.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-6"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.external_services.custom_dashboards.prometheus.auth.oauth2.scopes"&gt;.spec.external_services.custom_dashboards.prometheus.auth.oauth2.scopes&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(array)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;A list of scopes to request with the token.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-7"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.external_services.custom_dashboards.prometheus.auth.oauth2.scopes[*]"&gt;.spec.external_services.custom_dashboards.prometheus.auth.oauth2.scopes[*]&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(string)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-6"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.external_services.custom_dashboards.prometheus.auth.oauth2.token_url"&gt;.spec.external_services.custom_dashboards.prometheus.auth.oauth2.token_url&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(string)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;The URL of the OAuth2 token endpoint.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-5"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.external_services.custom_dashboards.prometheus.auth.password"&gt;.spec.external_services.custom_dashboards.prometheus.auth.password&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(string)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;Password to be used when making requests to Prometheus, for basic authentication. May refer to a secret using the pattern &lt;code&gt;secret:&amp;lt;secretName&amp;gt;:&amp;lt;secretKey&amp;gt;&lt;/code&gt;. When using a secret, the password is cached and automatically refreshed when the secret changes, enabling rotation without pod restart.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-5"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.external_services.custom_dashboards.prometheus.auth.token"&gt;.spec.external_services.custom_dashboards.prometheus.auth.token&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(string)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;Token / API key to access Prometheus, for token-based authentication. May refer to a secret using the pattern &lt;code&gt;secret:&amp;lt;secretName&amp;gt;:&amp;lt;secretKey&amp;gt;&lt;/code&gt;. When using a secret, the token is cached and automatically refreshed when the secret changes, enabling rotation without pod restart.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-5"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.external_services.custom_dashboards.prometheus.auth.type"&gt;.spec.external_services.custom_dashboards.prometheus.auth.type&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(string)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;The type of authentication to use when contacting the server. Use &lt;code&gt;bearer&lt;/code&gt; to send the token to the Prometheus server. Use &lt;code&gt;basic&lt;/code&gt; to connect with username and password credentials. Use &lt;code&gt;oauth2&lt;/code&gt; to use OAuth2 client_credentials flow. Use &lt;code&gt;none&lt;/code&gt; to not use any authentication.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-5"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.external_services.custom_dashboards.prometheus.auth.use_kiali_token"&gt;.spec.external_services.custom_dashboards.prometheus.auth.use_kiali_token&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(boolean)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;When true and if &lt;code&gt;auth.type&lt;/code&gt; is &lt;code&gt;bearer&lt;/code&gt;, Kiali Service Account token will be used for the API calls to Prometheus (in this case, &lt;code&gt;auth.token&lt;/code&gt; config is ignored).&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-5"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.external_services.custom_dashboards.prometheus.auth.username"&gt;.spec.external_services.custom_dashboards.prometheus.auth.username&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(string)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;Username to be used when making requests to Prometheus with &lt;code&gt;basic&lt;/code&gt; authentication. May refer to a secret using the pattern &lt;code&gt;secret:&amp;lt;secretName&amp;gt;:&amp;lt;secretKey&amp;gt;&lt;/code&gt;. When using a secret, the username is cached and automatically refreshed when the secret changes, enabling rotation without pod restart.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-4"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.external_services.custom_dashboards.prometheus.cache_duration"&gt;.spec.external_services.custom_dashboards.prometheus.cache_duration&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(integer)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;Prometheus caching duration expressed in seconds.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-4"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.external_services.custom_dashboards.prometheus.cache_enabled"&gt;.spec.external_services.custom_dashboards.prometheus.cache_enabled&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(boolean)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;Enable/disable Prometheus caching used for Health services.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-4"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.external_services.custom_dashboards.prometheus.cache_expiration"&gt;.spec.external_services.custom_dashboards.prometheus.cache_expiration&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(integer)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;Prometheus caching expiration expressed in seconds.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-4"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.external_services.custom_dashboards.prometheus.custom_headers"&gt;.spec.external_services.custom_dashboards.prometheus.custom_headers&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(object)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;A set of name/value settings that will be passed as headers when requests are sent to Prometheus.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-4"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.external_services.custom_dashboards.prometheus.health_check_url"&gt;.spec.external_services.custom_dashboards.prometheus.health_check_url&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(string)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;Used in the Components health feature. This is the url which Kiali will ping to determine whether the component is reachable or not. It defaults to &lt;code&gt;url&lt;/code&gt; when not provided.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-4"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.external_services.custom_dashboards.prometheus.is_core"&gt;.spec.external_services.custom_dashboards.prometheus.is_core&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(boolean)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;Used in the Components health feature. When true, the unhealthy scenarios will be raised as errors. Otherwise, they will be raised as a warning.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-4"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.external_services.custom_dashboards.prometheus.query_scope"&gt;.spec.external_services.custom_dashboards.prometheus.query_scope&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(object)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;A set of labelName/labelValue settings applied to every Prometheus query. Used to narrow unified metrics to only those scoped to the Kiali instance.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-4"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.external_services.custom_dashboards.prometheus.thanos_proxy"&gt;.spec.external_services.custom_dashboards.prometheus.thanos_proxy&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(object)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;Define this section if Prometheus is to be queried through a Thanos proxy. Kiali will still use the &lt;code&gt;url&lt;/code&gt; setting to query for Prometheus metrics so make sure that is set appropriately.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-5"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.external_services.custom_dashboards.prometheus.thanos_proxy.enabled"&gt;.spec.external_services.custom_dashboards.prometheus.thanos_proxy.enabled&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(boolean)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;Set to true when a Thanos proxy is in front of Prometheus.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-5"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.external_services.custom_dashboards.prometheus.thanos_proxy.retention_period"&gt;.spec.external_services.custom_dashboards.prometheus.thanos_proxy.retention_period&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(string)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;Thanos Retention period value expressed as a string.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-5"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.external_services.custom_dashboards.prometheus.thanos_proxy.scrape_interval"&gt;.spec.external_services.custom_dashboards.prometheus.thanos_proxy.scrape_interval&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(string)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;Thanos Scrape interval value expressed as a string.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-4"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.external_services.custom_dashboards.prometheus.url"&gt;.spec.external_services.custom_dashboards.prometheus.url&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(string)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;The URL used to query the Prometheus Server. This URL must be accessible from the Kiali pod. If empty, the default will assume Prometheus is in the Istio control plane namespace; e.g. &lt;code&gt;http://prometheus.istio-system:9090&lt;/code&gt;.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-2"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.external_services.grafana"&gt;.spec.external_services.grafana&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(object)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;Configuration used to access the Grafana dashboards.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-3"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.external_services.grafana.auth"&gt;.spec.external_services.grafana.auth&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(object)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;Settings used to authenticate with the Grafana instance.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-4"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.external_services.grafana.auth.ca_file"&gt;.spec.external_services.grafana.auth.ca_file&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(string)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;DEPRECATED since v2.20: This setting is deprecated and will be ignored. To configure custom CA certificates, use the kiali-cabundle ConfigMap instead. See the TLS Configuration documentation for details.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-4"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.external_services.grafana.auth.cert_file"&gt;.spec.external_services.grafana.auth.cert_file&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(string)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;The client certificate file to use when accessing Grafana using https with mTLS. An empty string means no client certificate is used. May refer to a secret using the pattern &lt;code&gt;secret:&amp;lt;secretName&amp;gt;:&amp;lt;secretKey&amp;gt;&lt;/code&gt;. When using a secret, the certificate is cached and automatically refreshed when the secret changes, enabling rotation without pod restart.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-4"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.external_services.grafana.auth.insecure_skip_verify"&gt;.spec.external_services.grafana.auth.insecure_skip_verify&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(boolean)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;Set true to skip verifying certificate validity when Kiali contacts Grafana over https.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-4"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.external_services.grafana.auth.key_file"&gt;.spec.external_services.grafana.auth.key_file&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(string)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;The client private key file to use when accessing Grafana using https with mTLS. An empty string means no client private key is used. May refer to a secret using the pattern &lt;code&gt;secret:&amp;lt;secretName&amp;gt;:&amp;lt;secretKey&amp;gt;&lt;/code&gt;. When using a secret, the key is cached and automatically refreshed when the secret changes, enabling rotation without pod restart.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-4"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.external_services.grafana.auth.oauth2"&gt;.spec.external_services.grafana.auth.oauth2&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(object)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;Settings for OAuth2 client_credentials authentication. When auth.type is &lt;code&gt;oauth2&lt;/code&gt;, these settings are used to obtain an access token.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-5"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.external_services.grafana.auth.oauth2.audience"&gt;.spec.external_services.grafana.auth.oauth2.audience&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(string)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;The audience parameter sent with the token request. Some providers require this to scope the token.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-5"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.external_services.grafana.auth.oauth2.auth_style"&gt;.spec.external_services.grafana.auth.oauth2.auth_style&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(string)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;How to send client credentials to the token endpoint. Use &lt;code&gt;params&lt;/code&gt; to send in the request body or &lt;code&gt;header&lt;/code&gt; to send as HTTP Basic Auth (default).&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-5"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.external_services.grafana.auth.oauth2.client_id"&gt;.spec.external_services.grafana.auth.oauth2.client_id&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(string)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;The OAuth2 client ID (a public identifier per RFC 6749 §2.2).&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-5"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.external_services.grafana.auth.oauth2.client_secret"&gt;.spec.external_services.grafana.auth.oauth2.client_secret&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(string)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;The OAuth2 client secret. May refer to a secret using the pattern &lt;code&gt;secret:&amp;lt;secretName&amp;gt;:&amp;lt;secretKey&amp;gt;&lt;/code&gt;. When using a secret, the value is cached and automatically refreshed when the secret changes, enabling rotation without pod restart.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-5"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.external_services.grafana.auth.oauth2.scopes"&gt;.spec.external_services.grafana.auth.oauth2.scopes&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(array)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;A list of scopes to request with the token.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-6"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.external_services.grafana.auth.oauth2.scopes[*]"&gt;.spec.external_services.grafana.auth.oauth2.scopes[*]&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(string)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-5"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.external_services.grafana.auth.oauth2.token_url"&gt;.spec.external_services.grafana.auth.oauth2.token_url&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(string)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;The URL of the OAuth2 token endpoint.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-4"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.external_services.grafana.auth.password"&gt;.spec.external_services.grafana.auth.password&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(string)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;Password to be used when making requests to Grafana, for basic authentication. May refer to a secret using the pattern &lt;code&gt;secret:&amp;lt;secretName&amp;gt;:&amp;lt;secretKey&amp;gt;&lt;/code&gt;. When using a secret, the password is cached and automatically refreshed when the secret changes, enabling rotation without pod restart.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-4"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.external_services.grafana.auth.token"&gt;.spec.external_services.grafana.auth.token&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(string)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;Token / API key to access Grafana, for token-based authentication. May refer to a secret using the pattern &lt;code&gt;secret:&amp;lt;secretName&amp;gt;:&amp;lt;secretKey&amp;gt;&lt;/code&gt;. When using a secret, the token is cached and automatically refreshed when the secret changes, enabling rotation without pod restart.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-4"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.external_services.grafana.auth.type"&gt;.spec.external_services.grafana.auth.type&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(string)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;The type of authentication to use when contacting the server. Use &lt;code&gt;bearer&lt;/code&gt; to send the token to the Grafana server. Use &lt;code&gt;basic&lt;/code&gt; to connect with username and password credentials. Use &lt;code&gt;oauth2&lt;/code&gt; to use OAuth2 client_credentials flow. Use &lt;code&gt;none&lt;/code&gt; to not use any authentication.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-4"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.external_services.grafana.auth.use_kiali_token"&gt;.spec.external_services.grafana.auth.use_kiali_token&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(boolean)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;When true and if &lt;code&gt;auth.type&lt;/code&gt; is &lt;code&gt;bearer&lt;/code&gt;, Kiali Service Account token will be used for the API calls to Grafana (in this case, &lt;code&gt;auth.token&lt;/code&gt; config is ignored).&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-4"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.external_services.grafana.auth.username"&gt;.spec.external_services.grafana.auth.username&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(string)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;Username to be used when making requests to Grafana with &lt;code&gt;basic&lt;/code&gt; authentication. May refer to a secret using the pattern &lt;code&gt;secret:&amp;lt;secretName&amp;gt;:&amp;lt;secretKey&amp;gt;&lt;/code&gt;. When using a secret, the username is cached and automatically refreshed when the secret changes, enabling rotation without pod restart.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-3"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.external_services.grafana.dashboards"&gt;.spec.external_services.grafana.dashboards&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(array)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;A list of Grafana dashboards that Kiali can link to.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-4"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.external_services.grafana.dashboards[*]"&gt;.spec.external_services.grafana.dashboards[*]&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(object)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-5"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.external_services.grafana.dashboards[*].name"&gt;.spec.external_services.grafana.dashboards[*].name&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(string)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;The name of the Grafana dashboard.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-5"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.external_services.grafana.dashboards[*].variables"&gt;.spec.external_services.grafana.dashboards[*].variables&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(object)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-6"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.external_services.grafana.dashboards[*].variables.app"&gt;.spec.external_services.grafana.dashboards[*].variables.app&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(string)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;The name of a variable that holds the app name, if used in that dashboard (else it must be omitted).&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-6"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.external_services.grafana.dashboards[*].variables.datasource"&gt;.spec.external_services.grafana.dashboards[*].variables.datasource&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(string)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;The name of the variable that holds the Datasource UID, required if Grafana has multiple datasources configured (else it must be omitted).&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-6"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.external_services.grafana.dashboards[*].variables.namespace"&gt;.spec.external_services.grafana.dashboards[*].variables.namespace&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(string)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;The name of a variable that holds the namespace, if used in that dashboard (else it must be omitted).&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-6"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.external_services.grafana.dashboards[*].variables.service"&gt;.spec.external_services.grafana.dashboards[*].variables.service&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(string)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;The name of a variable that holds the service name, if used in that dashboard (else it must be omitted).&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-6"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.external_services.grafana.dashboards[*].variables.version"&gt;.spec.external_services.grafana.dashboards[*].variables.version&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(string)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;The name of a variable that holds the version, if used in that dashboard (else it must be omitted).&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-6"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.external_services.grafana.dashboards[*].variables.workload"&gt;.spec.external_services.grafana.dashboards[*].variables.workload&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(string)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;The name of a variable that holds the workload name, if used in that dashboard (else it must be omitted).&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-3"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.external_services.grafana.datasource_uid"&gt;.spec.external_services.grafana.datasource_uid&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(string)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;The UID of the Datasource configured in Grafana must be specified if multiple datasources are configured. It is empty by default and is used only in conjunction with the &lt;code&gt;datasource&lt;/code&gt; variable.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-3"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.external_services.grafana.enabled"&gt;.spec.external_services.grafana.enabled&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(boolean)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;When true, Grafana support will be enabled in Kiali.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-3"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.external_services.grafana.external_url"&gt;.spec.external_services.grafana.external_url&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(string)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;The URL that the Kiali UI uses when displaying Grafana links to the user. This URL must be accessible to clients external to the cluster (e.g. a browser) in order for the integration to work properly. If empty, an attempt to auto-discover it is made. This URL can contain query parameters if needed, such as &amp;lsquo;?orgId=1&amp;rsquo;.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-3"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.external_services.grafana.health_check_url"&gt;.spec.external_services.grafana.health_check_url&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(string)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;Used in the Components health feature. This is the URL which Kiali will ping to determine whether the component is reachable or not. It defaults to &lt;code&gt;internal_url&lt;/code&gt; when not provided.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-3"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.external_services.grafana.in_cluster_url"&gt;.spec.external_services.grafana.in_cluster_url&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(string)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;DEPRECATED AFTER v1.73: The URL used for in-cluster access to Grafana.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-3"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.external_services.grafana.internal_url"&gt;.spec.external_services.grafana.internal_url&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(string)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;The URL used by Kiali to perform requests and queries to Grafana. An example would be &lt;code&gt;http://grafana.istio-system:3000&lt;/code&gt;. This URL can contain query parameters if needed, such as &amp;lsquo;?orgId=1&amp;rsquo;. If not defined, it will default to &lt;code&gt;http://grafana.&amp;lt;istio namespace&amp;gt;:3000&lt;/code&gt;.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-3"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.external_services.grafana.is_core"&gt;.spec.external_services.grafana.is_core&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(boolean)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;Used in the Components health feature. When true, the unhealthy scenarios will be raised as errors. Otherwise, they will be raised as a warning.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-3"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.external_services.grafana.url"&gt;.spec.external_services.grafana.url&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(string)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;DEPRECATED AFTER v1.73: The URL used to access Grafana from external sources.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-2"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.external_services.istio"&gt;.spec.external_services.istio&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(object)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;Istio configuration that Kiali needs to know about in order to observe the mesh.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-3"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.external_services.istio.component_status"&gt;.spec.external_services.istio.component_status&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(object)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;Istio components whose status will be monitored by Kiali.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-4"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.external_services.istio.component_status.components"&gt;.spec.external_services.istio.component_status.components&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(array)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;A specific Istio component whose status will be monitored by Kiali.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-5"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.external_services.istio.component_status.components[*]"&gt;.spec.external_services.istio.component_status.components[*]&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(object)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-6"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.external_services.istio.component_status.components[*].app_label"&gt;.spec.external_services.istio.component_status.components[*].app_label&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(string)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;Istio component pod app label.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-6"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.external_services.istio.component_status.components[*].is_core"&gt;.spec.external_services.istio.component_status.components[*].is_core&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(boolean)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;Whether the component is to be considered a core component for your deployment.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-6"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.external_services.istio.component_status.components[*].is_multicluster"&gt;.spec.external_services.istio.component_status.components[*].is_multicluster&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(boolean)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;Whether the component is a multi-cluster component.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-6"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.external_services.istio.component_status.components[*].is_proxy"&gt;.spec.external_services.istio.component_status.components[*].is_proxy&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(boolean)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;Whether the component is a native Envoy proxy.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-6"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.external_services.istio.component_status.components[*].namespace"&gt;.spec.external_services.istio.component_status.components[*].namespace&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(string)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;The namespace where the component is installed. It defaults to the Istio control plane namespace (e.g. &lt;code&gt;istio-system&lt;/code&gt;). Note that the Istio documentation suggests you install the ingress and egress to different namespaces, so you most likely will want to explicitly set this namespace value for the ingress and egress components.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-4"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.external_services.istio.component_status.enabled"&gt;.spec.external_services.istio.component_status.enabled&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(boolean)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;Determines if Istio component statuses will be displayed in the Kiali masthead indicator.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-3"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.external_services.istio.config_map_name"&gt;.spec.external_services.istio.config_map_name&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(string)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;DEPRECATED AFTER v2.11: This setting is deprecated and will be ignored. The name of the istio control plane config map is now autodetected based on revision.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-3"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.external_services.istio.egress_gateway_namespace"&gt;.spec.external_services.istio.egress_gateway_namespace&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(string)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;The namespace where Istio EgressGateway component is read for a status check. When left empty, the control plane namespace is used. e.g. &lt;code&gt;istio-system&lt;/code&gt;.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-3"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.external_services.istio.envoy_admin_local_port"&gt;.spec.external_services.istio.envoy_admin_local_port&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(integer)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;DEPRECATED AFTER v2.11: This setting is deprecated and will be ignored. The port which Kiali will open to fetch envoy config data information is now hardcoded to the standard Envoy port.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-3"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.external_services.istio.gateway_api_class_name"&gt;.spec.external_services.istio.gateway_api_class_name&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(string)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;DEPRECATED AFTER v1.73: The name of the Gateway API Class used by Istio.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-3"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.external_services.istio.gateway_api_classes"&gt;.spec.external_services.istio.gateway_api_classes&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(array)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;A list declaring all the Gateway API Classes used in Istio. If empty or undefined, Kiali attempts to auto-discover Gateway Classes if &lt;code&gt;cluster_wide_access&lt;/code&gt; is set &lt;code&gt;true&lt;/code&gt; for Kiali; otherwise, it defaults to &lt;code&gt;istio&lt;/code&gt;, &lt;code&gt;istio-remote&lt;/code&gt;, and adds &lt;code&gt;istio-waypoint&lt;/code&gt; for Ambient mode or &lt;code&gt;istio-east-west&lt;/code&gt; for multicluster setup.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-4"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.external_services.istio.gateway_api_classes[*]"&gt;.spec.external_services.istio.gateway_api_classes[*]&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(object)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-5"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.external_services.istio.gateway_api_classes[*].class_name"&gt;.spec.external_services.istio.gateway_api_classes[*].class_name&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(string)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;The name of the GatewayClass.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-5"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.external_services.istio.gateway_api_classes[*].name"&gt;.spec.external_services.istio.gateway_api_classes[*].name&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(string)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;The name of the Gateway API implementation.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-3"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.external_services.istio.gateway_api_classes_label_selector"&gt;.spec.external_services.istio.gateway_api_classes_label_selector&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(string)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;Label selector for auto-discovering K8s Gateway API Classes. Used if &lt;code&gt;gateway_api_classes&lt;/code&gt; is unset and &lt;code&gt;cluster_wide_access&lt;/code&gt; is set &lt;code&gt;true&lt;/code&gt; for Kiali. When left empty then all K8s Gateway API Classes will be loaded.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-3"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.external_services.istio.istio_api_enabled"&gt;.spec.external_services.istio.istio_api_enabled&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(boolean)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;Indicates if Kiali has access to istiod.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-3"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.external_services.istio.istio_canary_revision"&gt;.spec.external_services.istio.istio_canary_revision&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(object)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;DEPRECATED AFTER v2.11: This setting is deprecated and will be ignored. Canary upgrade/downgrade functionality now autodetects canary revisions from running istiod pods.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-4"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.external_services.istio.istio_canary_revision.current"&gt;.spec.external_services.istio.istio_canary_revision.current&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(string)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;DEPRECATED AFTER v2.11: The currently installed Istio revision.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-4"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.external_services.istio.istio_canary_revision.upgrade"&gt;.spec.external_services.istio.istio_canary_revision.upgrade&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(string)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;DEPRECATED AFTER v2.11: The installed Istio canary revision to upgrade to.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-3"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.external_services.istio.istio_identity_domain"&gt;.spec.external_services.istio.istio_identity_domain&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(string)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;The Kubernetes cluster DNS domain suffix used to construct fully qualified service hostnames (e.g. reviews.bookinfo.svc.cluster.local) and service account identity strings for validation. When empty, it is auto-detected from the Istio mesh trustDomain (as &amp;lsquo;svc.&amp;rsquo; + trustDomain). Set explicitly only if you need to override the auto-detected value.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-3"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.external_services.istio.istio_injection_annotation"&gt;.spec.external_services.istio.istio_injection_annotation&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(string)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;DEPRECATED AFTER v2.11: This setting is deprecated and will be ignored. The name of the field that annotates a workload to indicate a sidecar should be automatically injected by Istio is now hardcoded to the standard value.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-3"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.external_services.istio.istio_sidecar_annotation"&gt;.spec.external_services.istio.istio_sidecar_annotation&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(string)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;DEPRECATED AFTER v2.11: This setting is deprecated and will be ignored. The pod annotation used by Istio to identify the sidecar is now hardcoded to the standard value.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-3"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.external_services.istio.istio_sidecar_injector_config_map_name"&gt;.spec.external_services.istio.istio_sidecar_injector_config_map_name&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(string)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;DEPRECATED AFTER v2.11: This setting is deprecated and will be ignored. The name of the istio-sidecar-injector config map is now autodetected based on revision.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-3"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.external_services.istio.istiod_deployment_name"&gt;.spec.external_services.istio.istiod_deployment_name&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(string)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;DEPRECATED AFTER v2.11: This setting is deprecated and will be ignored. The name of the istiod deployment is now autodetected.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-3"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.external_services.istio.istiod_pod_monitoring_port"&gt;.spec.external_services.istio.istiod_pod_monitoring_port&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(integer)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;DEPRECATED AFTER v2.11: This setting is deprecated and will be ignored. The monitoring port of the IstioD pod is now autodetected from the deployment args.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-3"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.external_services.istio.istiod_polling_interval_seconds"&gt;.spec.external_services.istio.istiod_polling_interval_seconds&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(integer)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;How often in seconds Kiali will poll istiod(s) for proxy status. Polling is not performed if istio_api_enabled is false.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-3"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.external_services.istio.root_namespace"&gt;.spec.external_services.istio.root_namespace&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(string)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;DEPRECATED AFTER v2.11: This setting is deprecated and will be ignored. The namespace to treat as the administrative root namespace for Istio configuration.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-3"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.external_services.istio.url_service_version"&gt;.spec.external_services.istio.url_service_version&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(string)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;DEPRECATED AFTER v2.11: This setting is deprecated and will be ignored. The Istio service used to determine the Istio version is now autodetected from services.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-3"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.external_services.istio.validation_change_detection_enabled"&gt;.spec.external_services.istio.validation_change_detection_enabled&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(boolean)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;When true, Kiali will detect changes in Istio configuration and trigger validation reconciliation.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-3"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.external_services.istio.validation_reconcile_interval"&gt;.spec.external_services.istio.validation_reconcile_interval&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(string)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;Configures how often Kiali will validate Istio configuration. Validations cannot be disabled at the moment but you can set this to a long period of time. Accepts a golang duration string e.g. &amp;lsquo;1h&amp;rsquo; or &amp;lsquo;30m&amp;rsquo;.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-2"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.external_services.perses"&gt;.spec.external_services.perses&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(object)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;Configuration used to access the Perses dashboards.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-3"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.external_services.perses.auth"&gt;.spec.external_services.perses.auth&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(object)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;Settings used to authenticate with the Perses instance.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-4"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.external_services.perses.auth.ca_file"&gt;.spec.external_services.perses.auth.ca_file&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(string)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;DEPRECATED since v2.20: This setting is deprecated and will be ignored. To configure custom CA certificates, use the kiali-cabundle ConfigMap instead. See the TLS Configuration documentation for details.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-4"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.external_services.perses.auth.cert_file"&gt;.spec.external_services.perses.auth.cert_file&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(string)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;The client certificate file to use when accessing Perses using https with mTLS. An empty string means no client certificate is used. May refer to a secret using the pattern &lt;code&gt;secret:&amp;lt;secretName&amp;gt;:&amp;lt;secretKey&amp;gt;&lt;/code&gt;. When using a secret, the certificate is cached and automatically refreshed when the secret changes, enabling rotation without pod restart.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-4"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.external_services.perses.auth.insecure_skip_verify"&gt;.spec.external_services.perses.auth.insecure_skip_verify&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(boolean)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;Set true to skip verifying certificate validity when Kiali contacts Perses over https.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-4"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.external_services.perses.auth.key_file"&gt;.spec.external_services.perses.auth.key_file&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(string)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;The client private key file to use when accessing Perses using https with mTLS. An empty string means no client private key is used. May refer to a secret using the pattern &lt;code&gt;secret:&amp;lt;secretName&amp;gt;:&amp;lt;secretKey&amp;gt;&lt;/code&gt;. When using a secret, the key is cached and automatically refreshed when the secret changes, enabling rotation without pod restart.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-4"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.external_services.perses.auth.oauth2"&gt;.spec.external_services.perses.auth.oauth2&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(object)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;Settings for OAuth2 client_credentials authentication. When auth.type is &lt;code&gt;oauth2&lt;/code&gt;, these settings are used to obtain an access token.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-5"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.external_services.perses.auth.oauth2.audience"&gt;.spec.external_services.perses.auth.oauth2.audience&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(string)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;The audience parameter sent with the token request. Some providers require this to scope the token.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-5"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.external_services.perses.auth.oauth2.auth_style"&gt;.spec.external_services.perses.auth.oauth2.auth_style&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(string)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;How to send client credentials to the token endpoint. Use &lt;code&gt;params&lt;/code&gt; to send in the request body or &lt;code&gt;header&lt;/code&gt; to send as HTTP Basic Auth (default).&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-5"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.external_services.perses.auth.oauth2.client_id"&gt;.spec.external_services.perses.auth.oauth2.client_id&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(string)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;The OAuth2 client ID (a public identifier per RFC 6749 §2.2).&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-5"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.external_services.perses.auth.oauth2.client_secret"&gt;.spec.external_services.perses.auth.oauth2.client_secret&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(string)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;The OAuth2 client secret. May refer to a secret using the pattern &lt;code&gt;secret:&amp;lt;secretName&amp;gt;:&amp;lt;secretKey&amp;gt;&lt;/code&gt;. When using a secret, the value is cached and automatically refreshed when the secret changes, enabling rotation without pod restart.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-5"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.external_services.perses.auth.oauth2.scopes"&gt;.spec.external_services.perses.auth.oauth2.scopes&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(array)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;A list of scopes to request with the token.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-6"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.external_services.perses.auth.oauth2.scopes[*]"&gt;.spec.external_services.perses.auth.oauth2.scopes[*]&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(string)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-5"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.external_services.perses.auth.oauth2.token_url"&gt;.spec.external_services.perses.auth.oauth2.token_url&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(string)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;The URL of the OAuth2 token endpoint.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-4"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.external_services.perses.auth.password"&gt;.spec.external_services.perses.auth.password&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(string)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;Password to be used when making requests to Perses, for basic authentication. May refer to a secret using the pattern &lt;code&gt;secret:&amp;lt;secretName&amp;gt;:&amp;lt;secretKey&amp;gt;&lt;/code&gt;. When using a secret, the password is cached and automatically refreshed when the secret changes, enabling rotation without pod restart.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-4"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.external_services.perses.auth.type"&gt;.spec.external_services.perses.auth.type&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(string)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;The type of authentication to use when contacting the server. Use &lt;code&gt;bearer&lt;/code&gt; to send the token to the Perses server. Use &lt;code&gt;basic&lt;/code&gt; to connect with username and password credentials. Use &lt;code&gt;oauth2&lt;/code&gt; to use OAuth2 client_credentials flow. Use &lt;code&gt;none&lt;/code&gt; to not use any authentication.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-4"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.external_services.perses.auth.use_kiali_token"&gt;.spec.external_services.perses.auth.use_kiali_token&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(boolean)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;When true and if &lt;code&gt;auth.type&lt;/code&gt; is &lt;code&gt;bearer&lt;/code&gt;, Kiali Service Account token will be used for the API calls to Perses.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-4"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.external_services.perses.auth.username"&gt;.spec.external_services.perses.auth.username&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(string)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;Username to be used when making requests to Perses with &lt;code&gt;basic&lt;/code&gt; authentication. May refer to a secret using the pattern &lt;code&gt;secret:&amp;lt;secretName&amp;gt;:&amp;lt;secretKey&amp;gt;&lt;/code&gt;. When using a secret, the username is cached and automatically refreshed when the secret changes, enabling rotation without pod restart.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-3"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.external_services.perses.dashboards"&gt;.spec.external_services.perses.dashboards&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(array)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;A list of Perses dashboards that Kiali can link to.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-4"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.external_services.perses.dashboards[*]"&gt;.spec.external_services.perses.dashboards[*]&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(object)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-5"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.external_services.perses.dashboards[*].name"&gt;.spec.external_services.perses.dashboards[*].name&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(string)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;The name of the Perses dashboard.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-5"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.external_services.perses.dashboards[*].variables"&gt;.spec.external_services.perses.dashboards[*].variables&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(object)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-6"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.external_services.perses.dashboards[*].variables.app"&gt;.spec.external_services.perses.dashboards[*].variables.app&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(string)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;The name of a variable that holds the app name, if used in that dashboard (else it must be omitted).&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-6"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.external_services.perses.dashboards[*].variables.datasource"&gt;.spec.external_services.perses.dashboards[*].variables.datasource&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(string)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;The name of the variable that holds the Datasource UID, required if Perses has multiple datasources configured (else it must be omitted).&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-6"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.external_services.perses.dashboards[*].variables.namespace"&gt;.spec.external_services.perses.dashboards[*].variables.namespace&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(string)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;The name of a variable that holds the namespace, if used in that dashboard (else it must be omitted).&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-6"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.external_services.perses.dashboards[*].variables.service"&gt;.spec.external_services.perses.dashboards[*].variables.service&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(string)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;The name of a variable that holds the service name, if used in that dashboard (else it must be omitted).&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-6"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.external_services.perses.dashboards[*].variables.version"&gt;.spec.external_services.perses.dashboards[*].variables.version&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(string)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;The name of a variable that holds the version, if used in that dashboard (else it must be omitted).&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-6"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.external_services.perses.dashboards[*].variables.workload"&gt;.spec.external_services.perses.dashboards[*].variables.workload&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(string)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;The name of a variable that holds the workload name, if used in that dashboard (else it must be omitted).&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-3"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.external_services.perses.enabled"&gt;.spec.external_services.perses.enabled&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(boolean)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;When true, Perses support will be enabled in Kiali.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-3"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.external_services.perses.external_url"&gt;.spec.external_services.perses.external_url&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(string)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;The URL that the Kiali UI uses when displaying Perses links to the user. This URL must be accessible to clients external to the cluster (e.g. a browser) in order for the integration to work properly. If empty, an attempt to auto-discover it is made. This URL can contain query parameters if needed, such as &amp;lsquo;?orgId=1&amp;rsquo;.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-3"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.external_services.perses.health_check_url"&gt;.spec.external_services.perses.health_check_url&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(string)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;Used in the Components health feature. This is the URL which Kiali will ping to determine whether the component is reachable or not. It defaults to &lt;code&gt;internal_url&lt;/code&gt; when not provided.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-3"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.external_services.perses.internal_url"&gt;.spec.external_services.perses.internal_url&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(string)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;The URL used by Kiali to perform requests and queries to Perses. An example would be &lt;code&gt;http://perses.istio-system:4000&lt;/code&gt;. This URL can contain query parameters if needed, such as &amp;lsquo;?orgId=1&amp;rsquo;. If not defined, it will default to &lt;code&gt;http://perses.&amp;lt;istio_namespace&amp;gt;:4000&lt;/code&gt;.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-3"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.external_services.perses.is_core"&gt;.spec.external_services.perses.is_core&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(boolean)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;Used in the Components health feature. When true, the unhealthy scenarios will be raised as errors. Otherwise, they will be raised as a warning.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-3"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.external_services.perses.project"&gt;.spec.external_services.perses.project&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(string)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;The name of the project where the Dashboards are defined.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-3"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.external_services.perses.url_format"&gt;.spec.external_services.perses.url_format&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(string)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;The URL format. Leave empty (the default) for standard Perses upstream. Use &lt;code&gt;openshift&lt;/code&gt; when using Perses Dashboards via the Cluster Observability operator in OpenShift.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-2"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.external_services.prometheus"&gt;.spec.external_services.prometheus&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(object)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;The Prometheus configuration defined here refers to the Prometheus instance that is used by Istio to store its telemetry.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-3"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.external_services.prometheus.auth"&gt;.spec.external_services.prometheus.auth&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(object)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;Settings used to authenticate with the Prometheus instance.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-4"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.external_services.prometheus.auth.ca_file"&gt;.spec.external_services.prometheus.auth.ca_file&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(string)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;DEPRECATED since v2.20: This setting is deprecated and will be ignored. To configure custom CA certificates, use the kiali-cabundle ConfigMap instead. See the TLS Configuration documentation for details.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-4"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.external_services.prometheus.auth.cert_file"&gt;.spec.external_services.prometheus.auth.cert_file&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(string)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;The client certificate file to use when accessing Prometheus using https with mTLS. An empty string means no client certificate is used. May refer to a secret.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-4"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.external_services.prometheus.auth.insecure_skip_verify"&gt;.spec.external_services.prometheus.auth.insecure_skip_verify&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(boolean)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;Set true to skip verifying certificate validity when Kiali contacts Prometheus over https.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-4"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.external_services.prometheus.auth.key_file"&gt;.spec.external_services.prometheus.auth.key_file&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(string)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;The client private key file to use when accessing Prometheus using https with mTLS. An empty string means no client private key is used. May refer to a secret using the pattern &lt;code&gt;secret:&amp;lt;secretName&amp;gt;:&amp;lt;secretKey&amp;gt;&lt;/code&gt;. When using a secret, the key is cached and automatically refreshed when the secret changes, enabling rotation without pod restart.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-4"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.external_services.prometheus.auth.oauth2"&gt;.spec.external_services.prometheus.auth.oauth2&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(object)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;Settings for OAuth2 client_credentials authentication. When auth.type is &lt;code&gt;oauth2&lt;/code&gt;, these settings are used to obtain an access token.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-5"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.external_services.prometheus.auth.oauth2.audience"&gt;.spec.external_services.prometheus.auth.oauth2.audience&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(string)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;The audience parameter sent with the token request. Some providers require this to scope the token.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-5"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.external_services.prometheus.auth.oauth2.auth_style"&gt;.spec.external_services.prometheus.auth.oauth2.auth_style&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(string)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;How to send client credentials to the token endpoint. Use &lt;code&gt;params&lt;/code&gt; to send in the request body or &lt;code&gt;header&lt;/code&gt; to send as HTTP Basic Auth (default).&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-5"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.external_services.prometheus.auth.oauth2.client_id"&gt;.spec.external_services.prometheus.auth.oauth2.client_id&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(string)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;The OAuth2 client ID (a public identifier per RFC 6749 §2.2).&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-5"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.external_services.prometheus.auth.oauth2.client_secret"&gt;.spec.external_services.prometheus.auth.oauth2.client_secret&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(string)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;The OAuth2 client secret. May refer to a secret using the pattern &lt;code&gt;secret:&amp;lt;secretName&amp;gt;:&amp;lt;secretKey&amp;gt;&lt;/code&gt;. When using a secret, the value is cached and automatically refreshed when the secret changes, enabling rotation without pod restart.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-5"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.external_services.prometheus.auth.oauth2.scopes"&gt;.spec.external_services.prometheus.auth.oauth2.scopes&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(array)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;A list of scopes to request with the token.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-6"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.external_services.prometheus.auth.oauth2.scopes[*]"&gt;.spec.external_services.prometheus.auth.oauth2.scopes[*]&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(string)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-5"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.external_services.prometheus.auth.oauth2.token_url"&gt;.spec.external_services.prometheus.auth.oauth2.token_url&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(string)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;The URL of the OAuth2 token endpoint.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-4"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.external_services.prometheus.auth.password"&gt;.spec.external_services.prometheus.auth.password&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(string)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;Password to be used when making requests to Prometheus, for basic authentication. May refer to a secret using the pattern &lt;code&gt;secret:&amp;lt;secretName&amp;gt;:&amp;lt;secretKey&amp;gt;&lt;/code&gt;. When using a secret, the password is cached and automatically refreshed when the secret changes, enabling rotation without pod restart.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-4"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.external_services.prometheus.auth.token"&gt;.spec.external_services.prometheus.auth.token&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(string)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;Token / API key to access Prometheus, for token-based authentication. May refer to a secret using the pattern &lt;code&gt;secret:&amp;lt;secretName&amp;gt;:&amp;lt;secretKey&amp;gt;&lt;/code&gt;. When using a secret, the token is cached and automatically refreshed when the secret changes, enabling rotation without pod restart.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-4"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.external_services.prometheus.auth.type"&gt;.spec.external_services.prometheus.auth.type&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(string)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;The type of authentication to use when contacting the server. Use &lt;code&gt;bearer&lt;/code&gt; to send the token to the Prometheus server. Use &lt;code&gt;basic&lt;/code&gt; to connect with username and password credentials. Use &lt;code&gt;oauth2&lt;/code&gt; to use OAuth2 client_credentials flow. Use &lt;code&gt;none&lt;/code&gt; to not use any authentication (this is the default).&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-4"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.external_services.prometheus.auth.use_kiali_token"&gt;.spec.external_services.prometheus.auth.use_kiali_token&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(boolean)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;When true and if &lt;code&gt;auth.type&lt;/code&gt; is &lt;code&gt;bearer&lt;/code&gt;, Kiali Service Account token will be used for the API calls to Prometheus (in this case, &lt;code&gt;auth.token&lt;/code&gt; config is ignored).&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-4"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.external_services.prometheus.auth.username"&gt;.spec.external_services.prometheus.auth.username&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(string)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;Username to be used when making requests to Prometheus with &lt;code&gt;basic&lt;/code&gt; authentication. May refer to a secret using the pattern &lt;code&gt;secret:&amp;lt;secretName&amp;gt;:&amp;lt;secretKey&amp;gt;&lt;/code&gt;. When using a secret, the username is cached and automatically refreshed when the secret changes, enabling rotation without pod restart.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-3"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.external_services.prometheus.cache_duration"&gt;.spec.external_services.prometheus.cache_duration&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(integer)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;Prometheus caching duration expressed in seconds.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-3"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.external_services.prometheus.cache_enabled"&gt;.spec.external_services.prometheus.cache_enabled&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(boolean)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;Enable/disable Prometheus caching used for Health services.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-3"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.external_services.prometheus.cache_expiration"&gt;.spec.external_services.prometheus.cache_expiration&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(integer)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;Prometheus caching expiration expressed in seconds.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-3"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.external_services.prometheus.custom_headers"&gt;.spec.external_services.prometheus.custom_headers&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(object)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;A set of name/value settings that will be passed as headers when requests are sent to Prometheus.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-3"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.external_services.prometheus.enabled"&gt;.spec.external_services.prometheus.enabled&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(boolean)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;When true, Kiali will connect to the Prometheus instance for Istio telemetry metrics. When false, Kiali will run without metrics support - the graph, health based on request rates, and metrics displays will be unavailable.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-3"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.external_services.prometheus.health_check_url"&gt;.spec.external_services.prometheus.health_check_url&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(string)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;Used in the Components health feature. This is the url which Kiali will ping to determine whether the component is reachable or not. It defaults to &lt;code&gt;url&lt;/code&gt; when not provided.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-3"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.external_services.prometheus.is_core"&gt;.spec.external_services.prometheus.is_core&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(boolean)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;Used in the Components health feature. When true, the unhealthy scenarios will be raised as errors. Otherwise, they will be raised as a warning.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-3"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.external_services.prometheus.query_scope"&gt;.spec.external_services.prometheus.query_scope&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(object)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;A set of labelName/labelValue settings applied to every Prometheus query. Used to narrow unified metrics to only those scoped to the Kiali instance.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-3"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.external_services.prometheus.thanos_proxy"&gt;.spec.external_services.prometheus.thanos_proxy&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(object)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;Define this section if Prometheus is to be queried through a Thanos proxy. Kiali will still use the &lt;code&gt;url&lt;/code&gt; setting to query for Prometheus metrics so make sure that is set appropriately.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-4"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.external_services.prometheus.thanos_proxy.enabled"&gt;.spec.external_services.prometheus.thanos_proxy.enabled&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(boolean)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;Set to true when a Thanos proxy is in front of Prometheus.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-4"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.external_services.prometheus.thanos_proxy.retention_period"&gt;.spec.external_services.prometheus.thanos_proxy.retention_period&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(string)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;Thanos Retention period value expressed as a string.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-4"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.external_services.prometheus.thanos_proxy.scrape_interval"&gt;.spec.external_services.prometheus.thanos_proxy.scrape_interval&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(string)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;Thanos Scrape interval value expressed as a string.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-3"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.external_services.prometheus.url"&gt;.spec.external_services.prometheus.url&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(string)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;The URL used to query the Prometheus Server. This URL must be accessible from the Kiali pod. If empty, the default will assume Prometheus is in the Istio control plane namespace; e.g. &lt;code&gt;http://prometheus.istio-system:9090&lt;/code&gt;.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-2"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.external_services.tracing"&gt;.spec.external_services.tracing&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(object)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;Configuration used to access the Tracing (Jaeger or Tempo) dashboards.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-3"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.external_services.tracing.auth"&gt;.spec.external_services.tracing.auth&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(object)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;Settings used to authenticate with the Tracing server instance.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-4"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.external_services.tracing.auth.ca_file"&gt;.spec.external_services.tracing.auth.ca_file&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(string)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;DEPRECATED since v2.20: This setting is deprecated and will be ignored. To configure custom CA certificates, use the kiali-cabundle ConfigMap instead. See the TLS Configuration documentation for details.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-4"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.external_services.tracing.auth.cert_file"&gt;.spec.external_services.tracing.auth.cert_file&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(string)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;The client certificate file to use when accessing the Tracing server using https with mTLS. An empty string means no client certificate is used. May refer to a secret using the pattern &lt;code&gt;secret:&amp;lt;secretName&amp;gt;:&amp;lt;secretKey&amp;gt;&lt;/code&gt;. When using a secret, the certificate is cached and automatically refreshed when the secret changes, enabling rotation without pod restart.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-4"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.external_services.tracing.auth.insecure_skip_verify"&gt;.spec.external_services.tracing.auth.insecure_skip_verify&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(boolean)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;Set true to skip verifying certificate validity when Kiali contacts the Tracing server over https.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-4"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.external_services.tracing.auth.key_file"&gt;.spec.external_services.tracing.auth.key_file&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(string)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;The client private key file to use when accessing the Tracing server using https with mTLS. An empty string means no client private key is used. May refer to a secret using the pattern &lt;code&gt;secret:&amp;lt;secretName&amp;gt;:&amp;lt;secretKey&amp;gt;&lt;/code&gt;. When using a secret, the key is cached and automatically refreshed when the secret changes, enabling rotation without pod restart.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-4"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.external_services.tracing.auth.oauth2"&gt;.spec.external_services.tracing.auth.oauth2&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(object)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;Settings for OAuth2 client_credentials authentication. When auth.type is &lt;code&gt;oauth2&lt;/code&gt;, these settings are used to obtain an access token.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-5"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.external_services.tracing.auth.oauth2.audience"&gt;.spec.external_services.tracing.auth.oauth2.audience&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(string)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;The audience parameter sent with the token request. Some providers require this to scope the token.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-5"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.external_services.tracing.auth.oauth2.auth_style"&gt;.spec.external_services.tracing.auth.oauth2.auth_style&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(string)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;How to send client credentials to the token endpoint. Use &lt;code&gt;params&lt;/code&gt; to send in the request body or &lt;code&gt;header&lt;/code&gt; to send as HTTP Basic Auth (default).&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-5"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.external_services.tracing.auth.oauth2.client_id"&gt;.spec.external_services.tracing.auth.oauth2.client_id&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(string)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;The OAuth2 client ID (a public identifier per RFC 6749 §2.2).&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-5"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.external_services.tracing.auth.oauth2.client_secret"&gt;.spec.external_services.tracing.auth.oauth2.client_secret&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(string)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;The OAuth2 client secret. May refer to a secret using the pattern &lt;code&gt;secret:&amp;lt;secretName&amp;gt;:&amp;lt;secretKey&amp;gt;&lt;/code&gt;. When using a secret, the value is cached and automatically refreshed when the secret changes, enabling rotation without pod restart.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-5"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.external_services.tracing.auth.oauth2.scopes"&gt;.spec.external_services.tracing.auth.oauth2.scopes&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(array)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;A list of scopes to request with the token.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-6"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.external_services.tracing.auth.oauth2.scopes[*]"&gt;.spec.external_services.tracing.auth.oauth2.scopes[*]&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(string)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-5"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.external_services.tracing.auth.oauth2.token_url"&gt;.spec.external_services.tracing.auth.oauth2.token_url&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(string)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;The URL of the OAuth2 token endpoint.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-4"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.external_services.tracing.auth.password"&gt;.spec.external_services.tracing.auth.password&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(string)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;Password to be used when making requests to the Tracing server, for basic authentication. May refer to a secret using the pattern &lt;code&gt;secret:&amp;lt;secretName&amp;gt;:&amp;lt;secretKey&amp;gt;&lt;/code&gt;. When using a secret, the password is cached and automatically refreshed when the secret changes, enabling rotation without pod restart.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-4"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.external_services.tracing.auth.token"&gt;.spec.external_services.tracing.auth.token&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(string)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;Token / API key to access the Tracing server, for token-based authentication. May refer to a secret using the pattern &lt;code&gt;secret:&amp;lt;secretName&amp;gt;:&amp;lt;secretKey&amp;gt;&lt;/code&gt;. When using a secret, the token is cached and automatically refreshed when the secret changes, enabling rotation without pod restart.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-4"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.external_services.tracing.auth.type"&gt;.spec.external_services.tracing.auth.type&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(string)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;The type of authentication to use when contacting the server. Use &lt;code&gt;bearer&lt;/code&gt; to send the token to the Tracing server. Use &lt;code&gt;basic&lt;/code&gt; to connect with username and password credentials. Use &lt;code&gt;oauth2&lt;/code&gt; to use OAuth2 client_credentials flow (only supported when use_grpc is false). Use &lt;code&gt;none&lt;/code&gt; to not use any authentication (this is the default).&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-4"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.external_services.tracing.auth.use_kiali_token"&gt;.spec.external_services.tracing.auth.use_kiali_token&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(boolean)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;When true and if &lt;code&gt;auth.type&lt;/code&gt; is &lt;code&gt;bearer&lt;/code&gt;, Kiali Service Account token will be used for the API calls to the Tracing server (in this case, &lt;code&gt;auth.token&lt;/code&gt; config is ignored).&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-4"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.external_services.tracing.auth.username"&gt;.spec.external_services.tracing.auth.username&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(string)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;Username to be used when making requests to the Tracing server with &lt;code&gt;basic&lt;/code&gt; authentication. May refer to a secret using the pattern &lt;code&gt;secret:&amp;lt;secretName&amp;gt;:&amp;lt;secretKey&amp;gt;&lt;/code&gt;. When using a secret, the username is cached and automatically refreshed when the secret changes, enabling rotation without pod restart.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-3"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.external_services.tracing.custom_headers"&gt;.spec.external_services.tracing.custom_headers&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(object)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;A set of name/value settings that will be passed as headers when requests are sent to the Tracing backend.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-3"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.external_services.tracing.disable_version_check"&gt;.spec.external_services.tracing.disable_version_check&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(boolean)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;When true, the version of the Tracing backend will not be retrieved. This will mean Kiali will not be able to display the version of your Tracing component in the Kiali UI. This may be needed in order to avoid Kiali reporting errors in cases where the full version endpoint is not accessible or is unknown. A common use case is when using Jaeger with gRPC and the HTTP endpoint is not deployed in the standard port (80).&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-3"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.external_services.tracing.enabled"&gt;.spec.external_services.tracing.enabled&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(boolean)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;When true, connections to the Tracing server are enabled. &lt;code&gt;internal_url&lt;/code&gt; and/or &lt;code&gt;external_url&lt;/code&gt; need to be provided.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-3"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.external_services.tracing.external_url"&gt;.spec.external_services.tracing.external_url&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(string)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;The URL that the Kiali UI uses when displaying Tracing UI links to the user. This URL must be accessible to clients external to the cluster (e.g. a browser) in order to generate valid links. If the tracing service is deployed with a QUERY_BASE_PATH set, set this URL like https://&lt;hostname&gt;/&lt;QUERY_BASE_PATH&gt;; for example, &lt;a href="https://tracing-service:8080/jaeger"&gt;https://tracing-service:8080/jaeger&lt;/a&gt;&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-3"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.external_services.tracing.grpc_port"&gt;.spec.external_services.tracing.grpc_port&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(integer)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;Set port number when &lt;code&gt;use_grpc&lt;/code&gt; is true and &lt;code&gt;provider&lt;/code&gt; is &lt;code&gt;tempo&lt;/code&gt;.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-3"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.external_services.tracing.health_check_url"&gt;.spec.external_services.tracing.health_check_url&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(string)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;Used in the Components health feature. This is the url which Kiali will ping to determine whether the component is reachable or not. It defaults to &lt;code&gt;url&lt;/code&gt; when not provided.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-3"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.external_services.tracing.in_cluster_url"&gt;.spec.external_services.tracing.in_cluster_url&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(string)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;DEPRECATED AFTER v1.73: The URL used for in-cluster access to the tracing service.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-3"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.external_services.tracing.internal_url"&gt;.spec.external_services.tracing.internal_url&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(string)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;The URL used by Kiali to perform requests and queries to the tracing backend which enables further integration between Kiali and the tracing server. When not provided, Kiali will only show external links using the &lt;code&gt;external_url&lt;/code&gt; setting. Note: Jaeger v1.20+ has separated ports for GRPC(16685) and HTTP(16686) requests. Make sure you use the appropriate port according to the &lt;code&gt;use_grpc&lt;/code&gt; value. Example: &lt;a href="http://tracing.istio-system:16685"&gt;http://tracing.istio-system:16685&lt;/a&gt;&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-3"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.external_services.tracing.is_core"&gt;.spec.external_services.tracing.is_core&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(boolean)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;Used in the Components health feature. When true, the unhealthy scenarios will be raised as errors. Otherwise, they will be raised as a warning.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-3"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.external_services.tracing.namespace_selector"&gt;.spec.external_services.tracing.namespace_selector&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(boolean)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;Kiali use this boolean to find traces with a namespace selector : service.namespace.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-3"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.external_services.tracing.provider"&gt;.spec.external_services.tracing.provider&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(string)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;The trace provider to get the traces from. Value must be one of: &lt;code&gt;jaeger&lt;/code&gt; or &lt;code&gt;tempo&lt;/code&gt;.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-3"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.external_services.tracing.query_scope"&gt;.spec.external_services.tracing.query_scope&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(object)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;A set of tagKey/tagValue settings applied to every Jaeger query. Used to narrow unified traces to only those scoped to the Kiali instance.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-3"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.external_services.tracing.query_timeout"&gt;.spec.external_services.tracing.query_timeout&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(integer)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;The amount of time in seconds Kiali will wait for a response from &amp;lsquo;jaeger-query&amp;rsquo; service when fetching traces.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-3"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.external_services.tracing.tempo_config"&gt;.spec.external_services.tracing.tempo_config&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(object)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;Settings used to configure the access url to the Tempo Datasource in Grafana.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-4"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.external_services.tracing.tempo_config.cache_capacity"&gt;.spec.external_services.tracing.tempo_config.cache_capacity&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(integer)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;When &lt;code&gt;cache_enabled&lt;/code&gt; is true, the number of traces saved in the cache.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-4"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.external_services.tracing.tempo_config.cache_enabled"&gt;.spec.external_services.tracing.tempo_config.cache_enabled&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(boolean)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;A FIFO cache with the last &lt;code&gt;cache_capacity&lt;/code&gt; traces viewed.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-4"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.external_services.tracing.tempo_config.datasource_uid"&gt;.spec.external_services.tracing.tempo_config.datasource_uid&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(string)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;The unique identifier (uid) of the Tempo datasource in Grafana.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-4"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.external_services.tracing.tempo_config.name"&gt;.spec.external_services.tracing.tempo_config.name&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(string)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;The name of the Tempo instance for the &lt;code&gt;url_format&lt;/code&gt; of &lt;code&gt;openshift&lt;/code&gt; in the Plugin UI.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-4"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.external_services.tracing.tempo_config.namespace"&gt;.spec.external_services.tracing.tempo_config.namespace&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(string)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;The namespace of the Tempo instance for the &lt;code&gt;url_format&lt;/code&gt; of &lt;code&gt;openshift&lt;/code&gt; in the Plugin UI.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-4"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.external_services.tracing.tempo_config.org_id"&gt;.spec.external_services.tracing.tempo_config.org_id&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(string)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;The Id of the organization that the dashboard is in. Default to 1 (the first and default organization).&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-4"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.external_services.tracing.tempo_config.tenant"&gt;.spec.external_services.tracing.tempo_config.tenant&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(string)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;The name of the Tempo tenant for the &lt;code&gt;url_format&lt;/code&gt; of &lt;code&gt;openshift&lt;/code&gt; in the Plugin UI.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-4"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.external_services.tracing.tempo_config.url_format"&gt;.spec.external_services.tracing.tempo_config.url_format&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(string)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;The URL format for the external url. Can be &amp;lsquo;jaeger&amp;rsquo;, &amp;lsquo;grafana&amp;rsquo; or &amp;lsquo;openshift&amp;rsquo;. Default to &amp;lsquo;grafana&amp;rsquo;. Openshift will need the name, namespace and tenant in the &lt;code&gt;tempo_config&lt;/code&gt; settings.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-3"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.external_services.tracing.url"&gt;.spec.external_services.tracing.url&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(string)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;DEPRECATED AFTER v1.73: The URL used to access the tracing service from external sources.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-3"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.external_services.tracing.use_grpc"&gt;.spec.external_services.tracing.use_grpc&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(boolean)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;Set to true in order to enable GRPC connections between Kiali and Jaeger which will speed up the queries. In some setups you might not be able to use GRPC (e.g. if Jaeger is behind some reverse proxy that doesn&amp;rsquo;t support it).&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-3"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.external_services.tracing.use_waypoint_name"&gt;.spec.external_services.tracing.use_waypoint_name&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(boolean)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;Set to true in order to look for traces using the waypoint service name and not the actual service. Ex. To find traces for Istio versions earlier than 1.28.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-3"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.external_services.tracing.whitelist_istio_system"&gt;.spec.external_services.tracing.whitelist_istio_system&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(array)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;Kiali will get the traces of these services found in the Istio control plane namespace.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-4"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.external_services.tracing.whitelist_istio_system[*]"&gt;.spec.external_services.tracing.whitelist_istio_system[*]&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(string)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;A name of a service found in the Istio control plane namespace whose traces will be retrieved by Kiali.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-1"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.health_config"&gt;.spec.health_config&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(object)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;This section defines what it means for nodes to be healthy. For more details, see &lt;a href="https://kiali.io/docs/configuration/health/"&gt;https://kiali.io/docs/configuration/health/&lt;/a&gt;&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-2"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.health_config.compute"&gt;.spec.health_config.compute&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(object)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;Configuration for health pre-computation and caching.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-3"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.health_config.compute.duration"&gt;.spec.health_config.compute.duration&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(string)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;The time period over which health is calculated. Used as the rate interval for Prometheus queries.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-3"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.health_config.compute.refresh_interval"&gt;.spec.health_config.compute.refresh_interval&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(string)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;The interval between health cache refreshes.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-3"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.health_config.compute.timeout"&gt;.spec.health_config.compute.timeout&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(string)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;The maximum time allowed for a single health refresh cycle. If exceeded, the refresh is cancelled and the next cycle starts on schedule.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-2"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.health_config.rate"&gt;.spec.health_config.rate&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(array)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-3"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.health_config.rate[*]"&gt;.spec.health_config.rate[*]&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(object)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-4"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.health_config.rate[*].kind"&gt;.spec.health_config.rate[*].kind&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(string)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;The type of resource that this configuration applies to. This is a regular expression.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-4"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.health_config.rate[*].name"&gt;.spec.health_config.rate[*].name&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(string)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;The name of a resource that this configuration applies to. This is a regular expression.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-4"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.health_config.rate[*].namespace"&gt;.spec.health_config.rate[*].namespace&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(string)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;The name of the namespace that this configuration applies to. This is a regular expression.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-4"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.health_config.rate[*].tolerance"&gt;.spec.health_config.rate[*].tolerance&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(array)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;A list of tolerances for this configuration.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-5"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.health_config.rate[*].tolerance[*]"&gt;.spec.health_config.rate[*].tolerance[*]&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(object)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-6"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.health_config.rate[*].tolerance[*].code"&gt;.spec.health_config.rate[*].tolerance[*].code&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(string)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;The status code that applies for this tolerance. This is a regular expression.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-6"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.health_config.rate[*].tolerance[*].degraded"&gt;.spec.health_config.rate[*].tolerance[*].degraded&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(integer)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;Health will be considered degraded when the telemetry reaches this value (specified as an integer representing a percentage).&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-6"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.health_config.rate[*].tolerance[*].direction"&gt;.spec.health_config.rate[*].tolerance[*].direction&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(string)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;The direction that applies for this tolerance (e.g. inbound or outbound). This is a regular expression.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-6"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.health_config.rate[*].tolerance[*].failure"&gt;.spec.health_config.rate[*].tolerance[*].failure&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(integer)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;A failure status will be shown when the telemetry reaches this value (specified as an integer representing a percentage).&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-6"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.health_config.rate[*].tolerance[*].protocol"&gt;.spec.health_config.rate[*].tolerance[*].protocol&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(string)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;The protocol that applies for this tolerance (e.g. grpc or http). This is a regular expression.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-1"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.identity"&gt;.spec.identity&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(object)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;Settings that define the Kiali server identity.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-2"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.identity.cert_file"&gt;.spec.identity.cert_file&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(string)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;Certificate file used to identify the Kiali server. If set, you must go over https to access Kiali. The Kiali operator will set this if it deploys Kiali behind https. When left undefined, the operator will attempt to generate a cluster-specific cert file that provides https by default (today, this auto-generation of a cluster-specific cert is only supported on OpenShift). When set to an empty string, https will be disabled.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-2"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.identity.private_key_file"&gt;.spec.identity.private_key_file&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(string)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;Private key file used to identify the Kiali server. If set, you must go over https to access Kiali. When left undefined, the Kiali operator will attempt to generate a cluster-specific private key file that provides https by default (today, this auto-generation of a cluster-specific private key is only supported on OpenShift). When set to an empty string, https will be disabled.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-1"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.installation_tag"&gt;.spec.installation_tag&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(string)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;Tag used to identify a particular instance/installation of the Kiali server. This is merely a human-readable string that will be used within Kiali to help a user identify the Kiali being used (e.g. in the Kiali UI title bar). See &lt;code&gt;deployment.instance_name&lt;/code&gt; for the setting used to customize Kiali resource names that are created.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-1"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.istio_labels"&gt;.spec.istio_labels&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(object)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;Defines specific labels used by Istio that Kiali needs to know about.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-2"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.istio_labels.app_label_name"&gt;.spec.istio_labels.app_label_name&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(string)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;If using a single scheme for app/version labeling, set this to the app label name being used. This is typically &lt;code&gt;app&lt;/code&gt; or &lt;code&gt;app.kubernetes.io/name&lt;/code&gt;. The default is unset, and Kiali will handle mixed schemes.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-2"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.istio_labels.egress_gateway_label"&gt;.spec.istio_labels.egress_gateway_label&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(string)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;DEPRECATED AFTER v2.27: This setting is deprecated and will be ignored.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-2"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.istio_labels.ingress_gateway_label"&gt;.spec.istio_labels.ingress_gateway_label&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(string)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;DEPRECATED AFTER v2.27: This setting is deprecated and will be ignored.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-2"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.istio_labels.injection_label_name"&gt;.spec.istio_labels.injection_label_name&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(string)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;DEPRECATED AFTER v2.27: This setting is deprecated and will be ignored. The injection label name is now hardcoded to the standard value.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-2"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.istio_labels.injection_label_rev"&gt;.spec.istio_labels.injection_label_rev&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(string)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;DEPRECATED AFTER v2.27: This setting is deprecated and will be ignored. The injection label revision is now hardcoded to the standard value.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-2"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.istio_labels.version_label_name"&gt;.spec.istio_labels.version_label_name&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(string)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;If using a single scheme for app/version labeling, set this to the version label name being used. This is typically &lt;code&gt;version&lt;/code&gt; or &lt;code&gt;app.kubernetes.io/version&lt;/code&gt;. The default is unset, and Kiali will handle mixed schemes.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-1"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.istio_namespace"&gt;.spec.istio_namespace&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(string)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;DEPRECATED AFTER v2.11: This setting is deprecated and will be ignored. The namespace where Istio is installed is now autodetected. If left empty, it was previously assumed to be the same namespace as where Kiali is installed (i.e. &lt;code&gt;deployment.namespace&lt;/code&gt;).&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-1"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.kiali_feature_flags"&gt;.spec.kiali_feature_flags&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(object)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;Kiali features that can be enabled or disabled.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-2"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.kiali_feature_flags.authz"&gt;.spec.kiali_feature_flags.authz&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(object)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;Authorization-related feature flags.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-3"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.kiali_feature_flags.authz.require_namespace_get"&gt;.spec.kiali_feature_flags.authz.require_namespace_get&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(boolean)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;When true, a user must have GET permission on a namespace for it to be visible,&#10;even if the user has LIST permission. When false (the default), a successful LIST&#10;is trusted without per-namespace GET checks. Enable this in multi-tenant environments&#10;where LIST permission is granted broadly but GET is restricted per namespace.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-2"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.kiali_feature_flags.certificates_information_indicators"&gt;.spec.kiali_feature_flags.certificates_information_indicators&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(object)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;DEPRECATED AFTER v1.73: Settings for certificate information indicators.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-3"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.kiali_feature_flags.certificates_information_indicators.enabled"&gt;.spec.kiali_feature_flags.certificates_information_indicators.enabled&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(boolean)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;DEPRECATED AFTER v1.73: When true, certificate information indicators will be displayed.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-3"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.kiali_feature_flags.certificates_information_indicators.secrets"&gt;.spec.kiali_feature_flags.certificates_information_indicators.secrets&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(array)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;DEPRECATED AFTER v1.73: List of secrets that contain certificate information.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-4"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.kiali_feature_flags.certificates_information_indicators.secrets[*]"&gt;.spec.kiali_feature_flags.certificates_information_indicators.secrets[*]&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(string)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-2"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.kiali_feature_flags.clustering"&gt;.spec.kiali_feature_flags.clustering&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(object)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;DEPRECATED AFTER v1.73: Multi-cluster related features.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-3"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.kiali_feature_flags.clustering.autodetect_secrets"&gt;.spec.kiali_feature_flags.clustering.autodetect_secrets&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(object)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;DEPRECATED AFTER v1.73: Settings to allow cluster secrets to be auto-detected.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-4"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.kiali_feature_flags.clustering.autodetect_secrets.enabled"&gt;.spec.kiali_feature_flags.clustering.autodetect_secrets.enabled&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(boolean)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;DEPRECATED AFTER v1.73: If true then remote cluster secrets will be autodetected.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-4"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.kiali_feature_flags.clustering.autodetect_secrets.label"&gt;.spec.kiali_feature_flags.clustering.autodetect_secrets.label&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(string)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;DEPRECATED AFTER v1.73: The name and value of a label that exists on all remote cluster secrets.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-3"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.kiali_feature_flags.clustering.clusters"&gt;.spec.kiali_feature_flags.clustering.clusters&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(array)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;DEPRECATED AFTER v1.73: A list of clusters that the Kiali Server can access.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-4"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.kiali_feature_flags.clustering.clusters[*]"&gt;.spec.kiali_feature_flags.clustering.clusters[*]&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(object)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-5"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.kiali_feature_flags.clustering.clusters[*].name"&gt;.spec.kiali_feature_flags.clustering.clusters[*].name&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(string)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;DEPRECATED AFTER v1.73: The name of the cluster.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-5"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.kiali_feature_flags.clustering.clusters[*].secret_name"&gt;.spec.kiali_feature_flags.clustering.clusters[*].secret_name&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(string)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;DEPRECATED AFTER v1.73: The name of the secret that contains the credentials necessary to connect to the remote cluster.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-3"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.kiali_feature_flags.clustering.enable_exec_provider"&gt;.spec.kiali_feature_flags.clustering.enable_exec_provider&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(boolean)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;DEPRECATED AFTER v1.73: Flag to enable exec provider for clustering authentication.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-3"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.kiali_feature_flags.clustering.kiali_urls"&gt;.spec.kiali_feature_flags.clustering.kiali_urls&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(array)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;DEPRECATED AFTER v1.73: A map between cluster name, instance name and namespace to a Kiali URL.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-4"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.kiali_feature_flags.clustering.kiali_urls[*]"&gt;.spec.kiali_feature_flags.clustering.kiali_urls[*]&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(object)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-5"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.kiali_feature_flags.clustering.kiali_urls[*].cluster_name"&gt;.spec.kiali_feature_flags.clustering.kiali_urls[*].cluster_name&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(string)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;DEPRECATED AFTER v1.73: The name of the cluster.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-5"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.kiali_feature_flags.clustering.kiali_urls[*].instance_name"&gt;.spec.kiali_feature_flags.clustering.kiali_urls[*].instance_name&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(string)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;DEPRECATED AFTER v1.73: The instance name of this Kiali installation.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-5"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.kiali_feature_flags.clustering.kiali_urls[*].namespace"&gt;.spec.kiali_feature_flags.clustering.kiali_urls[*].namespace&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(string)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;DEPRECATED AFTER v1.73: The namespace into which Kiali is installed.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-5"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.kiali_feature_flags.clustering.kiali_urls[*].url"&gt;.spec.kiali_feature_flags.clustering.kiali_urls[*].url&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(string)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;DEPRECATED AFTER v1.73: The URL of Kiali in the cluster.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-2"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.kiali_feature_flags.custom_workload_types"&gt;.spec.kiali_feature_flags.custom_workload_types&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(array)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;Enable observability tabs (Traffic, Logs, Metrics, Traces) for custom workload types beyond the built-in Kubernetes controllers.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-3"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.kiali_feature_flags.custom_workload_types[*]"&gt;.spec.kiali_feature_flags.custom_workload_types[*]&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(object)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-4"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.kiali_feature_flags.custom_workload_types[*].group"&gt;.spec.kiali_feature_flags.custom_workload_types[*].group&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(string)&lt;/span&gt;&#10;&lt;span class="property-required"&gt;*Required*&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;The API group of the custom workload type (e.g., &amp;lsquo;argoproj.io&amp;rsquo;).&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-4"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.kiali_feature_flags.custom_workload_types[*].kind"&gt;.spec.kiali_feature_flags.custom_workload_types[*].kind&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(string)&lt;/span&gt;&#10;&lt;span class="property-required"&gt;*Required*&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;The kind of the custom workload type (e.g., &amp;lsquo;Rollout&amp;rsquo;).&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-4"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.kiali_feature_flags.custom_workload_types[*].version"&gt;.spec.kiali_feature_flags.custom_workload_types[*].version&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(string)&lt;/span&gt;&#10;&lt;span class="property-required"&gt;*Required*&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;The API version of the custom workload type (e.g., &amp;lsquo;v1alpha1&amp;rsquo;).&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-2"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.kiali_feature_flags.disabled_features"&gt;.spec.kiali_feature_flags.disabled_features&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(array)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;There may be some features that admins do not want to be accessible to users (even in &amp;lsquo;view only&amp;rsquo; mode). In this case, this setting allows you to disable one or more of those features entirely.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-3"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.kiali_feature_flags.disabled_features[*]"&gt;.spec.kiali_feature_flags.disabled_features[*]&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(string)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-2"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.kiali_feature_flags.istio_annotation_action"&gt;.spec.kiali_feature_flags.istio_annotation_action&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(boolean)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;Flag to enable/disable an Action to edit annotations.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-2"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.kiali_feature_flags.istio_injection_action"&gt;.spec.kiali_feature_flags.istio_injection_action&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(boolean)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;Flag to enable/disable an Action to label a namespace for automatic Istio Sidecar injection.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-2"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.kiali_feature_flags.istio_upgrade_action"&gt;.spec.kiali_feature_flags.istio_upgrade_action&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(boolean)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;Flag to activate the Kiali functionality of upgrading namespaces to point to an installed Istio Canary revision.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-2"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.kiali_feature_flags.ui_defaults"&gt;.spec.kiali_feature_flags.ui_defaults&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(object)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;Default settings for the UI. These defaults apply to all users.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-3"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.kiali_feature_flags.ui_defaults.graph"&gt;.spec.kiali_feature_flags.ui_defaults.graph&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(object)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;Default settings for the Graph UI.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-4"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.kiali_feature_flags.ui_defaults.graph.find_options"&gt;.spec.kiali_feature_flags.ui_defaults.graph.find_options&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(array)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;A list of commonly used and useful find expressions that will be provided to the user out-of-box.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-5"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.kiali_feature_flags.ui_defaults.graph.find_options[*]"&gt;.spec.kiali_feature_flags.ui_defaults.graph.find_options[*]&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(object)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-6"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.kiali_feature_flags.ui_defaults.graph.find_options[*].auto_select"&gt;.spec.kiali_feature_flags.ui_defaults.graph.find_options[*].auto_select&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(boolean)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;If true this option will be selected and take effect automatically. Note that only one option in the list can have this value be set to true.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-6"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.kiali_feature_flags.ui_defaults.graph.find_options[*].description"&gt;.spec.kiali_feature_flags.ui_defaults.graph.find_options[*].description&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(string)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;Human-readable text to let the user know what the expression does.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-6"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.kiali_feature_flags.ui_defaults.graph.find_options[*].expression"&gt;.spec.kiali_feature_flags.ui_defaults.graph.find_options[*].expression&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(string)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;The find expression.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-4"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.kiali_feature_flags.ui_defaults.graph.hide_options"&gt;.spec.kiali_feature_flags.ui_defaults.graph.hide_options&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(array)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;A list of commonly used and useful hide expressions that will be provided to the user out-of-box.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-5"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.kiali_feature_flags.ui_defaults.graph.hide_options[*]"&gt;.spec.kiali_feature_flags.ui_defaults.graph.hide_options[*]&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(object)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-6"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.kiali_feature_flags.ui_defaults.graph.hide_options[*].auto_select"&gt;.spec.kiali_feature_flags.ui_defaults.graph.hide_options[*].auto_select&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(boolean)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;If true this option will be selected and take effect automatically. Note that only one option in the list can have this value be set to true.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-6"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.kiali_feature_flags.ui_defaults.graph.hide_options[*].description"&gt;.spec.kiali_feature_flags.ui_defaults.graph.hide_options[*].description&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(string)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;Human-readable text to let the user know what the expression does.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-6"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.kiali_feature_flags.ui_defaults.graph.hide_options[*].expression"&gt;.spec.kiali_feature_flags.ui_defaults.graph.hide_options[*].expression&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(string)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;The hide expression.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-4"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.kiali_feature_flags.ui_defaults.graph.settings"&gt;.spec.kiali_feature_flags.ui_defaults.graph.settings&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(object)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;Various presentation options.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-5"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.kiali_feature_flags.ui_defaults.graph.settings.animation"&gt;.spec.kiali_feature_flags.ui_defaults.graph.settings.animation&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(string)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;The traffic animation style. Value must be one of: &lt;code&gt;dash&lt;/code&gt; or &lt;code&gt;point&lt;/code&gt;.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-4"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.kiali_feature_flags.ui_defaults.graph.traffic"&gt;.spec.kiali_feature_flags.ui_defaults.graph.traffic&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(object)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;These settings determine which rates are used to determine graph traffic.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-5"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.kiali_feature_flags.ui_defaults.graph.traffic.ambient"&gt;.spec.kiali_feature_flags.ui_defaults.graph.traffic.ambient&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(string)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;Ambient traffic is reported by ztunnel and/or waypoints. Value must be one of: &lt;code&gt;none&lt;/code&gt;, &lt;code&gt;total&lt;/code&gt;, &lt;code&gt;waypoint&lt;/code&gt;, or &lt;code&gt;ztunnel&lt;/code&gt;.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-5"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.kiali_feature_flags.ui_defaults.graph.traffic.grpc"&gt;.spec.kiali_feature_flags.ui_defaults.graph.traffic.grpc&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(string)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;gRPC traffic is measured in requests or sent/received/total messages. Value must be one of: &lt;code&gt;none&lt;/code&gt;, &lt;code&gt;requests&lt;/code&gt;, &lt;code&gt;sent&lt;/code&gt;, &lt;code&gt;received&lt;/code&gt;, or &lt;code&gt;total&lt;/code&gt;.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-5"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.kiali_feature_flags.ui_defaults.graph.traffic.http"&gt;.spec.kiali_feature_flags.ui_defaults.graph.traffic.http&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(string)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;HTTP traffic is measured in requests. Value must be one of: &lt;code&gt;none&lt;/code&gt; or &lt;code&gt;requests&lt;/code&gt;.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-5"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.kiali_feature_flags.ui_defaults.graph.traffic.tcp"&gt;.spec.kiali_feature_flags.ui_defaults.graph.traffic.tcp&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(string)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;TCP traffic is measured in sent/received/total bytes. Only request traffic supplies response codes. Value must be one of: &lt;code&gt;none&lt;/code&gt;, &lt;code&gt;sent&lt;/code&gt;, &lt;code&gt;received&lt;/code&gt;, or &lt;code&gt;total&lt;/code&gt;.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-3"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.kiali_feature_flags.ui_defaults.i18n"&gt;.spec.kiali_feature_flags.ui_defaults.i18n&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(object)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;Default settings for the i18n values.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-4"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.kiali_feature_flags.ui_defaults.i18n.language"&gt;.spec.kiali_feature_flags.ui_defaults.i18n.language&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(string)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;Default language used in Kiali application.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-4"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.kiali_feature_flags.ui_defaults.i18n.show_selector"&gt;.spec.kiali_feature_flags.ui_defaults.i18n.show_selector&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(boolean)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;DEPRECATED AFTER v2.27: Language selection is available in Preferences by default. If false, the language selector is hidden until this setting is removed in a future release.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-3"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.kiali_feature_flags.ui_defaults.list"&gt;.spec.kiali_feature_flags.ui_defaults.list&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(object)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;Default settings for the List views (Apps, Workloads, etc).&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-4"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.kiali_feature_flags.ui_defaults.list.include_health"&gt;.spec.kiali_feature_flags.ui_defaults.list.include_health&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(boolean)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;Include Health column (by default) for applicable list views. Setting to false can improve performance.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-4"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.kiali_feature_flags.ui_defaults.list.include_istio_resources"&gt;.spec.kiali_feature_flags.ui_defaults.list.include_istio_resources&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(boolean)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;Include Istio resources (by default) in Details column for applicable list views. Setting to false can improve performance.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-4"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.kiali_feature_flags.ui_defaults.list.include_validations"&gt;.spec.kiali_feature_flags.ui_defaults.list.include_validations&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(boolean)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;Include Configuration validation column (by default) for applicable list views. Setting to false can improve performance.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-4"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.kiali_feature_flags.ui_defaults.list.show_include_toggles"&gt;.spec.kiali_feature_flags.ui_defaults.list.show_include_toggles&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(boolean)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;If true list pages display checkbox toggles for the include options, Otherwise the configured settings are applied but can not be changed by the user.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-3"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.kiali_feature_flags.ui_defaults.mesh"&gt;.spec.kiali_feature_flags.ui_defaults.mesh&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(object)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;Default settings for the Mesh UI.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-4"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.kiali_feature_flags.ui_defaults.mesh.find_options"&gt;.spec.kiali_feature_flags.ui_defaults.mesh.find_options&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(array)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;A list of commonly used and useful find expressions that will be provided to the user out-of-box.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-5"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.kiali_feature_flags.ui_defaults.mesh.find_options[*]"&gt;.spec.kiali_feature_flags.ui_defaults.mesh.find_options[*]&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(object)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-6"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.kiali_feature_flags.ui_defaults.mesh.find_options[*].auto_select"&gt;.spec.kiali_feature_flags.ui_defaults.mesh.find_options[*].auto_select&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(boolean)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;If true this option will be selected and take effect automatically. Note that only one option in the list can have this value be set to true.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-6"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.kiali_feature_flags.ui_defaults.mesh.find_options[*].description"&gt;.spec.kiali_feature_flags.ui_defaults.mesh.find_options[*].description&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(string)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;Human-readable text to let the user know what the expression does.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-6"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.kiali_feature_flags.ui_defaults.mesh.find_options[*].expression"&gt;.spec.kiali_feature_flags.ui_defaults.mesh.find_options[*].expression&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(string)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;The find expression.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-4"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.kiali_feature_flags.ui_defaults.mesh.hide_options"&gt;.spec.kiali_feature_flags.ui_defaults.mesh.hide_options&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(array)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;A list of commonly used and useful hide expressions that will be provided to the user out-of-box.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-5"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.kiali_feature_flags.ui_defaults.mesh.hide_options[*]"&gt;.spec.kiali_feature_flags.ui_defaults.mesh.hide_options[*]&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(object)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-6"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.kiali_feature_flags.ui_defaults.mesh.hide_options[*].auto_select"&gt;.spec.kiali_feature_flags.ui_defaults.mesh.hide_options[*].auto_select&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(boolean)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;If true this option will be selected and take effect automatically. Note that only one option in the list can have this value be set to true.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-6"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.kiali_feature_flags.ui_defaults.mesh.hide_options[*].description"&gt;.spec.kiali_feature_flags.ui_defaults.mesh.hide_options[*].description&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(string)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;Human-readable text to let the user know what the expression does.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-6"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.kiali_feature_flags.ui_defaults.mesh.hide_options[*].expression"&gt;.spec.kiali_feature_flags.ui_defaults.mesh.hide_options[*].expression&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(string)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;The hide expression.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-3"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.kiali_feature_flags.ui_defaults.metrics_inbound"&gt;.spec.kiali_feature_flags.ui_defaults.metrics_inbound&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(object)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;Additional label aggregation for inbound metric pages in detail pages.&#10;You will see these configurations in the &amp;lsquo;Metric Settings&amp;rsquo; drop-down.&#10;An example,&lt;/p&gt;&#10;&lt;pre&gt;&lt;code&gt;spec:&#10; kiali_feature_flags:&#10; ui_defaults:&#10; metrics_inbound:&#10; aggregations:&#10; - display_name: Istio Network&#10; label: topology_istio_io_network&#10; - display_name: Istio Revision&#10; label: istio_io_rev&#10;&lt;/code&gt;&lt;/pre&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-4"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.kiali_feature_flags.ui_defaults.metrics_inbound.aggregations"&gt;.spec.kiali_feature_flags.ui_defaults.metrics_inbound.aggregations&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(array)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-5"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.kiali_feature_flags.ui_defaults.metrics_inbound.aggregations[*]"&gt;.spec.kiali_feature_flags.ui_defaults.metrics_inbound.aggregations[*]&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(object)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-6"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.kiali_feature_flags.ui_defaults.metrics_inbound.aggregations[*].display_name"&gt;.spec.kiali_feature_flags.ui_defaults.metrics_inbound.aggregations[*].display_name&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(string)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-6"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.kiali_feature_flags.ui_defaults.metrics_inbound.aggregations[*].label"&gt;.spec.kiali_feature_flags.ui_defaults.metrics_inbound.aggregations[*].label&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(string)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-6"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.kiali_feature_flags.ui_defaults.metrics_inbound.aggregations[*].single_selection"&gt;.spec.kiali_feature_flags.ui_defaults.metrics_inbound.aggregations[*].single_selection&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(boolean)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;Flag to indicate if only one option can be selected for this aggregation.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-3"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.kiali_feature_flags.ui_defaults.metrics_outbound"&gt;.spec.kiali_feature_flags.ui_defaults.metrics_outbound&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(object)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;Additional label aggregation for outbound metric pages in detail pages.&#10;You will see these configurations in the &amp;lsquo;Metric Settings&amp;rsquo; drop-down.&#10;An example,&lt;/p&gt;&#10;&lt;pre&gt;&lt;code&gt;spec:&#10; kiali_feature_flags:&#10; ui_defaults:&#10; metrics_outbound:&#10; aggregations:&#10; - display_name: Istio Network&#10; label: topology_istio_io_network&#10; - display_name: Istio Revision&#10; label: istio_io_rev&#10;&lt;/code&gt;&lt;/pre&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-4"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.kiali_feature_flags.ui_defaults.metrics_outbound.aggregations"&gt;.spec.kiali_feature_flags.ui_defaults.metrics_outbound.aggregations&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(array)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-5"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.kiali_feature_flags.ui_defaults.metrics_outbound.aggregations[*]"&gt;.spec.kiali_feature_flags.ui_defaults.metrics_outbound.aggregations[*]&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(object)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-6"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.kiali_feature_flags.ui_defaults.metrics_outbound.aggregations[*].display_name"&gt;.spec.kiali_feature_flags.ui_defaults.metrics_outbound.aggregations[*].display_name&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(string)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-6"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.kiali_feature_flags.ui_defaults.metrics_outbound.aggregations[*].label"&gt;.spec.kiali_feature_flags.ui_defaults.metrics_outbound.aggregations[*].label&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(string)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-6"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.kiali_feature_flags.ui_defaults.metrics_outbound.aggregations[*].single_selection"&gt;.spec.kiali_feature_flags.ui_defaults.metrics_outbound.aggregations[*].single_selection&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(boolean)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;Flag to indicate if only one option can be selected for this aggregation.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-3"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.kiali_feature_flags.ui_defaults.metrics_per_refresh"&gt;.spec.kiali_feature_flags.ui_defaults.metrics_per_refresh&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(string)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;Duration of metrics to fetch on each refresh. Value must be one of: &lt;code&gt;1m&lt;/code&gt;, &lt;code&gt;2m&lt;/code&gt;, &lt;code&gt;5m&lt;/code&gt;, &lt;code&gt;10m&lt;/code&gt;, &lt;code&gt;30m&lt;/code&gt;, &lt;code&gt;1h&lt;/code&gt;, &lt;code&gt;3h&lt;/code&gt;, &lt;code&gt;6h&lt;/code&gt;, &lt;code&gt;12h&lt;/code&gt;, &lt;code&gt;1d&lt;/code&gt;, &lt;code&gt;7d&lt;/code&gt;, or &lt;code&gt;30d&lt;/code&gt;&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-3"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.kiali_feature_flags.ui_defaults.namespaces"&gt;.spec.kiali_feature_flags.ui_defaults.namespaces&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(array)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;Default selections for the namespace selection dropdown. Non-existent or inaccessible namespaces will be ignored. Omit or set to an empty array for no default namespaces.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-4"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.kiali_feature_flags.ui_defaults.namespaces[*]"&gt;.spec.kiali_feature_flags.ui_defaults.namespaces[*]&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(string)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-3"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.kiali_feature_flags.ui_defaults.refresh_interval"&gt;.spec.kiali_feature_flags.ui_defaults.refresh_interval&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(string)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;The automatic refresh interval for pages offering automatic refresh. &lt;code&gt;Manual&lt;/code&gt; requires user action even for initial page load. Value must be one of: &lt;code&gt;pause&lt;/code&gt;, &lt;code&gt;manual&lt;/code&gt;, &lt;code&gt;10s&lt;/code&gt;, &lt;code&gt;15s&lt;/code&gt;, &lt;code&gt;30s&lt;/code&gt;, &lt;code&gt;1m&lt;/code&gt;, &lt;code&gt;5m&lt;/code&gt; or &lt;code&gt;15m&lt;/code&gt;&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-3"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.kiali_feature_flags.ui_defaults.tracing"&gt;.spec.kiali_feature_flags.ui_defaults.tracing&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(object)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;Default settings for the Tracing UI.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-4"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.kiali_feature_flags.ui_defaults.tracing.limit"&gt;.spec.kiali_feature_flags.ui_defaults.tracing.limit&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(integer)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;The default limit for the number of traces that will be fetched. It can be customized in the UI. It must be a number between 10 and 1000.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-2"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.kiali_feature_flags.validations"&gt;.spec.kiali_feature_flags.validations&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(object)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;Features specific to the validations subsystem.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-3"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.kiali_feature_flags.validations.ignore"&gt;.spec.kiali_feature_flags.validations.ignore&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(array)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;A list of one or more validation codes whose errors are to be ignored.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-4"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.kiali_feature_flags.validations.ignore[*]"&gt;.spec.kiali_feature_flags.validations.ignore[*]&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(string)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;A validation code (e.g. &lt;code&gt;KIA0101&lt;/code&gt;) for a specific validation error that is to be ignored.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-3"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.kiali_feature_flags.validations.skip_wildcard_gateway_hosts"&gt;.spec.kiali_feature_flags.validations.skip_wildcard_gateway_hosts&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(boolean)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;The KIA0301 validation checks duplicity of host and port combinations across all Istio Gateways. This includes also Gateways with &amp;lsquo;*&amp;rsquo; in hosts. But Istio considers such a Gateway with a wildcard in hosts as the last in order, after the Gateways with FQDN in hosts. This option is to skip Gateways with wildcards in hosts from the KIA0301 validations but still keep Gateways with FQDN hosts.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-1"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.kiali_internal"&gt;.spec.kiali_internal&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(object)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;Unstructured section for internal testing and debugging features.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-1"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.kubernetes_config"&gt;.spec.kubernetes_config&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(object)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;Configuration of Kiali&amp;rsquo;s access of the Kubernetes API.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-2"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.kubernetes_config.burst"&gt;.spec.kubernetes_config.burst&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(integer)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;The Burst value of the Kubernetes client.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-2"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.kubernetes_config.cache_duration"&gt;.spec.kubernetes_config.cache_duration&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(integer)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;The ratio interval (expressed in seconds) used for the cache to perform a full refresh. Only used when &lt;code&gt;cache_enabled&lt;/code&gt; is true.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-2"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.kubernetes_config.cache_token_namespace_duration"&gt;.spec.kubernetes_config.cache_token_namespace_duration&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(integer)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;This Kiali cache is a list of namespaces per user. This is typically a short-lived cache compared with the duration of the namespace cache defined by the &lt;code&gt;cache_duration&lt;/code&gt; setting. This is specified in seconds.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-2"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.kubernetes_config.cluster_name"&gt;.spec.kubernetes_config.cluster_name&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(string)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;The name of the cluster Kiali is deployed in. This is also known as the home cluster. This is only used in multi cluster environments. This must be set when &lt;code&gt;clustering.ignore_home_cluster=true&lt;/code&gt;. If not set, Kiali will try to auto detect the cluster name from the Istiod deployment or use the default &amp;lsquo;Kubernetes&amp;rsquo;.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-2"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.kubernetes_config.excluded_workloads"&gt;.spec.kubernetes_config.excluded_workloads&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(array)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;List of controllers that won&amp;rsquo;t be used for Workload calculation. Kiali queries Deployment, ReplicaSet, ReplicationController, DeploymentConfig, StatefulSet, Job and CronJob controllers. Deployment and ReplicaSet will be always queried, but ReplicationController, DeploymentConfig, StatefulSet, Job and CronJobs can be skipped from Kiali workloads queries if they are present in this list.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-3"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.kubernetes_config.excluded_workloads[*]"&gt;.spec.kubernetes_config.excluded_workloads[*]&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(string)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-2"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.kubernetes_config.qps"&gt;.spec.kubernetes_config.qps&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(integer)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;The QPS value of the Kubernetes client.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-1"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.login_token"&gt;.spec.login_token&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(object)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-2"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.login_token.expiration_seconds"&gt;.spec.login_token.expiration_seconds&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(integer)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;A user&amp;rsquo;s login token expiration specified in seconds. This is applicable to token and header auth strategies only.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-2"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.login_token.signing_key"&gt;.spec.login_token.signing_key&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(string)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;The signing key used to generate tokens for user authentication. Because this is potentially sensitive, you have the option to store this value in a secret using the pattern &lt;code&gt;secret:&amp;lt;secretName&amp;gt;:&amp;lt;secretKey&amp;gt;&lt;/code&gt;. When using a secret, the signing key is read dynamically, enabling automatic rotation without pod restart. If left as an empty string, a secret with a random signing key will be generated for you. The signing key must be 16, 24 or 32 byte long.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-1"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.server"&gt;.spec.server&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(object)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;Configuration that controls some core components within the Kiali Server.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-2"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.server.address"&gt;.spec.server.address&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(string)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;Where the Kiali server is bound. The console and API server are accessible on this host.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-2"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.server.audit_log"&gt;.spec.server.audit_log&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(boolean)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;When true, allows additional audit logging on write operations.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-2"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.server.cors_allow_all"&gt;.spec.server.cors_allow_all&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(boolean)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;When true, allows the web console to send requests to other domains other than where the console came from. Typically used for development environments only.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-2"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.server.gzip_enabled"&gt;.spec.server.gzip_enabled&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(boolean)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;When true, Kiali serves http requests with gzip enabled (if the browser supports it) when the requests are over 1400 bytes.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-2"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.server.node_port"&gt;.spec.server.node_port&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(integer)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;If &lt;code&gt;deployment.service_type&lt;/code&gt; is &amp;lsquo;NodePort&amp;rsquo; and this value is set, then this is the node port that the Kiali service will listen to.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-2"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.server.observability"&gt;.spec.server.observability&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(object)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;Settings to enable observability into the Kiali server itself.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-3"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.server.observability.metrics"&gt;.spec.server.observability.metrics&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(object)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;Settings that control how Kiali itself emits its own metrics.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-4"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.server.observability.metrics.enabled"&gt;.spec.server.observability.metrics.enabled&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(boolean)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;The metrics HTTP listener is started when either this or health_status.enabled is true.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-4"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.server.observability.metrics.health_status"&gt;.spec.server.observability.metrics.health_status&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(object)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;Settings for the kiali_health_status Prometheus gauge (per-entity health from the health cache refresh). Independent of metrics.enabled.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-5"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.server.observability.metrics.health_status.enabled"&gt;.spec.server.observability.metrics.health_status.enabled&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(boolean)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;When true, Kiali exports kiali_health_status metrics during health cache refresh.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-5"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.server.observability.metrics.health_status.max_consecutive_na"&gt;.spec.server.observability.metrics.health_status.max_consecutive_na&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(integer)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;Number of consecutive health refresh cycles an entity may report NA or be missing before its kiali_health_status series is removed. Values less than or equal to 0 use the server default (3).&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-4"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.server.observability.metrics.port"&gt;.spec.server.observability.metrics.port&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(integer)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;The port that the server will bind to in order to receive metric requests. This is the port Prometheus will need to scrape when collecting metrics from Kiali.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-3"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.server.observability.tracing"&gt;.spec.server.observability.tracing&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(object)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;Settings that control how the Kiali server itself emits its own tracing data.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-4"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.server.observability.tracing.collector_type"&gt;.spec.server.observability.tracing.collector_type&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(string)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;The collector type to use. Today the only valid value is &lt;code&gt;otel&lt;/code&gt;.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-4"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.server.observability.tracing.collector_url"&gt;.spec.server.observability.tracing.collector_url&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(string)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;Used to determine where the Kiali server tracing data will be stored.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-4"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.server.observability.tracing.enabled"&gt;.spec.server.observability.tracing.enabled&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(boolean)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;When true, the Kiali server itself will product its own tracing data.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-4"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.server.observability.tracing.otel"&gt;.spec.server.observability.tracing.otel&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(object)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;Specific properties when the collector type is &lt;code&gt;otel&lt;/code&gt;.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-5"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.server.observability.tracing.otel.ca_name"&gt;.spec.server.observability.tracing.otel.ca_name&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(string)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;DEPRECATED since v2.20: This setting is deprecated and will be ignored. To configure custom CA certificates, use the kiali-cabundle ConfigMap instead. See the TLS Configuration documentation for details.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-5"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.server.observability.tracing.otel.protocol"&gt;.spec.server.observability.tracing.otel.protocol&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(string)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;Protocol. Value must be one of: &lt;code&gt;http&lt;/code&gt;, &lt;code&gt;https&lt;/code&gt; or &lt;code&gt;grpc&lt;/code&gt;.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-5"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.server.observability.tracing.otel.skip_verify"&gt;.spec.server.observability.tracing.otel.skip_verify&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(boolean)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;If true, TLS certificate verification will not be performed. This is an unsecure option and is recommended only for testing.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-5"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.server.observability.tracing.otel.tls_enabled"&gt;.spec.server.observability.tracing.otel.tls_enabled&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(boolean)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;Enable TLS for the collector. This must be specified when &lt;code&gt;protocol&lt;/code&gt; is &lt;code&gt;https&lt;/code&gt; or &lt;code&gt;grpc&lt;/code&gt;.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-4"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.server.observability.tracing.sampling_rate"&gt;.spec.server.observability.tracing.sampling_rate&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(number)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;Sampling rate for Kiali server traces. &amp;gt;= 1.0 always samples and &amp;lt;= 0 never samples.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-2"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.server.port"&gt;.spec.server.port&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(integer)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;The port that the server will bind to in order to receive console and API requests.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-2"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.server.profiler"&gt;.spec.server.profiler&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(object)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;Controls the internal profiler used to debug the internals of Kiali&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-3"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.server.profiler.enabled"&gt;.spec.server.profiler.enabled&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(boolean)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;When &amp;lsquo;true&amp;rsquo;, the profiler will be enabled and accessible at /debug/pprof/ on the Kiali endpoint.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-2"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.server.require_auth"&gt;.spec.server.require_auth&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(boolean)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;When true, the /api endpoint will require users to authenticate themselves. When false, users need not authenticate with Kiali in order to get basic runtime info about the server via the /api endpoint. This setting is ignored if auth.strategy is &amp;lsquo;anonymous&amp;rsquo;.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-2"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.server.web_fqdn"&gt;.spec.server.web_fqdn&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(string)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;Defines the public domain where Kiali is being served. This is the &amp;lsquo;domain&amp;rsquo; part of the URL (usually it&amp;rsquo;s a fully-qualified domain name). For example, &lt;code&gt;kiali.example.org&lt;/code&gt;. When empty, Kiali will try to guess this value from HTTP headers. On non-OpenShift clusters, you must populate this value if you want to enable cross-linking between Kiali instances in a multi-cluster setup.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-2"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.server.web_history_mode"&gt;.spec.server.web_history_mode&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(string)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;Define the history mode of kiali UI. Value must be one of: &lt;code&gt;browser&lt;/code&gt; or &lt;code&gt;hash&lt;/code&gt;.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-2"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.server.web_port"&gt;.spec.server.web_port&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(string)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;Defines the ingress port where the connections come from. This is usually necessary when the application responds through a proxy/ingress, and it does not forward the correct headers (when this happens, Kiali cannot guess the port). When empty, Kiali will try to guess this value from HTTP headers.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-2"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.server.web_root"&gt;.spec.server.web_root&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(string)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;Defines the context root path for the Kiali console and API endpoints and readiness probes. When providing a context root path that is not &lt;code&gt;/&lt;/code&gt;, do not add a trailing slash (i.e. use &lt;code&gt;/kiali&lt;/code&gt; not &lt;code&gt;/kiali/&lt;/code&gt;). When empty, this will default to &lt;code&gt;/&lt;/code&gt; on OpenShift and &lt;code&gt;/kiali&lt;/code&gt; on other Kubernetes environments.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-2"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.server.web_schema"&gt;.spec.server.web_schema&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(string)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;Defines the public HTTP schema used to serve Kiali. Value must be one of: &lt;code&gt;http&lt;/code&gt; or &lt;code&gt;https&lt;/code&gt;. When empty, Kiali will try to guess this value from HTTP headers. On non-OpenShift clusters, you must populate this value if you want to enable cross-linking between Kiali instances in a multi-cluster setup.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-2"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.server.write_timeout"&gt;.spec.server.write_timeout&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;The maximum duration before timing out writes of the HTTP response back to the client.&#10;Can be specified as a number (seconds) or duration string (e.g., &amp;ldquo;30s&amp;rdquo;, &amp;ldquo;1h&amp;rdquo;, &amp;ldquo;2m30s&amp;rdquo;).&lt;/p&gt;&#10;&lt;p&gt;In OpenShift clusters, the route request time out should be also increased.&#10;This can be done by annotating the specific route with &lt;code&gt;haproxy.router.openshift.io/timeout&lt;/code&gt;.&#10;See &lt;a href="https://docs.openshift.com/container-platform/4.16/networking/routes/route-configuration.html#nw-configuring-route-timeouts_route-configuration"&gt;https://docs.openshift.com/container-platform/4.16/networking/routes/route-configuration.html#nw-configuring-route-timeouts_route-configuration&lt;/a&gt; for further details.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-1"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.version"&gt;.spec.version&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(string)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;The version of the Ansible role that will be executed in order to install Kiali.&#10;This also indirectly determines the version of Kiali that will be installed.&#10;You normally will want to use &lt;code&gt;default&lt;/code&gt; since this is the only officially supported value today.&lt;/p&gt;&#10;&lt;p&gt;If not specified, the value of &lt;code&gt;default&lt;/code&gt; is assumed which means the most recent Ansible role is used;&#10;thus the most recent release of Kiali will be installed.&lt;/p&gt;&#10;&lt;p&gt;Refer to this file to see what the valid values are for this &lt;code&gt;version&lt;/code&gt; field (as defined in the master branch),&#10;&lt;a href="https://github.com/kiali/kiali-operator/blob/master/playbooks/kiali-default-supported-images.yml"&gt;https://github.com/kiali/kiali-operator/blob/master/playbooks/kiali-default-supported-images.yml&lt;/a&gt;&lt;/p&gt;&#10;&lt;p&gt;This &lt;code&gt;version&lt;/code&gt; setting affects the defaults of the &lt;code&gt;deployment.image_name&lt;/code&gt; and&#10;&lt;code&gt;deployment.image_version&lt;/code&gt; settings. See the documentation for those settings below for&#10;additional details. In short, this &lt;code&gt;version&lt;/code&gt; setting will dictate which version of the&#10;Kiali image will be deployed by default. However, if you explicitly set &lt;code&gt;deployment.image_name&lt;/code&gt;&#10;and/or &lt;code&gt;deployment.image_version&lt;/code&gt; to reference your own custom image, that will override the&#10;default Kiali image to be installed; therefore, you are responsible for ensuring those settings&#10;are compatible with the Ansible role that will be executed in order to install Kiali (i.e. your&#10;custom Kiali image must be compatible with the rest of the configuration and resources the&#10;operator will install).&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-0"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".status"&gt;.status&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(object)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;The processing status of this CR as reported by the Kiali operator.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;</description></item><item><title>Multi-cluster</title><link>https://staging--kiali.netlify.app/docs/features/multi-cluster/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://staging--kiali.netlify.app/docs/features/multi-cluster/</guid><description>&lt;p&gt;A basic Istio mesh deployment has a single control plane with a single data plane, deployed on a single Kubernetes cluster. But Istio supports a variety of advanced&#10;&lt;a href="https://istio.io/latest/docs/ops/deployment/deployment-models/"&gt;deployment models&lt;/a&gt;. It allows a mesh to span multiple primary (control plane) and/or remote (data plane only) clusters, and can use a single or&#10;&lt;a href="https://istio.io/latest/docs/ops/deployment/deployment-models/#multiple-networks"&gt;multi-network&lt;/a&gt; approach. The only strict rule is that within a mesh service names are unique. A non-basic mesh deployment generally involves multiple clusters. See &lt;a href="https://istio.io/docs/setup/install/multicluster/"&gt;installation instructions&lt;/a&gt; for more detail on installing advanced mesh deployments.&lt;/p&gt;</description></item><item><title>Multi-mesh</title><link>https://staging--kiali.netlify.app/docs/features/multi-mesh/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://staging--kiali.netlify.app/docs/features/multi-mesh/</guid><description>&lt;p&gt;Running multiple meshes within a single cluster is an important use case for multi-tenancy, isolation of environments (e.g. production vs. staging), or supporting different teams with independent control planes. Istio supports deploying multiple independent control planes on the same cluster using &lt;a href="https://istio.io/latest/docs/setup/upgrade/canary/"&gt;revisions&lt;/a&gt; and unique mesh IDs. Kiali can visualize and monitor these multi-mesh deployments.&lt;/p&gt;&#10;&lt;h2 id="long-lived-meshes-vs-revision-based-upgrades"&gt;Long-Lived Meshes vs. Revision-Based Upgrades&lt;/h2&gt;&#10;&lt;p&gt;It is important to distinguish between two scenarios where multiple control planes coexist on a single cluster:&lt;/p&gt;</description></item><item><title>Namespace access control</title><link>https://staging--kiali.netlify.app/docs/configuration/rbac/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://staging--kiali.netlify.app/docs/configuration/rbac/</guid><description>&lt;h2 id="introduction"&gt;Introduction&lt;/h2&gt;&#10;&lt;p&gt;In authentication strategies other than &lt;code&gt;anonymous&lt;/code&gt; Kiali supports limiting the&#10;namespaces that are accessible on a per-user basis. The &lt;code&gt;anonymous&lt;/code&gt;&#10;authentication strategy does not support this, although you can still limit&#10;privileges when using an OpenShift cluster. See the &lt;a href="https://staging--kiali.netlify.app/docs/configuration/authentication/anonymous/#access-control"&gt;access control section in&#10;Anonymous strategy&lt;/a&gt;.&lt;/p&gt;&#10;&lt;p&gt;To authorize namespaces, the standard &lt;code&gt;Roles&lt;/code&gt; resources (or &lt;code&gt;ClusterRoles&lt;/code&gt;)&#10;and &lt;code&gt;RoleBindings&lt;/code&gt; resources (or &lt;code&gt;ClusterRoleBindings&lt;/code&gt;) are used.&lt;/p&gt;&#10;&lt;div class="alert alert-info" role="alert"&gt;&#10;&lt;p&gt;The &lt;a href="https://kubernetes.io/docs/reference/access-authn-authz/rbac/"&gt;Kubernetes RBAC documentation&lt;/a&gt;&#10;describe how to use &lt;em&gt;Roles, ClusterRoles, RoleBindings&lt;/em&gt; and &lt;em&gt;ClusterRoleBindings&lt;/em&gt;&#10;resources. If you are using OpenShift, read the&#10;&lt;a href="https://docs.redhat.com/en/documentation/openshift_container_platform/4.22/html/rbac_apis/rbac-apis"&gt;OpenShift RBAC documentation&lt;/a&gt;.&lt;/p&gt;&#10;&lt;/div&gt;</description></item><item><title>Namespace Management</title><link>https://staging--kiali.netlify.app/docs/configuration/namespace-management/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://staging--kiali.netlify.app/docs/configuration/namespace-management/</guid><description>&lt;h2 id="introduction"&gt;Introduction&lt;/h2&gt;&#10;&lt;p&gt;The default Kiali &lt;a href="https://staging--kiali.netlify.app/docs/installation/installation-guide/"&gt;installation&lt;/a&gt; gives Kiali access to all namespaces available in the cluster and will allow all namespaces to be visible.&lt;/p&gt;&#10;&lt;p&gt;It is possible to restrict Kiali so that it can only access a specific set of namespaces by providing &lt;a href="https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/#resources-that-support-set-based-requirements"&gt;discovery selectors&lt;/a&gt; that match those namespaces. Note that Kiali will not use &lt;a href="https://istio.io/latest/docs/reference/config/istio.mesh.v1alpha1/#MeshConfig"&gt;Istio&amp;rsquo;s discovery selectors&lt;/a&gt;; if Istio has been configured with its own discovery selectors, you will likely want to configure Kiali with the same list of discovery selectors.&lt;/p&gt;</description></item><item><title>Networking</title><link>https://staging--kiali.netlify.app/docs/architecture/terminology/networking/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://staging--kiali.netlify.app/docs/architecture/terminology/networking/</guid><description>&lt;h3 id="destination"&gt;Destination&lt;/h3&gt;&#10;&lt;p&gt;For more information see the Destination definition in the &lt;a href="https://istio.io/help/glossary/#destination"&gt;Istio Glossary&lt;/a&gt;.&lt;/p&gt;&#10;&lt;h3 id="destination-rule"&gt;Destination Rule&lt;/h3&gt;&#10;&lt;p&gt;For more information see the &lt;a href="https://istio.io/docs/reference/config/networking/destination-rule"&gt;Istio Destination Rule Documentation&lt;/a&gt;.&lt;/p&gt;&#10;&lt;h3 id="endpoint"&gt;Endpoint&lt;/h3&gt;&#10;&lt;p&gt;A communication endpoint is a type of communication network node. It is an interface exposed by a communicating party or by a communication channel.&lt;/p&gt;&#10;&lt;h3 id="error-rate"&gt;Error Rate&lt;/h3&gt;&#10;&lt;p&gt;It&amp;rsquo;s the percentage of errors in the traffic to a specific object for a &lt;a href="https://staging--kiali.netlify.app/docs/architecture/terminology/networking/#rate-interval"&gt;Rate Interval&lt;/a&gt;.&lt;/p&gt;&#10;&lt;h3 id="gateway"&gt;Gateway&lt;/h3&gt;&#10;&lt;p&gt;For more information see the Gateway definition in the &lt;a href="https://istio.io/docs/reference/config/networking/gateway"&gt;Istio Gateway Documentation&lt;/a&gt;.&lt;/p&gt;</description></item><item><title>No Istiod Access</title><link>https://staging--kiali.netlify.app/docs/configuration/no-istiod/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://staging--kiali.netlify.app/docs/configuration/no-istiod/</guid><description>&lt;h2 id="introduction"&gt;Introduction&lt;/h2&gt;&#10;&lt;p&gt;Kiali makes use of the Istiod &lt;code&gt;/debug&lt;/code&gt; endpoints for introspection into the control plane. If this API is unavailable Kiali continues to perform, but the feature set will be degraded. The Istio API can be unavailable for various reasons:&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;The Istio API has been explicitly disabled in the Istio configuration.&lt;/li&gt;&#10;&lt;li&gt;The &lt;a href="https://istio.io/latest/docs/ops/deployment/deployment-models/#multiple-clusters"&gt;deployment model&lt;/a&gt; prevents access to the Istio API (firewalls, other networking concerns or limitations).&lt;/li&gt;&#10;&lt;li&gt;The API is configured but for some, potentially unexpected, reason can not be reached by Kiali.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h2 id="configuration"&gt;Configuration&lt;/h2&gt;&#10;&lt;p&gt;When the Istio API is known to be inaccessible Kiali should be configured via the &lt;code&gt;istio_api_enabled&lt;/code&gt; configuration item.&lt;br&gt;&#10;By default, istio_api_enabled is true.&lt;/p&gt;</description></item><item><title>OSSMC</title><link>https://staging--kiali.netlify.app/docs/faq/ossmc/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://staging--kiali.netlify.app/docs/faq/ossmc/</guid><description>&lt;h3 id="what-ossmc-features-work-without-kiali-installed"&gt;What OSSMC features work without Kiali installed?&lt;/h3&gt;&#10;&lt;p&gt;When the OpenShift Service Mesh Console (OSSMC) plugin is installed but no Kiali server is connected to the plugin, the Service Mesh menu still provides &lt;strong&gt;Istios&lt;/strong&gt; and &lt;strong&gt;Kialis&lt;/strong&gt; pages. Those pages list every Istio and Kiali custom resource on the cluster so you can navigate multiple mesh instances from the OpenShift Console. They do not require a Kiali server.&lt;/p&gt;&#10;&lt;p&gt;Pages that require a connected Kiali server (Overview, Traffic Graph, Mesh, Namespaces, Applications, Services, Workloads, Istio Config) and &lt;strong&gt;Service Mesh&lt;/strong&gt; tabs on OpenShift resource detail pages need a connected and reachable Kiali instance.&lt;/p&gt;</description></item><item><title>OSSMConsole CR Reference</title><link>https://staging--kiali.netlify.app/docs/configuration/ossmconsoles.kiali.io/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://staging--kiali.netlify.app/docs/configuration/ossmconsoles.kiali.io/</guid><description>&lt;div class="crd-schema-version"&gt;&#10;&lt;h3 id="example-cr"&gt;Example CR&lt;/h3&gt;&#10;&lt;em&gt;(all values shown here are the defaults unless otherwise noted)&lt;/em&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-yaml" data-lang="yaml"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;apiVersion&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#000"&gt;kiali.io/v1alpha1&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;kind&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#000"&gt;OSSMConsole&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;metadata&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;name&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#000"&gt;ossmconsole&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;annotations&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;ansible.sdk.operatorframework.io/verbosity&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#4e9a06"&gt;&amp;#34;1&amp;#34;&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;spec&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;version&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#4e9a06"&gt;&amp;#34;default&amp;#34;&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;deployment&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;imageDigest&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#4e9a06"&gt;&amp;#34;&amp;#34;&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;imageName&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#4e9a06"&gt;&amp;#34;&amp;#34;&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;imagePullPolicy&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#4e9a06"&gt;&amp;#34;IfNotPresent&amp;#34;&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#8f5902;font-style:italic"&gt;# default: image_pull_secrets is an empty list&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;imagePullSecrets&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;[&lt;/span&gt;&lt;span style="color:#4e9a06"&gt;&amp;#34;image.pull.secret&amp;#34;&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;]&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;imageVersion&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#4e9a06"&gt;&amp;#34;&amp;#34;&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;namespace&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#4e9a06"&gt;&amp;#34;&amp;#34;&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#8f5902;font-style:italic"&gt;# default: internal is an empty object (techPreview is disabled)&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#8f5902;font-style:italic"&gt;# internal:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#8f5902;font-style:italic"&gt;# techPreview: true&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;kiali&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;autoDiscover&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;true&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;serviceName&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#4e9a06"&gt;&amp;#34;&amp;#34;&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;serviceNamespace&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#4e9a06"&gt;&amp;#34;&amp;#34;&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;servicePort&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#0000cf;font-weight:bold"&gt;0&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="validating-your-ossmconsole-cr"&gt;Validating your OSSMConsole CR&lt;/h3&gt;&#10;&lt;p&gt;The OSSMConsole CR has a CRD Schema so it will be validated when you create or update it in your cluster.&lt;/p&gt;&#10;&lt;h3 id="property-details"&gt;Properties&lt;/h3&gt;&#10;&lt;div class="property depth-0"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec"&gt;.spec&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(object)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;This is the CRD for the resources called OSSMConsole CRs. The OpenShift Service Mesh Console Operator will watch for resources of this type and when it detects an OSSMConsole CR has been added, deleted, or modified, it will install, uninstall, and update the associated OSSM Console installation.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-1"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.deployment"&gt;.spec.deployment&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(object)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-2"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.deployment.imageDigest"&gt;.spec.deployment.imageDigest&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(string)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;If &lt;code&gt;deployment.imageVersion&lt;/code&gt; is a digest hash, this value indicates what type of digest it is. A typical value would be &amp;lsquo;sha256&amp;rsquo;. Note: do NOT prefix this value with a &amp;lsquo;@&amp;rsquo;.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-2"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.deployment.imageName"&gt;.spec.deployment.imageName&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(string)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;Determines which OSSM Console image to download and install. If you set this to a specific name (i.e. you do not leave it as the default empty string), you must make sure that image is supported by the operator. If empty, the operator will use a known supported image name based on which &lt;code&gt;version&lt;/code&gt; was defined. Note that, as a security measure, a cluster admin may have configured the operator to ignore this setting. A cluster admin may do this to ensure the operator only installs a single, specific OSSM Console version, thus this setting may have no effect depending on how the operator itself was configured.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-2"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.deployment.imagePullPolicy"&gt;.spec.deployment.imagePullPolicy&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(string)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;The Kubernetes pull policy for the OSSM Console deployment. This is overridden to be &amp;lsquo;Always&amp;rsquo; if &lt;code&gt;deployment.imageVersion&lt;/code&gt; is set to &amp;lsquo;latest&amp;rsquo;.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-2"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.deployment.imagePullSecrets"&gt;.spec.deployment.imagePullSecrets&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(array)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;The names of the secrets to be used when container images are to be pulled.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-3"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.deployment.imagePullSecrets[*]"&gt;.spec.deployment.imagePullSecrets[*]&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(string)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-2"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.deployment.imageVersion"&gt;.spec.deployment.imageVersion&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(string)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;Determines which version of OSSM Console to install.&#10;Choose &amp;lsquo;lastrelease&amp;rsquo; to use the last OSSM Console release.&#10;Choose &amp;lsquo;latest&amp;rsquo; to use the latest image (which may or may not be a released version of the OSSM Console).&#10;Choose &amp;lsquo;operator_version&amp;rsquo; to use the image whose version is the same as the operator version.&#10;Otherwise, you can set this to any valid OSSM Console version (such as &amp;lsquo;v1.0&amp;rsquo;) or any valid OSSM Console&#10;digest hash (if you set this to a digest hash, you must indicate the digest in &lt;code&gt;deployment.imageDigest&lt;/code&gt;).&#10;Note that if this is set to &amp;lsquo;latest&amp;rsquo; then the &lt;code&gt;deployment.imagePullPolicy&lt;/code&gt; will be set to &amp;lsquo;Always&amp;rsquo;.&#10;If you set this to a specific version (i.e. you do not leave it as the default empty string),&#10;you must make sure that image is supported by the operator.&#10;If empty, the operator will use a known supported image version based on which &amp;lsquo;version&amp;rsquo; was defined.&#10;Note that, as a security measure, a cluster admin may have configured the operator to&#10;ignore this setting. A cluster admin may do this to ensure the operator only installs&#10;a single, specific OSSM Console version, thus this setting may have no effect depending on how the&#10;operator itself was configured.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-2"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.deployment.namespace"&gt;.spec.deployment.namespace&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(string)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;The namespace into which OSSM Console is to be installed. If this is empty or not defined, the default will be the namespace where the OSSMConsole CR is located. Currently the only namespace supported is the namespace where the OSSMConsole CR is located.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-1"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.internal"&gt;.spec.internal&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(object)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;Unstructured section for internal testing and debugging features. Not officially supported - fields here may change or be removed without notice.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-1"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.kiali"&gt;.spec.kiali&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(object)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-2"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.kiali.autoDiscover"&gt;.spec.kiali.autoDiscover&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(boolean)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;Controls whether the operator will opportunistically auto-discover a Kiali installation via its OpenShift Route when none of &lt;code&gt;kiali.serviceName&lt;/code&gt;, &lt;code&gt;kiali.serviceNamespace&lt;/code&gt;, and &lt;code&gt;kiali.servicePort&lt;/code&gt; are set. If those three settings are all empty and this is set to &lt;code&gt;false&lt;/code&gt;, OSSM Console is installed without Kiali integration rather than attempting discovery. This setting has no effect if all three of &lt;code&gt;kiali.serviceName&lt;/code&gt;, &lt;code&gt;kiali.serviceNamespace&lt;/code&gt;, and &lt;code&gt;kiali.servicePort&lt;/code&gt; are explicitly set (auto-discovery is already skipped in that case, and the explicitly configured Kiali installation is used). Setting this to &lt;code&gt;false&lt;/code&gt; while only some (not all, and not none) of those three settings are specified is invalid and will fail reconciliation. Defaults to &lt;code&gt;true&lt;/code&gt;.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-2"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.kiali.serviceName"&gt;.spec.kiali.serviceName&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(string)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;The internal Kiali service that the OpenShift Console will use to proxy API calls. If empty and &lt;code&gt;kiali.autoDiscover&lt;/code&gt; is &lt;code&gt;true&lt;/code&gt; (the default), an attempt will be made to auto-discover it from the Kiali OpenShift Route. If none of &lt;code&gt;kiali.serviceName&lt;/code&gt;, &lt;code&gt;kiali.serviceNamespace&lt;/code&gt;, and &lt;code&gt;kiali.servicePort&lt;/code&gt; are set and no Kiali installation can be auto-discovered (or &lt;code&gt;kiali.autoDiscover&lt;/code&gt; is &lt;code&gt;false&lt;/code&gt;), OSSM Console will still be installed, but without Kiali integration. If any of these three settings are explicitly set, a Kiali installation matching that configuration is required and the install will fail if it cannot be found or its version does not match. See &lt;code&gt;kiali.autoDiscover&lt;/code&gt; for what happens when only some (not all) of these three settings are specified.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-2"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.kiali.serviceNamespace"&gt;.spec.kiali.serviceNamespace&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(string)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;The namespace where the Kiali service is deployed. If empty and &lt;code&gt;kiali.autoDiscover&lt;/code&gt; is &lt;code&gt;true&lt;/code&gt; (the default), an attempt will be made to auto-discover it from the Kiali OpenShift Route. It will assume that the OpenShift Route and the Kiali service are deployed in the same namespace. If none of &lt;code&gt;kiali.serviceName&lt;/code&gt;, &lt;code&gt;kiali.serviceNamespace&lt;/code&gt;, and &lt;code&gt;kiali.servicePort&lt;/code&gt; are set and no Kiali installation can be auto-discovered (or &lt;code&gt;kiali.autoDiscover&lt;/code&gt; is &lt;code&gt;false&lt;/code&gt;), OSSM Console will still be installed, but without Kiali integration. If any of these three settings are explicitly set, a Kiali installation matching that configuration is required and the install will fail if it cannot be found or its version does not match. See &lt;code&gt;kiali.autoDiscover&lt;/code&gt; for what happens when only some (not all) of these three settings are specified.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-2"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.kiali.servicePort"&gt;.spec.kiali.servicePort&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(integer)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;The internal port used by the Kiali service for the API. If empty and &lt;code&gt;kiali.autoDiscover&lt;/code&gt; is &lt;code&gt;true&lt;/code&gt; (the default), an attempt will be made to auto-discover it from the Kiali OpenShift Route. If none of &lt;code&gt;kiali.serviceName&lt;/code&gt;, &lt;code&gt;kiali.serviceNamespace&lt;/code&gt;, and &lt;code&gt;kiali.servicePort&lt;/code&gt; are set and no Kiali installation can be auto-discovered (or &lt;code&gt;kiali.autoDiscover&lt;/code&gt; is &lt;code&gt;false&lt;/code&gt;), OSSM Console will still be installed, but without Kiali integration. If any of these three settings are explicitly set, a Kiali installation matching that configuration is required and the install will fail if it cannot be found or its version does not match. See &lt;code&gt;kiali.autoDiscover&lt;/code&gt; for what happens when only some (not all) of these three settings are specified.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-1"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".spec.version"&gt;.spec.version&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(string)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;The version of the Ansible role that will be executed in order to install OSSM Console.&#10;This also indirectly determines the version of OSSM Console that will be installed.&#10;You normally will want to use &lt;code&gt;default&lt;/code&gt; since this is the only officially supported value today.&lt;/p&gt;&#10;&lt;p&gt;If not specified, the value of &lt;code&gt;default&lt;/code&gt; is assumed which means the most recent Ansible role is used;&#10;thus the most recent release of OSSM Console will be installed.&lt;/p&gt;&#10;&lt;p&gt;Refer to this file to see what the valid values are for this &lt;code&gt;version&lt;/code&gt; field (as defined in the master branch),&#10;&lt;a href="https://github.com/kiali/kiali-operator/blob/master/playbooks/ossmconsole-default-supported-images.yml"&gt;https://github.com/kiali/kiali-operator/blob/master/playbooks/ossmconsole-default-supported-images.yml&lt;/a&gt;&lt;/p&gt;&#10;&lt;p&gt;This &lt;code&gt;version&lt;/code&gt; setting affects the defaults of the &lt;code&gt;deployment.imageName&lt;/code&gt; and&#10;&lt;code&gt;deployment.imageVersion&lt;/code&gt; settings. See the documentation for those settings below for&#10;additional details. In short, this &lt;code&gt;version&lt;/code&gt; setting will dictate which version of the&#10;OSSM Console image will be deployed by default. However, if you explicitly set &lt;code&gt;deployment.imageName&lt;/code&gt;&#10;and/or &lt;code&gt;deployment.imageVersion&lt;/code&gt; to reference your own custom image, that will override the&#10;default OSSM Console image to be installed; therefore, you are responsible for ensuring those settings&#10;are compatible with the Ansible role that will be executed in order to install OSSM Console (i.e. your&#10;custom OSSM Console image must be compatible with the rest of the configuration and resources the&#10;operator will install).&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property depth-0"&gt;&#10;&lt;div class="property-header"&gt;&#10;&lt;hr/&gt;&#10;&lt;h3 class="property-path" id=".status"&gt;.status&lt;/h3&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-body"&gt;&#10;&lt;div class="property-meta"&gt;&#10;&lt;span class="property-type"&gt;(object)&lt;/span&gt;&#10;&lt;/div&gt;&#10;&lt;div class="property-description"&gt;&#10;&lt;p&gt;The processing status of this CR as reported by the OpenShift Service Mesh Console Operator.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;</description></item><item><title>Performance and Scalability</title><link>https://staging--kiali.netlify.app/docs/faq/performance/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://staging--kiali.netlify.app/docs/faq/performance/</guid><description>&lt;h3 id="what-are-some-tips-for-working-with-a-large-mesh"&gt;What are some Tips for working with a large mesh?&lt;/h3&gt;&#10;&lt;p&gt;It can be an observability challenge to work with a large mesh. Here are a few things that can be done to improve the situation.&lt;/p&gt;&#10;&lt;h4 id="resources-and-connectivity"&gt;Resources and Connectivity&lt;/h4&gt;&#10;&lt;p&gt;Before talking about Kiali features, it is important to understand that Kiali&amp;rsquo;s performance is dependent on the performance and responsiveness of your metrics database (typically Prometheus), and your tracing store, for installations using tracing. For Prometheus scalability tips, see &lt;a href="https://staging--kiali.netlify.app/docs/configuration/external-services/metrics/tuning/"&gt;Tuning&lt;/a&gt;. See &lt;a href="https://staging--kiali.netlify.app/docs/configuration/external-services/tracing/tempo/#tempo-tuning"&gt;Tempo Tuning&lt;/a&gt; if using Tempo for your trace store.&lt;/p&gt;</description></item><item><title>Search Results</title><link>https://staging--kiali.netlify.app/search/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://staging--kiali.netlify.app/search/</guid><description/></item><item><title>Security</title><link>https://staging--kiali.netlify.app/docs/features/security/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://staging--kiali.netlify.app/docs/features/security/</guid><description>&lt;p&gt;Kiali gives support to better understand how mTLS is used in Istio meshes. Find those helpers in the Mesh page, Traffic Graph, Overview Page, and specific validations.&lt;/p&gt;&#10;&lt;h2 id="mesh-indicator"&gt;Mesh indicator&lt;/h2&gt;&#10;&lt;p&gt;At the right panel of the Istio Control Plane from the Mesh page, Kiali shows a lock when the mesh has enabled &lt;code&gt;mTLS&lt;/code&gt; for the whole service mesh. It means that all the communications in the mesh uses &lt;code&gt;mTLS&lt;/code&gt;.&lt;/p&gt;&#10;&lt;p&gt;&lt;img src="https://staging--kiali.netlify.app/images/documentation/features/security-mesh.png" alt="mTLS mesh-wide strict" title="mTLS mesh-wide strict"&gt;&lt;/p&gt;</description></item><item><title>TLS Policy</title><link>https://staging--kiali.netlify.app/docs/configuration/tls-policy/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://staging--kiali.netlify.app/docs/configuration/tls-policy/</guid><description>&lt;p&gt;Kiali uses one TLS policy for both its inbound server endpoint and every outbound client it creates—HTTP, gRPC, tracing exporters, and OpenID/OAuth HTTP flows. The policy controls TLS versions, cipher suites, and key exchange groups. It is configured in &lt;code&gt;deployment.tls_config&lt;/code&gt; in the Kiali CR. You decide whether the policy comes from the cluster (OpenShift TLSSecurityProfile) or from explicit settings.&lt;/p&gt;&#10;&lt;h2 id="configuration-options"&gt;Configuration Options&lt;/h2&gt;&#10;&lt;table&gt;&#10;&#9;&lt;thead&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;Setting&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;Description&lt;/th&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/thead&gt;&#10;&#9;&lt;tbody&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;source&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;auto&lt;/code&gt; (OpenShift only: reads cluster TLSSecurityProfile) or &lt;code&gt;config&lt;/code&gt; (use explicit settings)&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;min_version&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Minimum TLS version: &lt;code&gt;TLSv1.2&lt;/code&gt; or &lt;code&gt;TLSv1.3&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;max_version&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Maximum TLS version: &lt;code&gt;TLSv1.2&lt;/code&gt; or &lt;code&gt;TLSv1.3&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;cipher_suites&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;List of OpenSSL cipher names for TLS 1.2 (ignored for TLS 1.3)&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;groups&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;List of TLS group names (key exchange mechanisms) for both TLS 1.2 and 1.3&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt; &lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;h3 id="platform-defaults"&gt;Platform Defaults&lt;/h3&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;strong&gt;OpenShift&lt;/strong&gt;: &lt;code&gt;source&lt;/code&gt; defaults to &lt;code&gt;auto&lt;/code&gt; (uses cluster&amp;rsquo;s TLSSecurityProfile)&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Non-OpenShift&lt;/strong&gt;: &lt;code&gt;source&lt;/code&gt; defaults to &lt;code&gt;config&lt;/code&gt; (requires explicit configuration)&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;div class="alert alert-warning" role="alert"&gt;&#10;&lt;p&gt;On OpenShift, &lt;code&gt;source: config&lt;/code&gt; is rejected by the Kiali Operator when the cluster TLS adherence is strict. See &lt;a href="https://staging--kiali.netlify.app/docs/configuration/tls-policy/#cluster-tls-adherence"&gt;Cluster TLS Adherence&lt;/a&gt;.&lt;/p&gt;&#10;&lt;/div&gt;</description></item><item><title>Topology</title><link>https://staging--kiali.netlify.app/docs/features/topology/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://staging--kiali.netlify.app/docs/features/topology/</guid><description>&lt;p&gt;Kiali offers multiple ways for users to examine their mesh Topology. Each combines several information types to help users quickly evaluate the health of their service architecture.&lt;/p&gt;&#10;&lt;h2 id="overview"&gt;Overview&lt;/h2&gt;&#10;&lt;p&gt;Kiali&amp;rsquo;s default landing page is the mesh &lt;em&gt;Overview&lt;/em&gt;. It presents a high-level view of the mesh clusters, control planes, data planes, and configuration, for the user. It combines service and application information, along with telemetry, validations and health, to provide a holistic summary of the system behavior. It highlights potential issues that the user may need to investigate.&lt;/p&gt;</description></item><item><title>Tracing</title><link>https://staging--kiali.netlify.app/docs/features/tracing/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://staging--kiali.netlify.app/docs/features/tracing/</guid><description>&lt;p&gt;Kiali offers a native integration with two different Distributed Tracing platforms, Jaeger and Grafana Tempo. As such, users can access trace visualizations. But more&#10;than that, Kiali incorporates tracing into several correlated views, making your investment in trace data even more valuable.&lt;/p&gt;&#10;&lt;p&gt;For a quick glimpse at Kiali tracing features, see below. For a detailed explanation of tracing in Kiali, see this 3-part&#10;&lt;a href="https://medium.com/kialiproject/trace-my-mesh-part-1-3-35e252f9c6a9"&gt;Trace my mesh&lt;/a&gt; blog series. There is a detailed guide to configure access to the different distributed tracing platform, &lt;a href="https://staging--kiali.netlify.app/docs/configuration/external-services/tracing/jaeger/"&gt;Jaeger&lt;/a&gt; and &lt;a href="https://staging--kiali.netlify.app/docs/configuration/external-services/tracing/tempo/"&gt;Grafana Tempo&lt;/a&gt;.&lt;/p&gt;</description></item><item><title>Traffic Health</title><link>https://staging--kiali.netlify.app/docs/configuration/health/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://staging--kiali.netlify.app/docs/configuration/health/</guid><description>&lt;p&gt;There are times when Kiali&amp;rsquo;s default thresholds for traffic health do not work well for a particular situation. For example, at times 404 response codes are expected. Kiali has the ability to set powerful, fine-grained overrides for health configuration.&lt;/p&gt;&#10;&lt;h3 id="default-configuration"&gt;Default Configuration&lt;/h3&gt;&#10;&lt;p&gt;By default Kiali uses the traffic rate configuration shown below. Application errors have minimal tolerance while client errors have a higher tolerance reflecting that some level of client errors is often normal (e.g. 404 Not Found):&lt;/p&gt;</description></item><item><title>Validation</title><link>https://staging--kiali.netlify.app/docs/features/validations/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://staging--kiali.netlify.app/docs/features/validations/</guid><description>&lt;p&gt;Kiali performs a set of validations on your Istio Objects, such as Destination Rules, Service Entries, and Virtual Services. Kiali&amp;rsquo;s validations go above and beyond what Istio offers. Where Istio offers mainly static checks for well-formed definitions, Kiali performs semantic validations to ensure that the definitions make sense, across objects, and in some cases even across namespaces. Kiali validations are based on the runtime status of your service mesh.&lt;/p&gt;&#10;&lt;p&gt;&lt;img src="https://staging--kiali.netlify.app/images/documentation/features/shared/istio-config-validation.png" alt="Istio Config Validation" title="Istio Config Validation"&gt;&lt;/p&gt;</description></item><item><title>Validations</title><link>https://staging--kiali.netlify.app/docs/faq/validations/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://staging--kiali.netlify.app/docs/faq/validations/</guid><description>&lt;h3 id="which-formats-does-kiali-support-for-specifying-hosts"&gt;Which formats does Kiali support for specifying hosts?&lt;/h3&gt;&#10;&lt;p&gt;Istio highly recommends that you always use fully qualified domain names (FQDN) for hosts in DestinationRules. However, Istio does allow you to use other formats like short names (&lt;em&gt;details&lt;/em&gt; or &lt;em&gt;details.bookinfo&lt;/em&gt;).&#10;Kiali only supports FQDN and simple service names as host formats: for example &lt;em&gt;details.bookinfo.svc.cluster.local&lt;/em&gt; or &lt;em&gt;details&lt;/em&gt;. Validations using the &lt;em&gt;details.bookinfo&lt;/em&gt; format might not be accurate.&lt;/p&gt;&#10;&lt;p&gt;In the following example it should show the validation of &amp;ldquo;More than one Destination Rule for the same host subset combination&amp;rdquo;. Because of the usage of the short name &lt;em&gt;reviews.bookinfo&lt;/em&gt; Kiali won&amp;rsquo;t show the warning message on both destination rules.&lt;/p&gt;</description></item><item><title>Virtual Machine workloads</title><link>https://staging--kiali.netlify.app/docs/configuration/vm/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://staging--kiali.netlify.app/docs/configuration/vm/</guid><description>&lt;h2 id="introduction"&gt;Introduction&lt;/h2&gt;&#10;&lt;p&gt;Kiali graph visualizes both Virtual Machine workloads (WorkloadEntry) and pod-based workloads, running inside a Kubernetes cluster. You must ensure that the Istio Proxy is running, and correctly configured, on the Virtual Machine. Also, Prometheus must be able to scrape the metrics endpoint of the Istio Proxy running on the VM. Kiali will then be able to read the traffic telemetry for the Virtual Machine workloads, and incorporate the VM workloads into the graph.&lt;/p&gt;</description></item></channel></rss>