Skip to content

[Bug]: failed to get config: cannot unmarshal the configuration #2872

@Chaz6

Description

@Chaz6

What happened?

When running the example scenario described at https://github.com/jaegertracing/jaeger-operator/#jager-v2-operator the jaeger-inmemory-instance-collector pod fails with the following error:-

2025/04/14 09:46:16 application version: git-commit=, git-version=, build-date=
Error: failed to get config: cannot unmarshal the configuration: decoding failed due to the following error(s):

error decoding 'extensions': error reading configuration for "jaeger_query": decoding failed due to the following error(s):

'' has invalid keys: endpoint

Steps to reproduce

  1. Set up a Kubernetes cluster with minikube
  2. Follow the instructions at https://github.com/jaegertracing/jaeger-operator/#jager-v2-operator

Expected behavior

The jaeger-inmemory-instance-collector pod should be running.

Relevant log output

minikube start
# 😄  minikube v1.35.0 on Fedora 41                                                                                                                                             
# ✨  Using the kvm2 driver based on user configuration                                                                                                                         
# 👍  Starting "minikube" primary control-plane node in "minikube" cluster                                                                                                      
# 🔥  Creating kvm2 VM (CPUs=2, Memory=6000MB, Disk=20000MB) ...                                                                                                                
# 🐳  Preparing Kubernetes v1.32.0 on Docker 27.4.0 ...                                                                                                                         
#     ▪ Generating certificates and keys ...                                                                                                                                    
#     ▪ Booting up control plane ...
#     ▪ Configuring RBAC rules ...
# 🔗  Configuring bridge CNI (Container Networking Interface) ...
# 🔎  Verifying Kubernetes components...
#     ▪ Using image gcr.io/k8s-minikube/storage-provisioner:v5
# 🌟  Enabled addons: storage-provisioner, default-storageclass
# 
# 🏄  Done! kubectl is now configured to use "minikube" cluster and "default" namespace by default

minikube kubectl -- apply -f https://github.com/cert-manager/cert-manager/releases/download/v1.16.1/cert-manager.yaml
# namespace/cert-manager created
# customresourcedefinition.apiextensions.k8s.io/certificaterequests.cert-manager.io created
# customresourcedefinition.apiextensions.k8s.io/certificates.cert-manager.io created
# customresourcedefinition.apiextensions.k8s.io/challenges.acme.cert-manager.io created
# customresourcedefinition.apiextensions.k8s.io/clusterissuers.cert-manager.io created
# customresourcedefinition.apiextensions.k8s.io/issuers.cert-manager.io created
# customresourcedefinition.apiextensions.k8s.io/orders.acme.cert-manager.io created
# serviceaccount/cert-manager-cainjector created
# serviceaccount/cert-manager created
# serviceaccount/cert-manager-webhook created
# clusterrole.rbac.authorization.k8s.io/cert-manager-cainjector created
# clusterrole.rbac.authorization.k8s.io/cert-manager-controller-issuers created
# clusterrole.rbac.authorization.k8s.io/cert-manager-controller-clusterissuers created
# clusterrole.rbac.authorization.k8s.io/cert-manager-controller-certificates created
# clusterrole.rbac.authorization.k8s.io/cert-manager-controller-orders created
# clusterrole.rbac.authorization.k8s.io/cert-manager-controller-challenges created
# clusterrole.rbac.authorization.k8s.io/cert-manager-controller-ingress-shim created
# clusterrole.rbac.authorization.k8s.io/cert-manager-cluster-view created
# clusterrole.rbac.authorization.k8s.io/cert-manager-view created
# clusterrole.rbac.authorization.k8s.io/cert-manager-edit created
# clusterrole.rbac.authorization.k8s.io/cert-manager-controller-approve:cert-manager-io created
# clusterrole.rbac.authorization.k8s.io/cert-manager-controller-certificatesigningrequests created
# clusterrole.rbac.authorization.k8s.io/cert-manager-webhook:subjectaccessreviews created
# clusterrolebinding.rbac.authorization.k8s.io/cert-manager-cainjector created
# clusterrolebinding.rbac.authorization.k8s.io/cert-manager-controller-issuers created
# clusterrolebinding.rbac.authorization.k8s.io/cert-manager-controller-clusterissuers created
# clusterrolebinding.rbac.authorization.k8s.io/cert-manager-controller-certificates created
# clusterrolebinding.rbac.authorization.k8s.io/cert-manager-controller-orders created
# clusterrolebinding.rbac.authorization.k8s.io/cert-manager-controller-challenges created
# clusterrolebinding.rbac.authorization.k8s.io/cert-manager-controller-ingress-shim created
# clusterrolebinding.rbac.authorization.k8s.io/cert-manager-controller-approve:cert-manager-io created
# clusterrolebinding.rbac.authorization.k8s.io/cert-manager-controller-certificatesigningrequests created
# clusterrolebinding.rbac.authorization.k8s.io/cert-manager-webhook:subjectaccessreviews created
# role.rbac.authorization.k8s.io/cert-manager-cainjector:leaderelection created
# role.rbac.authorization.k8s.io/cert-manager:leaderelection created
# role.rbac.authorization.k8s.io/cert-manager-tokenrequest created
# role.rbac.authorization.k8s.io/cert-manager-webhook:dynamic-serving created
# rolebinding.rbac.authorization.k8s.io/cert-manager-cainjector:leaderelection created
# rolebinding.rbac.authorization.k8s.io/cert-manager:leaderelection created
# rolebinding.rbac.authorization.k8s.io/cert-manager-cert-manager-tokenrequest created
# rolebinding.rbac.authorization.k8s.io/cert-manager-webhook:dynamic-serving created
# service/cert-manager-cainjector created
# service/cert-manager created
# service/cert-manager-webhook created
# deployment.apps/cert-manager-cainjector created
# deployment.apps/cert-manager created
# deployment.apps/cert-manager-webhook created
# mutatingwebhookconfiguration.admissionregistration.k8s.io/cert-manager-webhook created
# validatingwebhookconfiguration.admissionregistration.k8s.io/cert-manager-webhook created

