<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Kiali – External Services</title>
    <link>https://staging.kiali.io/docs/configuration/external-services/</link>
    <description>Recent content in External Services on Kiali</description>
    <generator>Hugo -- gohugo.io</generator>
    <language>en</language>
    
	  <atom:link href="https://staging.kiali.io/docs/configuration/external-services/index.xml" rel="self" type="application/rss+xml" />
    
    
      
        
      
    
    
    <item>
      <title>Docs: Dashboards</title>
      <link>https://staging.kiali.io/docs/configuration/external-services/dashboards/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>https://staging.kiali.io/docs/configuration/external-services/dashboards/</guid>
      <description>
        
        
        &lt;p&gt;Kiali can link to Istio dashboards hosted in Grafana or Perses.&lt;/p&gt;

      </description>
    </item>
    
    <item>
      <title>Docs: Metrics</title>
      <link>https://staging.kiali.io/docs/configuration/external-services/metrics/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>https://staging.kiali.io/docs/configuration/external-services/metrics/</guid>
      <description>
        
        
        &lt;p&gt;Kiali uses a metrics backend to power the topology graph, health calculations, and detail views. Configure the Prometheus connection on the &lt;a href=&#34;https://staging.kiali.io/docs/configuration/external-services/metrics/prometheus/&#34;&gt;Prometheus&lt;/a&gt; page and production optimizations on &lt;a href=&#34;https://staging.kiali.io/docs/configuration/external-services/metrics/tuning/&#34;&gt;Tuning&lt;/a&gt;.&lt;/p&gt;

      </description>
    </item>
    
    <item>
      <title>Docs: TLS Configuration</title>
      <link>https://staging.kiali.io/docs/configuration/external-services/tls-configuration/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>https://staging.kiali.io/docs/configuration/external-services/tls-configuration/</guid>
      <description>
        
        
        &lt;h2 id=&#34;overview&#34;&gt;Overview&lt;/h2&gt;
&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;
&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;
&lt;h2 id=&#34;adding-custom-certificate-authorities&#34;&gt;Adding Custom Certificate Authorities&lt;/h2&gt;
&lt;p&gt;Kiali uses a &lt;strong&gt;global CA bundle&lt;/strong&gt; mechanism to trust additional certificate authorities. All custom CAs are added to a single certificate pool that applies to all HTTPS connections Kiali makes to external services.&lt;/p&gt;
&lt;h3 id=&#34;on-kubernetes&#34;&gt;On Kubernetes&lt;/h3&gt;
&lt;p&gt;To add custom CAs, create a ConfigMap named &lt;code&gt;&amp;lt;kiali-instance-name&amp;gt;-cabundle&lt;/code&gt; in the Kiali namespace. The default instance name is &lt;code&gt;kiali&lt;/code&gt;, so the ConfigMap would be named &lt;code&gt;kiali-cabundle&lt;/code&gt;:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-yaml&#34; data-lang=&#34;yaml&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;apiVersion&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;v1&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;kind&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;ConfigMap&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;metadata&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;  &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;name&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;kiali-cabundle&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;  &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;namespace&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;istio-system &lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;# Or your Kiali namespace&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;data&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;  &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;additional-ca-bundle.pem&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;|&lt;/span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;    -----BEGIN CERTIFICATE-----
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;    MIIDxTCCAq2gAwIBAgIQAqxcJmoLQ...
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;    ... (your CA certificate) ...
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;    -----END CERTIFICATE-----
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;    -----BEGIN CERTIFICATE-----
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;    MIIDyTCCArGgAwIBAgIRAJ4K...
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;    ... (additional CA certificates if needed) ...
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;    -----END CERTIFICATE-----&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;    
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

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


    &lt;p&gt;&lt;strong&gt;Key name&lt;/strong&gt;: The key must be &lt;code&gt;additional-ca-bundle.pem&lt;/code&gt;. You can include multiple CA certificates in PEM format in the same file.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Alternative keys&lt;/strong&gt;: You can also use &lt;code&gt;openid-server-ca.crt&lt;/code&gt; or (on OpenShift) &lt;code&gt;oauth-server-ca.crt&lt;/code&gt; as key names. While these names suggest specific purposes, all CAs are loaded into Kiali&amp;rsquo;s global certificate pool and trusted for all TLS connections. Using &lt;code&gt;additional-ca-bundle.pem&lt;/code&gt; is recommended for clarity.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;For OpenShift OAuth authentication&lt;/strong&gt;: On OpenShift, you can alternatively create a separate ConfigMap named &lt;code&gt;&amp;lt;instance-name&amp;gt;-oauth-cabundle&lt;/code&gt; with the key &lt;code&gt;oauth-server-ca.crt&lt;/code&gt;. See the &lt;a href=&#34;https://staging.kiali.io/docs/configuration/authentication/openshift/#using-an-internal-or-self-signed-certificate&#34;&gt;OpenShift authentication&lt;/a&gt; documentation for details. However, adding your CA to &lt;code&gt;kiali-cabundle&lt;/code&gt; under &lt;code&gt;additional-ca-bundle.pem&lt;/code&gt; achieves the same result.&lt;/p&gt;


