apiVersion: apps/v1
kind: Deployment
metadata:
  name: {{ include "vector.fullname" . }}
  labels:
    {{- include "vector.labels" . | nindent 4 }}
spec:
  replicas: 1
  selector:
    matchLabels:
      {{- include "vector.selectorLabels" . | nindent 6 }}
  template:
    metadata:
      labels:
        {{- include "vector.selectorLabels" . | nindent 8 }}
    spec:
      containers:
        - name: {{ .Chart.Name }}
          args:
            - --config
            - /etc/vector/vector.yaml
            - --watch-config
          image: "{{ .Values.deployment.image.repository }}:{{ .Values.deployment.image.tag }}"
          imagePullPolicy: {{ .Values.deployment.image.pullPolicy }}
          ports:
            - name: otlp-grpc
              containerPort: 4317
              protocol: TCP
            - name: otlp-http
              containerPort: 4318
              protocol: TCP
            - name: http
              containerPort: 8080
              protocol: TCP
            - name: api
              containerPort: 8686
              protocol: TCP
            - name: prom
              containerPort: 9090
              protocol: TCP
          env:
            - name: VECTOR_LOG
              value: "info"
          volumeMounts:
            - name: config-volume
              mountPath: /etc/vector/vector.yaml
              subPath: vector.yaml
          resources:
            {{- toYaml .Values.deployment.resources | nindent 12 }}
      volumes:
        - name: config-volume
          configMap:
            name: {{ include "vector.fullname" . }}-config
      {{- if not .Values.disableDedicatedNodepool }}
      nodeSelector:
        component: "metrics-integration"
      tolerations:
        - key: "app"
          operator: "Equal"
          value: "metrics-integration"
          effect: "NoSchedule"
      {{- end }}
