Skip to content

Latest commit

Β 

History

History
2415 lines (1685 loc) Β· 154 KB

CHANGELOG.md

File metadata and controls

2415 lines (1685 loc) Β· 154 KB

Changes by Version

0.114.0

πŸ’‘ Enhancements πŸ’‘

  • collector: Create RBAC rules for the k8s_cluster receiver automatically. (#3427)

  • collector: Create RBAC rules for the k8sobjects receiver automatically. (#3429)

  • collector: Add a warning message when one created collector needs extra RBAC permissions and the service account doesn't have them. (#3432)

  • target allocator: Added allocation_fallback_strategy option as fallback strategy for per-node allocation strategy, can be enabled with feature flag operator.targetallocator.fallbackstrategy (#3477)

    If using per-node allocation strategy, targets that are not attached to a node will not be allocated. As the per-node strategy is required when running as a daemonset, it is not possible to assign some targets under a daemonset deployment. Feature flag operator.targetallocator.fallbackstrategy has been added and results in consistent-hashing being used as the fallback allocation strategy for "per-node" only at this time.

  • auto-instrumentation: updated node auto-instrumentation dependencies to the latest version (#3476)

    • auto-instrumentations-node to 0.53.0
    • exporter-metrics-otlp-grpc to 0.55.0
    • exporter-prometheus to 0.55.0
  • operator: Replace references to gcr.io/kubebuilder/kube-rbac-proxy with quay.io/brancz/kube-rbac-proxy (#3485)

🧰 Bug fixes 🧰

  • operator: Operator pod crashed if the Service Monitor for the operator metrics was created before by another operator pod. (#3446)

    Operator fails when the pod is restarted and the Service Monitor for operator metrics was already created by another operator pod. To fix this, the operator now sets the owner reference on the Service Monitor to itself and checks if the Service Monitor already exists.

  • auto-instrumentation: Bump base memory requirements for python and go (#3479)

Components

0.113.0

πŸ’‘ Enhancements πŸ’‘

  • operator: Programmatically create the ServiceMonitor for the operator metrics endpoint, ensuring correct namespace handling and dynamic configuration. (#3370) Previously, the ServiceMonitor was created statically from a manifest file, causing failures when the operator was deployed in a non-default namespace. This enhancement ensures automatic adjustment of the serverName and seamless metrics scraping.
  • collector: Create RBAC rules for the k8s_events receiver automatically. (#3420)
  • collector: Inject environment K8S_NODE_NAME environment variable for the Kubelet Stats Receiver. (#2779)
  • auto-instrumentation: add config for installing musl based auto-instrumentation for Python (#2264)
  • auto-instrumentation: Support http/json and http/protobuf via OTEL_EXPORTER_OTLP_PROTOCOL environment variable in addition to default grpc for exporting traces (#3412)
  • target allocator: enables support for pulling scrape config and probe CRDs in the target allocator (#1842)

🧰 Bug fixes 🧰

  • collector: Fix mutation of deployments, statefulsets, and daemonsets allowing to remove fields on update (#2947)

Components

0.112.0

πŸ’‘ Enhancements πŸ’‘

  • auto-instrumentation: Support configuring Java auto-instrumentation when runtime configuration is provided from configmap or secret. (#1814) This change allows users to configure JAVA_TOOL_OPTIONS in config map or secret when the name of the variable is defined in the pod spec. The operator in this case set another JAVA_TOOL_OPTIONS that references the original value e.g. JAVA_TOOL_OPTIONS=$(JAVA_TOOL_OPTIONS) -javaagent:/otel-auto-instrumentation-java/javaagent.jar.

  • auto-instrumentation: Adds VolumeClaimTemplate field to Instrumentation spec to enable user-definable ephemeral volumes for auto-instrumentation. (#3267)

  • collector: Add support for persistentVolumeClaimRetentionPolicy field (#3305)

  • auto-instrumentation: build musl based auto-instrumentation in Python docker image (#2264)

  • auto-instrumentation: An empty line should come before the addition of Include ...opentemetry_agent.conf, as a protection measure against cases of httpd.conf w/o a blank last line (#3401)

  • collector: Add automatic RBAC creation for the kubeletstats receiver. (#3155)

  • auto-instrumentation: Add Nodejs auto-instrumentation image builds for linux/s390x,linux/ppc64le. (#3322)

🧰 Bug fixes 🧰

  • target allocator: Permission check fixed for the serviceaccount of the target allocator (#3380)
  • target allocator: Change docker image to run as non-root (#3378)

Components

0.111.0

πŸ’‘ Enhancements πŸ’‘

  • auto-instrumentation: set OTEL_LOGS_EXPORTER env var to otlp in python instrumentation (#3330)

  • collector: Expose the Collector telemetry endpoint by default. (#3361)

    The collector v0.111.0 changes the default binding of the telemetry metrics endpoint from 0.0.0.0 to localhost. To avoid any disruption we fallback to 0.0.0.0:{PORT} as default address. Details can be found here: opentelemetry-collector#11251

  • auto-instrumentation: Add support for specifying exporter TLS certificates in auto-instrumentation. (#3338)

    Now Instrumentation CR supports specifying TLS certificates for exporter:

    spec:
      exporter:
        endpoint: https://otel-collector:4317
        tls:
          secretName: otel-tls-certs
          configMapName: otel-ca-bundle
          # otel-ca-bundle
          ca_file: ca.crt
          # present in otel-tls-certs
          cert_file: tls.crt
          # present in otel-tls-certs
          key_file: tls.key
  • collector: Add native sidecar injection behind a feature gate which is disabled by default. (#2376)

    Native sidecars are supported since Kubernetes version 1.28 and are availabe by default since 1.29. To use native sidecars on Kubernetes v1.28 make sure the "SidecarContainers" feature gate on kubernetes is enabled. If native sidecars are available, the operator can be advised to use them by adding the --feature-gates=operator.sidecarcontainers.native to the Operator args. In the future this may will become availabe as deployment mode on the Collector CR. See #3356

  • target allocator, collector: Enable mTLS between the TA and collector for passing secrets in the scrape_config securely (#1669)

    This change enables mTLS between the collector and the target allocator (requires cert-manager). This is necessary for passing secrets securely from the TA to the collector for scraping endpoints that have authentication. Use the operator.targetallocator.mtls to enable this feature. See the target allocator documentation for more details.

🧰 Bug fixes 🧰

  • collector-webhook: Fixed validation of stabilizationWindowSeconds in autoscaler behaviour (#3345)

    The validation of stabilizationWindowSeconds in the autoscaler.behaviour.scale[Up|Down] incorrectly rejected 0 as an invalid value. This has been fixed to ensure that the value is validated correctly (should be >=0 and <=3600) and the error messsage has been updated to reflect this.

Components

0.110.0

πŸ›‘ Breaking changes πŸ›‘

  • auto-instrumentation: Enable multi instrumentation by default. (#3090)

    Starting with this release, the OpenTelemetry Operator now enables multi-instrumentation by default. This enhancement allows instrumentation of multiple containers in a pod with language-specific configurations.

    Key Changes:

    • Single Instrumentation (Default Behavior): If no container names are specified using the instrumentation.opentelemetry.io/container-names annotation, instrumentation will be applied to the first container in the pod spec by default. This only applies when single instrumentation injection is configured.
    • Multi-Container Pods: In scenarios where different containers in a pod use distinct technologies, users must specify the container(s) for instrumentation using language-specific annotations. Without this specification, the default behavior may not work as expected for multi-container environments.

    Compatibility:

    • Users already utilizing the instrumentation.opentelemetry.io/container-names annotation do not need to take any action. Their existing setup will continue to function as before.
    • Important: Users who attempt to configure both instrumentation.opentelemetry.io/container-names and language-specific annotations (for multi-instrumentation) simultaneously will encounter an error, as this configuration is not supported.
  • collector: Remove ComponentUseLocalHostAsDefaultHost collector feature gate. (#3306)

    This change may break setups where receiver endpoints are not explicitly configured to listen on e.g. 0.0.0.0. Change #3333 attempts to address this issue for a known set of components. The operator performs the adjustment for the following receivers:

    • otlp
    • skywalking
    • jaeger
    • loki
    • opencensus
    • zipkin
    • tcplog
    • udplog
    • fluentforward
    • statsd
    • awsxray/UDP
    • carbon
    • collectd
    • sapm
    • signalfx
    • splunk_hec
    • wavefront

πŸ’‘ Enhancements πŸ’‘

  • auto-instrumentation, collector: Add a must gather utility to help troubleshoot (#3149)

    The new utility is available as part of a new container image.

    To use the image in a running OpenShift cluster, you need to run the following command:

    oc adm must-gather --image=ghcr.io/open-telemetry/opentelemetry-operator/must-gather -- /usr/bin/must-gather --operator-namespace opentelemetry-operator-system

    See the README for more details.

  • collector: set default address for all parsed receivers (#3126)

    This feature is enabled by default. It can be disabled by specifying --feature-gates=-operator.collector.default.config.

  • operator: Use 0.0.0.0 as otlp receiver default address (#3126)

  • collector: Add flag to disable components when operator runs on FIPS enabled cluster. (#3315) Flag --fips-disabled-components=receiver.otlp,exporter.otlp,processor.batch,extension.oidc can be used to disable components when operator runs on FIPS enabled cluster. The operator uses /proc/sys/crypto/fips_enabled to check if FIPS is enabled.

  • collector: Improves healthcheck parsing capabilities, allowing for future extensions to configure a healthcheck other than the v1 healthcheck extension. (#3184)

  • auto-instrumentation: Add support for k8s labels such as app.kubernetes.io/name for resource attributes (#3112)

    You can opt-in as follows:

    apiVersion: opentelemetry.io/v1alpha1
    kind: Instrumentation
    metadata:
      name: my-instrumentation
    spec:
      defaults:
        useLabelsForResourceAttributes: true

    The following labels are supported:

    • app.kubernetes.io/name becomes service.name
    • app.kubernetes.io/version becomes service.version
    • app.kubernetes.io/part-of becomes service.namespace
    • app.kubernetes.io/instance becomes service.instance.id

🧰 Bug fixes 🧰

  • auto-instrumentation: Fix ApacheHttpd, Nginx and SDK injectors to honour their container-names annotations. (#3313)

    This is a breaking change if anyone is accidentally using the enablement flag with container names for these 3 injectors.

Components

0.109.0

🚩 Deprecations 🚩

  • operator: Deprecated label flag and introduced labels-filter flag to align the label filtering with the attribute filtering flag name. The label flag will be removed when #3236 issue is resolved. (#3218)

πŸ’‘ Enhancements πŸ’‘

  • collector: adds test for memory utilization (#3283)
  • operator: Added reconciliation errors for webhook events. The webhooks run the manifest generators to check for any errors. (#2399)

Components

0.108.0

πŸ’‘ Enhancements πŸ’‘

  • auto-instrumentation: set OTEL_EXPORTER_OTLP_PROTOCOL instead of signal specific env vars in python instrumentation (#3165)
  • collector: Allow autoscaler targetCPUUtilization and TargetMemoryUtilization to be greater than 99 (#3258)
  • auto-instrumentation: Not ignore the instrumentation.opentelemetry.io/container-names annotation when the multi-instrumentation is enabled (#3090)
  • operator: Support for Kubernetes 1.31 version. (#3247)
  • target allocator: introduces the global field in the TA config to allow for setting scrape protocols (#3160)

🧰 Bug fixes 🧰

  • auto-instrumentation: Fix file copy for NGINX auto-instrumentation for non-root workloads. (#2726)

  • target allocator: Retrying failed namespace informer creation in promOperator CRD watcher, then exit if creation issue cannot be resolved (#3216)

  • target allocator: Rollback #3187 (#3242) This Rollsback 3187 which breaks TargetAllocator config for clusters with custom domains.

  • auto-instrumentation: Fixes a bug that was preventing auto instrumentation from getting correct images. (#3014) This PR removes the restriction on the operator to only upgrade manually applied CRDs. This meant that resources applied by helm were not upgraded at all. The solution was to remove the restriction we had on querying the label app.kubernetes.io/managed-by=opentelemetry-operator, thereby upgrading ALL CRDs in the cluster.

  • collector: Fixes a bug that was preventing upgrade patches from reliably applying. (#3074) A bug was discovered in the process of testing the PR that was failing to remove the environment variables introduced in the 0.104.0 upgrade. The fix was to take a deepcopy of the object and update that.

  • collector: Don't unnecessarily take ownership of PersistentVolumes and PersistentVolumeClaims (#3042)

  • awsxray-receiver: Switched the protocol of awsxray-receiver to UDP from TCP (#3261)

Components

0.107.0

πŸ’‘ Enhancements πŸ’‘

  • instrumentation: introduced ability to set Otel resource attributes based on annotations for instrumentation (#2181)

    resource.opentelemetry.io/your-key: "your-value"

🧰 Bug fixes 🧰

  • collector: Fix example for labels-filter startup parameter --label. (#3201)

Components

0.106.0

🧰 Bug fixes 🧰

  • collector: Fixes a bug where the operator would default the PDB in the wrong place. (#3198)
  • operator: The OpenShift dashboard shown namespaces where PodMonitors or ServiceMonitors were created even if they were not associated to OpenTelemetry Collectors. (#3196) Now, the dashboard lists only those namespaces where there are OpenTelemetry Collectors.
  • operator: When there were multiple OpenTelemetry Collector, the dashboard doesn't allow to select them individually. (#3189)
  • target allocator: Fix collector to target allocator connection in clusters with proxy. (#3187) On clusters with global proxy the collector might fail to talk to target allocator because the endpoint is set to <ta-service-name>:port and therefore it will go to proxy and request might be forwarded to internet. Clusters with proxy configure NO_PROXY to .svc.cluster.local so the calls to this endpoint will not go through the proxy.

Components

0.105.0

πŸ’‘ Enhancements πŸ’‘

  • collector: Create automatically an OpenShift dashboard to visualize OpenTelemetry Collector metrics (#2995) To enable this feature, you need to specify the --openshift-create-dashboard argument to the operator
  • bundle: Create an specific bundle for OpenShift environments. (#3054)
  • collector: Enabling ipFamilies and ipFamilyPolicy to be configured via OpenTelemetryCollector (#2958)
  • auto-instrumentation: Add Prometheus exporter to Python auto-instrumentation (#3122)
  • collector: Configmap, rbac, service, serviceaccount apply annotations-filter. (#3151)

🧰 Bug fixes 🧰

  • collector: Remove workaround for 0.104.0 that enabled feature-gate confmap.unifyEnvVarExpansion when Prometheus receiver was enabled. (#3142)
  • opamp: Fixes a bug where the collector was not being marshalled correctly by using a reference instead of a value. (#3171)
  • auto-instrumentation: Fixes a bug statefulSet wrong service.instance.id (#3157)

Components

0.104.0

πŸ›‘ Breaking changes πŸ›‘

  • opamp: Adds support for v1beta1 OpenTelemetry Collector API in the OpAMP Bridge (#2985) This change adds support for the OpAMP Bridge to manage and apply OpenTelemetry Collectors using the v1beta1 API in the OpAMP Bridge. This change removes support for applying OpenTelemetry Collectors using the v1alpha1 API version. The v1beta1 API is the latest version of the OpenTelemetry Collector API and is the recommended version for new deployments.

πŸ’‘ Enhancements πŸ’‘

  • collector: Since collector version 0.104.0 the collector listens on localhost instead of 0.0.0.0 by default (collector#8510). To avoid breaking changes the component.UseLocalHostAsDefaultHost feature-gate is disabled by the Operator. (#3119)
  • collector: Changes the default parser to silently fail. (#3133)
  • collector, target allocator: If the target allocator is enabled, the collector featuregate `confmap.unifyEnvVarExpansion' is disabled. (#3119)
  • operator: Release leader election lease on exit (#3058)
  • collector, target allocator, opamp: Enabling PodDnsConfig for OpenTelemetry Collector, TargetAllocator and OpAMPBridge. (#2658)
  • collector: Make the spec.mode field of the OpenTelemetryCollector Custom Resource (CR) immutable (#3055)
  • collector: Improves the performance of port and configuration parsing in the operator (#2603)

🧰 Bug fixes 🧰

  • collector: Fixes a bug where an exporter would cause a port collision (#3124)

  • collector: Fix deletion issue of otelcol CR by making spec.config.service.pipelines.processors optional (#3075) This change makes spec.config.service.pipelines.processors in OpenTelemetryCollector CRD optional, aligning with OTel Collector best practices. It resolves deletion issues by providing flexibility in CRD configuration, addressing conflicts between strict validation and practical uses. Note: Updating the opentelemetrycollectors.opentelemetry.io CRD resource is required.

  • collector: Allow annotations on service account to prevent infinite reconciliation on OpenShift and creating infinite pull secrets. (#3106) On OpenShift 4.16 the platform automatically adds an annotation openshift.io/internal-registry-pull-secret-ref: <simplest-collector-dockercfg-jwq66> to the service account which contains secret name with image pull secret.

Components

0.103.0

πŸ’‘ Enhancements πŸ’‘

  • collector, target allocator, opamp: Require Go 1.22 for building the operator (#2757)

🧰 Bug fixes 🧰

  • auto-instrumentation: Fix webserver instrumentation log file name (#2978)

    Since webserver instrumentation 1.0.4, the configuration log file has been renamed from appdynamics_sdk_log4cxx.xml.template to opentelemetry_sdk_log4cxx.xml.template. The operator upgraded the webserver instrumentation version but haven't change the configuration file name.

  • target-allocator: Fixes a bug that didn't automatically create a PDB for a TA with per-node strategy (#2900)

Components

0.102.0

πŸ’‘ Enhancements πŸ’‘

  • collector: Add usage metrics for the collector (#2829) This change will add metrics to the OpenTelemetry operator about how the collector is used in the cluster, it will add the following metrics to the opentelemetry-operator metrics endpoint
    opentelemetry_collector_receivers{collector_name="collector_name", namespace="ns", type="otlp"} 1
    opentelemetry_collector_exporters{collector_name="collector_name", namespace="ns", type="otlp"} 1
    opentelemetry_collector_processors{collector_name="collector_name", namespace="ns", type="otlp"} 1
    opentelemetry_collector_connectors{collector_name="collector_name", namespace="ns", type="myconnector"} 0
    opentelemetry_collector_info{collector_name="simplest",namespace="default", type="deployment"} 1
    

🧰 Bug fixes 🧰

  • collector: Fixes a bug that was preventing regexes from being loaded correctly. Now the filter provide is exactly what's used. (#3007) This is technically a breaking change if a user relied on the previously broken regex functionality. This change will actually fix their regex to work where it didn't before. I expect that users would rather their regexes work than break silently.
  • collector: Upgrades to 0.102.1 which resolves a CVE in the configgrpc package. See here for more details

Components

0.101.0

πŸ’‘ Enhancements πŸ’‘

  • operator: Support for Kubernetes 1.30 version. (#2881)
  • collector: Keep multiple previous versions of the Collector ConfigMap, configurable via the ConfigVersions field. (#2871) This change introduces a new field in the Collector ConfigMap, ConfigVersions, which allows users to specify the number of previous versions of the Collector ConfigMap to keep. The default value is 1, which means that the current and one previous version of the Collector ConfigMap are kept. By keeping historical versions of the configuration, we ensure that during a config upgrade the previous configuration is still available for running (non-upgraded) pods as well as for rollbacks. If we overwrite the original ConfigMap with the new configuration, any pod which restarts for any reason will get the new configuration, which makes rollouts impossible to control.
  • collector, target allocator, opamp: Introduces a new feature gate for operator.golang.flags to automatically add the environment variables for GOMAXPROCS and GOMEMLIMIT (#2919, #1456) A new featuregate operator.golang.flags is added. This featuregate will allow the operator to automatically set GOMAXPROCS and GOMEMLIMIT equal to the CPU and Memory limit provided respectively for the pod.

Components

0.100.1

πŸ’‘ Enhancements πŸ’‘

  • target allocator: Refactor allocation strategies (#2928) The performance of the per-node strategy was massively improved as part of this change.

🧰 Bug fixes 🧰

  • operator: Fixes an issue where the user can no longer set the webhook port (#2923)

Components

0.100.0

πŸ’‘ Enhancements πŸ’‘

  • opamp: Add healthy field at collector pool level in opamp bridge heartbeat (#2936)

  • collector: Add support for readinessProbe on OpenTelemetryCollector CRD. (#2943) Add support for readinessProbe on OpenTelemetryCollector and its default similar to the already supported livenessProbe.

  • operator: Enabling new Logs Enconder Configuration parameters. (#268)

  • operator: Automatically enable RBAC creation if operator SA can create clusterroles and bindings. --create-rbac-permissions flag is noop and deprecated now. (#2588)

  • target allocator: Added option for creating an mTLS-configured HTTPS server to fetch scrape config with real secret values. (#1669) The change introduces an option to create an additional HTTPS server with mTLS configuration. This server is specifically utilized for obtaining the scrape configuration with actual secret values.

🧰 Bug fixes 🧰

  • collector: Create a Service Monitor for the monitoring service and another one for the collector service when the Prometheus exporter is used. (#2877) Create a Service Monitor for the collector Service when Prometheus exporter is used. A different Service Monitor is created for the monitoring service. This helps excluding the headless service (duplicating the metrics collection) and splits responsibilities between the two Service Monitors. Now, the operator.opentelemetry.io/collector-service-type label is used to differentiate the services. operator.opentelemetry.io/collector-monitoring-service and operator.opentelemetry.io/collector-headless-service are deprecated now.

  • target-allocator: Fixed non-expected warnings on TA webhook. (#2685)

  • collector: Ensure all Prometheus CRDs are installed (#2964)

  • collector: Cleanup ClusterRoles and ClusterRoleBindings created by the operator (#2938) The operator uses finalizer on the collector to run the cleanup

  • collector: Use the k8snode detector instead of kubernetes for the automatic RBAC creation for the resourcedetector (#2833)

  • collector: When two Collectors are created with the same name but different namespaces, the ClusterRoleBinding created by the first will be overriden by the second one. (#2862)

  • collector: Fix to reflect changes of OpenTelemetryCollector.spec.nodeSelector in the collector Pods (#2940) When updating OpenTelemetryCollector.spec.nodeSelector it was not removing previous selector from the final collector pod (Deployment/Daemonset/Statefulset).

  • collector: Fix of Labels and Annotations filter (#2770)

  • target allocator: Fix target allocator readiness check (#2903)

Components

0.99.0

πŸ›‘ Breaking changes πŸ›‘

  • operator: change java instrumentation feature gate operator.autoinstrumentation.java into command line flag --enable-java-instrumentation (#2673, #2582)
  • operator: remove featuregate operator.autoinstrumentation.nodejs. Use command line flag --enable-nodejs-instrumentation instead (#2674)
  • operator: remove featuregate operator.autoinstrumentation.go. Use command line flag --enable-go-instrumentation instead (#2675)
  • target allocator: Remove operator.collector.rewritetargetallocator feature flag (#2796)
  • target allocator: Drop compatibility with older target allocator versions (#1907) We've made a breaking change to the target allocator configuration in 0.93.0. This change removes operator compatibility with target allocator versions older than that. Users running more recent target allocator versions are unaffected.

πŸš€ New components πŸš€

  • collector: Enable reconciliation of Collector v1beta1 CRD. See CRD changelog for detailed information. (#2620, #1907) Users are expected to migrate to otelcol.v1beta1.opentelemetry.io. The support for otelcol.v1alpha1.opentelemetry.io will be removed in the future. Follow migration guide for upgrading already created collector instances. After all otelcol.v1alpha1.opentelemetry.io are stored as v1beta1 update the collector CRD to store only v1beta1 kubectl patch customresourcedefinitions opentelemetrycollectors.opentelemetry.io --subresource='status' --type='merge' -p '{"status":{"storedVersions":["v1beta1"]}}'. Only AllNamespaces install mode is now supported due to the conversion webhook from v1beta1 to v1alpha1. See OLM docs and OLM operator groups docs.

πŸ’‘ Enhancements πŸ’‘

  • collector: Changes metric port logic to use intermediary struct. (#2603)
  • collector: Remove collector v1alpha1 defaulting and validating webhooks. (#2736) The functionality was moved to the collector v1beta1 webhooks.

🧰 Bug fixes 🧰

  • auto-instrumentation: Add attribute service.instance.id while pod is mutated. (#2679) service.instance.id is expected to be <namespace>.<podName>.<containerName>

    But while pod is created it may not have the podName yet at the podMutator webhooks.

    This changed to use the env var OTEL_RESOURCE_ATTRIBUTES_POD_NAME which will be present at runtime. <namespace>.$(OTEL_RESOURCE_ATTRIBUTES_POD_NAME).<containerName>

    Making a valid and complete value for service.instance.id to be added.

  • collector: Fixes a bug that would cause errant rollouts on a non-config related change. (#2899)

  • collector: resolves a bug that would create a junk selector for the service by merging rather than overriding. (#2873)

  • target allocator: Fix a metric relabel config unescaping bug (#2867) If only metric relabel configs were present, without target relabel configs, unescaping wouldn't be applied, leading to invalid Target Allocator configuration.

Components

0.98.0

πŸ’‘ Enhancements πŸ’‘

  • operator: Add support for adding/extending otc-collector container ports. (#2763)
  • auto-instrumentation: Support Java auto-instrumentation extensions. (#1785)

🧰 Bug fixes 🧰

  • target allocator: Fix for keepequal/dropequal action (#2793)
  • collector: Create automatically the RBAC permissions to manage replicasets when using the k8sattributesprocessor (#2823)
  • documentation: The description for some fields was truncated in the documentation. (#2563)

Components

0.97.1

🧰 Bug fixes 🧰

  • collector: Introduces ability to detect presence of Prometheus CRDs to dynamically add to scheme to prevent startup issues. (#2180)

Components

0.97.0

πŸ›‘ Breaking changes πŸ›‘

  • operator: change nginx instrumentation feature gate operator.autoinstrumentation.nginx into command line flag --enable-nginx-instrumentation (#2582, #2676)
  • operator: remove featuregate operator.autoinstrumentation.python. Use command line flag --enable-python-instrumentation instead (#2582, #2672)
  • target allocator: Promote operator.collector.rewritetargetallocator feature flag to stable (#2796)

πŸ’‘ Enhancements πŸ’‘

  • auto-instrumentation: Bump NodeJS autoinstrumentations dependency to a version that supports enabling selected instrumentations via environment variable. (#2622) See the documentation for details. Usage example: export OTEL_NODE_ENABLED_INSTRUMENTATIONS="http,nestjs-core".

  • auto-instrumentation: CronJob name propagated to the OTEL Service Name (#2716) When instrumenting a CronJob it would generate a Job and then a Pod. Previously it would use the Job name as the Service name, generating too many different services on each cron execution. This release fixed to collect the Job parent's name, if it has one.

  • instrumentation: Instrumentation now automatically add node and pod ips as env vars OTEL_NODE_IP and OTEL_POD_IP to instrumented containers. (#2769)

  • auto-instrumentation: Remove NodeJS autoinstrumentation dev dependencies to reduce image size (#2802)

  • instrumentation: Remove env var prefix validation (#2768)

🧰 Bug fixes 🧰

  • collector: Fix the RBAC resources creation when the processor was only enabled (#2788)
  • operator: Added missing label for Service/Pod Monitors (#2251)
  • instrumentation: Don't preserve ownership of files copied from the autoinstrumenation image. This avoids issues when instrumenting workloads running as non-root (#2655)
  • opamp bridge: Fix opamp bridge configmap "app.kubernetes.io/version" label to be generated in the same way as other resource version labels (#2583)

Components

0.96.0

πŸ›‘ Breaking changes πŸ›‘

  • operator: change dotnet instrumentation feature gate into command line flag --enable-dotnet-instrumentation (#2582, #2671)

πŸ’‘ Enhancements πŸ’‘

  • operator: Created ability to filter out Annotations (#2627)

🧰 Bug fixes 🧰

  • target allocator: Fix per-node target allocation for targets from endpointslices (#2718) The per-node target allocation strategy was not matching endpointslice entries for with a kind of Node, such as those for the kubelet metrics created by the prometheus operator
  • operator: Removes UPDATE from pod mutating admission webhook since it only needs to mutate on pod CREATE events. (#1514) The pod webhook currently modifies the pod spec in invalid ways on UPDATE events, and UPDATES are not necessary in the webhook.

Components

0.95.0

πŸ›‘ Breaking changes πŸ›‘

  • The operator now requires CRUD permissions for PersistentVolume and PersistentVolumeClaim. See #2575 for details. The official kustomize manifests and Helm Chart will include this change, otherwise it will need to be applied manually.
  • operator: remove featuregate EnableApacheHTTPAutoInstrumentationSupport. Use command line flag --enable-apache-httpd-instrumentation instead (#2582, #2670)
  • operator: change multi instrumentation feature gate into command line flag --enable-multi-instrumentation (#2582)

πŸ’‘ Enhancements πŸ’‘

  • operator: Allow for label selectors on the daemonset through update status (#2605)

🧰 Bug fixes 🧰

  • operator: propagate otel name label down to selector of ta resources (#2598)
  • operator: fixes an error in conversion from v1alpha1 to v1beta1 (#2689)
  • operator: Fixes a panic on exporter prometheus endpoint not valid (#2628)
  • operator: Fixed HPA deletion (#2568, #2587, #2651)

Components

0.94.0

πŸ’‘ Enhancements πŸ’‘

  • target allocator: Add new "per node" allocation strategy to target allocator. This strategy will allocate targets to nodes on which given target resides. It should only be used conjunction with the daemonset mode. (#1828)

🧰 Bug fixes 🧰

  • operator: Fixed handling of protocol in exposed ports. (#2619) Make distinction not only on the port number, but also on protocol. This fix allows to have multiple exposed ServicePorts with the same port number, but different protocols.

  • operator: Fixed handling of exposed port protocol in syslog, tcplog and udplog receivers. (#767, #2619) Please note that the operator currently exposes just one port (tcp or udp) of syslog receiver due to the current receiver implementation (patches are welcome).

  • operator: Fixing WATCH_NAMESPACE for a single namespace value (#2589)

Components

0.93.0

πŸ›‘ Breaking changes πŸ›‘

This version brings stable semantic convention for network and HTTP. It includes new metrics and attributes names.

  • target allocator: Use standard K8s label selectors for Prometheus CRs in target allocator config (#1907) This is a breaking change only for users of standalone target allocator. Operator users are unaffected. The operator is still compatible with previous target allocator versions, and will be for the next 3 releases.
  • target allocator: Use recommended interfaces(resource selector) by the prometheus-operator for watching CRs. (#2309) The target allocator now requires get/list/watch permissions for namespaces. Update your RBAC permissions for the attached role, if necessary.

πŸ’‘ Enhancements πŸ’‘

  • operator: Add SharedProcessNamespace capabilities to the OpenTelemetryCollector CRD (#2472)
  • opamp bridge: Added env variable parsing to opamp bridge config loading (#2577)
  • target allocator: Set the default filter strategy in the CRD (#2477)
  • operator, target allocator: Adding a feature flag to disable default prometheus annotations (#2554)

🧰 Bug fixes 🧰

  • operator: Fix annotations required by the OpenShift Operator Hub (#2557)

Components

0.92.1

πŸ’‘ Enhancements πŸ’‘

  • operator: Adds deployment rollout strategy to CRD fields (#2512)

🧰 Bug fixes 🧰

  • operator: Fix ClusterRole and ClusterRoleBinding reconciliation (#2525)

0.92.0

πŸ›‘ Breaking changes πŸ›‘

  • target allocator: Use standard K8s label selectors for collectors in target allocator config (#2422) This is a breaking change only for users of standalone target allocator. Operator users are unaffected. The operator is still compatible with previous target allocator versions, and will be for the next 3 releases.

  • target allocator: Use container securityContext for target allocator (#2490) This is really a bug fix, as the current behaviour is not intended. We've marked it as breaking in case anyone started depending on it.

πŸ’‘ Enhancements πŸ’‘

  • operator: Automate the creation of the permissions needed by the resourcedetection processor (#2393)
  • operator: Automate the creation of the permissions needed by the k8sattributes processor (#2395)
  • target allocator: Change default allocation and filtering strategy (#2477)
  • operator: Introduce common fields to the v1alpha2 types that can be reused for any CRDs. (#901)
  • target allocator: Use Pod securityContext for target allocator (#2495) Bring back PodSecurityContext as it was removed in the previous changes.
  • bridge: Sets pods in the component health map (#2489) this change adds a requirement for a new permission for the bridge to list and get pods.

Components

0.91.0

πŸ›‘ Breaking changes πŸ›‘

  • target allocator: Remove configuration hot reloading from target allocator (#2032) This only affects use of target allocator without the operator.

πŸ’‘ Enhancements πŸ’‘

  • target allocator: Create ServiceMonitor to monitor target allocator (#2311)
  • collector: Add Loki parser to extract loki service port from config (#1825)
  • operator: Bump Apache httpd version (#2463)
  • operator: Bump NodeJS dependencies. (#2459)
  • operator: Bump python autoinstrumentation version to 1.22.0/0.43b0 (#2460)
  • operator: Add version label to target allocator resources (#2454)
  • operator: Support for Kubernetes 1.29 version. (#2458)
  • target allocator: PDB support for target allocator (#2261)
  • operator: enables the operator to create subject access reviews for different required permissions.(#2426)

🧰 Bug fixes 🧰

  • target allocator: Fix ServiceAccount naming for target allocator (#2443)
  • operator: add missing appProtocol in opencensus receiver(#2487)

Components

0.90.0

πŸ’‘ Enhancements πŸ’‘

  • autoinstrumentation: Bump OpenTelemetry .NET Automatic Instrumentation to 1.2.0 (#2382)
  • operator: add liveness probe to target allocator deployment generation (#2258)
  • operator: added reconciliation errors for CRD events (#1972)
  • operator: removes the old way of running autodetection for openshift routes being available (#2108)
  • bridge: adds request headers to the opamp bridge config (#2410)
  • bridge: adds Headers to opamp bridge spec and configmap generation (#2410)
  • operator: Create PodMonitor when deploying collector in sidecar mode and Prometheus exporters are used. (#2306)
  • operator: add readiness probe to target allocator deployment generation (#2258)
  • target allocator: add readyz endpoint to TA (#2258)
  • target allocator: add target allocator securityContext configuration (#2397)
  • target allocator: Use only target address for allocation in consistent-hashing strategy (#2280)

🧰 Bug fixes 🧰

  • operator: fixes ability to do a foreground cascading delete (#2364)
  • operator: fix error logging in collector container creation (#2420)
  • operator: lifecycle spec removed from cloned initContainer (#2366)
  • operator: add missing pod in the rbac (#1679)
  • operator: check if service account specified in otelcol before creating service account resource for collectors (#2372)
  • target allocator: Save targets discovered before collector instances come up (#2350)

Components

0.89.0

πŸ›‘ Breaking changes πŸ›‘

  • autoinstrumentation: Bump Go auto instrumentation version to v0.8.0-alpha (#2358) The default export protocol was switched from grpc to http/proto
  • target allocator: Disable configuration hot reload (#2032) This feature can be re-enabled by passing the --reload-config flag to the target allocator. However, this is deprecated and will be removed in an upcoming release.

πŸ’‘ Enhancements πŸ’‘

  • target allocator: add healthcheck endpoint to TA (#2258)
  • OpAMP Bridge: Sends a heartbeat from the bridge and brings the annotation to spec. (#2132)
  • operator: Added updateStrategy for DaemonSet mode. (#2107)
  • operator: add target allocator affinity configuration (#2263)
  • Operator: Added the service.instance.id as the pod.UID into the traces resource Env. (#1921)
  • operator: Support configuring images via RELATEDIMAGE environment variables (#2326)
  • target allocator: Declare and use ContainerPort for Target Allocator (#2312)
  • target allocator: Add logging for prometheus operator in TargetAllocator's config generator (#2348)

🧰 Bug fixes 🧰

  • target allocator: Update file watcher to detect file write events (#2349)

  • target allocator: Run the target allocator as a non-root user (#738) Some Kubernetes configurations do not allow running images as root, so provide a non-zero UID in the Docker image.

  • operator: Truncate sidecar.opentelemetry.io/injected sidecar pod label to 63 characters (#1031)

Components

0.88.0

πŸ›‘ Breaking changes πŸ›‘

  • OpAMP Bridge: Currently, the bridge doesn't adhere to the spec for the naming structure. This changes the bridge to use the / structure as described. (#2131)
    • Updates the bridge to get collectors using the reporting annotation
    • Fixes a bug where we were using the incorrect structure for the collectors

πŸ’‘ Enhancements πŸ’‘

  • operator-opamp-bridge: Creates the CRD for the OpAMPBridge resource (#1368)
  • autoinstrumentation: Bump OpenTelemetry .NET Automatic Instrumentation to 1.1.0 (#2252)
  • operator: Bump NodeJS dependencies. Also, increase the size of the default size for the volume used to copy the autoinstrumentation libraries from 150M to 200M (#2240, #2237)

🧰 Bug fixes 🧰

  • Operator: Fixed the labeling process which was broken at the moment to capture the current image tag when the users set the sha256 reference. (#1982)
  • target allocator: reset kubeconfig to empty string when using in-cluster config (#2262)

Components

0.87.0

πŸ›‘ Breaking changes πŸ›‘

  • OpAMP Bridge: This PR simplifies the bridge's configuration and logging by renaming and removing fields. (#1368) components_allowed => componentsAllowed ❌ protocol which is now inferred from endpoint capabilities []string => map[Capability]bool for enhanced configuration validation
  • operator: Enable Target Allocator Rewrite by default (#2208) See the documentation for details. Use the --feature-gates=-operator.collector.rewritetargetallocator command line option to switch back to the old behaviour.

πŸ’‘ Enhancements πŸ’‘

  • operator: updating the operator to use the Collector's debug exporter in replacement of the deprecated logging exporter (#2130)
  • operator: Publish operator images for I IBM P/Z (linux/s390x,linux/ppc64le) architectures. (#2215)
  • Documentation: Add diagrams to Target Allocator Readme. (#2229)
  • target allocator: Add rate limiting for scrape config updates (#1544)

🧰 Bug fixes 🧰

  • operator: Set the security context for the init containers of the Apache HTTPD instrumentation (#2050)

Components

0.86.0

πŸ›‘ Breaking changes πŸ›‘

  • operator: Get rid of autoscaling/v2beta2 (#2145) Kubernetes 1.23 is the minimum available version everywhere after 1.22 deprecation, due to it, the minimum required version has been updated to it, dropping support for autoscaling/v2beta2

πŸ’‘ Enhancements πŸ’‘

  • operator: Add support for multi instrumentation (#1717)
  • operator: Implementation of new Nginx autoinstrumentation. (#2033)
  • operator: Add PDB support for OpenTelemetryCollector (#2136) This PR adds support for PodDisruptionBudgets when OpenTelemetryCollector is deployed as deployment or statefulset.
  • operator: Add support for Tolerations on target allocator (#2172)
  • autoinstrumentation: Bump OpenTelemetry .NET Automatic Instrumentation to 1.0.2 (#2168)
  • target allocator: Enable discovery manager metrics in target allocator (#2170)
  • target allocator: Allow target allocator to be completely configured via the config file (#2129)
  • operator: Propagate proxy environment variables to operands. (#2146)
  • autoinstrumentation: Bump python autoinstrumentation version to 1.20.0/0.41b0 (#2192)

🧰 Bug fixes 🧰

  • autoinstrumentation: Fix .NET Automatic Instrumentation for alpine based images configured by namespace annotations (#2179)
  • operator: fixes scenario where an old CRD would cause the operator to default to an unmanaged state (#2039)
  • target allocator: Rebuild targets on scrape config regex-only changes (#1358, #1926)

Components

0.85.0

πŸ’‘ Enhancements πŸ’‘

  • autoinstrumentation: .NET Automatic Instrumentation support for Alpine-based images (#1849)
  • operator: Allow the collector CRD to specify a list of configmaps to mount (#1819)
  • autoinstrumentation: Bump Go auto-instrumentation support to v0.3.0-alpha. (#2123)
  • operator: Introduces a new method of reconciliation to reduce duplication and complexity (#1959)

🧰 Bug fixes 🧰

  • operator: Run the upgrade mechanism when there is a change in an instance to ensure it is upgraded. This is useful for cases where the instance uses the unmanaged state, the operator is upgraded and the instance changes to use a managed state. (#1890)

Components

0.84.0

πŸ’‘ Enhancements πŸ’‘

  • autoinstrumentation: Bump dotnet instrumentation version to 1.0.0 (#2096)
  • operator: Remove default cpu and mem requests and limits from target allocator to match otel-collector behaviour (#1914) To preserve the old behaviour for the case when the requests/limits were not explicitely set during the deployment, make sure to set the requests/limits of 100m/200m for CPU and 250Mi/500Mi for memory.
  • operator: Create ServiceMonitors when the Prometheus exporters are used. (#1963)
  • operator: Run end-to-end tests on Kubernetes 1.28 (#2047)
  • operator: Limit auto-instrumentation emptydir volume size (#2044)
  • operator: Make OpenShift routes work with missing hostname (#2074) If the Ingress hostname is not specified OpenShift route hostname is set to <port-name>-<otel-cr-name>-route-<otel-cr-namespace>-basedomain.

🧰 Bug fixes 🧰

  • operator: Avoid running the auto-instrumentation pod mutator for pods already auto-instrumented (#1366)
  • autoinstrumentation: Allow the usage of the Apache HTTPD autoinstrumentation to be run as non-root user. Change the files permission to allow their copy from a non-root user. (#2068)
  • operator: Fixes reconciling otel-collector service's internal traffic policy changes. (#2061)
  • operator: Make OpenShift Route work with gRPC receivers by using h2c appProtocol (#1969)

Components

0.83.0

πŸ›‘ Breaking changes πŸ›‘

  • operator: Make sure OTLP export can report data to OTLP ingress/route without additional configuration (#1967) The ingress can be configured to create a single host with multiple paths or multiple hosts with subdomains (one per receiver port). The path from OpenShift route was removed. The port names are truncate to 15 characters. Users with custom receivers which create ports with longer name might need to update their configuration.

πŸ’‘ Enhancements πŸ’‘

  • operator: Add AdditionalContainers to the collector spec allowing to configure sidecar containers. This only applies to Deployment/StatefulSet/DeamonSet deployment modes of the collector. (#1987)
  • operator: Add flag to enable support for the pprof server in the operator. (#1997)
  • operator: Set the level 4 of capabilities in the CSV for the OpenTelemetry Operator. (#2002)
  • autoinstrumentation: Bump OpenTelemetry .NET Automatic Instrumentation to 1.0.0-rc.2 (#2030)
  • operator: Use scratch as the base image for operator (#2011)
  • operator: Bump Golang to 1.21 (#2009)
  • operator: Daemonsets can be instrumented so the generated servicename should use their name for better discoverability (#2015)

🧰 Bug fixes 🧰

  • operator: fixes bug introduced in v0.82.0 where Prometheus exporters weren't being generated correctly (#2016)

Components

0.82.0

πŸ›‘ Breaking changes πŸ›‘

  • operator: Remove legacy OTLP HTTP port (#1954)

πŸ’‘ Enhancements πŸ’‘

  • operator: Expose the Prometheus exporter port in the OpenTelemetry Collector container when it is used in the configuration. (#1689)
  • operator: Add the ability to the operator to create Service Monitors for the OpenTelemetry Collectors in order to gather the metrics they are generating (#1768)
  • target allocator: Add support for environment variables in target allocator config. (#1773)
  • operator: Add a GitHub Actions Workflow to build and publish the operator bundle images (#1879)
  • operator: Add a new field called managementState in the OpenTelemetry Collector CRD. (#1881)
  • operator: When an user specifies the monitoring port for their collector in the configuration, the monitoring service uses that port. (#1931)
  • operator: Add support for TopologySpreadConstraints & nodeSelector on collector and target allocator (#1899)
  • autoinstrumentation: Bump dotnet dependency to 1.0.0-rc.1 (#1978)
  • autoinstrumentation: Bump opentelemetry-go-instrumentation image to v0.2.2-alpha (#1915)
  • autoinstrumentation: Bumps java autoinstrumentation version to 1.28.0 (#1918)
  • autoinstrumentaion: Bump NodeJS dependencies to 1.15.1/0.41.1 (#1977)
  • autoinstrumentation: Bump python packages to 1.19.0/0.40b0 (#1930)
  • target allocator: Restart target allocator when its configuration changes (#1882)
  • target allocator: Make the Target Allocator default scrape interval for Prometheus CRs configurable (#1925) Note that this only works for Prometheus CRs, raw Prometheus configuration from the receiver uses its own settings.
  • operator: Set securityContext on injected initContainer based on existing containers. (#1084, #1058)
  • Documentation: Update OTel Operator and Target Allocator readmes. (#1952)

🧰 Bug fixes 🧰

  • operator: Fix port name matching between ingress/route and service. All ports are truncated to 15 characters. If the port name is longer it is changed to port-%d pattern. (#1954)
  • operator: Fix for issue #1893 (#1905)

Components

0.81.0

πŸ’‘ Enhancements πŸ’‘

  • operator: Create index image to be used as a Catalog. (#1823)

🧰 Bug fixes 🧰

  • operator: Fix .sampler.type being incorrectly required for Instrumentation (#1886)
  • receivers: Skip service port for scraper receivers (#1866)

Components

0.80.0

πŸ’‘ Enhancements πŸ’‘

  • collector: Add Skywalking parser to extract skywalking service port from config (#1634)
  • target allocator: Only admit configurations where Target Allocator actually has targets (#1859)
  • target allocator: Populate credentials for Prometheus CR (service and pod monitor) scrape configs. (#1669)
  • collector: Adds ability to set init containers for collector (#1684)
  • operator: Adding more tests to validate existence of init containers. (#1826)
  • operator: For Apache HTTPD instrumentation, use latest instrumentation library v1.0.3. (#1827)
  • autoinstrumentation/nodejs: Bump python packages to 1.14.0/0.40.0 (#1790)
  • samplers: Add ParentBasedJaegerRemote sampler & validate argument (#1801)
  • operator: Operator-sdk upgrade to v1.29.0 (#1755)

🧰 Bug fixes 🧰

  • operator: Fix for #1820 and #1821 plus added covering unit tests. (#1847)
  • operator: Fix the upgrade mechanism to not crash when one OTEL Collector instance uses the old approach to set the autoscaler. (#1799)
  • target allocator: Fix the empty global scrape interval in Prometheus CR watcher, which causes configuration unmarshalling to fail. (#1811)

πŸš€ New components πŸš€

  • operator: Instrumentation crd for Nginx auto-instrumentation. (#1853)

Components

0.79.0

πŸ’‘ Enhancements πŸ’‘

  • nodejs autoinstrumentation: Prometheus metric exporter support for nodejs autoinstrumentation (#1798)
  • operator: Add service version injection (#1670) Adds the ability to inject the service version into the environment of the instrumented application.
  • operator: Added readyReplicas field to the status section and added Current,Desired and Image to the get operation. (#1355)

🧰 Bug fixes 🧰

  • operator: The OpenTelemetry Collector version is not shown properly in the status field if no upgrade routines are performed. (#1802)

Components

0.78.0

πŸ’‘ Enhancements πŸ’‘

  • autoinstrumentaiton/nodejs: Bump js packages to latest versions (#1791)
  • autoinstrumentation/python: Bump python packages to 1.18.0/0.39b0 (#1790)
  • operator: Added all webhook instrumentation logic, e2e tests, readme (#1444)
  • Autoscaler: Support scaling on Pod custom metrics. (#1560)
  • targetallocator: Set resource requests/limits for TargetAllocator (#1103)
  • operator: provide default resource limits for go sidecar container (#1732)
  • operator: Propagate Metadata.Annotations to PodSpec.Annotations (#900)
  • operator: Improve config validation for prometheus receiver and target allocator (#1581)

🧰 Bug fixes 🧰

  • operator: fixes a previously undocumented behavior that a collector could not override the collector's app name (#1777)
  • operator: Fix issue where the operator's released image did not correctly set the default go auto-instrumentation version (#1757)
  • pkg/collector, pkg/targetallocator: fix issues related to prometheus relabel configs when target allocator is enabled (#958, #1622, #1623)

Components

0.77.0

πŸ’‘ Enhancements πŸ’‘

  • operator: Add support for Go auto instrumentation (#1555)
  • operator: Add liveness probe configs (#760)
  • operator: set default resource limits for instrumentation init containers (#1407)
  • github actions: Publish image to dockerhub too (#1708)
  • instrumentation: Bump Go Instrumentation image from v0.2.0-alpha to v0.2.1-alpha (#1740)

🧰 Bug fixes 🧰

  • operator: fixes a bug where setting the http_sd_config would crash the configmap replacement. (#1742)

Components

0.76.1

πŸ’‘ Enhancements πŸ’‘

  • operator: add support for lifecycle hooks and terminationGracePeriodSeconds in collector spec. (#1618)

  • autoinstrumentation: Bump OpenTelemetry .NET Automatic Instrumentation to 0.7.0 (#1672)

  • autoinstrumentation: Bump nodejs dependencies to latest versions (#1682)

  • pkg/instrumentation: Add dotnet instrumentation capability behind a feature gate which is enabled by default. (#1629)

  • operator: Add ability to use feature gates in the operator (#1619)

  • autoinstrumentation: Add metrics exporter to Node.JS autoinstrumentation (#1627)

  • autoinstrumentation: Bump nodejs dependencies to latest versions (#1626)

  • pkg/instrumentation: Add java instrumentation capability behind a feature gate which is enabled by default. (#1695)

  • pkg/instrumentation: Add nodejs instrumentation capability behind a feature gate which is enabled by default. (#1697)

  • operator: Introduces a new feature flag "operator.collector.rewritetargetallocator" that allows an operator to add the target_allocator configuration to the collector configuration (#1581) Note that the ConfigToPromConfig function in pkg/targetallocator/adapters now correctly returns the prometheus receiver config in accordance with its docstring. It used to erroneously return the actual Prometheus config from a level lower.

  • pkg/instrumentation: Add python instrumentation capability behind a feature gate which is enabled by default. (#1696)

🧰 Bug fixes 🧰

  • target allocator: fix updating scrape configs (#1415)

Components

0.75.0

πŸ’‘ Enhancements πŸ’‘

  • operator: Add ability to use feature gates in the operator (#1619)
  • autoinstrumentation: Add metrics exporter to Node.JS autoinstrumentation (#1627)
  • autoinstrumentation: Bump nodejs dependencies to latest versions (#1626)
  • autoinstrumentation: Bump python dependencies to latest versions (#1640)

Components

0.74.0

Components

0.73.0

πŸ’‘ Enhancements πŸ’‘

  • target allocator: Use jsoniter to marshal json (#1336)

Components

0.72.0

πŸ›‘ Breaking changes πŸ›‘

  • operator: Fixes inability of the operator to reconcile in stateful set mode when the immutable field volumeClaimTemplates is changed. If such change is detected, the operator will recreate the stateful set. (#1491)

πŸ’‘ Enhancements πŸ’‘

  • operator: Bump OpenTelemetry .NET Automatic Instrumentation to 0.6.0 (#1538)
  • operator: Bump Kubernetes golang dependencies to 1.26.x (#1385)
  • operator: Build operator, target-allocator and opAMP bridge with golang 1.20. (#1566)

🧰 Bug fixes 🧰

  • Autoscaler: Fix the issue where HPA fails to update when an additional metric is added to the spec. (#1439)
  • operator: The args created for corev1.container object is not ordered and creates a situation where there is a diff detected during reconcile. Forces an ordered args. (#1460)
  • Autoscaler: Fix the issue where HPA fails to update autoscaler behavior. (#1516)
  • operator: Set ServiceInternalTrafficPolicy`` to Local` when using daemonset mode. (#1401)

Components


πŸ›‘ Breaking changes πŸ›‘

  • target allocator: Updates versions of many dependencies, sets defaults for prometheus operator to work. The breaking change introduced is the new RBAC requirement for "endpointslices" in the "discovery.k8s.io" api group. (#1464)

🧰 Bug fixes 🧰

  • target allocator: Properly handle all types of profiles in the pprof endpoint. Previously, some profiles where unavailable, leading to 404 response. (#1478)

    0.70.0


πŸ’‘ Enhancements πŸ’‘

  • target allocator: Save the scrape config response in the HTTP server upon relevant config change, instead of building it on every handler call. At the same time, this avoids data race when accessing the scrape configs map. (#1359)
  • target allocator: Configure gin router to be used in release mode and do not use the default logging middleware which is noisy and not formatted properly. (#1352)
  • github action: This PR adds github action for publishing the Operator OpAMP Bridge container image to Github Container Registry. (#1369)
  • operator: Add Operator-OpAMP-Bridge version info to Operator (#1455)

🧰 Bug fixes 🧰

  • statsd-receiver: Switched the protocol of statsd-receiver to UDP from TCP (#1476)

Components


🚩 Deprecations 🚩

  • target allocator: Replace deprecated gorilla/mux dependency with gin (#1383, @matej-g)

πŸ’‘ Enhancements πŸ’‘

🧰 Bug fixes 🧰

Components


🚩 Deprecations 🚩

πŸš€ New components πŸš€

πŸ’‘ Enhancements πŸ’‘

  • instrumentation/python: Update default python exporters to use OTLP. (#1328, @TylerHelmuth)
  • target-allocator: Change the github action to match the operator. (#1347, @jaronoff97)

🧰 Bug fixes 🧰

  • operator: Missing resource from OpenShift Routes prevents them to be deployed in OpenShift clusters.(#1337, @iblancasa)
  • target allocator: Refactor the target allocator build to not run it as root. (#1345, @iblancasa)

OpenTelemetry Collector and Contrib


πŸš€ New components πŸš€

πŸ’‘ Enhancements πŸ’‘

OpenTelemetry Collector and Contrib


πŸš€ New components πŸš€

πŸ’‘ Enhancements πŸ’‘

  • Update the javaagent version to 1.20.2 (#1212)
  • Bump OTel .NET AutoInstrumentation to 0.5.0 (#1276, @pellared)

🧰 Bug fixes 🧰

  • Fix bug found when using relabel-config filterStrategy with serviceMonitors (#1232, @moh-osman3)

OpenTelemetry Collector and Contrib


πŸš€ New components πŸš€

πŸ’‘ Enhancements πŸ’‘

  • Only create ServiceAccounts if existing ServiceAccount is not specified (#1246, @csquire)
  • feat(otel-allocator): use type for AllocationStrategy (#1220, @secustor)
  • fix min tls setting for webhook server (#1225) (#1230, @kangsheng89)
  • Bump OTel python versions to 1.14.0 and 0.35b0 (#1227, @vainikkaj)
  • Trim unnecessary otelcol operator verbs (#1222, @Allex1)
  • decrease autoscaling version detection log verbosity (#1212, @frzifus)

🧰 Bug fixes 🧰

  • None

OpenTelemetry Collector and Contrib


πŸš€ New components πŸš€

  • None

πŸ’‘ Enhancements πŸ’‘

  • None

🧰 Bug fixes 🧰

  • None

OpenTelemetry Collector and Contrib


πŸš€ New components πŸš€

πŸ’‘ Enhancements πŸ’‘

🧰 Bug fixes 🧰

  • Fix panic if maxreplicas is set but autoscale is not defined in the CR (#1201, @kevinearls)

OpenTelemetry Collector and Contrib


❌ Breaking Changes ❌

  • Jaeger receiver no longer supports remote sampling. To be able to perform an update, it must be deactivated or replaced by a configuration of the jaegerremotesampling extension. It is important that the jaegerremotesampling extension and the jaegerreceiver do not use the same port. To increase the collector version afterwards, the update must be triggered again by restarting the operator. Alternatively, the OpenTelemetryCollector CRD can be re-created. (otel-contrib#14707)

πŸš€ New components πŸš€

πŸ’‘ Enhancements πŸ’‘

🧰 Bug fixes 🧰

OpenTelemetry Collector and Contrib


πŸš€ New components πŸš€

πŸ’‘ Enhancements πŸ’‘

  • Expose Horizontal Pod Autoscaler Behavior and add hpa scaledown test (#1077, @kevinearls)
  • Utilize .NET AutoInstrumentation docker image v.0.3.1-beta.1 (#1091, @Kielek)
  • Update the javaagent version to 1.18.0 (#1096, @opentelemetrybot)
  • Update GetAllTargetsByCollectorAndJob to use TargetItem hash (#1086, @kelseyma)
  • Upgrade kind images and add testing for Kubernetes 1.25 (#1078, @iblancasa)
  • Bump .NET OTel AutoInstrumentation to 0.3.1-beta.1 (#1085, @Kielek)
  • Make sure we return the right version when autoscaling v2 is found (#1075, @kevinearls)
  • Add retry loop for client.get of replicaset as that sometimes fails (#1072, @kevinearls)

OpenTelemetry Collector and Contrib


πŸ’‘ Enhancements πŸ’‘

🧰 Bug fixes 🧰

  • adds dotnet-auto-instrumentation image version env variable to the operator publish workflow (#1060, @avadhut123pisal)

OpenTelemetry Collector and Contrib


🧰 Bug fixes 🧰

OpenTelemetry Collector and Contrib


πŸš€ New components πŸš€

πŸ’‘ Enhancements πŸ’‘

🧰 Bug fixes 🧰

  • Resolve bug where TA doesn't allocate all targets (#1039, @jaronoff97)
  • Fix the issue that target-level metadata labels were missing (#948) (#949, @CoderPoet)

OpenTelemetry Collector and Contrib


πŸ’‘ Enhancements πŸ’‘

OpenTelemetry Collector and Contrib


🧰 Bug fixes 🧰

πŸ’‘ Enhancements πŸ’‘

OpenTelemetry Collector and Contrib


🧰 Bug fixes 🧰

OpenTelemetry Collector and Contrib


πŸ’‘ Enhancements πŸ’‘

OpenTelemetry Collector and Contrib


πŸš€ New components πŸš€

πŸ’‘ Enhancements πŸ’‘

🧰 Bug fixes 🧰

OpenTelemetry Collector and Contrib


πŸš€ New components πŸš€

  • Choose target container injection with annotation (#689, @fscellos)
  • Fix K8s attributes values in OTEL_RESOURCE_ATTRIBUTES env var (#864, @mat-rumian)

πŸ’‘ Enhancements πŸ’‘

🧰 Bug fixes 🧰

OpenTelemetry Collector and Contrib


πŸš€ New components πŸš€

  • Add resource attributes to collector sidecar (#832, @rubenvp8510)
  • Create serving certs for headless services on OpenShift (#818) (#824, @rkukura)
  • [targetallocator] PrometheusOperator CRD MVC (#653, @secustor)

πŸ’‘ Enhancements πŸ’‘

🧰 Bug fixes 🧰

OpenTelemetry Collector and Contrib


πŸš€ New components πŸš€

  • Including new label (#797, @yuriolisa)
  • Add scale subresource status to the OpenTelemetryCollector CRD status (#785, @secat)

πŸ’‘ Enhancements πŸ’‘

🧰 Bug fixes 🧰

OpenTelemetry Collector and Contrib


  • Bumped OpenTelemetry Collector to v0.48.0
  • Filter out unneeded labels (#606, @ekarlso)
  • add labels in order to make selectors unique (#796, @davidkarlsen)

OpenTelemetry Collector and Contrib


  • Bumped OpenTelemetry Collector to v0.47.0
  • doc: customized auto-instrumentation (#762, @cuichenli)
  • Remove v prefix from the container image version/tag (#771, @pavolloffay)

OpenTelemetry Collector and Contrib


  • Bumped OpenTelemetry Collector to v0.46.0
  • add autoscale option to enable support for Horizontal Pod Autoscaling (#746, @binjip978)
  • chore(nodejs): bump auto-instrumentations (#763, @mat-rumian)
  • Make operator more resiliant to etcd defrag activity (#742, @pavolloffay)

OpenTelemetry Collector and Contrib


  • Bumped OpenTelemetry Collector to v0.45.0

  • Match pod dnsPolicy to hostNetwork config (#691, @gai6948)

  • Change container image USER to UID (#738, @kraman)

  • Use OTEL collector image from GHCR (#732, @pavolloffay)

    0.44.0





  • Add support for nodejs and python image defaulting and upgrade (#607, @pavolloffay)

  • Bugfix for kubeletstats receiver operator is exposing the service port, ignore port exposition as it is a scraper (#558, @mritunjaysharma394)

    0.41.0



  • Bumped OpenTelemetry Collector to v0.40.0

  • Support K8s liveness probe to otel collector, if health_check extension is defined in otel collector config (#574)

    0.39.0


  • Bumped OpenTelemetry Collector to v0.39.0

  • Upgrade path for Instrumentation kind (#548)

  • Auto-instrumentation support for python (#532)

  • Support for PodSecurityContext in OpenTelemetry collector (#469)

  • Java auto-instrumentation support is bumped to 1.7.2 (#549)

  • Auto-instrumentation support for nodejs (#507)

  • Sampler configuration support in instrumentation kind (#514)

    0.38.0


  • Bumped OpenTelemetry Collector to v0.38.0

  • Initial support for auto-instrumentation at the moment supported only for Java (#464, @pavolloffay)

    0.37.1


  • Bumped OpenTelemetry Collector to v0.37.1

    0.37.0


  • Bumped OpenTelemetry Collector to v0.37.0

    0.36.0


  • Bumped OpenTelemetry Collector to v0.36.0

  • Add envFrom to collector spec (#419, @ctison)

  • Allow changing Pod annotations using podAnnotations (#451, @indrekj)

    0.35.0


  • Bumped OpenTelemetry Collector to v0.35.0

  • Target Allocator implementation (Part 3 - OTEL Operator Enhancements) (#389, @Raul9595)

  • Target Allocator implementation (Part 2 - OTEL Operator Enhancements) (#354, @alexperez52)

    0.34.0



  • Bumped OpenTelemetry Collector to v0.33.0

  • Add statsd receiver (#364, @VineethReddy02)

  • Allow running daemonset in hostNetwork mode (#393, @owais)

  • Target Allocator implementation (Part 1 - OTEL Operator Enhancements) (#351, @)

  • Change the default port for OTLP HTTP (#373, @joaopgrassi)

  • Add Kubernetes 1.22 to the test matrix (#382, @jpkrohling)

  • Add protocol: TCP value under ports key to avoid the known limitation for Kubernetes 1.19 (#372, @Saber-W)

  • Add fluentforward receiver (#367, @VineethReddy02)

    0.32.0


  • We skipped this release.

    0.31.0 (2021-07-29)


  • Bumped OpenTelemetry Collector to v0.31.0

    0.30.0 (2021-07-15)


  • Bumped OpenTelemetry Collector to v0.30.0

  • Container Security Context (#332, @owais)

    0.29.0 (2021-06-25)


  • Bumped OpenTelemetry Collector to v0.29.0

  • Add delete webhook (#313, @VineethReddy02)

    0.28.0 (2021-06-12)


  • Bumped OpenTelemetry Collector to v0.28.0

  • Tolerations support in OpenTelemetryCollector CRD (#302, @VineethReddy02)

  • Copy desired service ports when reconciling (#299, @thib92)

  • Remove the OTLP receiver legacy gRPC port(55680) references (#293, @mxiamxia)

    0.27.0 (2021-05-20)


  • Bumped OpenTelemetry Collector to v0.27.0

    0.26.0 (2021-05-12)


  • Bumped OpenTelemetry Collector to v0.26.0

    0.25.0 (2021-05-06)


  • Bumped OpenTelemetry Collector to v0.25.0

    0.24.0 (2021-04-20)



  • Bumped OpenTelemetry Collector to v0.23.0

    0.22.0 (2021-03-11)


  • Bumped OpenTelemetry Collector to v0.22.0

    0.21.0 (2021-03-09)


  • Bumped OpenTelemetry Collector to v0.21.0

  • Restart collector pod when config is updated (#215, @bhiravabhatla)

  • Add permissions for opentelemetry finalizer resource (#212, @rubenvp8510)

  • fix: collector selection should not fail if there is a single sidecar (#210, @vbehar)

    0.20.0 (2021-02-11)


  • Bumped OpenTelemetry Collector to v0.20.0

  • Add correct boundary to integer parsing (#187, @jpkrohling)

    0.19.0 (2021-01-27)


  • Bumped OpenTelemetry Collector to v0.19.0

    0.18.1 (2021-01-25)


  • Fixed testing image from being used in non-test artifacts (fixes #170) (#171, @gramidt)

    0.18.0 (2021-01-22)


  • Bumped OpenTelemetry Collector to v0.18.0 (#169, @jpkrohling)

    0.17.1 (2020-12-17)




Note: The default port for the OTLP receiver has been changed from 55680 to 4317. To keep compatibility with your existing workload, the operator is now generating a service with the two port numbers by default. Both have 4317 as the target port.

0.15.0 (2020-11-27)

  • Bumped OpenTelemetry Collector to v0.15.0 (#131, @jpkrohling)

    0.14.0 (2020-11-09)


Note: The tailsampling processor was moved to the contrib repository, requiring a manual intervention in case this processor is being used: either replace the image with the contrib one (v0.14.0, which includes this processor), or remove the processor.

0.13.0 (2020-10-22)

  • Bumped OpenTelemetry Collector to v0.13.0 (#101, @dengliming)
  • Allow for spec.Env to be set on the OTEL Collector Spec (#94, @ekarlso)

Note: The groupbytrace processor was moved to the contrib repository, requiring a manual intervention in case this processor is being used: either replace the image with the contrib one (v0.13.1, which includes this processor), or remove the processor.

0.12.0 (2020-10-12)

  • Bumped OpenTelemetry Collector to v0.12.0 (#81, @jpkrohling)

  • Remove use of deprecated controller runtime log API (#78, @bvwells)

    0.11.0 (2020-09-30)


  • Initial release after the migration to kubebuilder
  • Support for OpenTelemetry Collector v0.11.0
  • Features:
    • Provisioning of an OpenTelemetry Collector based on the CR definition
    • Sidecar injected via webhook
    • Deployment modes: daemonset, deployment, sidecar
    • Automatic upgrade between collector versions
  • CRs from the older version should still work with this operator