How to connect Jaeger v2 to OpenSearch with self-signed certificates? #8050
-
|
Hi everyone! 👋I'm trying to deploy Jaeger v2 (Helm chart 4.4.7, app version 2.12.0) with OpenSearch storage, but I'm hitting TLS certificate verification errors and can't find a working configuration. The problemOpenSearch is running with a self-signed certificate that's valid for node-0.example.com and localhost, but not for the Kubernetes service name opensearch-cluster-master. When Jaeger tries to connect, it fails with: What I've Tried1. Adding TLS skip verification in userconfig:jaeger_storage:
backends:
primary_store:
opensearch:
server_urls: ["https://opensearch-cluster-master:9200"]
auth:
basic:
username: "admin"
password: "password"
tls:
insecure: true
insecure_skip_verify: trueResult: The tls block appears to be ignored - same error occurs. I created my configuration based on the values provided here https://github.com/jaegertracing/jaeger/blob/main/cmd/jaeger/config-opensearch.yaml Full Jaeger Configuration (click to expand)jaeger:
fullnameOverride: jaeger
jaeger:
image:
repository: jaeger
tag: 0.0.3
pullPolicy: Never
extraEnv:
- name: METRICS_BACKEND
value: "prometheus"
- name: PROMETHEUS_SERVER_URL
value: "http://prometheus-server:9090"
- name: PROMETHEUS_QUERY_NORMALIZE_CALLS
value: "true"
- name: PROMETHEUS_QUERY_NORMALIZE_DURATION
value: "true"
- name: QUERY_BASE_PATH
value: "/jaeger/ui"
resources:
limits:
memory: 400Mi
userconfig:
service:
extensions: [jaeger_storage, jaeger_query, healthcheckv2]
pipelines:
traces:
receivers: [otlp]
processors: [batch]
exporters: [jaeger_storage_exporter]
telemetry:
resource:
service.name: jaeger
metrics:
level: detailed
readers:
- pull:
exporter:
prometheus:
host: 0.0.0.0
port: 8888
extensions:
healthcheckv2:
use_v2: true
http:
endpoint: 0.0.0.0:13133
jaeger_query:
base_path: /jaeger
storage:
traces: primary_store
ui:
config_file: /etc/jaeger/ui-config.json
jaeger_storage:
backends:
primary_store:
opensearch:
server_urls: ["https://opensearch-cluster-master:9200"]
auth:
basic:
username: "admin"
password: "password"
receivers:
otlp:
protocols:
grpc:
endpoint: 0.0.0.0:4317
http:
endpoint: 0.0.0.0:4318
processors:
batch:
exporters:
jaeger_storage_exporter:
trace_storage: primary_store2. Using the ClusterIP directly:Result: Error changes to show certificate is valid for ::1, 127.0.0.1 but not the ClusterIP. 3. Using HTTP:Result: Connection refused (OpenSearch requires HTTPS). Related Issues
My Questions
Why This MattersInternal Kubernetes clusters commonly use self-signed certificates for services like OpenSearch/Elasticsearch. If Jaeger v2 doesn't support either:
Is this functionality planned?What's the expected timeline?Should I deploy Jaeger v1 (even though EOL) as a temporary solution?Any guidance would be really appreciated! |
Beta Was this translation helpful? Give feedback.
Replies: 1 comment
-
|
Hi @CptOrange16! I'm Dosu and I’m helping the jaeger team. I see a potential issue with your configuration. In Jaeger v2, the correct TLS field is Try this configuration: jaeger_storage:
backends:
primary_store:
opensearch:
server_urls: ["https://opensearch-cluster-master:9200"]
tls:
insecure: true # This is the correct field name
auth:
basic:
username: "admin"
password: "password"Note: Remove For production with CA certificates, the better approach is: tls:
insecure: false
ca_file: /path/to/ca-cert.pemYou'll need to mount your OpenSearch CA certificate into the Jaeger pod and reference the path. The Helm chart's lack of
One more thing to check: There's a known issue where To reply, just mention @dosu. How did I do? Good | Irrelevant | Incorrect | Verbose | Hallucination | Report 🐛 | Other |
Beta Was this translation helpful? Give feedback.
Hi @CptOrange16! I'm Dosu and I’m helping the jaeger team.
I see a potential issue with your configuration. In Jaeger v2, the correct TLS field is
insecure: true(notinsecure_skip_verify). Looking at the TLS handling code, wheninsecure: trueis set, it properly configuresInsecureSkipVerify: truein the Go TLS config.Try this configuration:
Note: Remove
insecure_skip_verify- it's not a valid fi…