minikube kubectl -- apply -f https://github.com/open-telemetry/opentelemetry-operator/releases/latest/download/opentelemetry-operator.yaml
# namespace/opentelemetry-operator-system created
# customresourcedefinition.apiextensions.k8s.io/instrumentations.opentelemetry.io created
# customresourcedefinition.apiextensions.k8s.io/opampbridges.opentelemetry.io created
# customresourcedefinition.apiextensions.k8s.io/opentelemetrycollectors.opentelemetry.io created
# customresourcedefinition.apiextensions.k8s.io/targetallocators.opentelemetry.io created
# serviceaccount/opentelemetry-operator-controller-manager created
# role.rbac.authorization.k8s.io/opentelemetry-operator-leader-election-role created
# clusterrole.rbac.authorization.k8s.io/opentelemetry-operator-manager-role created
# clusterrole.rbac.authorization.k8s.io/opentelemetry-operator-metrics-reader created
# clusterrole.rbac.authorization.k8s.io/opentelemetry-operator-proxy-role created
# rolebinding.rbac.authorization.k8s.io/opentelemetry-operator-leader-election-rolebinding created
# clusterrolebinding.rbac.authorization.k8s.io/opentelemetry-operator-manager-rolebinding created
# clusterrolebinding.rbac.authorization.k8s.io/opentelemetry-operator-proxy-rolebinding created
# service/opentelemetry-operator-controller-manager-metrics-service created
# service/opentelemetry-operator-webhook-service created
# deployment.apps/opentelemetry-operator-controller-manager created

minikube kubectl -- apply -f - <<EOF
apiVersion: opentelemetry.io/v1beta1
kind: OpenTelemetryCollector
metadata:
  name: jaeger-inmemory-instance
spec:
  image: jaegertracing/jaeger:latest
  ports:
  - name: jaeger
    port: 16686
  config:
    service:
      extensions: [jaeger_storage, jaeger_query]
      pipelines:
        traces:
          receivers: [otlp]    
          exporters: [jaeger_storage_exporter]
    extensions:
      jaeger_query:
        storage:
          traces: memstore
      jaeger_storage:
        backends:
          memstore:
            memory:
              max_traces: 100000
    receivers:
      otlp:
        protocols:
          grpc:
            endpoint: 0.0.0.0:4317
          http:
            endpoint: 0.0.0.0:4318
    exporters:
      jaeger_storage_exporter:
        trace_storage: memstore
EOF

minikube kubectl -- get pods 
# NAME                                                 READY   STATUS   RESTARTS      AGE
# jaeger-inmemory-instance-collector-bdcdfcf98-2k4qz   0/1     Error    2 (23s ago)   27s

minikube kubectl -- logs jaeger-inmemory-instance-collector-bdcdfcf98-2k4qz
# 2025/04/14 09:46:16 application version: git-commit=, git-version=, build-date=
# Error: failed to get config: cannot unmarshal the configuration: decoding failed due to the following error(s):
# 
# error decoding 'extensions': error reading configuration for "jaeger_query": decoding failed due to the following error(s):
# 
# '' has invalid keys: endpoint

Screenshot

No response

Additional context

No response

Jaeger backend version

N/A

SDK

N/A

Pipeline

N/A

Stogage backend

N/A

Operating system

Linux

Deployment model

Kubernetes

Deployment configs

N/A

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions