Skip to content

Commit f2d21b3

Browse files
committed
add otel agent to help deploy
1 parent b6e9fd7 commit f2d21b3

File tree

17 files changed

+758
-3
lines changed

17 files changed

+758
-3
lines changed

charts/ctrlplane/Chart.lock

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,5 +11,8 @@ dependencies:
1111
- name: event-worker
1212
repository: file://charts/event-worker
1313
version: 0.1.6
14-
digest: sha256:6ae2f2e02680d3694444d67aba248dfd3a0352678d7c58d2bce30c8bfdf7be1f
15-
generated: "2024-08-28T21:15:56.001463-05:00"
14+
- name: otel
15+
repository: file://charts/otel
16+
version: 0.1.0
17+
digest: sha256:a787c72024ab9ccde1b53b471ea5e8c23583f20649e8ae9bd9c48bcbc3a835f6
18+
generated: "2024-09-21T23:19:52.598333-04:00"

charts/ctrlplane/Chart.yaml

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ apiVersion: v2
22
name: ctrlplane
33
description: Ctrlplane Helm chart for Kubernetes
44
type: application
5-
version: 0.1.23
5+
version: 0.1.24
66
appVersion: "1.16.0"
77

88
maintainers:
@@ -26,3 +26,6 @@ dependencies:
2626
- name: event-worker
2727
version: "*.*.*"
2828
repository: "file://charts/event-worker"
29+
- name: otel
30+
version: "*.*.*"
31+
repository: "file://charts/otel"
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
# Patterns to ignore when building packages.
2+
# This supports shell glob matching, relative path matching, and
3+
# negation (prefixed with !). Only one pattern per line.
4+
.DS_Store
5+
# Common VCS dirs
6+
.git/
7+
.gitignore
8+
.bzr/
9+
.bzrignore
10+
.hg/
11+
.hgignore
12+
.svn/
13+
# Common backup files
14+
*.swp
15+
*.bak
16+
*.tmp
17+
*.orig
18+
*~
19+
# Various IDEs
20+
.project
21+
.idea/
22+
*.tmproj
23+
.vscode/
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
apiVersion: v2
2+
name: otel
3+
type: application
4+
description: A Helm chart for Kubernetes
5+
6+
version: 0.1.0
7+
appVersion: "0.109.0"
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
We had to create a seperate chart, because the offical one does not support
2+
3+
1. We need to send an otlphttp to the console server. The name of this service
4+
is dynamic. TEL helm chart does not support dynamic pipeline values
5+
2. We could do the above as a config map, and pass it into the agent... however,
6+
otel helm does not support using custom config maps names because they need
7+
to be based on the release name.
Lines changed: 99 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,99 @@
1+
{{- define "otel.config" -}}
2+
{{- $data := deepCopy .Values.config }}
3+
{{- $config := .Values.config }}
4+
{{- if .Values.presets.receivers.hostMetrics }}
5+
{{- $config = mustMergeOverwrite (include "otel.hostMetricsReceiver" . | fromYaml) $config }}
6+
{{- end }}
7+
{{- if .Values.presets.receivers.logsCollection }}
8+
{{- $config = mustMergeOverwrite (include "otel.logsCollectionReceiver" . | fromYaml) $config }}
9+
{{- end }}
10+
{{- if .Values.presets.receivers.kubeletMetrics }}
11+
{{- $config = mustMergeOverwrite (include "otel.kubeletMetricsReceiver" . | fromYaml) $config }}
12+
{{- end }}
13+
{{- if .Values.presets.receivers.kubernetesEvent }}
14+
{{- $config = mustMergeOverwrite (include "otel.kubernetesEventReceiver" . | fromYaml) $config }}
15+
{{- end }}
16+
{{- if .Values.presets.receivers.kubernetesCluster }}
17+
{{- $config = mustMergeOverwrite (include "otel.kubernetesClusterReceiver" . | fromYaml) $config }}
18+
{{- end }}
19+
{{- if .Values.presets.receivers.statsd }}
20+
{{- $config = mustMergeOverwrite (include "otel.statsdReceiver" . | fromYaml) $config }}
21+
{{- end }}
22+
{{- if .Values.presets.receivers.otlp }}
23+
{{- $config = mustMergeOverwrite (include "otel.otlpReceiver" . | fromYaml) $config }}
24+
{{- end }}
25+
{{- $config = mustMergeOverwrite (include "otel.extensions" . | fromYaml) $config }}
26+
{{- $config = mustMergeOverwrite (include "otel.processors" . | fromYaml) $config }}
27+
{{- $config = mustMergeOverwrite (include "otel.service" . | fromYaml) $config }}
28+
{{- $config = mustMergeOverwrite (include "otel.exporter" . | fromYaml) $config }}
29+
{{- tpl (toYaml $config) . }}
30+
{{- end }}
31+
32+
{{- define "otel.exporter" -}}
33+
exporters:
34+
debug: {}
35+
debug/detailed:
36+
verbosity: detailed
37+
prometheus:
38+
endpoint: 0.0.0.0:9109
39+
{{- end }}
40+
41+
{{- define "otel.extensions" -}}
42+
extensions:
43+
health_check: {}
44+
memory_ballast:
45+
size_in_percentage: 40
46+
{{- end }}
47+
48+
{{- define "otel.processors" -}}
49+
processors:
50+
batch: {}
51+
memory_limiter:
52+
check_interval: 5s
53+
limit_percentage: 80
54+
spike_limit_percentage: 25
55+
k8sattributes:
56+
filter:
57+
node_from_env_var: K8S_NODE_NAME
58+
passthrough: false
59+
pod_association:
60+
- sources:
61+
- from: resource_attribute
62+
name: k8s.pod.ip
63+
- sources:
64+
- from: resource_attribute
65+
name: k8s.pod.uid
66+
- sources:
67+
- from: connection
68+
extract:
69+
metadata:
70+
- "k8s.namespace.name"
71+
- "k8s.deployment.name"
72+
- "k8s.statefulset.name"
73+
- "k8s.daemonset.name"
74+
- "k8s.cronjob.name"
75+
- "k8s.job.name"
76+
- "k8s.node.name"
77+
- "k8s.pod.name"
78+
- "k8s.pod.uid"
79+
- "k8s.pod.start_time"
80+
annotations:
81+
- tag_name: $$1
82+
key_regex: (.*)
83+
from: pod
84+
labels:
85+
- tag_name: $$1
86+
key_regex: (.*)
87+
from: pod
88+
{{- end }}
89+
90+
{{- define "otel.service" -}}
91+
service:
92+
extensions:
93+
- health_check
94+
- memory_ballast
95+
pipelines: {}
96+
telemetry:
97+
metrics:
98+
address: ${env:POD_IP}:8888
99+
{{- end }}
Lines changed: 102 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,102 @@
1+
{{/* vim: set filetype=mustache: */}}
2+
3+
{{/*
4+
Expand the name of the chart.
5+
*/}}
6+
{{- define "otel.name" -}}
7+
{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" }}
8+
{{- end }}
9+
10+
{{/*
11+
Create a default fully qualified app name.
12+
We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec).
13+
If release name contains chart name it will be used as a full name.
14+
*/}}
15+
{{- define "otel.fullname" -}}
16+
{{- if .Values.fullnameOverride }}
17+
{{- .Values.fullnameOverride | trunc 63 | trimSuffix "-" }}
18+
{{- else }}
19+
{{- $name := default .Chart.Name .Values.nameOverride }}
20+
{{- if contains $name .Release.Name }}
21+
{{- .Release.Name | trunc 63 | trimSuffix "-" }}
22+
{{- else }}
23+
{{- printf "%s-%s" .Release.Name $name | trunc 63 | trimSuffix "-" }}
24+
{{- end }}
25+
{{- end }}
26+
{{- end }}
27+
28+
{{/*
29+
Create chart name and version as used by the chart label.
30+
*/}}
31+
{{- define "otel.chart" -}}
32+
{{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" }}
33+
{{- end }}
34+
35+
{{/*
36+
Common labels
37+
*/}}
38+
{{- define "otel.labels" -}}
39+
helm.sh/chart: {{ include "otel.chart" . }}
40+
{{ include "otel.selectorLabels" . }}
41+
{{- if .Chart.AppVersion }}
42+
app.kubernetes.io/version: {{ .Chart.AppVersion | quote }}
43+
{{- end }}
44+
ctrlplane.com/app-name: {{ include "otel.chart" . }}
45+
app.kubernetes.io/managed-by: {{ .Release.Service }}
46+
{{- end }}
47+
48+
{{/*
49+
Selector labels
50+
*/}}
51+
{{- define "otel.selectorLabels" -}}
52+
app.kubernetes.io/name: {{ include "otel.name" . }}
53+
app.kubernetes.io/instance: {{ .Release.Name }}
54+
{{- end }}
55+
56+
{{/*
57+
Create the name of the service account to use
58+
*/}}
59+
{{- define "otel.serviceAccountName" -}}
60+
{{- if .Values.serviceAccount.create }}
61+
{{- default (include "otel.fullname" .) .Values.serviceAccount.name }}
62+
{{- else }}
63+
{{- default "default" .Values.serviceAccount.name }}
64+
{{- end }}
65+
{{- end }}
66+
67+
{{/*
68+
Returns the extraEnv keys and values to inject into containers.
69+
70+
Global values will override any chart-specific values.
71+
*/}}
72+
{{- define "otel.extraEnv" -}}
73+
{{- $allExtraEnv := merge (default (dict) .local.extraEnv) .global.extraEnv -}}
74+
{{- range $key, $value := $allExtraEnv }}
75+
- name: {{ $key }}
76+
value: {{ $value | quote }}
77+
{{- end -}}
78+
{{- end -}}
79+
80+
{{/*
81+
Returns a list of _common_ labels to be shared across all
82+
app deployments and other shared objects.
83+
*/}}
84+
{{- define "otel.commonLabels" -}}
85+
{{- $commonLabels := default (dict) .Values.common.labels -}}
86+
{{- if $commonLabels }}
87+
{{- range $key, $value := $commonLabels }}
88+
{{ $key }}: {{ $value | quote }}
89+
{{- end }}
90+
{{- end -}}
91+
{{- end -}}
92+
93+
{{/*
94+
Returns a list of _pod_ labels to be shared across all
95+
app deployments.
96+
*/}}
97+
{{- define "otel.podLabels" -}}
98+
{{- range $key, $value := .Values.pod.labels }}
99+
{{ $key }}: {{ $value | quote }}
100+
{{- end }}
101+
{{- end -}}
102+

0 commit comments

Comments
 (0)