Upgrade Istio with Helm to support jaeger tracing

Hello

I installed Istio with Helm like this:

helm install istio-base manifests/charts/base -n istio-system -f cfg.yml
helm install istiod manifests/charts/istio-control/istio-discovery -n istio-system -f cfg.yml
helm install istio-ingress manifests/charts/gateways/istio-ingress -n istio-system

However, I haven’t enabled tracing with Jaeger during install. Now, I installed Jaeger thru samples/addons/jaeger.yaml, but don’t see any traces since Istio is NOT instructed to send them.

I found tracing configs here. How do I upgrade my Istio installation with Helm, using this config?

Thanks!

Please check in your Mesh-Config the zipkin address is set.

kubectl  -n istio-system get cm istio -o yaml
....
defaultConfig:
    ...
      tracing:
        zipkin:
          address: jaeger-collector.<your-namespace>.svc.cluster.local:9411

Hello @bethmage
I Just checked my config as you told and found the following

defaultConfig:
      discoveryAddress: istiod.istio-system.svc:15012
      tracing:
        zipkin:
          address: zipkin.istio-system:9411

How do I upgrade current Istio setup with Helm to enable the following params:

enableTracing: true
...
jaeger settings and path
...

Thanks!

Well i did not install istio with helm. But you can try with values override in helm via:

values:
   global:
       proxy:
          enableTracing: true
          tracer:
             zipkin:
                address: jaeger-collector.<your-namespace>.svc.cluster.local:9411

Anyway this settings are move to meshConfig since istio v1.6.0
Better to use istioctl for the deployment and overlay the settings in meshConfig
Other way is:
Try to edit the configmap istio in istio-system namespace as below:

spec:
  meshConfig:
     ...
     enableTracing: true

Ho do I override current settings using your example?

kubectl -n Istio-system edit cm Istio
Add the line as described above under meshConfig

Okay, thanks for the command. Looks like I do have tracing enabled now:

   defaultConfig:
      discoveryAddress: istiod.istio-system.svc:15012
      holdApplicationUntilProxyStarts: true
      proxyMetadata: {}
      tracing:
        sampling: 100
        zipkin:
          address: jaeger-collector.istio-system.svc.cluster.local:9411
    enablePrometheusMerge: true
    enableTracing: true
    rootNamespace: istio-system
    trustDomain: cluster.local
  meshNetworks: 'networks: {}'

I actually was playing with Istio Operator and somehow was able to enable tracing. Thou I still don’t see any traces in my Jaeger GUI. I deployed the bookinfo app and curl-ed to generate the traffic, but still don’t see any traces for bookinfo or my own services.

How do I debug this?

Thanks again for your help
Boris

1. Check the namespace where you deploy the productpage is  istio-injection enabled

2. The zipkinPort is disabled by default in jager-collector
        enable it wenn installing with helm : --set collector.service.zipkinPort=9411        
        in helm install options.

3. check the istiod (pilot) setting for tracer
   the percentage of trace sampling
   kubectl -n istio-system get  deployment  istiod -o yaml | grep  -A 2 'name: PILOT_TRACE_SAMPLING' 
   
   env:
   ...
   - name: PILOT_TRACE_SAMPLING
     value: "1"

   Edit the istiod deployment and change the environment variable                        
   Find the PILOT_TRACE_SAMPLING environment variable, and change the value: to your desired percentage.
   valid values are from 0.0 to 100.0 with a precision of 0.01  
   see: https://istio.io/latest/docs/tasks/observability/distributed-tracing/configurability/#customizing-trace-sampling
        https://istio.io/latest/docs/ops/integrations/jaeger/#option-2-customizable-install

4. DEBUG ... This may help you.....
   see: https://istio.io/latest/docs/ops/diagnostic-tools/controlz/
        https://istio.io/latest/docs/ops/diagnostic-tools/proxy-cmd/
        https://www.jaegertracing.io/docs/1.22/troubleshooting/
   
   use : istioctl ps ,  istioctl pc  see cluster, endpoints .. etc of productpage pod.