Skip to content

Instrumentation : global environment variables not injected in SDK modeΒ #4559

@nlamirault

Description

@nlamirault

Component(s)

auto-instrumentation

What happened?

Description

We can't use auto-instrumentation in our applications, so we use the SDK mode:

  annotations:                                                                                                                                             β”‚
    instrumentation.opentelemetry.io/inject-sdk: opentelemetry/core

We would like to inject these environments variables:

  - name: OTEL_K8S_NODE_NAME
    valueFrom:
      fieldRef:
        fieldPath: spec.nodeName
  - name: OTEL_EXPORTER_OTLP_TRACES_ENDPOINT
    value: http://alloy-dev-alloy-traces.opentelemetry:4317
  - name: OTEL_EXPORTER_OTLP_TRACES_PROTOCOL
    value: grpc

But in the application, we have only these variables:

OTEL_RESOURCE_ATTRIBUTES_POD_NAME
OTEL_RESOURCE_ATTRIBUTES=deployment.environment.name=xxxx,k8s.container.name=xxxxx,k8s.deployment.name=xxxxx,k8s.namespace.name=xxxxx,k8s.node.name=ip-10-0-0-194.eu-west-1.compute.internal,k8s.pod.name=xxxxxx-75c4496b5f-dbz8r,k8s.replicaset.name=xxxxx-75c4496b5f,service.instance.id=fxxxxxx,service.namespace=xxxxx,service.version=xxxxx
OTEL_NODE_IP=10.0.0.194
OTEL_PROPAGATORS=tracecontext,baggage
OTEL_EXPORTER_OTLP_ENDPOINT=alloy-dev-alloy-gateway.opentelemetry.svc.cluster.local:4317
OTEL_TRACES_SAMPLER=parentbased_traceidratio
OTEL_SERVICE_NAME=xxxxxxx
OTEL_RESOURCE_ATTRIBUTES_NODE_NAME=ip-10-0-0-194.eu-west-1.compute.internal
OTEL_POD_IP=10.200.226.231

Steps to Reproduce

Create an Instrumentation:

apiVersion: opentelemetry.io/v1alpha1
kind: Instrumentation
metadata:
  name: core-nodejs
  namespace: opentelemetry
spec:
  apacheHttpd:
    configPath: /usr/local/apache2/conf
    image: ghcr.io/open-telemetry/opentelemetry-operator/autoinstrumentation-apache-httpd:1.0.4
    resourceRequirements:
      limits:
        cpu: 500m
        memory: 256Mi
      requests:
        cpu: 1m
        memory: 128Mi
    version: "2.4"
    volumeClaimTemplate:
      metadata: {}
      spec:
        resources: {}
  defaults: {}
  dotnet:
    image: ghcr.io/open-telemetry/opentelemetry-operator/autoinstrumentation-dotnet:1.2.0
    resourceRequirements:
      limits:
        cpu: 500m
        memory: 256Mi
      requests:
        cpu: 50m
        memory: 128Mi
    volumeClaimTemplate:
      metadata: {}
      spec:
        resources: {}
  env:
  - name: OTEL_K8S_NODE_NAME
    valueFrom:
      fieldRef:
        fieldPath: spec.nodeName
  - name: OTEL_EXPORTER_OTLP_TRACES_ENDPOINT
    value: http://alloy-dev-alloy-traces.opentelemetry:4317
  - name: OTEL_EXPORTER_OTLP_TRACES_PROTOCOL
    value: grpc
  exporter:
    endpoint: alloy-dev-alloy-gateway.opentelemetry.svc.cluster.local:4317
  go:
    image: ghcr.io/open-telemetry/opentelemetry-go-instrumentation/autoinstrumentation-go:v0.22.1
    resourceRequirements:
      limits:
        cpu: 500m
        memory: 256Mi
      requests:
        cpu: 50m
        memory: 64Mi
    volumeClaimTemplate:
      metadata: {}
      spec:
        resources: {}
  java:
    image: ghcr.io/open-telemetry/opentelemetry-operator/autoinstrumentation-java:1.33.6
    resources:
      limits:
        cpu: 500m
        memory: 256Mi
      requests:
        cpu: 50m
        memory: 64Mi
    volumeClaimTemplate:
      metadata: {}
      spec:
        resources: {}
  nginx:
    configFile: /etc/nginx/nginx.conf
    image: ghcr.io/open-telemetry/opentelemetry-operator/autoinstrumentation-apache-httpd:1.0.4
    resourceRequirements:
      limits:
        cpu: 500m
        memory: 256Mi
      requests:
        cpu: 1m
        memory: 128Mi
    volumeClaimTemplate:
      metadata: {}
      spec:
        resources: {}
  nodejs:
    env: []
    image: ghcr.io/open-telemetry/opentelemetry-operator/autoinstrumentation-nodejs:0.64.1
    resourceRequirements:
      limits:
        cpu: 500m
        memory: 256Mi
      requests:
        cpu: 50m
        memory: 128Mi
    volumeClaimTemplate:
      metadata: {}
      spec:
        resources: {}
  propagators:
  - tracecontext
  - baggage
  python:
    image: ghcr.io/open-telemetry/opentelemetry-operator/autoinstrumentation-python:0.59b0
    resourceRequirements:
      limits:
        cpu: 500m
        memory: 256Mi
      requests:
        cpu: 50m
        memory: 64Mi
    volumeClaimTemplate:
      metadata: {}
      spec:
        resources: {}
  resource: {}
  sampler:
    type: parentbased_traceidratio

Expected Result

Actual Result

Kubernetes Version

1.3.0

Operator version

0.140.0

Collector version

0.138.0

Environment information

No response

Log output

Additional context

No response

Tip

React with πŸ‘ to help prioritize this issue. Please use comments to provide useful context, avoiding +1 or me too, to help us triage it. Learn more here.

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions