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:
- Install Grafana and Jaeger from the Istio Helm chart, post Istio installation
- 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.
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 .