From b999baa66bcb2092c6a2222cc6564251bcbd4fb0 Mon Sep 17 00:00:00 2001 From: Mateusz Rumian Date: Thu, 23 Feb 2023 12:36:56 +0100 Subject: [PATCH 01/16] chore(otoperator): update subchart to 0.24.0 --- deploy/helm/sumologic/Chart.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/deploy/helm/sumologic/Chart.yaml b/deploy/helm/sumologic/Chart.yaml index 09a7e540eb..b9183aa9cb 100644 --- a/deploy/helm/sumologic/Chart.yaml +++ b/deploy/helm/sumologic/Chart.yaml @@ -37,6 +37,6 @@ dependencies: repository: https://sumologic.github.io/tailing-sidecar condition: tailing-sidecar-operator.enabled - name: opentelemetry-operator - version: 0.18.3 + version: 0.24.0 repository: https://open-telemetry.github.io/opentelemetry-helm-charts condition: opentelemetry-operator.enabled From eecac48d22c42657c7a47506ba08658eb456e53c Mon Sep 17 00:00:00 2001 From: Mateusz Rumian Date: Thu, 23 Feb 2023 12:38:35 +0100 Subject: [PATCH 02/16] fix(otoperator): fix ot operator metrics url --- deploy/helm/sumologic/templates/_helpers.tpl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/deploy/helm/sumologic/templates/_helpers.tpl b/deploy/helm/sumologic/templates/_helpers.tpl index b35fac24ec..da9c5206ff 100644 --- a/deploy/helm/sumologic/templates/_helpers.tpl +++ b/deploy/helm/sumologic/templates/_helpers.tpl @@ -1561,7 +1561,7 @@ Example Usage: {{- end -}} {{- define "opentelemetry-operator.controller.manager.metrics.service.url" -}} -http://opentelemetry-operator-controller-manager-metrics-service.{{ .Release.Namespace }}:8080/metrics +http://{{ .Release.Name }}-opentelemetry-operator.{{ .Release.Namespace }}:8080/metrics {{- end -}} From 8afec4d37e01ad049f2278708da4df82c577c7d6 Mon Sep 17 00:00:00 2001 From: Mateusz Rumian Date: Thu, 23 Feb 2023 12:43:31 +0100 Subject: [PATCH 03/16] fix(instrjob): add checksum, increase timeout --- .../opentelemetry-operator/job-instrumentation-cr.yaml | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/deploy/helm/sumologic/templates/opentelemetry-operator/job-instrumentation-cr.yaml b/deploy/helm/sumologic/templates/opentelemetry-operator/job-instrumentation-cr.yaml index 69d46ff7ae..883ce73bee 100644 --- a/deploy/helm/sumologic/templates/opentelemetry-operator/job-instrumentation-cr.yaml +++ b/deploy/helm/sumologic/templates/opentelemetry-operator/job-instrumentation-cr.yaml @@ -1,3 +1,4 @@ +{{- $ctx := . }} {{ $operatorEnabled := index .Values "opentelemetry-operator" "enabled" }} {{ $tracesEnabled := .Values.sumologic.traces.enabled }} {{ $createDefaultInstrumentation := index .Values "opentelemetry-operator" "createDefaultInstrumentation" }} @@ -6,12 +7,15 @@ apiVersion: batch/v1 kind: Job metadata: - name: {{ template "sumologic.metadata.name.opentelemetry.operator.instrumentation.job" . }} + name: {{ template "sumologic.metadata.name.opentelemetry.operator.instrumentation.job" . }}-{{ include (print $.Template.BasePath "/opentelemetry-operator/configmap-instrumentation-cr.yaml") $ctx | sha256sum | substr 0 5 }} labels: app: {{ template "sumologic.labels.app.opentelemetry.operator.instrumentation.job" . }} {{- include "sumologic.labels.common" . | nindent 4 }} spec: template: + metadata: + annotations: + checksum/config: {{ include (print $.Template.BasePath "/opentelemetry-operator/configmap-instrumentation-cr.yaml") $ctx | sha256sum }} spec: serviceAccountName: {{ template "sumologic.metadata.name.roles.serviceaccount" . }} containers: @@ -24,7 +28,7 @@ spec: command: ["/bin/bash", "-c"] args: - | - max_wait=60 + max_wait=180 sleep_interval=5 counter=0 ready=false From cc1793ec51683a7b761479dc75d8b10f85b005cd Mon Sep 17 00:00:00 2001 From: Mateusz Rumian Date: Thu, 23 Feb 2023 12:55:39 +0100 Subject: [PATCH 04/16] chore(otoperator): increase default resources to avoid oom --- deploy/helm/sumologic/values.yaml | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/deploy/helm/sumologic/values.yaml b/deploy/helm/sumologic/values.yaml index 147155025b..901893e6fc 100644 --- a/deploy/helm/sumologic/values.yaml +++ b/deploy/helm/sumologic/values.yaml @@ -4517,6 +4517,13 @@ opentelemetry-operator: manager: env: + resources: + limits: + cpu: 250m + memory: 512Mi + requests: + cpu: 150m + memory: 256Mi pvcCleaner: metrics: From f36f4174bb9d2ff6baa82f52eb8320c0635e4ae6 Mon Sep 17 00:00:00 2001 From: Mateusz Rumian Date: Thu, 23 Feb 2023 17:06:04 +0100 Subject: [PATCH 05/16] feat(instrumentation): introduce metrics/traces enablement flags, update images --- .../instrumentation.cr.yaml | 32 ++++++++++--------- deploy/helm/sumologic/templates/_helpers.tpl | 14 ++++++++ deploy/helm/sumologic/values.yaml | 22 +++++++++++++ 3 files changed, 53 insertions(+), 15 deletions(-) diff --git a/deploy/helm/sumologic/conf/opentelemetry-operator/instrumentation.cr.yaml b/deploy/helm/sumologic/conf/opentelemetry-operator/instrumentation.cr.yaml index 092c15fb8a..9e27564252 100644 --- a/deploy/helm/sumologic/conf/opentelemetry-operator/instrumentation.cr.yaml +++ b/deploy/helm/sumologic/conf/opentelemetry-operator/instrumentation.cr.yaml @@ -1,6 +1,6 @@ {{- $ctx := . -}} -{{- $instrumentationNamespaces := index .Values "opentelemetry-operator" -}} -{{- if eq ( get $instrumentationNamespaces "instrumentationNamespaces" ) "" -}} +{{- $operator := index .Values "opentelemetry-operator" -}} +{{- if eq ( get $operator "instrumentationNamespaces" ) "" -}} {{ fail "No value for \"opentelemetry-operator.instrumentationNamespaces\".Value is comma separated namespaces e.g. \"ns1\\,ns2\"" }} {{- else -}} {{- range $ns := splitList "," ( index .Values "opentelemetry-operator" "instrumentationNamespaces" ) -}} @@ -19,22 +19,20 @@ spec: - baggage resource: addK8sUIDAttributes: false - sampler: - type: always_on env: - name: OTEL_APPLICATION_NAMESPACE_NAME value: {{ $ns }} - name: OTEL_RESOURCE_ATTRIBUTES value: application={{ $ns }} dotnet: - image: ghcr.io/open-telemetry/opentelemetry-operator/autoinstrumentation-dotnet:0.4.0-beta.1 + image: ghcr.io/open-telemetry/opentelemetry-operator/autoinstrumentation-dotnet:0.5.0 env: - name: OTEL_METRICS_EXPORTER - value: none + value: {{ include "instrumentation.resource.exporter" (dict "enabled" $operator.instrumentation.dotnet.metrics.enabled) }} - name: OTEL_LOGS_EXPORTER value: none - name: OTEL_TRACES_EXPORTER - value: otlp + value: {{ include "instrumentation.resource.exporter" (dict "enabled" $operator.instrumentation.dotnet.traces.enabled) }} - name: OTEL_EXPORTER_OTLP_PROTOCOL value: http/protobuf - name: OTEL_EXPORTER_OTLP_ENDPOINT @@ -42,24 +40,28 @@ spec: python: # Force to use older image because of LOGS exporting issue # https://github.com/open-telemetry/opentelemetry-python/issues/2594 - image: ghcr.io/open-telemetry/opentelemetry-operator/autoinstrumentation-python:0.28b1 + image: ghcr.io/open-telemetry/opentelemetry-operator/autoinstrumentation-python:0.36b0 env: + - name: OTEL_METRICS_EXPORTER + value: {{ include "instrumentation.resource.exporter" (dict "enabled" $operator.instrumentation.python.metrics.enabled) }} - name: OTEL_TRACES_EXPORTER - value: otlp_proto_http - - name: OTEL_EXPORTER_OTLP_TRACES_ENDPOINT - value: http://{{- include "sumologic.opentelemetry.operator.instrumentation.collector.endpoint" $ctx }}:4318/v1/traces + value: {{ include "instrumentation.resource.exporter" (dict "enabled" $operator.instrumentation.python.traces.enabled) }} + - name: OTEL_EXPORTER_OTLP_PROTOCOL + value: http/protobuf + - name: OTEL_EXPORTER_OTLP_ENDPOINT + value: http://{{- include "sumologic.opentelemetry.operator.instrumentation.collector.endpoint" $ctx }}:4318 nodejs: - image: ghcr.io/open-telemetry/opentelemetry-operator/autoinstrumentation-nodejs:0.27.0 + image: ghcr.io/open-telemetry/opentelemetry-operator/autoinstrumentation-nodejs:0.34.0 env: - name: OTEL_EXPORTER_OTLP_ENDPOINT value: http://{{- include "sumologic.opentelemetry.operator.instrumentation.collector.endpoint" $ctx }}:4317 java: - image: ghcr.io/open-telemetry/opentelemetry-operator/autoinstrumentation-java:1.16.0 + image: ghcr.io/open-telemetry/opentelemetry-operator/autoinstrumentation-java:1.23.0 env: - name: OTEL_METRICS_EXPORTER - value: none + value: {{ include "instrumentation.resource.exporter" (dict "enabled" $operator.instrumentation.java.metrics.enabled) }} - name: OTEL_TRACES_EXPORTER - value: otlp + value: {{ include "instrumentation.resource.exporter" (dict "enabled" $operator.instrumentation.java.traces.enabled) }} - name: OTEL_EXPORTER_OTLP_PROTOCOL value: http/protobuf - name: OTEL_EXPORTER_OTLP_ENDPOINT diff --git a/deploy/helm/sumologic/templates/_helpers.tpl b/deploy/helm/sumologic/templates/_helpers.tpl index da9c5206ff..96fff39f2c 100644 --- a/deploy/helm/sumologic/templates/_helpers.tpl +++ b/deploy/helm/sumologic/templates/_helpers.tpl @@ -1625,3 +1625,17 @@ Return the log format for the Sumologic exporter for container logs. {{- fail "`sumologic.logs.container.format` can only be `json`, `text`, `json_merge` or `fields`" -}} {{- end -}} {{- end -}} + +{{/* +Return otlp or none for Instrumentation resource exporters configuration. + +'{{ include "instrumentation.resource.exporter" (dict "enabled" .Values...) }}' +*/}} +{{- define "instrumentation.resource.exporter" }} +{{- $enabled := .enabled -}} +{{- if $enabled -}} +{{- "otlp" -}} +{{- else -}} +{{- "none" -}} +{{- end -}} +{{- end -}} diff --git a/deploy/helm/sumologic/values.yaml b/deploy/helm/sumologic/values.yaml index 901893e6fc..c7bc0d76d8 100644 --- a/deploy/helm/sumologic/values.yaml +++ b/deploy/helm/sumologic/values.yaml @@ -4506,6 +4506,28 @@ opentelemetry-operator: createDefaultInstrumentation: false instrumentationNamespaces: "" + instrumentation: + dotnet: + traces: + enabled: true + metrics: + enabled: true + java: + traces: + enabled: true + metrics: + enabled: true + python: + traces: + enabled: true + metrics: + enabled: true + # Current instrumentation doesn't support customization + # for nodejs. Traces are always enabled. + #nodejs: + # traces: + # enabled: true + ## Specific for OpenTelemetry Operator chart values admissionWebhooks: failurePolicy: Fail From d001fe793cbe89b8d7e84df21733ca824c415e75 Mon Sep 17 00:00:00 2001 From: Mateusz Rumian Date: Thu, 23 Feb 2023 17:30:07 +0100 Subject: [PATCH 06/16] fix(helm): fix tests --- tests/helm/goldenfile_test.go | 2 + .../static/instrumentation.output.yaml | 48 ++++++++++--------- .../static/job.output.yaml | 9 ++-- 3 files changed, 34 insertions(+), 25 deletions(-) diff --git a/tests/helm/goldenfile_test.go b/tests/helm/goldenfile_test.go index 6029a1d61a..892c7555ab 100644 --- a/tests/helm/goldenfile_test.go +++ b/tests/helm/goldenfile_test.go @@ -102,10 +102,12 @@ func runGoldenFileTest(t *testing.T, valuesFileName string, outputFileName strin // expected templates func fixupRenderedYaml(yaml string, chartVersion string) string { checksumRegex := regexp.MustCompile("checksum/config: [a-z0-9]{64}") + checksumRegexPart := regexp.MustCompile("RELEASE-NAME-sumologic-ot-operator-instr-[a-z0-9]{5}") output := yaml output = strings.ReplaceAll(output, releaseName, "RELEASE-NAME") output = strings.ReplaceAll(output, chartVersion, "%CURRENT_CHART_VERSION%") output = checksumRegex.ReplaceAllLiteralString(output, "checksum/config: '%CONFIG_CHECKSUM%'") + output = checksumRegexPart.ReplaceAllLiteralString(output, "RELEASE-NAME-sumologic-ot-operator-instr-%CONFIG_CHECKSUM_PART%") output = strings.TrimSuffix(output, "\n") return output } diff --git a/tests/helm/opentelemetry_operator_instrumentation_cr_configmap/static/instrumentation.output.yaml b/tests/helm/opentelemetry_operator_instrumentation_cr_configmap/static/instrumentation.output.yaml index c84df1deba..744ab4a587 100644 --- a/tests/helm/opentelemetry_operator_instrumentation_cr_configmap/static/instrumentation.output.yaml +++ b/tests/helm/opentelemetry_operator_instrumentation_cr_configmap/static/instrumentation.output.yaml @@ -28,18 +28,16 @@ data: - baggage resource: addK8sUIDAttributes: false - sampler: - type: always_on env: - name: OTEL_APPLICATION_NAMESPACE_NAME value: ot-operator1 - name: OTEL_RESOURCE_ATTRIBUTES value: application=ot-operator1 dotnet: - image: ghcr.io/open-telemetry/opentelemetry-operator/autoinstrumentation-dotnet:0.4.0-beta.1 + image: ghcr.io/open-telemetry/opentelemetry-operator/autoinstrumentation-dotnet:0.5.0 env: - name: OTEL_METRICS_EXPORTER - value: none + value: otlp - name: OTEL_LOGS_EXPORTER value: none - name: OTEL_TRACES_EXPORTER @@ -51,22 +49,26 @@ data: python: # Force to use older image because of LOGS exporting issue # https://github.com/open-telemetry/opentelemetry-python/issues/2594 - image: ghcr.io/open-telemetry/opentelemetry-operator/autoinstrumentation-python:0.28b1 + image: ghcr.io/open-telemetry/opentelemetry-operator/autoinstrumentation-python:0.36b0 env: + - name: OTEL_METRICS_EXPORTER + value: otlp - name: OTEL_TRACES_EXPORTER - value: otlp_proto_http - - name: OTEL_EXPORTER_OTLP_TRACES_ENDPOINT - value: http://RELEASE-NAME-sumologic-otelagent.sumologic:4318/v1/traces + value: otlp + - name: OTEL_EXPORTER_OTLP_PROTOCOL + value: http/protobuf + - name: OTEL_EXPORTER_OTLP_ENDPOINT + value: http://RELEASE-NAME-sumologic-otelagent.sumologic:4318 nodejs: - image: ghcr.io/open-telemetry/opentelemetry-operator/autoinstrumentation-nodejs:0.27.0 + image: ghcr.io/open-telemetry/opentelemetry-operator/autoinstrumentation-nodejs:0.34.0 env: - name: OTEL_EXPORTER_OTLP_ENDPOINT value: http://RELEASE-NAME-sumologic-otelagent.sumologic:4317 java: - image: ghcr.io/open-telemetry/opentelemetry-operator/autoinstrumentation-java:1.16.0 + image: ghcr.io/open-telemetry/opentelemetry-operator/autoinstrumentation-java:1.23.0 env: - name: OTEL_METRICS_EXPORTER - value: none + value: otlp - name: OTEL_TRACES_EXPORTER value: otlp - name: OTEL_EXPORTER_OTLP_PROTOCOL @@ -90,18 +92,16 @@ data: - baggage resource: addK8sUIDAttributes: false - sampler: - type: always_on env: - name: OTEL_APPLICATION_NAMESPACE_NAME value: ot-operator2 - name: OTEL_RESOURCE_ATTRIBUTES value: application=ot-operator2 dotnet: - image: ghcr.io/open-telemetry/opentelemetry-operator/autoinstrumentation-dotnet:0.4.0-beta.1 + image: ghcr.io/open-telemetry/opentelemetry-operator/autoinstrumentation-dotnet:0.5.0 env: - name: OTEL_METRICS_EXPORTER - value: none + value: otlp - name: OTEL_LOGS_EXPORTER value: none - name: OTEL_TRACES_EXPORTER @@ -113,22 +113,26 @@ data: python: # Force to use older image because of LOGS exporting issue # https://github.com/open-telemetry/opentelemetry-python/issues/2594 - image: ghcr.io/open-telemetry/opentelemetry-operator/autoinstrumentation-python:0.28b1 + image: ghcr.io/open-telemetry/opentelemetry-operator/autoinstrumentation-python:0.36b0 env: + - name: OTEL_METRICS_EXPORTER + value: otlp - name: OTEL_TRACES_EXPORTER - value: otlp_proto_http - - name: OTEL_EXPORTER_OTLP_TRACES_ENDPOINT - value: http://RELEASE-NAME-sumologic-otelagent.sumologic:4318/v1/traces + value: otlp + - name: OTEL_EXPORTER_OTLP_PROTOCOL + value: http/protobuf + - name: OTEL_EXPORTER_OTLP_ENDPOINT + value: http://RELEASE-NAME-sumologic-otelagent.sumologic:4318 nodejs: - image: ghcr.io/open-telemetry/opentelemetry-operator/autoinstrumentation-nodejs:0.27.0 + image: ghcr.io/open-telemetry/opentelemetry-operator/autoinstrumentation-nodejs:0.34.0 env: - name: OTEL_EXPORTER_OTLP_ENDPOINT value: http://RELEASE-NAME-sumologic-otelagent.sumologic:4317 java: - image: ghcr.io/open-telemetry/opentelemetry-operator/autoinstrumentation-java:1.16.0 + image: ghcr.io/open-telemetry/opentelemetry-operator/autoinstrumentation-java:1.23.0 env: - name: OTEL_METRICS_EXPORTER - value: none + value: otlp - name: OTEL_TRACES_EXPORTER value: otlp - name: OTEL_EXPORTER_OTLP_PROTOCOL diff --git a/tests/helm/opentelemetry_operator_instrumentation_cr_job/static/job.output.yaml b/tests/helm/opentelemetry_operator_instrumentation_cr_job/static/job.output.yaml index 57d52e1df6..6d21ad6958 100644 --- a/tests/helm/opentelemetry_operator_instrumentation_cr_job/static/job.output.yaml +++ b/tests/helm/opentelemetry_operator_instrumentation_cr_job/static/job.output.yaml @@ -3,7 +3,7 @@ apiVersion: batch/v1 kind: Job metadata: - name: RELEASE-NAME-sumologic-ot-operator-instr + name: RELEASE-NAME-sumologic-ot-operator-instr-%CONFIG_CHECKSUM_PART% labels: app: RELEASE-NAME-sumologic-ot-operator-instr chart: "sumologic-%CURRENT_CHART_VERSION%" @@ -11,6 +11,9 @@ metadata: heritage: "Helm" spec: template: + metadata: + annotations: + checksum/config: "%CONFIG_CHECKSUM%" spec: serviceAccountName: RELEASE-NAME-sumologic containers: @@ -23,13 +26,13 @@ spec: command: ["/bin/bash", "-c"] args: - | - max_wait=60 + max_wait=180 sleep_interval=5 counter=0 ready=false while [[ ready != "false" ]] do - is_ready=$(curl -s -o /dev/null -m 3 -L -w ''%{http_code}'' http://opentelemetry-operator-controller-manager-metrics-service.sumologic:8080/metrics) + is_ready=$(curl -s -o /dev/null -m 3 -L -w ''%{http_code}'' http://RELEASE-NAME-opentelemetry-operator.sumologic:8080/metrics) if [[ is_ready -eq "200" ]] then From 1fe1d36d651492e259c6f0b8c9c5ae3d34e52fdc Mon Sep 17 00:00:00 2001 From: Mateusz Rumian Date: Fri, 24 Feb 2023 10:52:37 +0100 Subject: [PATCH 07/16] docs(changelog): add --- .changelog/2894.changed.txt | 1 + 1 file changed, 1 insertion(+) create mode 100644 .changelog/2894.changed.txt diff --git a/.changelog/2894.changed.txt b/.changelog/2894.changed.txt new file mode 100644 index 0000000000..be79982739 --- /dev/null +++ b/.changelog/2894.changed.txt @@ -0,0 +1 @@ +chore(otoperator): update opentelemetry operator, add instrumentation customization \ No newline at end of file From 4d66e257bf477c1ed417566f9a14b43fb67a4084 Mon Sep 17 00:00:00 2001 From: Mateusz Rumian Date: Fri, 24 Feb 2023 12:36:09 +0100 Subject: [PATCH 08/16] fix(values): linter --- deploy/helm/sumologic/values.yaml | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/deploy/helm/sumologic/values.yaml b/deploy/helm/sumologic/values.yaml index c7bc0d76d8..60e9053cb0 100644 --- a/deploy/helm/sumologic/values.yaml +++ b/deploy/helm/sumologic/values.yaml @@ -4522,12 +4522,12 @@ opentelemetry-operator: enabled: true metrics: enabled: true - # Current instrumentation doesn't support customization - # for nodejs. Traces are always enabled. - #nodejs: - # traces: - # enabled: true - + ## Current instrumentation doesn't support customization + ## for nodejs. Traces are always enabled. + ##nodejs: + ## traces: + ## enabled: true + ## Specific for OpenTelemetry Operator chart values admissionWebhooks: failurePolicy: Fail From 85ff2400656c5a6a2ca356a4dccfac3982737f2d Mon Sep 17 00:00:00 2001 From: Mateusz Rumian Date: Fri, 24 Feb 2023 13:25:21 +0100 Subject: [PATCH 09/16] docs(readme): add new keys description --- deploy/helm/sumologic/README.md | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/deploy/helm/sumologic/README.md b/deploy/helm/sumologic/README.md index 5e15d1bb28..de4ee9b740 100644 --- a/deploy/helm/sumologic/README.md +++ b/deploy/helm/sumologic/README.md @@ -390,6 +390,16 @@ The following table lists the configurable parameters of the Sumo Logic chart an | `telegraf-operator.imagePullSecrets` | Pull secrets for Telegraf Operator images. For more information on using Kubernetes secrets with container registries please refer to [Creating a Secret with a Docker config at kubernetes.io](https://kubernetes.io/docs/concepts/containers/images/#creating-a-secret-with-a-docker-config). | `[]` | | `opentelemetry-operator.enabled` | Flag to control deploying OpenTelemetry Operator Helm sub-chart. | `false` | | `opentelemetry-operator.createDefaultInstrumentation` | Flag to control creation of default Instrumentation object | `false` | +| `opentelemetry-operator.instrumentation.dotnet.metrics.enabled` | Flag to control metrics export from DotNet instrumentation in `Instrumentation` resource. | `true` | +| `opentelemetry-operator.instrumentation.dotnet.traces.enabled` | Flag to control traces export from DotNet instrumentation in `Instrumentation` resource. | `true` | +| `opentelemetry-operator.instrumentation.java.metrics.enabled` | Flag to control metrics export from Java instrumentation in `Instrumentation` resource. | `true` | +| `opentelemetry-operator.instrumentation.java.traces.enabled` | Flag to control traces export from Java instrumentation in `Instrumentation` resource. | `true` | +| `opentelemetry-operator.instrumentation.python.metrics.enabled` | Flag to control metrics export from Python instrumentation in `Instrumentation` resource. | `true` | +| `opentelemetry-operator.instrumentation.python.traces.enabled` | Flag to control traces export from Python instrumentation in `Instrumentation` resource. | `true` | +| `opentelemetry-operator.manager.resources.limits.cpu` | Used to set limit CPU for OpenTelemetry-Operator Manager. | `250m` | +| `opentelemetry-operator.manager.resources.limits.memory` | Used to set limit Memory for OpenTelemetry-Operator Manager. | `512Mi` | +| `opentelemetry-operator.manager.resources.requests.cpu` | Used to set requested CPU for OpenTelemetry-Operator Manager. | `150m` | +| `opentelemetry-operator.manager.resources.requests.memory` | Used to set requested Memory for OpenTelemetry-Operator Manager. | `256Mi` | | `opentelemetry-operator.instrumentationNamespaces` | Used to create `Instrumentation` resources in specified namespaces. | `Nil` | | `opentelemetry-operator.instrumentationJobImage.image.repository` | Name of the image repository used to apply Instrumentation resource | `sumologic/kubernetes-tools` | | `opentelemetry-operator.instrumentationJobImage.image.tag` | Name of the image tag used to apply Instrumentation resource | `2.14.0` | From 6fc0233d30fc723adffb6f1399bfbf27e43b495f Mon Sep 17 00:00:00 2001 From: Mateusz Rumian Date: Fri, 24 Feb 2023 15:28:17 +0100 Subject: [PATCH 10/16] chore(changelog): update changelog --- .changelog/2894.changed.txt | 26 +++++++++++++++++++++++++- 1 file changed, 25 insertions(+), 1 deletion(-) diff --git a/.changelog/2894.changed.txt b/.changelog/2894.changed.txt index be79982739..4364393df3 100644 --- a/.changelog/2894.changed.txt +++ b/.changelog/2894.changed.txt @@ -1 +1,25 @@ -chore(otoperator): update opentelemetry operator, add instrumentation customization \ No newline at end of file +chore(otoperator): update opentelemetry operator, add instrumentation customization + +Changed [#2894] OpenTelemetry-Operator was updated to [v0.24.0]. New configuration flags were added: + +- Flags to control metrics/traces export from specific instrumentation in `Instrumentation` resource. + - `opentelemetry-operator.instrumentation.dotnet.metrics.enabled` + - `opentelemetry-operator.instrumentation.dotnet.traces.enabled` + - `opentelemetry-operator.instrumentation.java.metrics.enabled` + - `opentelemetry-operator.instrumentation.java.traces.enabled` + - `opentelemetry-operator.instrumentation.python.metrics.enabled` + - `opentelemetry-operator.instrumentation.python.traces.enabled` +- Flags to set CPU and Memory requests and limits for OpenTelemetry-Operator + - `opentelemetry-operator.manager.resources.limits.cpu` + - `opentelemetry-operator.manager.resources.limits.memory` + - `opentelemetry-operator.manager.resources.requests.cpu` + - `opentelemetry-operator.manager.resources.requests.memory` + +> **Warning** > This action is required only if you have enabled `opentelemetry-operator` with `opentelemetry-operator.enabled: true`. +> Please delete the following resources before update of the chart: + +- `opentelemetry-operator-validating-webhook-configuration` (validatingwebhookconfiguration) +- `opentelemetry-operator-mutating-webhook-configuration` (mutatingwebhookconfiguration) + +[#2894]: https://github.com/SumoLogic/sumologic-kubernetes-collection/issues/2894 +[v0.24.0]: https://github.com/open-telemetry/opentelemetry-helm-charts/releases/tag/opentelemetry-operator-0.24.0 From 5c74ef9d7ede29350cc7f4511bed21aa9b164faf Mon Sep 17 00:00:00 2001 From: Mateusz Rumian Date: Fri, 24 Feb 2023 15:29:24 +0100 Subject: [PATCH 11/16] chore(changelog): update changelog --- .changelog/2894.changed.txt | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/.changelog/2894.changed.txt b/.changelog/2894.changed.txt index 4364393df3..8da82b3520 100644 --- a/.changelog/2894.changed.txt +++ b/.changelog/2894.changed.txt @@ -15,8 +15,7 @@ Changed [#2894] OpenTelemetry-Operator was updated to [v0.24.0]. New configurati - `opentelemetry-operator.manager.resources.requests.cpu` - `opentelemetry-operator.manager.resources.requests.memory` -> **Warning** > This action is required only if you have enabled `opentelemetry-operator` with `opentelemetry-operator.enabled: true`. -> Please delete the following resources before update of the chart: +> **Warning** > This action is required only if you have enabled `opentelemetry-operator` with `opentelemetry-operator.enabled: true`. Please delete the following resources before update of the chart: - `opentelemetry-operator-validating-webhook-configuration` (validatingwebhookconfiguration) - `opentelemetry-operator-mutating-webhook-configuration` (mutatingwebhookconfiguration) From 94eb1419f293c10da1bb240532d2a33f8ec49b6d Mon Sep 17 00:00:00 2001 From: Mateusz Rumian Date: Mon, 27 Feb 2023 12:33:38 +0100 Subject: [PATCH 12/16] docks(readme): update matrix --- docs/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/README.md b/docs/README.md index 69acc00d97..cca13b214f 100644 --- a/docs/README.md +++ b/docs/README.md @@ -93,7 +93,7 @@ The following table displays the currently used software versions for our Helm c | Name | Version | | ----------------------------------------- | ------- | | OpenTelemetry Collector | 0.69.0 | -| OpenTelemetry Operator | 0.18.3 | +| OpenTelemetry Operator | 0.24.0 | | kube-prometheus-stack/Prometheus Operator | 40.5.0 | | Falco | 2.4.2 | | Telegraf Operator | 1.3.10 | From 0c7d31be4a96703b2801002046b6bb392728fd23 Mon Sep 17 00:00:00 2001 From: Mateusz Rumian Date: Tue, 28 Feb 2023 12:27:02 +0100 Subject: [PATCH 13/16] chore(changelog): update --- .changelog/2894.changed.txt | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.changelog/2894.changed.txt b/.changelog/2894.changed.txt index 8da82b3520..fc14776297 100644 --- a/.changelog/2894.changed.txt +++ b/.changelog/2894.changed.txt @@ -19,6 +19,9 @@ Changed [#2894] OpenTelemetry-Operator was updated to [v0.24.0]. New configurati - `opentelemetry-operator-validating-webhook-configuration` (validatingwebhookconfiguration) - `opentelemetry-operator-mutating-webhook-configuration` (mutatingwebhookconfiguration) +- `opentelemetry-operator-controller-manager-metrics-service` (service) +- `opentelemetry-operator-webhook-service` (service) +- `opentelemetry-operator-controller-manager` (deployment) [#2894]: https://github.com/SumoLogic/sumologic-kubernetes-collection/issues/2894 [v0.24.0]: https://github.com/open-telemetry/opentelemetry-helm-charts/releases/tag/opentelemetry-operator-0.24.0 From 976f4706ba8ab04971b0825a96f50359ed4c76af Mon Sep 17 00:00:00 2001 From: Mateusz Rumian Date: Tue, 28 Feb 2023 15:41:45 +0100 Subject: [PATCH 14/16] chore(instrjob): add deletion hooks --- .../opentelemetry-operator/job-instrumentation-cr.yaml | 10 +++++++--- .../static/job.output.yaml | 10 +++++++--- 2 files changed, 14 insertions(+), 6 deletions(-) diff --git a/deploy/helm/sumologic/templates/opentelemetry-operator/job-instrumentation-cr.yaml b/deploy/helm/sumologic/templates/opentelemetry-operator/job-instrumentation-cr.yaml index 883ce73bee..f5d8f56dd8 100644 --- a/deploy/helm/sumologic/templates/opentelemetry-operator/job-instrumentation-cr.yaml +++ b/deploy/helm/sumologic/templates/opentelemetry-operator/job-instrumentation-cr.yaml @@ -11,6 +11,9 @@ metadata: labels: app: {{ template "sumologic.labels.app.opentelemetry.operator.instrumentation.job" . }} {{- include "sumologic.labels.common" . | nindent 4 }} + annotations: + helm.sh/hook: "post-install, post-upgrade" + helm.sh/hook-delete-policy: "before-hook-creation, hook-succeeded" spec: template: metadata: @@ -41,16 +44,16 @@ spec: ready=true break else - echo "Waiting for opentelemetry-operator-controller-manager..." + echo "Waiting for {{ .Release.Name }}-opentelemetry-operator" sleep $sleep_interval counter=$(($counter + $sleep_interval)) fi if [[ "$counter" -gt "$max_wait" ]] then - echo "Couldn't reach opentelemetry-operator-controller-manager" + echo "Couldn't reach {{ .Release.Name }}-opentelemetry-operator" echo "Instrumentation resources not applied!" - break + exit 1 fi done @@ -58,6 +61,7 @@ spec: then echo "Applying Instrumentation resources" kubectl apply -f /tmp/instrumentation-cr.yaml + exit $? fi volumes: - name: instrumentation-cr-configmap diff --git a/tests/helm/opentelemetry_operator_instrumentation_cr_job/static/job.output.yaml b/tests/helm/opentelemetry_operator_instrumentation_cr_job/static/job.output.yaml index 6d21ad6958..a411c8092a 100644 --- a/tests/helm/opentelemetry_operator_instrumentation_cr_job/static/job.output.yaml +++ b/tests/helm/opentelemetry_operator_instrumentation_cr_job/static/job.output.yaml @@ -9,6 +9,9 @@ metadata: chart: "sumologic-%CURRENT_CHART_VERSION%" release: "RELEASE-NAME" heritage: "Helm" + annotations: + helm.sh/hook: "post-install, post-upgrade" + helm.sh/hook-delete-policy: "before-hook-creation, hook-succeeded" spec: template: metadata: @@ -39,16 +42,16 @@ spec: ready=true break else - echo "Waiting for opentelemetry-operator-controller-manager..." + echo "Waiting for RELEASE-NAME-opentelemetry-operator" sleep $sleep_interval counter=$(($counter + $sleep_interval)) fi if [[ "$counter" -gt "$max_wait" ]] then - echo "Couldn't reach opentelemetry-operator-controller-manager" + echo "Couldn't reach RELEASE-NAME-opentelemetry-operator" echo "Instrumentation resources not applied!" - break + exit 1 fi done @@ -56,6 +59,7 @@ spec: then echo "Applying Instrumentation resources" kubectl apply -f /tmp/instrumentation-cr.yaml + exit $? fi volumes: - name: instrumentation-cr-configmap From 6840ec376d2de567a73055aa9fa5a9fd06785861 Mon Sep 17 00:00:00 2001 From: Mateusz Rumian Date: Tue, 28 Feb 2023 16:17:11 +0100 Subject: [PATCH 15/16] chore(otjob): remove checksum --- .../opentelemetry-operator/job-instrumentation-cr.yaml | 5 +---- tests/helm/goldenfile_test.go | 2 -- .../static/job.output.yaml | 5 +---- 3 files changed, 2 insertions(+), 10 deletions(-) diff --git a/deploy/helm/sumologic/templates/opentelemetry-operator/job-instrumentation-cr.yaml b/deploy/helm/sumologic/templates/opentelemetry-operator/job-instrumentation-cr.yaml index f5d8f56dd8..3d85e01be2 100644 --- a/deploy/helm/sumologic/templates/opentelemetry-operator/job-instrumentation-cr.yaml +++ b/deploy/helm/sumologic/templates/opentelemetry-operator/job-instrumentation-cr.yaml @@ -7,7 +7,7 @@ apiVersion: batch/v1 kind: Job metadata: - name: {{ template "sumologic.metadata.name.opentelemetry.operator.instrumentation.job" . }}-{{ include (print $.Template.BasePath "/opentelemetry-operator/configmap-instrumentation-cr.yaml") $ctx | sha256sum | substr 0 5 }} + name: {{ template "sumologic.metadata.name.opentelemetry.operator.instrumentation.job" . }} labels: app: {{ template "sumologic.labels.app.opentelemetry.operator.instrumentation.job" . }} {{- include "sumologic.labels.common" . | nindent 4 }} @@ -16,9 +16,6 @@ metadata: helm.sh/hook-delete-policy: "before-hook-creation, hook-succeeded" spec: template: - metadata: - annotations: - checksum/config: {{ include (print $.Template.BasePath "/opentelemetry-operator/configmap-instrumentation-cr.yaml") $ctx | sha256sum }} spec: serviceAccountName: {{ template "sumologic.metadata.name.roles.serviceaccount" . }} containers: diff --git a/tests/helm/goldenfile_test.go b/tests/helm/goldenfile_test.go index 892c7555ab..6029a1d61a 100644 --- a/tests/helm/goldenfile_test.go +++ b/tests/helm/goldenfile_test.go @@ -102,12 +102,10 @@ func runGoldenFileTest(t *testing.T, valuesFileName string, outputFileName strin // expected templates func fixupRenderedYaml(yaml string, chartVersion string) string { checksumRegex := regexp.MustCompile("checksum/config: [a-z0-9]{64}") - checksumRegexPart := regexp.MustCompile("RELEASE-NAME-sumologic-ot-operator-instr-[a-z0-9]{5}") output := yaml output = strings.ReplaceAll(output, releaseName, "RELEASE-NAME") output = strings.ReplaceAll(output, chartVersion, "%CURRENT_CHART_VERSION%") output = checksumRegex.ReplaceAllLiteralString(output, "checksum/config: '%CONFIG_CHECKSUM%'") - output = checksumRegexPart.ReplaceAllLiteralString(output, "RELEASE-NAME-sumologic-ot-operator-instr-%CONFIG_CHECKSUM_PART%") output = strings.TrimSuffix(output, "\n") return output } diff --git a/tests/helm/opentelemetry_operator_instrumentation_cr_job/static/job.output.yaml b/tests/helm/opentelemetry_operator_instrumentation_cr_job/static/job.output.yaml index a411c8092a..66efe398d6 100644 --- a/tests/helm/opentelemetry_operator_instrumentation_cr_job/static/job.output.yaml +++ b/tests/helm/opentelemetry_operator_instrumentation_cr_job/static/job.output.yaml @@ -3,7 +3,7 @@ apiVersion: batch/v1 kind: Job metadata: - name: RELEASE-NAME-sumologic-ot-operator-instr-%CONFIG_CHECKSUM_PART% + name: RELEASE-NAME-sumologic-ot-operator-instr labels: app: RELEASE-NAME-sumologic-ot-operator-instr chart: "sumologic-%CURRENT_CHART_VERSION%" @@ -14,9 +14,6 @@ metadata: helm.sh/hook-delete-policy: "before-hook-creation, hook-succeeded" spec: template: - metadata: - annotations: - checksum/config: "%CONFIG_CHECKSUM%" spec: serviceAccountName: RELEASE-NAME-sumologic containers: From 5883ff662d5794903ed7311d067e2421cf2eb1a1 Mon Sep 17 00:00:00 2001 From: Mateusz Rumian Date: Tue, 28 Feb 2023 16:18:21 +0100 Subject: [PATCH 16/16] docs(installation): add warning to nonhelm installation --- docs/installation.md | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/docs/installation.md b/docs/installation.md index 14e92e003b..74766f5527 100644 --- a/docs/installation.md +++ b/docs/installation.md @@ -54,7 +54,12 @@ Helm is required, but you can use it for template generation only, if you don't If you don't want to use Helm to manage the installation, please use `helm template` to generate Kubernetes templates and apply them using Kubectl. -Simply replace +> **Warning:** > Before upgrade, please delete the old jobs: + +- `kubectl delete job -n ${NAMESPACE} my-release-sumologic-setup` +- `kubectl delete job -n ${NAMESPACE} my-release-sumologic-ot-operator-instr` (needed only if `opentelemetry-operator.enabled=true`) + +Simply replace: ```bash helm upgrade \