Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

chore(opentelemetry-operator): upgrade opentelemetry-operator subchart to 0.13.0 #2561

Merged
merged 23 commits into from
Oct 18, 2022
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
23 commits
Select commit Hold shift + click to select a range
75f017f
chore(chart): update version
mat-rumian Oct 7, 2022
b53f0d9
chore(tls): remove certificate creation, supported by operator chart
mat-rumian Oct 7, 2022
9978d72
chore(clusterole): add opentelemetry-operator api group
mat-rumian Oct 10, 2022
1bd7de7
chore(instrumentation): add instrumentation configmap and job
mat-rumian Oct 12, 2022
c18bf9c
chore(helpers): add instrumentation cr generator, cleanup
mat-rumian Oct 12, 2022
4cef75e
chore(operator): enable webhooks
mat-rumian Oct 12, 2022
9692567
chore(helpers): +\n
mat-rumian Oct 12, 2022
cdb1f6c
chore(docs): update instrumentation url
mat-rumian Oct 12, 2022
a485431
chore(instrumentation): update configuration for dotnet and java
mat-rumian Oct 12, 2022
a2c6daf
chore(tests): update instrumentation cm helm tests
mat-rumian Oct 12, 2022
5e8c596
chore(tests): add instrumentation job helm tests
mat-rumian Oct 12, 2022
46d3d43
chore(tests): cleanup operator tests
mat-rumian Oct 12, 2022
e19ac88
chore(instrumentatio-cr): move instrumentation cr to confs
mat-rumian Oct 17, 2022
d7e9c53
chore(instrumentation-cr): fix helm tests
mat-rumian Oct 17, 2022
1a471f6
chore(changelog): update
mat-rumian Oct 17, 2022
4dbda75
Merge branch 'main' into update-opentelemetry-operator-chart
mat-rumian Oct 17, 2022
0851115
chore(changelog): fix
mat-rumian Oct 17, 2022
7486256
chore(changelog): fix
mat-rumian Oct 17, 2022
c64bd72
chore(tests): update tests
mat-rumian Oct 18, 2022
ede0550
chore(opentelemetry-operator): split instrumentation resource creation
mat-rumian Oct 18, 2022
5ed5253
chore(opentelemetry-operator): split instrumentation resource creation
mat-rumian Oct 18, 2022
47d4004
chore(readme): update parameters list
mat-rumian Oct 18, 2022
6383f80
Merge branch 'main' into update-opentelemetry-operator-chart
mat-rumian Oct 18, 2022
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
- chore: update kubernetes-tools to 2.13.0 [#2515]
- feat(metadata): upgrade otelcol to v0.57.2-sumo-1 [#2526]
- docs: update documentation around additionalRemoteWrite for kube-prometheus-stack [#2549]
- chore(opentelemetry-operator): upgrade opentelemetry-operator subchart to 0.13.0 [#2561]

### Fixed

Expand All @@ -35,6 +36,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
[#2554]: https://github.com/SumoLogic/sumologic-kubernetes-collection/pull/2554
[#2549]: https://github.com/SumoLogic/sumologic-kubernetes-collection/pull/2549
[#2572]: https://github.com/SumoLogic/sumologic-kubernetes-collection/pull/2572
[#2561]: https://github.com/SumoLogic/sumologic-kubernetes-collection/pull/2561
[Unreleased]: https://github.com/SumoLogic/sumologic-kubernetes-collection/compare/v2.17.0...main

## [v2.17.0]
Expand Down
2 changes: 1 addition & 1 deletion deploy/helm/sumologic/Chart.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,6 @@ dependencies:
repository: https://sumologic.github.io/tailing-sidecar
condition: tailing-sidecar-operator.enabled
- name: opentelemetry-operator
version: 0.7.0
version: 0.13.0
repository: https://open-telemetry.github.io/opentelemetry-helm-charts
condition: opentelemetry-operator.enabled
4 changes: 2 additions & 2 deletions deploy/helm/sumologic/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -304,8 +304,8 @@ The following table lists the configurable parameters of the Sumo Logic chart an
| `telegraf-operator.default` | Name of the default output configuration. | `sumologic-prometheus` |
| `telegraf-operator.data` | Telegraf sidecar configuration. | See [values.yaml] |
| `opentelemetry-operator.enabled` | Flag to control deploying OpenTelemetry Operator Helm sub-chart. | `false` |
| `opentelemetry-operator.createDefaultInstrumentation` | Flag to control creation of default Instrumentation object | `true` |
| `opentelemetry-operator.manager.env.WATCH_NAMESPACE` | Used to set value for `WATCH_NAMESPACE` environment variable which specifies Namespace to watch and create Instrumentation objects. | `Nil` |
| `opentelemetry-operator.createDefaultInstrumentation` | Flag to control creation of default Instrumentation object | `false` |
| `opentelemetry-operator.instrumentationNamespaces` | Used to create `Instrumentation` resources in specified namespaces. | `Nil` |
| `otelagent.enabled` | Enables OpenTelemetry Collector Agent mode DaemonSet. | `false` |
| `otelagent.daemonset.nodeSelector` | Node selector for otelagent daemonset. [See docs/Best_Practices.md for more information.](../../docs/Best_Practices.md) | `{}` |
| `otelagent.daemonset.priorityClassName` | Priority class name for OpenTelemetry Agent trace pods. | If not provided then set to `RELEASE-NAME-sumologic-priorityclass`. |
Expand Down
Original file line number Diff line number Diff line change
@@ -1,13 +1,9 @@
{{ $operatorEnabled := index .Values "opentelemetry-operator" "enabled" }}
{{ $tracesEnabled := .Values.sumologic.traces.enabled }}
{{ $createDefaultInstrumentation := index .Values "opentelemetry-operator" "createDefaultInstrumentation" }}
{{- if and $operatorEnabled $tracesEnabled $createDefaultInstrumentation }}
{{- $ctx := . -}}
{{ $watchNamespace := index .Values "opentelemetry-operator" "manager" "env" }}
{{- if eq ( get $watchNamespace "WATCH_NAMESPACE" ) "" }}
{{ fail "It is mandatory to set value for \"opentelemetry-operator.manager.env.WATCH_NAMESPACE\" when opentelemetry-operator is enabled. Value is comma separated namespaces e.g. \"ns1\\,ns2\"" }}
{{ $instrumentationNamespaces := index .Values "opentelemetry-operator" }}
{{- if eq ( get $instrumentationNamespaces "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" "manager" "env" "WATCH_NAMESPACE" ) }}
{{- range $ns := splitList "," ( index .Values "opentelemetry-operator" "instrumentationNamespaces" ) }}
---
apiVersion: opentelemetry.io/v1alpha1
kind: Instrumentation
Expand All @@ -17,24 +13,36 @@ metadata:
labels:
app: {{ template "sumologic.labels.app.opentelemetry.operator.instrumentation" $ctx }}
{{- include "sumologic.labels.common" $ctx | nindent 4 }}
annotations:
"helm.sh/hook": "post-install,post-upgrade"
spec:
propagators:
- tracecontext
- baggage
- b3
- xray
resource:
addK8sUIDAttributes: false
sampler:
type: always_on
env:
- name: OTEL_APPLICATION_NAMESPACE_NAME
valueFrom:
fieldRef:
fieldPath: metadata.namespace
value: {{ $ns }}
- name: OTEL_RESOURCE_ATTRIBUTES
value: application=$(OTEL_APPLICATION_NAMESPACE_NAME)
value: application={{ $ns }}
dotnet:
image: ghcr.io/open-telemetry/opentelemetry-operator/autoinstrumentation-dotnet:0.3.1-beta.1
env:
- name: OTEL_PROPAGATORS
value: tracecontext,baggage
- name: OTEL_METRICS_EXPORTER
value: none
- name: OTEL_LOGS_EXPORTER
value: none
- name: OTEL_TRACES_EXPORTER
value: otlp
- name: OTEL_EXPORTER_OTLP_PROTOCOL
value: http/protobuf
- name: OTEL_EXPORTER_OTLP_ENDPOINT
value: http://{{- include "sumologic.opentelemetry.operator.instrumentation.collector.endpoint" $ctx }}:4318
python:
# Force to use older image because of LOGS exporting issue
# https://github.com/open-telemetry/opentelemetry-python/issues/2594
Expand All @@ -50,12 +58,15 @@ spec:
- 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.11.1
image: ghcr.io/open-telemetry/opentelemetry-operator/autoinstrumentation-java:1.16.0
env:
- name: OTEL_EXPORTER_OTLP_TRACES_PROTOCOL
- name: OTEL_METRICS_EXPORTER
value: none
- name: OTEL_TRACES_EXPORTER
value: otlp
- name: OTEL_EXPORTER_OTLP_PROTOCOL
value: http/protobuf
- name: OTEL_EXPORTER_OTLP_TRACES_ENDPOINT
value: http://{{- include "sumologic.opentelemetry.operator.instrumentation.collector.endpoint" $ctx }}:4318/v1/traces
{{- end -}}
- name: OTEL_EXPORTER_OTLP_ENDPOINT
value: http://{{- include "sumologic.opentelemetry.operator.instrumentation.collector.endpoint" $ctx }}:4318
{{- end -}}
{{- end -}}
125 changes: 18 additions & 107 deletions deploy/helm/sumologic/templates/_helpers.tpl
Original file line number Diff line number Diff line change
Expand Up @@ -183,6 +183,14 @@ We truncate at 63 chars because some Kubernetes name fields are limited to this
{{- template "sumologic.labels.app.opentelemetry.operator" . }}-instr
{{- end -}}

{{- define "sumologic.labels.app.opentelemetry.operator.instrumentation.configmap" -}}
{{- template "sumologic.labels.app.opentelemetry.operator.instrumentation" . }}-cm
{{- end -}}

{{- define "sumologic.labels.app.opentelemetry.operator.instrumentation.job" -}}
{{- template "sumologic.labels.app.opentelemetry.operator.instrumentation" . }}
{{- end -}}

{{- define "sumologic.labels.app.otelcol" -}}
{{- template "sumologic.fullname" . }}-otelcol
{{- end -}}
Expand Down Expand Up @@ -515,6 +523,14 @@ helm.sh/hook-delete-policy: before-hook-creation,hook-succeeded
{{ template "sumologic.metadata.name.opentelemetry.operator" . }}-instr
{{- end -}}

{{- define "sumologic.metadata.name.opentelemetry.operator.instrumentation.configmap" -}}
{{ template "sumologic.metadata.name.opentelemetry.operator.instrumentation" . }}-cm
{{- end -}}

{{- define "sumologic.metadata.name.opentelemetry.operator.instrumentation.job" -}}
{{ template "sumologic.metadata.name.opentelemetry.operator.instrumentation" . }}
{{- end -}}

{{- define "sumologic.metadata.name.otelcol" -}}
{{ template "sumologic.fullname" . }}-otelcol
{{- end -}}
Expand Down Expand Up @@ -1510,111 +1526,6 @@ Example Usage:
{{- printf "%s.%s" ( include "sumologic.metadata.name.otelcol.service-headless" . ) .Release.Namespace }}
{{- end -}}

{{- define "opentelemetry-operator.webhook.service.name" -}}
opentelemetry-operator-webhook-service
{{- end -}}

{{- define "opentelemetry-operator.controller.manager.service.cert.name" -}}
opentelemetry-operator-controller-manager-service-cert
{{- end -}}

{{/*
Generate certificates for opentelemetry-operator webhook

Example usage:
{{ $certManagerEnabled := index .Values "opentelemetry-operator" "admissionWebhooks" "certManager" "enabled" }}
{{ $operatorEnabled := index .Values "opentelemetry-operator" "enabled" }}
{{- if eq ( not $certManagerEnabled ) $operatorEnabled }}
{{ ( include "opentelemetry-operator.non_certmanager" . ) }}
{{- end }}

*/}}
{{- define "opentelemetry-operator.non_certmanager" -}}
{{- $altNames := list ( printf "%s.%s" (include "opentelemetry-operator.webhook.service.name" .) .Release.Namespace ) ( printf "%s.%s.svc" (include "opentelemetry-operator.webhook.service.name" .) .Release.Namespace ) ( printf "%s.%s.svc.cluster.local" (include "opentelemetry-operator.webhook.service.name" .) .Release.Namespace ) -}}
{{- $ca := genCA ( include "opentelemetry-operator.webhook.service.name" . ) 365 -}}
{{- $cert := genSignedCert ( include "opentelemetry-operator.webhook.service.name" . ) nil $altNames 365 $ca -}}
apiVersion: v1
kind: Secret
type: kubernetes.io/tls
metadata:
name: {{ include "opentelemetry-operator.controller.manager.service.cert.name" . }}
labels:
{{- include "sumologic.labels.common" . | nindent 4 }}
data:
tls.crt: {{ $cert.Cert | b64enc }}
tls.key: {{ $cert.Key | b64enc }}
---
apiVersion: admissionregistration.k8s.io/v1
kind: MutatingWebhookConfiguration
metadata:
annotations:
cert-manager.io/inject-ca-from: {{ printf "%s/%s" .Release.Namespace ( include "opentelemetry-operator.controller.manager.service.cert.name" . ) }}
labels:
{{- include "sumologic.labels.common" . | nindent 4 }}
app.kubernetes.io/name: opentelemetry-operator
name: opentelemetry-operator-mutating-webhook-configuration
webhooks:
- admissionReviewVersions:
- v1
clientConfig:
service:
name: {{ include "opentelemetry-operator.webhook.service.name" . }}
namespace: {{ .Release.Namespace }}
path: /mutate-opentelemetry-io-v1alpha1-instrumentation
caBundle: {{ $ca.Cert | b64enc }}
failurePolicy: Fail
name: minstrumentation.kb.io
rules:
- apiGroups:
- opentelemetry.io
apiVersions:
- v1alpha1
operations:
- CREATE
- UPDATE
resources:
- instrumentations
sideEffects: None
- admissionReviewVersions:
- v1
clientConfig:
service:
name: {{ include "opentelemetry-operator.webhook.service.name" . }}
namespace: {{ .Release.Namespace }}
path: /mutate-opentelemetry-io-v1alpha1-opentelemetrycollector
caBundle: {{ $ca.Cert | b64enc }}
failurePolicy: Fail
name: mopentelemetrycollector.kb.io
rules:
- apiGroups:
- opentelemetry.io
apiVersions:
- v1alpha1
operations:
- CREATE
- UPDATE
resources:
- opentelemetrycollectors
sideEffects: None
- admissionReviewVersions:
- v1
clientConfig:
service:
name: {{ include "opentelemetry-operator.webhook.service.name" . }}
namespace: {{ .Release.Namespace }}
path: /mutate-v1-pod
caBundle: {{ $ca.Cert | b64enc }}
failurePolicy: Ignore
name: mpod.kb.io
rules:
- apiGroups:
- ""
apiVersions:
- v1
operations:
- CREATE
- UPDATE
resources:
- pods
sideEffects: None
{{- define "opentelemetry-operator.controller.manager.metrics.service.url" -}}
http://opentelemetry-operator-controller-manager-metrics-service.{{ .Release.Namespace }}:8080/metrics
{{- end -}}
6 changes: 6 additions & 0 deletions deploy/helm/sumologic/templates/clusterrole.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -39,3 +39,9 @@ rules:
- {{ template "sumologic.metadata.name.logs.statefulset" . }}
verbs: ["use"]
{{- end }}
{{- if index .Values "opentelemetry-operator" "enabled" }}
- apiGroups: ["opentelemetry.io"]
resources:
- instrumentations
verbs: ["patch", "get", "create"]
{{- end }}
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
{{ $operatorEnabled := index .Values "opentelemetry-operator" "enabled" }}
{{ $tracesEnabled := .Values.sumologic.traces.enabled }}
{{ $createDefaultInstrumentation := index .Values "opentelemetry-operator" "createDefaultInstrumentation" }}
{{- if and $operatorEnabled $tracesEnabled $createDefaultInstrumentation }}
apiVersion: v1
kind: ConfigMap
metadata:
name: {{ template "sumologic.metadata.name.opentelemetry.operator.instrumentation.configmap" . }}
labels:
app: {{ template "sumologic.labels.app.opentelemetry.operator.instrumentation.configmap" . }}
{{- include "sumologic.labels.common" . | nindent 4 }}
data:
instrumentation.cr.yaml: |
{{- (tpl (.Files.Get "conf/opentelemetry-operator/instrumentation.cr.yaml") .) | nindent 4 }}
{{- end }}
Original file line number Diff line number Diff line change
@@ -0,0 +1,63 @@
{{ $operatorEnabled := index .Values "opentelemetry-operator" "enabled" }}
{{ $tracesEnabled := .Values.sumologic.traces.enabled }}
{{ $createDefaultInstrumentation := index .Values "opentelemetry-operator" "createDefaultInstrumentation" }}
{{- if and $operatorEnabled $tracesEnabled $createDefaultInstrumentation }}
apiVersion: batch/v1
kind: Job
metadata:
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 }}
spec:
template:
spec:
serviceAccountName: {{ template "sumologic.metadata.name.roles.serviceaccount" . }}
containers:
- name: instrumentation-cr-applier
image: sumologic/kubernetes-tools
volumeMounts:
- name: instrumentation-cr-configmap
mountPath: /tmp/instrumentation-cr.yaml
subPath: instrumentation.cr.yaml
command: ["/bin/bash", "-c"]
args:
- |
max_wait=60
sleep_interval=5
counter=0
ready=false
while [[ ready != "false" ]]
do
is_ready=$(curl -s -o /dev/null -m 3 -L -w ''%{http_code}'' {{ template "opentelemetry-operator.controller.manager.metrics.service.url" . }})

if [[ is_ready -eq "200" ]]
then
ready=true
break
else
echo "Waiting for opentelemetry-operator-controller-manager..."
sleep $sleep_interval
counter=$(($counter + $sleep_interval))
fi

if [[ "$counter" -gt "$max_wait" ]]
then
echo "Couldn't reach opentelemetry-operator-controller-manager"
echo "Instrumentation resources not applied!"
break
fi
done

if [[ $ready == true ]]
then
echo "Applying Instrumentation resources"
kubectl apply -f /tmp/instrumentation-cr.yaml
fi
volumes:
- name: instrumentation-cr-configmap
configMap:
name: {{ template "sumologic.metadata.name.opentelemetry.operator.instrumentation.configmap" . }}
restartPolicy: OnFailure
backoffLimit: 5
{{- end -}}

This file was deleted.

Loading