|
| 1 | +{{- if and .Values.ebpfCollector.enabled .Values.ebpfCollector.k8sCollector.enabled }} |
| 2 | +# The k8s-collector consists of two services: |
| 3 | +# 1) k8s-watcher: talks to the Kubernetes API server to determine the current state of |
| 4 | +# the cluster; sets up watches to be notified of subsequent changes to pods, services |
| 5 | +# and other resources. |
| 6 | +# 2) k8s-relay: relays the information collected by k8s-watcher to the reducer. |
| 7 | +apiVersion: apps/v1 |
| 8 | +kind: Deployment |
| 9 | +metadata: |
| 10 | + name: {{ include "opentelemetry-collector-k8s-collector.fullname" . }} |
| 11 | + labels: |
| 12 | + {{- include "opentelemetry-collector.labels" . | nindent 4 }} |
| 13 | +spec: |
| 14 | + progressDeadlineSeconds: 600 |
| 15 | + replicas: 1 |
| 16 | + revisionHistoryLimit: 3 |
| 17 | + selector: |
| 18 | + matchLabels: |
| 19 | + app.kubernetes.io/name: {{ include "opentelemetry-collector-k8s-collector.fullname" . }} |
| 20 | + app.kubernetes.io/instance: {{ .Release.Name }} |
| 21 | + strategy: |
| 22 | + type: RollingUpdate |
| 23 | + template: |
| 24 | + metadata: |
| 25 | + annotations: |
| 26 | + # This is here to allow us to do "zero-downtime" updates without an image change. |
| 27 | + rollingUpdateVersion: "1" |
| 28 | + charts.flowmill.com/version: {{ .Chart.Version }} |
| 29 | + labels: |
| 30 | + app.kubernetes.io/name: {{ include "opentelemetry-collector-k8s-collector.fullname" . }} |
| 31 | + app.kubernetes.io/instance: {{ .Release.Name }} |
| 32 | + spec: |
| 33 | +{{- if .Values.ebpfCollector.imagePullSecrets }} |
| 34 | + imagePullSecrets: |
| 35 | +{{- range .Values.ebpfCollector.imagePullSecrets }} |
| 36 | + - name: {{ . }} |
| 37 | +{{- end }} |
| 38 | +{{- end }} |
| 39 | + containers: |
| 40 | + - image: "{{ default .Values.ebpfCollector.images.repository .Values.ebpfCollector.k8sCollector.watcher.image.repository }}/{{ .Values.ebpfCollector.k8sCollector.watcher.image.name }}:{{ default .Values.ebpfCollector.images.tag .Values.ebpfCollector.k8sCollector.watcher.image.tag }}" |
| 41 | + imagePullPolicy: {{ .Values.ebpfCollector.images.pullPolicy }} |
| 42 | + name: k8s-watcher |
| 43 | +{{- if hasKey .Values.ebpfCollector.k8sCollector.watcher "resources" }} |
| 44 | + resources: |
| 45 | +{{ toYaml .Values.ebpfCollector.k8sCollector.watcher.resources | indent 10 }} |
| 46 | +{{- end }} |
| 47 | + args: |
| 48 | + - --log-console |
| 49 | + {{- if hasKey .Values.ebpfCollector.log "level" }} |
| 50 | + - --log-level={{ .Values.ebpfCollector.log.level }} |
| 51 | + {{- end }} |
| 52 | + # k8s-relay, which is a service that the k8s-watcher talks to. |
| 53 | + # Currently not configurable, has to be reachable on localhost:8172, so must |
| 54 | + # share a pod with the k8s-watcher above. |
| 55 | + - image: "{{ default .Values.ebpfCollector.images.repository .Values.ebpfCollector.k8sCollector.relay.image.repository }}/{{ .Values.ebpfCollector.k8sCollector.relay.image.name }}:{{ default .Values.ebpfCollector.images.tag .Values.ebpfCollector.k8sCollector.relay.image.tag }}" |
| 56 | + imagePullPolicy: {{ .Values.ebpfCollector.images.pullPolicy }} |
| 57 | + name: k8s-relay |
| 58 | +{{- if hasKey .Values.ebpfCollector.k8sCollector.relay "resources" }} |
| 59 | + resources: |
| 60 | +{{ toYaml .Values.ebpfCollector.k8sCollector.relay.resources | indent 10 }} |
| 61 | +{{- end }} |
| 62 | + args: |
| 63 | + - --config-file=/etc/network-explorer/config.yaml |
| 64 | +{{- if .Values.ebpfCollector.log.console }} |
| 65 | + - --log-console |
| 66 | +{{- end }} |
| 67 | +{{- if hasKey .Values.ebpfCollector.log "level" }} |
| 68 | + - --{{ .Values.ebpfCollector.log.level }} |
| 69 | +{{- end }} |
| 70 | +{{- if hasKey .Values.ebpfCollector.k8sCollector.relay "log" -}} |
| 71 | +{{- if hasKey .Values.ebpfCollector.k8sCollector.relay.log "whitelist" }} |
| 72 | +{{- if hasKey .Values.ebpfCollector.k8sCollector.relay.log.whitelist "channel" }} |
| 73 | + - --log-whitelist-channel={{ .Values.ebpfCollector.k8sCollector.relay.log.whitelist.channel }} |
| 74 | +{{- end }} |
| 75 | +{{- if hasKey .Values.ebpfCollector.k8sCollector.relay.log.whitelist "component" }} |
| 76 | + - --log-whitelist-component={{ .Values.ebpfCollector.k8sCollector.relay.log.whitelist.component }} |
| 77 | +{{- end }} |
| 78 | +{{- if hasKey .Values.ebpfCollector.k8sCollector.relay.log.whitelist "cloudPlatform" }} |
| 79 | + - --log-whitelist-cloud-platform={{ .Values.ebpfCollector.k8sCollector.relay.log.whitelist.cloudPlatform }} |
| 80 | +{{- end }} |
| 81 | +{{- end }} |
| 82 | +{{- end }} |
| 83 | +{{- if .Values.ebpfCollector.k8sCollector.relay.additionalArgs }} |
| 84 | +{{ toYaml .Values.ebpfCollector.k8sCollector.relay.additionalArgs | indent 10 }} |
| 85 | +{{- end }} |
| 86 | + env: |
| 87 | + - name: "EBPF_NET_CLUSTER_NAME" |
| 88 | + value: {{ tpl (.Values.ebpfCollector.clusterName | toYaml) . }} |
| 89 | +{{- if hasKey .Values "debug" }} |
| 90 | +{{- if (default false .Values.ebpfCollector.debug.enabled) }} |
| 91 | + - name: "EBPF_NET_DEBUG_MODE" |
| 92 | + value: "true" |
| 93 | +{{- end }} |
| 94 | +{{- end }} |
| 95 | +{{- if (default false .Values.ebpfCollector.k8sCollector.relay.runUnderGDB) }} |
| 96 | + - name: "EBPF_NET_RUN_UNDER_GDB" |
| 97 | + value: "gdb" |
| 98 | +{{- end }} |
| 99 | + - name: "EBPF_NET_INTAKE_HOST" |
| 100 | + value: {{ include "opentelemetry-collector-reducer.fullname" . }} |
| 101 | + - name: "EBPF_NET_INTAKE_PORT" |
| 102 | + value: "{{ default 7000 .Values.ebpfCollector.reducer.telemetryPort }}" |
| 103 | +{{- if hasKey .Values "debug" }} |
| 104 | +{{- if (default false .Values.ebpfCollector.debug.storeMinidump) }} |
| 105 | + - name: "EBPF_NET_MINIDUMP_DIR" |
| 106 | + value: "/hostfs/var/run/network-explorer/minidump" |
| 107 | +{{- end }} |
| 108 | +{{- end }} |
| 109 | +{{- if .Values.ebpfCollector.debug.sendUnplannedExitMetric }} |
| 110 | + ## TODO: Needs to be reviewed. |
| 111 | + ## it requires a collector running as deployment |
| 112 | + - name: "EBPF_NET_CRASH_METRIC_HOST" |
| 113 | + value: {{quote (include "opentelemetry-collector.fullname" .) }} |
| 114 | + - name: "EBPF_NET_CRASH_METRIC_PORT" |
| 115 | + value: {{ .Values.ports.otlp.servicePort | quote }} |
| 116 | +{{- end }} |
| 117 | +{{- if .Values.ebpfCollector.k8sCollector.relay.env }} |
| 118 | +{{ toYaml .Values.ebpfCollector.k8sCollector.relay.env | indent 10 }} |
| 119 | +{{- end }} |
| 120 | + volumeMounts: |
| 121 | + - mountPath: /etc/network-explorer |
| 122 | + name: k8s-relay-config |
| 123 | +{{- if hasKey .Values "debug" }} |
| 124 | +{{- if (default false .Values.ebpfCollector.debug.storeMinidump) }} |
| 125 | + - mountPath: /hostfs/var/run/network-explorer |
| 126 | + name: host-var-run-network-explorer |
| 127 | + readOnly: false |
| 128 | +{{- end }} |
| 129 | +{{- end }} |
| 130 | + terminationGracePeriodSeconds: 30 |
| 131 | + volumes: |
| 132 | +{{- if hasKey .Values "debug" }} |
| 133 | +{{- if (default false .Values.ebpfCollector.debug.storeMinidump) }} |
| 134 | + - name: host-var-run-network-explorer |
| 135 | + hostPath: |
| 136 | + path: /var/run/network-explorer |
| 137 | + type: DirectoryOrCreate |
| 138 | +{{- end }} |
| 139 | +{{- end }} |
| 140 | + - name: k8s-relay-config |
| 141 | + projected: |
| 142 | + sources: |
| 143 | + - configMap: |
| 144 | + name: {{ include "opentelemetry-collector.fullname" . }}-config |
| 145 | + items: |
| 146 | + - key: config.yaml |
| 147 | + path: config.yaml |
| 148 | + securityContext: {} |
| 149 | + serviceAccountName: {{ include "opentelemetry-collector.serviceAccountName" . }} |
| 150 | + {{- with .Values.ebpfCollector.k8sCollector.nodeSelector }} |
| 151 | + nodeSelector: |
| 152 | +{{ toYaml . | indent 8}} |
| 153 | + {{- end }} |
| 154 | + {{- with .Values.ebpfCollector.k8sCollector.affinity }} |
| 155 | + affinity: |
| 156 | +{{ toYaml . | indent 8 }} |
| 157 | + {{- end }} |
| 158 | + {{- with .Values.ebpfCollector.k8sCollector.tolerations }} |
| 159 | + tolerations: |
| 160 | +{{ toYaml . | indent 8 }} |
| 161 | + {{- end }} |
| 162 | +{{- end }} |
0 commit comments