&lt;/div&gt;

&lt;h3 id=&#34;on-openshift&#34;&gt;On OpenShift&lt;/h3&gt;
&lt;p&gt;On OpenShift, the Kiali Operator automatically creates a ConfigMap named &lt;code&gt;&amp;lt;kiali-instance-name&amp;gt;-cabundle-openshift&lt;/code&gt; (e.g., &lt;code&gt;kiali-cabundle-openshift&lt;/code&gt;) with the annotation &lt;code&gt;service.beta.openshift.io/inject-cabundle: &amp;quot;true&amp;quot;&lt;/code&gt;. This tells OpenShift to automatically inject the cluster&amp;rsquo;s service CA into the ConfigMap.&lt;/p&gt;
&lt;p&gt;This means that by default, Kiali on OpenShift already trusts:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;The system CAs&lt;/li&gt;
&lt;li&gt;The OpenShift service CA (used by services with serving certificates)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;If you need to add additional CAs beyond the OpenShift service CA, create a separate ConfigMap named &lt;code&gt;&amp;lt;kiali-instance-name&amp;gt;-cabundle&lt;/code&gt; (e.g., &lt;code&gt;kiali-cabundle&lt;/code&gt;):&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-yaml&#34; data-lang=&#34;yaml&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;apiVersion&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;v1&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;kind&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;ConfigMap&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;metadata&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;  &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;name&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;kiali-cabundle&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;  &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;namespace&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;istio-system &lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;# Or your Kiali namespace&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;data&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;  &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;additional-ca-bundle.pem&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;|&lt;/span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;    -----BEGIN CERTIFICATE-----
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;    MIIDxTCCAq2gAwIBAgIQAqxcJmoLQ...
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;    ... (your CA certificate) ...
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;    -----END CERTIFICATE-----&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;    
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;The operator uses a projected volume that automatically combines both ConfigMaps, so your custom CAs work alongside the OpenShift service CA.&lt;/p&gt;
&lt;h2 id=&#34;how-it-works&#34;&gt;How It Works&lt;/h2&gt;
&lt;p&gt;When Kiali starts, it loads certificates from:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;System certificate pool&lt;/strong&gt;: The default trusted CAs from the container&amp;rsquo;s operating system&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Additional CA bundle&lt;/strong&gt;: Certificates from &lt;code&gt;/kiali-cabundle/additional-ca-bundle.pem&lt;/code&gt; (if present)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;OpenShift service CA&lt;/strong&gt; (OpenShift only): Certificates from &lt;code&gt;/kiali-cabundle/service-ca.crt&lt;/code&gt; (automatically injected from the &lt;code&gt;&amp;lt;instance-name&amp;gt;-cabundle-openshift&lt;/code&gt; ConfigMap)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;OpenID server CA&lt;/strong&gt; (OpenID auth only): Certificates from &lt;code&gt;/kiali-cabundle/openid-server-ca.crt&lt;/code&gt; (if present)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;OAuth CA bundle&lt;/strong&gt; (OpenShift with OAuth auth): Certificates from &lt;code&gt;/kiali-cabundle/oauth-server-ca.crt&lt;/code&gt; (if the &lt;code&gt;&amp;lt;instance-name&amp;gt;-oauth-cabundle&lt;/code&gt; ConfigMap exists)&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;All these certificates are combined into a single certificate pool used for all HTTPS connections to external services.&lt;/p&gt;


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


    &lt;strong&gt;On OpenShift&lt;/strong&gt;: The operator uses a projected volume that automatically combines multiple ConfigMap sources (&lt;code&gt;&amp;lt;instance-name&amp;gt;-cabundle-openshift&lt;/code&gt;, &lt;code&gt;&amp;lt;instance-name&amp;gt;-cabundle&lt;/code&gt;, and &lt;code&gt;&amp;lt;instance-name&amp;gt;-oauth-cabundle&lt;/code&gt;) into the &lt;code&gt;/kiali-cabundle&lt;/code&gt; mount path. This means you don&amp;rsquo;t need to manually merge ConfigMaps - each ConfigMap can be managed independently.

&lt;/div&gt;



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


    &lt;strong&gt;Automatic refresh&lt;/strong&gt;: Kiali watches CA bundle files for changes using filesystem notifications (fsnotify) and automatically refreshes the certificate pool without requiring a pod restart. When you update the ConfigMap, Kubernetes propagates the changes to the mounted volume based on the kubelet&amp;rsquo;s sync interval (default: 60 seconds). Once the files are updated on disk, Kiali detects and applies them immediately. Total propagation time is typically 0-90 seconds after the ConfigMap update.

&lt;/div&gt;

