{{- if .Values.controller.enabled }}
apiVersion: apps/v1
kind: Deployment
metadata:
  name: akri-controller-deployment
  labels: {{- include "akri.labels" . | nindent 4 }}
    app.kubernetes.io/name: akri-controller
    app.kubernetes.io/component: controller
spec:
  replicas: 1
  selector:
    matchLabels: {{- include "akri.selectorLabels" . | nindent 6 }}
      app.kubernetes.io/name: akri-controller
  template:
    metadata:
      labels: {{- include "akri.labels" . | nindent 8 }}
        app.kubernetes.io/name: akri-controller
        app.kubernetes.io/component: controller
    spec:
      {{- if .Values.rbac.enabled }}
      serviceAccountName: 'akri-controller-sa'
      {{- end }}
      containers:
      - name: akri-controller
        {{- if .Values.useDevelopmentContainers }}
        {{- if .Values.useLatestContainers }}
        image: {{ printf "%s:%s" .Values.controller.image.repository (default "latest-dev" .Values.controller.image.tag) | quote }}
        {{- else }}
        image: {{ printf "%s:%s" .Values.controller.image.repository (default (printf "v%s-dev" .Chart.AppVersion) .Values.controller.image.tag) | quote }}
        {{- end }}
        {{- else }}
        {{- if .Values.useLatestContainers }}
        image: {{ printf "%s:%s" .Values.controller.image.repository (default "latest" .Values.controller.image.tag) | quote }}
        {{- else }}
        image: {{ printf "%s:%s" .Values.controller.image.repository (default (printf "v%s" .Chart.AppVersion) .Values.controller.image.tag) | quote }}
        {{- end }}
        {{- end }}
        {{- with .Values.controller.image.pullPolicy }}
        imagePullPolicy: {{ . }}
        {{- end }}
        {{- if .Values.controller.securityContext }}
        securityContext:
        {{- toYaml .Values.controller.securityContext | nindent 10 }}
        {{- end}}
        resources:
          requests:
            memory: {{ .Values.controller.resources.memoryRequest }}
            cpu: {{ .Values.controller.resources.cpuRequest }}
          limits:
            memory: {{ .Values.controller.resources.memoryLimit }}
            cpu: {{ .Values.controller.resources.cpuLimit }}
        {{- if .Values.prometheus.enabled }}
        ports:
          - name: {{ .Values.prometheus.portName | quote }}
            containerPort: {{ .Values.prometheus.port }}
        {{- end }}
      {{- with .Values.imagePullSecrets }}
      imagePullSecrets:
        {{- toYaml . | nindent 8 }}
      {{- end }}
      {{- if .Values.controller.allowOnControlPlane }}
      tolerations:
        {{- /* Allow this pod to run on the master. */}}
        - key: node-role.kubernetes.io/master
          effect: NoSchedule
      {{- end }}
      nodeSelector:
        {{- if .Values.controller.onlyOnControlPlane }}
        node-role.kubernetes.io/master: ""
        {{- end }}
        "kubernetes.io/os": linux
        {{- if .Values.controller.nodeSelectors }}
          {{- toYaml .Values.controller.nodeSelectors | nindent 8 }}
        {{- end }}
{{- end }}