apiVersion: apps/v1
kind: Deployment
metadata:
  name: {{ include "pipeline.fullname" . }}-collector
  labels:
    {{- include "pipeline.labels" . | nindent 4 }}
spec:
  replicas: 1
  selector:
    matchLabels:
      {{- include "pipeline.selectorLabels" . | nindent 6 }}
  template:
    metadata:
      annotations:
        checksum/meta-config: {{ include (print $.Template.BasePath "/pipeline-meta-config.yaml") . | sha256sum }}
      labels:
        {{- include "pipeline.labels" . | nindent 8 }}
        {{- with .Values.podLabels }}
        {{- toYaml . | nindent 8 }}
        {{- end }}
    spec:
      serviceAccountName: pipeline-sa
      containers:
        - args:
            - pipeline
            - --config=/etc/otel/config.yaml
            - --metrics-config=/etc/metrics/config.yaml
          name: {{ .Chart.Name }}
          image: "{{ .Values.image.repository }}:{{ .Values.image.tag }}"
          env:
          - name: POD_NAMESPACE
            value: {{ .Release.Namespace }}
          ports:
            - name: http
              containerPort: {{ .Values.service.port }}
              protocol: TCP
            - name: otlp
              containerPort: 4317
              protocol: TCP
          resources:
            limits:
              cpu: 500m
              memory: 500Mi
            requests:
              cpu: 50m
              memory: 50Mi
          volumeMounts:
            - mountPath: /etc/metrics
              name: pipeline-meta-config
              readOnly: true
            - mountPath: /etc/otel
              name: pipeline-otel-config
              readOnly: true
      volumes:
        - configMap:
            defaultMode: 420
            name: {{ include "pipeline.fullname" . }}-meta-config
          name: pipeline-meta-config
        - configMap:
            defaultMode: 420
            name: {{ include "pipeline.fullname" . }}-otel-config
          name: pipeline-otel-config
      {{- if not .Values.disableDedicatedNodepool }}
      nodeSelector:
        component: "metrics-integration"
      tolerations:
        - key: "app"
          operator: "Equal"
          value: "metrics-integration"
          effect: "NoSchedule"
      {{- end }}
