---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: machine-controller-manager
  namespace: {{ .Release.Namespace }}
  labels:
    garden.sapcloud.io/role: controlplane
    app: kubernetes
    role: machine-controller-manager
spec:
  revisionHistoryLimit: 0
  replicas: {{ .Values.replicas }}
  selector:
    matchLabels:
      app: kubernetes
      role: machine-controller-manager
  template:
    metadata:
      annotations:
        scheduler.alpha.kubernetes.io/critical-pod: ''
{{- if .Values.podAnnotations }}
{{ toYaml .Values.podAnnotations | indent 8 }}
{{- end }}
      labels:
        garden.sapcloud.io/role: controlplane
        app: kubernetes
        role: machine-controller-manager
        networking.gardener.cloud/to-dns: allowed
        networking.gardener.cloud/to-public-networks: allowed
        networking.gardener.cloud/to-private-networks: allowed
        networking.gardener.cloud/to-seed-apiserver: allowed
        networking.gardener.cloud/to-shoot-apiserver: allowed
        networking.gardener.cloud/from-prometheus: allowed
{{- if .Values.podLabels }}
{{ toYaml .Values.podLabels | indent 8 }}
{{- end }}
    spec:
      serviceAccountName: machine-controller-manager
      terminationGracePeriodSeconds: 5
      containers:
      - name: aws-machine-controller-manager
        image: {{ index .Values.images "machine-controller-manager" }}
        imagePullPolicy: IfNotPresent
        command:
        - ./machine-controller-manager
        - --control-kubeconfig=inClusterConfig
        - --target-kubeconfig=/var/lib/machine-controller-manager/kubeconfig
        - --namespace={{ .Release.Namespace }}
        - --port={{ .Values.metricsPort }}
        - --machine-creation-timeout=20m
        - --machine-drain-timeout=2h
        - --machine-health-timeout=10m
        - --machine-safety-apiserver-statuscheck-timeout=30s
        - --machine-safety-apiserver-statuscheck-period=1m
        - --machine-safety-orphan-vms-period=30m
        - --machine-safety-overshooting-period=1m
        - --safety-up=2
        - --safety-down=1
        - --v=3
        livenessProbe:
          failureThreshold: 3
          httpGet:
            path: /healthz
            port: {{ .Values.metricsPort }}
            scheme: HTTP
          initialDelaySeconds: 30
          periodSeconds: 10
          successThreshold: 1
          timeoutSeconds: 5
        ports:
        - name: metrics
          containerPort: {{ .Values.metricsPort }}
          protocol: TCP
        resources:
          requests:
            cpu: 50m
            memory: 64Mi
          limits:
            cpu: 350m
            memory: 256Mi
        volumeMounts:
        - mountPath: /var/lib/machine-controller-manager
          name: machine-controller-manager
          readOnly: true
      volumes:
      - name: machine-controller-manager
        secret:
          secretName: machine-controller-manager
