charts/karpenter/templates/deployment.yaml (241 lines of code) (raw):

apiVersion: apps/v1 kind: Deployment metadata: name: {{ include "karpenter.fullname" . }} namespace: {{ .Release.Namespace }} labels: {{- include "karpenter.labels" . | nindent 4 }} {{- with .Values.additionalAnnotations }} annotations: {{- toYaml . | nindent 4 }} {{- end }} spec: replicas: {{ .Values.replicas }} revisionHistoryLimit: {{ .Values.revisionHistoryLimit }} {{- with .Values.strategy }} strategy: {{- toYaml . | nindent 4 }} {{- end }} selector: matchLabels: {{- include "karpenter.selectorLabels" . | nindent 6 }} template: metadata: labels: {{- include "karpenter.selectorLabels" . | nindent 8 }} {{- with .Values.podLabels }} {{- toYaml . | nindent 8 }} {{- end }} annotations: {{- with .Values.podAnnotations }} {{- toYaml . | nindent 8 }} {{- end }} spec: {{- with .Values.imagePullSecrets }} imagePullSecrets: {{- toYaml . | nindent 8 }} {{- end }} automountServiceAccountToken: true serviceAccountName: {{ include "karpenter.serviceAccountName" . }} {{- with .Values.podSecurityContext }} securityContext: {{- toYaml . | nindent 8 }} {{- end }} {{- with .Values.priorityClassName }} priorityClassName: {{ . | quote }} {{- end }} {{- with .Values.terminationGracePeriodSeconds }} terminationGracePeriodSeconds: {{ . }} {{- end }} {{- with .Values.dnsPolicy }} dnsPolicy: {{ . }} {{- end }} {{- with .Values.dnsConfig }} dnsConfig: {{- toYaml . | nindent 8}} {{- end }} {{- if .Values.hostNetwork }} hostNetwork: true {{- end }} {{- with .Values.schedulerName }} schedulerName: {{ . | quote }} {{- end }} containers: - name: {{ include "karpenter.controller.containerName" . }} securityContext: privileged: false allowPrivilegeEscalation: false readOnlyRootFilesystem: true runAsNonRoot: true runAsUser: 65532 runAsGroup: 65532 capabilities: drop: - ALL {{- with .Values.controller.securityContext }} {{- with .appArmorProfile }} appArmorProfile: {{- toYaml . | nindent 14}} {{- end }} {{- with .seLinuxOptions }} seLinuxOptions: {{- toYaml . | nindent 14}} {{- end }} {{- with .seccompProfile }} seccompProfile: {{- toYaml . | nindent 14}} {{- end }} {{- end }} image: {{ include "karpenter.controller.image" . }} imagePullPolicy: {{ .Values.imagePullPolicy }} env: - name: KUBERNETES_MIN_VERSION value: "1.19.0-0" - name: KARPENTER_SERVICE value: {{ include "karpenter.fullname" . }} {{- with .Values.logLevel }} - name: LOG_LEVEL value: "{{ . }}" {{- end }} {{- with .Values.logOutputPaths }} - name: LOG_OUTPUT_PATHS value: "{{ join "," . }}" {{- end }} {{- with .Values.logErrorOutputPaths }} - name: LOG_ERROR_OUTPUT_PATHS value: "{{ join "," . }}" {{- end }} - name: METRICS_PORT value: "{{ .Values.controller.metrics.port }}" - name: HEALTH_PROBE_PORT value: "{{ .Values.controller.healthProbe.port }}" - name: SYSTEM_NAMESPACE valueFrom: fieldRef: fieldPath: metadata.namespace - name: MEMORY_LIMIT valueFrom: resourceFieldRef: containerName: {{ include "karpenter.controller.containerName" . }} divisor: "0" resource: limits.memory - name: FEATURE_GATES value: "ReservedCapacity={{ .Values.settings.featureGates.reservedCapacity }},SpotToSpotConsolidation={{ .Values.settings.featureGates.spotToSpotConsolidation }},NodeRepair={{ .Values.settings.featureGates.nodeRepair }}" {{- with .Values.settings.batchMaxDuration }} - name: BATCH_MAX_DURATION value: "{{ tpl (toString .) $ }}" {{- end }} {{- with .Values.settings.batchIdleDuration }} - name: BATCH_IDLE_DURATION value: "{{ tpl (toString .) $ }}" {{- end }} {{- with .Values.settings.preferencePolicy }} - name: PREFERENCE_POLICY value: "{{ . }}" {{- end }} {{- with .Values.settings.clusterCABundle }} - name: CLUSTER_CA_BUNDLE value: "{{ tpl (toString .) $ }}" {{- end }} - name: CLUSTER_NAME value: "{{ required "Chart cannot be installed without a valid settings.clusterName!" (tpl .Values.settings.clusterName .) }}" {{- with .Values.settings.clusterEndpoint }} - name: CLUSTER_ENDPOINT value: "{{ tpl (toString .) $ }}" {{- end }} {{- with .Values.settings.isolatedVPC }} - name: ISOLATED_VPC value: "{{ tpl (toString .) $ }}" {{- end }} {{- with .Values.settings.eksControlPlane }} - name: EKS_CONTROL_PLANE value: "{{ tpl (toString .) $ }}" {{- end }} {{- with .Values.settings.vmMemoryOverheadPercent }} - name: VM_MEMORY_OVERHEAD_PERCENT value: "{{ tpl (toString .) $ }}" {{- end }} {{- with .Values.settings.interruptionQueue }} - name: INTERRUPTION_QUEUE value: "{{ tpl (toString .) $ }}" {{- end }} {{- with .Values.settings.reservedENIs }} - name: RESERVED_ENIS value: "{{ tpl (toString .) $ }}" {{- end }} {{- with .Values.controller.env }} {{- toYaml . | nindent 12 }} {{- end }} {{- with .Values.controller.envFrom }} envFrom: {{- toYaml . | nindent 12 }} {{- end }} ports: - name: http-metrics containerPort: {{ .Values.controller.metrics.port }} protocol: TCP - name: http containerPort: {{ .Values.controller.healthProbe.port }} protocol: TCP livenessProbe: initialDelaySeconds: 30 timeoutSeconds: 30 httpGet: path: /healthz port: http readinessProbe: initialDelaySeconds: 5 timeoutSeconds: 30 httpGet: path: /readyz port: http {{- with .Values.controller.resources }} resources: {{- toYaml . | nindent 12 }} {{- end }} {{- if .Values.controller.extraVolumeMounts }} volumeMounts: {{- with .Values.controller.extraVolumeMounts }} {{- toYaml . | nindent 12 }} {{- end }} {{- end }} {{- range .Values.controller.sidecarContainer }} - {{- toYaml . | nindent 10 }} {{- if or $.Values.controller.extraVolumeMounts $.Values.controller.sidecarVolumeMounts }} volumeMounts: {{- with $.Values.controller.extraVolumeMounts }} {{- toYaml . | nindent 12 }} {{- end }} {{- with $.Values.controller.sidecarVolumeMounts }} {{- toYaml . | nindent 12 }} {{- end }} {{- end }} {{- end }} {{- with .Values.initContainers }} initContainers: {{- toYaml . | nindent 8 }} {{- end }} {{- with .Values.nodeSelector }} nodeSelector: {{- toYaml . | nindent 8 }} {{- end }} {{- with .Values.affinity }} # The template below patches the .Values.affinity to add a default label selector where not specificed {{- $_ := include "karpenter.patchAffinity" $ }} affinity: {{- toYaml . | nindent 8 }} {{- end }} {{- with .Values.topologySpreadConstraints }} # The template below patches the .Values.topologySpreadConstraints to add a default label selector where not specificed {{- $_ := include "karpenter.patchTopologySpreadConstraints" $ }} topologySpreadConstraints: {{- toYaml . | nindent 8 }} {{- end }} {{- with .Values.tolerations }} tolerations: {{- toYaml . | nindent 8 }} {{- end }} {{- if .Values.extraVolumes }} volumes: {{- with .Values.extraVolumes }} {{- toYaml . | nindent 8 }} {{- end }} {{- end }}