&lt;h2 id=&#34;skipping-certificate-verification&#34;&gt;Skipping Certificate Verification&lt;/h2&gt;
&lt;p&gt;If you need to temporarily skip certificate verification (for testing purposes only), you can set &lt;code&gt;insecure_skip_verify: true&lt;/code&gt; in the authentication configuration for each external service:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-yaml&#34; data-lang=&#34;yaml&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;spec&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;  &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;external_services&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;    &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;prometheus&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;      &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;auth&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;        &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;insecure_skip_verify&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;true&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;    &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;grafana&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;      &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;auth&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;        &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;insecure_skip_verify&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;true&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;    &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;tracing&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;      &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;auth&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;        &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;insecure_skip_verify&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;true&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

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


    &lt;strong&gt;Security warning&lt;/strong&gt;: Disabling certificate verification makes Kiali vulnerable to man-in-the-middle attacks. Only use this option for testing purposes, never in production.

&lt;/div&gt;

&lt;h2 id=&#34;common-scenarios&#34;&gt;Common Scenarios&lt;/h2&gt;
&lt;h3 id=&#34;internal-corporate-ca&#34;&gt;Internal Corporate CA&lt;/h3&gt;
&lt;p&gt;If your organization has an internal CA that issues certificates for internal services:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Obtain the root CA certificate (public part only) from your security team&lt;/li&gt;
&lt;li&gt;Create the ConfigMap with the CA certificate as shown above&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&#34;self-signed-certificates&#34;&gt;Self-Signed Certificates&lt;/h3&gt;
&lt;p&gt;For development or testing environments using self-signed certificates:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Export the certificate from your service (usually the same certificate that was generated)&lt;/li&gt;
&lt;li&gt;Create the ConfigMap with that certificate&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&#34;istio-service-mesh-mtls&#34;&gt;Istio Service Mesh mTLS&lt;/h3&gt;
&lt;p&gt;If your external services are part of the Istio service mesh and use Istio&amp;rsquo;s mTLS:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Kiali typically accesses these services through their Kubernetes service names, which may bypass the sidecar&lt;/li&gt;
&lt;li&gt;If you need to go through the mesh, you may need to add Istio&amp;rsquo;s root CA to the bundle&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;cert-manager-issued-certificates&#34;&gt;cert-manager Issued Certificates&lt;/h3&gt;
&lt;p&gt;If you use cert-manager with a private CA:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;The CA certificate is typically stored in a Secret (e.g., &lt;code&gt;my-ca-secret&lt;/code&gt; with key &lt;code&gt;ca.crt&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;Extract the CA and add it to the ConfigMap:&lt;/li&gt;
&lt;/ol&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;kubectl get secret my-ca-secret -n cert-manager -o &lt;span style=&#34;color:#000&#34;&gt;jsonpath&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#39;{.data.ca\.crt}&amp;#39;&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;|&lt;/span&gt; base64 -d &amp;gt; ca.crt
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;kubectl create configmap kiali-cabundle -n istio-system --from-file&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;=&lt;/span&gt;additional-ca-bundle.pem&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;=&lt;/span&gt;ca.crt
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;troubleshooting&#34;&gt;Troubleshooting&lt;/h2&gt;
&lt;h3 id=&#34;certificate-errors-in-logs&#34;&gt;Certificate Errors in Logs&lt;/h3&gt;
&lt;p&gt;If you see errors like &lt;code&gt;x509: certificate signed by unknown authority&lt;/code&gt; in Kiali logs:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Verify the ConfigMap exists and has the correct name&lt;/li&gt;
&lt;li&gt;Check that the key is exactly &lt;code&gt;additional-ca-bundle.pem&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Ensure the certificate is in valid PEM format&lt;/li&gt;
&lt;li&gt;Verify the CA certificate is the correct one (the root or intermediate CA that signed the service&amp;rsquo;s certificate)&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&#34;verifying-the-configmap-is-mounted&#34;&gt;Verifying the ConfigMap is Mounted&lt;/h3&gt;
&lt;p&gt;Check that the ConfigMap is properly mounted in the Kiali pod:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;kubectl &lt;span style=&#34;color:#204a87&#34;&gt;exec&lt;/span&gt; -n istio-system deploy/kiali -- ls -la /kiali-cabundle/
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;You should see your CA bundle file listed.&lt;/p&gt;
&lt;h3 id=&#34;testing-certificate-chain&#34;&gt;Testing Certificate Chain&lt;/h3&gt;
&lt;p&gt;To verify your CA certificate is correct, you can test it outside of Kiali:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;# Get the server&amp;#39;s certificate chain&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;openssl s_client -connect prometheus.istio-system:9090 -showcerts
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;# Verify against your CA&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;openssl verify -CAfile your-ca.pem server-cert.pem
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
      </description>
    </item>
    
    <item>
      <title>Docs: Tracing</title>
      <link>https://staging.kiali.io/docs/configuration/external-services/tracing/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>https://staging.kiali.io/docs/configuration/external-services/tracing/</guid>
      <description>
        
        
        &lt;p&gt;Kiali integrates with distributed tracing platforms to enhance mesh observability.&lt;/p&gt;

      </description>
    </item>
    
  </channel>
</rss>
