-
Notifications
You must be signed in to change notification settings - Fork 4
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
fix: sending traces to Jaeger with minikube #11
Conversation
converted to draft...
Good part -> jaeger all in one inside minikube is working
Bad part -> now I'm not 100% sure if we should merge this pr.. |
@@ -44,6 +44,8 @@ Arguments (dict): | |||
value: parentbased_traceidratio | |||
- name: OTEL_TRACES_SAMPLER_ARG | |||
value: "0.1" | |||
- name: OTEL_EXPORTER_OTLP_ENDPOINT | |||
value: http://jaeger{{ .root.Values.appDomain }} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Ah great!
Can we introduce a new define
for this. Maybe in the endpoints. And allow overriding this default from the tracing
field/object in the values file?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
🤷
I have no idea what you are talking about 😁
enabling this ... apparently ... trustify-minikube -- can send to --> jaeger-minikube as I understood 'localhost' doesn't exist inside that environment [??] . but we end up with received message with invalid compression flag: 60 (valid flags are 0 and 1)
which apparently is a thing caused/handled by tonic
https://github.com/helio-frota/otel-actix-example/blob/main/src/otel.rs#L27 , and then:
- Why this is happening inside minikube?
- Why we can't see this compression error when sending traces from an app running outside minikube?
- What is the configuration difference from jaeger-all-in-one-minikube-1.53 and this https://github.com/helio-frota/otel-actix-example/blob/main/podman-compose.yml that may causing this problem ?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Ok, my proposal is, instead of hardcoding http://jaeger{{ .root.Values.appDomain }}
, we'd need some way to provide a link to the jaeger Service
(cluster internal) address, not necessarily the Ingress
(cluster external) address. Technically ingress works too, but that might mean all traffic goes through the external load balancer. Which is unnecessary.
If the jaeger instance is in the same namespace, something like http://jeager
(where jaeger
is the name of the Service
object) would work. If it is in a different k8s namespace, then we need something like http://<jaeger.><namespace>.svc.cluster.local
(where jaeger
is the Service
name, and namespace
the namespace).
However, if the instance is something completely different, we should support that as well. Meaning, allow the user to provide the full endpoint and just accept is as it. If we can provide a static default in the values files, helm already provides us with the override. So we should:
- Define a reasonable default in the values file, based on the setup of the infrastructure helm chart. e.g. in
.tracing.jaegerEndpoint
. - Allow the user to override that value through helm
In order to not hardcode this in every place, we should:
-
define
a template for this in e.g._tracing.tpl
: https://helm.sh/docs/chart_template_guide/named_templates/ - use that template instead of
http://jaeger{{ .root.Values.appDomain }}
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
you right, the pods are in the same namespace trustify
and we can't hardcode this http://jaeger
Thanks for the clarification 👍
When using this name
Got a different error message:
The previous error message:
And this the original issue message:
The default is a) merge this PR |
Apparently we can discard ubi9 native dependencies as this example works |
progress, update: Actually none of these worked https://github.com/helio-frota/otel-actix-example/blob/main/src/otel.rs#L26-L28 when I deploy on minikube and part of trustify namespace... And I got no |
This comment start to make sense to me: hyperium/tonic#1690
Seems that a) is handled by nginx without TLS. |
this worked, no I installed my example with
Based on the list bellow:
➜ otel-actix-example git:(main) ✗ kubectl get ingress
NAME CLASS HOSTS ADDRESS PORTS AGE
infra-jaeger-query nginx jaeger.192.168.39.237.nip.io 192.168.39.237 80 64s
➜ otel-actix-example git:(main) ✗ kubectl get svc
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
infra-jaeger-agent ClusterIP None <none> 5775/UDP,5778/TCP,6831/UDP,6832/UDP 110s
infra-jaeger-collector ClusterIP None <none> 9411/TCP,14250/TCP,14267/TCP,14268/TCP,4317/TCP,4318/TCP 110s
infra-jaeger-query ClusterIP None <none> 16686/TCP,16685/TCP 110s |
Converted to draft ... need to check this trustification/trustify#1181 first 👍 |
I'll close this ✌️ |
now getting the following:
received message with invalid compression flag: 60 (valid flags are 0 and 1)