Install Grafana and Jaeger after istio installation

Hi, I want to install Jaeger and grafana after install istio and using their own helm charts.
How should I integrate them after? I have to modify the configmap “config” inside istio-system and reboot every deploy?
Is there a guide to integrate these telemetry solutions without reinstall or upgrade istio?

There’s two options:

  1. Install Grafana and Jaeger from the Istio Helm chart, post Istio installation
  2. Install Grafana and Jaeger from their own first-party Helm charts

For [1]:

  • Generate the Istio chart with Grafana/Jaeger enabled (e.g. --set grafana.enabled=true)
  • Generate the Istio chart with Grafana/Jaeger disabled (e.g. --set grafana.enabled=false)
  • Diff the two outputs and apply that resulting configuration

For [2]:

  • Use the steps for [1] and dig around for the specific configuration values you would need to integrate standalone Grafana/Jaeger with Istio. I don’t think it’s too much configuration but that process would ensure you get the right values to properly integrate.

Thanks for your solution @crcsmnky, I’ll try.
Do you have also some tips to send prometheus/jaeger data from another cluster to a primary cluster?

I use the amazing Bonzai operator which has been a godsend. This works for prometheus:

git clone https://github.com/istio/istio.git helm/istio
cd helm/istio
git checkout release-1.3
git pull
cd …/…

helm template --name istio --namespace istio-system helm/istio/install/kubernetes/helm/istio -x charts/prometheus/templates/clusterrole.yaml -x charts/prometheus/templates/clusterrolebindings.yaml -x charts/prometheus/templates/configmap.yaml -x charts/prometheus/templates/deployment.yaml -x charts/prometheus/templates/service.yaml -x charts/prometheus/templates/serviceaccount.yaml > helm/prometheus.yaml

kubectl apply -f helm/prometheus.yaml

Trying to do the same for grafana and jaeger gives me the following error however:
✗ helm template --name istio --namespace istio-system helm/istio/install/kubernetes/helm/istio -x charts/grafana/templates/configmap-custom-resources.yaml -x charts/grafana/templates/configmap-dashboards.yaml -x charts/grafana/templates/configmap.yaml -x charts/grafana/templates/create-custom-resources-job.yaml -x charts/grafana/templates/deployment.yaml -x charts/grafana/templates/grafana-ports-mtls.yaml -x charts/grafana/templates/pvc.yaml -x charts/grafana/templates/service.yaml > helm/grafana.yaml
Error: could not find template /home/ubuntu/terraform/kops/helm/istio/install/kubernetes/helm/istio/charts/grafana/templates/configmap-custom-resources.yaml in chart

Helm is such a flaming dog turd. I wish they would ditch it and just release .yaml config. Editing the yaml is so much easier than helm.

1 Like

Hi @corwin, thanks for your reply. I will take a look.
Idw if banzai operator support multi-cluster scenarios with multi network.

I got Jaeger figured out - I’m sure Grafana is the same. I was missing the enabled arg (–set tracing.enabled=true):

helm template --name istio --namespace trace helm/istio/install/kubernetes/helm/istio --set tracing.enabled=true -x charts/tracing/templates/deployment-jaeger.yaml -x charts/tracing/templates/pvc.yaml -x charts/tracing/templates/service-jaeger.yaml > helm/jaeger.yaml

Grafana worked with this: helm template --name istio --namespace istio-system helm/istio/install/kubernetes/helm/istio --set grafana.enabled=true --set grafana.security.enabled=true -x charts/grafana/templates/configmap-custom-resources.yaml -x charts/grafana/templates/configmap-dashboards.yaml -x charts/grafana/templates/configmap.yaml -x charts/grafana/templates/create-custom-resources-job.yaml -x charts/grafana/templates/deployment.yaml -x charts/grafana/templates/grafana-ports-mtls.yaml -x charts/grafana/templates/pvc.yaml -x charts/grafana/templates/service.yaml > helm/grafana.yaml

I applied a secret of username and passphrase in the istio-system namespace first.

Better way if installing Jaeger that’s working:

wget https://raw.githubusercontent.com/jaegertracing/jaeger-kubernetes/master/all-in-one/jaeger-all-in-one-template.yml -O jaeger-all-in-one-template.yaml

✗ cat kustomization.yaml
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
namespace: trace
resources:
- jaeger-ns.yaml
- jaeger-all-in-one-template.yaml
patchesStrategicMerge:
- jaeger-query-lb.yaml

✗ cat jaeger-query-lb.yaml
apiVersion: v1
kind: Service
metadata:
name: jaeger-query
spec:
type: ClusterIP
ports:
- port: 80
$patch: delete
- name: query-http
port: 16686
protocol: TCP
targetPort: 16686

✗ cat jaeger-ns.yaml

kind: Namespace
apiVersion: v1
metadata:
name: trace
labels:
app: jaeger

then kubectl apply -k .