1# -- Overrides the chart's name.
3# -- Overrides the chart's computed fullname.
5# -- Additional labels to add into metadata.
9# -- Additional annotations to add into metadata.
10additionalAnnotations: {}
11# -- Image pull policy for Docker images.
12imagePullPolicy: IfNotPresent
13# -- Image pull secrets for Docker images.
16 # -- Additional annotations for the Service.
19 # -- Specifies if a ServiceAccount should be created.
21 # -- The name of the ServiceAccount to use.
22 # If not set and create is true, a name is generated using the fullname template.
24 # -- Additional annotations for the ServiceAccount.
26# -- Specifies additional rules for the core ClusterRole.
27additionalClusterRoleRules: []
29 # -- Specifies whether a ServiceMonitor should be created.
31 # -- Additional labels for the ServiceMonitor.
33 # -- Relabelings for the `http-metrics` endpoint on the ServiceMonitor.
34 # For more details on relabelings, see: https://prometheus.io/docs/prometheus/latest/configuration/configuration/#relabel_config
36 # -- Metric relabelings for the `http-metrics` endpoint on the ServiceMonitor.
37 # For more details on metric relabelings, see: https://prometheus.io/docs/prometheus/latest/configuration/configuration/#metric_relabel_configs
39 # -- Configuration on `http-metrics` endpoint for the ServiceMonitor.
40 # Not to be used to add additional endpoints.
41 # See the Prometheus operator documentation for configurable fields https://github.com/prometheus-operator/prometheus-operator/blob/main/Documentation/api-reference/api.md#endpoint
43 # -- Specifies the sampleLimit for prometheus scrapes.
44 # Per-scrape limit on the number of scraped samples that will be accepted.
45 # If more than this number of samples are present after metric relabeling
46 # the entire scrape will be treated as failed. 0 means no limit.
48# -- Number of replicas.
50# -- The number of old ReplicaSets to retain to allow rollback.
51revisionHistoryLimit: 10
52# -- Strategy for updating the pod.
56# -- Additional labels for the pod.
58# -- Additional annotations for the pod.
63# -- SecurityContext for the pod.
68# -- PriorityClass name for the pod.
69priorityClassName: system-cluster-critical
70# -- Override the default termination grace period for the pod.
71terminationGracePeriodSeconds:
72# -- Bind the pod to the host network.
73# This is required when using a custom CNI.
75# -- Specify which Kubernetes scheduler should dispatch the pod.
76schedulerName: default-scheduler
77# -- Configure the DNS Policy for the pod
78dnsPolicy: ClusterFirst
79# -- Configure DNS Config for the pod
84# -- add additional initContainers to run before karpenter container starts
86# - name: list-ec2-instances
87# image: amazon/aws-cli:latest
88# command: [ 'aws', 'ec2', 'describe-instance-types']
89# -- Node selectors to schedule the pod to nodes with labels.
91 kubernetes.io/os: linux
92# -- Affinity rules for scheduling the pod. If an explicit label selector is not provided for pod affinity or pod anti-affinity one will be created from the pod selector labels.
95 requiredDuringSchedulingIgnoredDuringExecution:
98 - key: karpenter.sh/nodepool
99 operator: DoesNotExist
101 requiredDuringSchedulingIgnoredDuringExecution:
102 - topologyKey: "kubernetes.io/hostname"
103# -- Topology spread constraints to increase the controller resilience by distributing pods across the cluster zones. If an explicit label selector is not provided one will be created from the pod selector labels.
104topologySpreadConstraints:
106 topologyKey: topology.kubernetes.io/zone
107 whenUnsatisfiable: DoNotSchedule
108# -- Tolerations to allow the pod to be scheduled to nodes with taints.
110 - key: CriticalAddonsOnly
112# -- Additional volumes for the pod.
114# - name: aws-iam-token
118# - serviceAccountToken:
119# audience: sts.amazonaws.com
120# expirationSeconds: 86400
123 # -- Distinguishing container name (containerName: karpenter-controller).
124 containerName: controller
126 # -- Repository path to the controller image.
127 repository: cgr.dev/chainguard-private/karpenter
128 # -- Tag of the controller image.
130 # -- SHA256 digest of the controller image.
131 digest: sha256:a362df95f07db5f75ff20bb7add3d4bb990af5efb679730f0618b0e3b8ee3887
132 # -- Additional environment variables for the controller pod.
138 # -- AppArmor profile for the controller container.
140 # -- SELinux options for the controller container.
142 # -- Seccomp profile for the controller container.
144 # -- Resources for the controller container.
146 # We usually recommend not to specify default resources and to leave this as a conscious
147 # choice for the user. This also increases chances charts run on environments with little
148 # resources, such as Minikube. If you do want to specify resources, uncomment the following
149 # lines, adjust them as necessary, and remove the curly braces after 'resources:'.
156 # -- Additional volumeMounts for the controller container.
157 extraVolumeMounts: []
158 # - name: aws-iam-token
159 # mountPath: /var/run/secrets/eks.amazonaws.com/serviceaccount
161 # -- Additional sidecarContainer config
163 # -- Additional volumeMounts for the sidecar - this will be added to the volume mounts on top of extraVolumeMounts
164 sidecarVolumeMounts: []
166 # -- The container port to use for metrics.
169 # -- The container port to use for http health probe.
171# -- Global log level, defaults to 'info'
173# -- Log outputPaths - defaults to stdout only
176# -- Log errorOutputPaths - defaults to stderr only
179# -- Global Settings to configure Karpenter
181 # -- The maximum length of a batch window. The longer this is, the more pods we can consider for provisioning at one
182 # time which usually results in fewer but larger nodes.
183 batchMaxDuration: 10s
184 # -- The maximum amount of time with no new ending pods that if exceeded ends the current batching window. If pods arrive
185 # faster than this time, the batching window will be extended up to the maxDuration. If they arrive slower, the pods
186 # will be batched separately.
187 batchIdleDuration: 1s
188 # -- How the Karpenter scheduler should treat preferences. Preferences include preferredDuringSchedulingIgnoreDuringExecution
189 # node and pod affinities/anti-affinities and ScheduleAnyways topologySpreadConstraints. Can be one of 'Ignore' and 'Respect'
190 preferencePolicy: Respect
191 # -- How the Karpenter scheduler treats min values. Options include 'Strict' (fails scheduling when min values can't be met) and 'BestEffort' (relaxes min values when they can't be met).
192 minValuesPolicy: Strict
193 # -- Cluster CA bundle for TLS configuration of provisioned nodes. If not set, this is taken from the controller's TLS configuration for the API server.
197 # -- Cluster endpoint. If not set, will be discovered during startup (EKS only).
199 # -- If true then assume we can't reach AWS services which don't have a VPC endpoint.
200 # This also has the effect of disabling look-ups to the AWS pricing endpoint.
202 # -- Marking this true means that your cluster is running with an EKS control plane and Karpenter should attempt to discover cluster details from the DescribeCluster API.
203 eksControlPlane: false
204 # -- The VM memory overhead as a percent that will be subtracted from the total memory for all instance types. The value of `0.075` equals to 7.5%.
205 vmMemoryOverheadPercent: 0.075
206 # -- Interruption queue is the name of the SQS queue used for processing interruption events from EC2.
207 # Interruption handling is disabled if not specified. Enabling interruption handling may
208 # require additional permissions on the controller service account. Additional permissions are outlined in the docs.
209 interruptionQueue: ""
210 # -- Marking this true signals Karpenter to respect zonal shifts when making node claims.
211 # More information about Zonal Shift here: https://docs.aws.amazon.com/eks/latest/userguide/zone-shift-enable.html#zone-shift-enable-steps
212 enableZonalShift: false
213 # -- Reserved ENIs are not included in the calculations for max-pods or kube-reserved.
214 # This is most often used in the VPC CNI custom networking setup https://docs.aws.amazon.com/eks/latest/userguide/cni-custom-network.html.
216 # -- enableDRA is ALPHA and is disabled by default.
217 # Setting this to true will enable every AWS DRA driver feature gate (awsFeatureGates.draNVIDIAGPU and
218 # awsFeatureGates.draEFA) and set ignoreDRARequests to false. It can't be combined with any of those values.
220 # -- (bool) Ignore pods' DRA requests during scheduling simulations. Enabling either AWS DRA feature gate
221 # (awsFeatureGates.draNVIDIAGPU or awsFeatureGates.draEFA) overrides this to false. Can't be combined with enableDRA.
223 ignoreDRARequests: null
224 # -- Run the legacy node repair controller instead of node repair as a disruption method. Only takes effect with
225 # featureGates.nodeRepair, and can't be combined with featureGates.terminateFirstRepair, which the legacy controller
226 # doesn't support. The legacy node repair controller is planned for deprecation.
227 legacyNodeRepair: false
228 # -- Disable cluster state metrics and events.
229 disableClusterStateObservability: false
230 # -- Disable dry run validation for EC2NodeClasses.
232 # -- How often Karpenter refreshes AMI data from EC2. Increasing this value will reduce the number of
233 # DescribeImages API calls at the cost of increased staleness in AMI discovery and drift detection. Must be at least 1m.
234 amiRefreshInterval: 1m
235 # -- How often Karpenter refreshes subnet data from EC2. Increasing this value will reduce the number of
236 # DescribeSubnets API calls at the cost of increased staleness in subnet discovery. Must be at least 1m.
237 subnetRefreshInterval: 1m
238 # -- How often Karpenter refreshes security group data from EC2. Increasing this value will reduce the number of
239 # DescribeSecurityGroups API calls at the cost of increased staleness in security group discovery. Must be at least 1m.
240 securityGroupRefreshInterval: 1m
241 # -- Feature Gate configuration values. Feature Gates will follow the same graduation process and requirements as feature gates
242 # in Kubernetes. More information here https://kubernetes.io/docs/reference/command-line-tools-reference/feature-gates/#feature-gates-for-alpha-or-beta-features.
244 # -- nodeRepair is ALPHA and is disabled by default.
245 # Setting this to true will enable node repair.
247 # -- nodeOverlay is ALPHA and is disabled by default.
248 # Setting this will allow the use of node overlay to impact scheduling decisions
250 # -- reservedCapacity is BETA and is enabled by default.
251 # Setting this will enable native on-demand capacity reservation support.
252 reservedCapacity: true
253 # -- spotToSpotConsolidation is ALPHA and is disabled by default.
254 # Setting this to true will enable spot replacement consolidation for both single and multi-node consolidation.
255 spotToSpotConsolidation: false
256 # -- staticCapacity is ALPHA and is disabled by default.
257 # Setting this to true will enable static capacity provisioning.
258 staticCapacity: false
259 # -- capacityBuffer is ALPHA and is disabled by default.
260 # Setting this to true will enable CapacityBuffer support for pre-provisioning spare capacity.
261 capacityBuffer: false
262 # -- terminateFirstDrift is ALPHA and is disabled by default.
263 # Setting this to true lets drift terminate a node before launching its replacement on a capacity-constrained NodePool.
264 terminateFirstDrift: false
265 # -- terminateFirstRepair is ALPHA and is disabled by default.
266 # Setting this to true lets repair terminate an unhealthy node before launching its replacement on a capacity-constrained NodePool.
267 terminateFirstRepair: false
268 # -- podDeletionCostManagement is ALPHA and is disabled by default.
269 # Setting this to true will enable Karpenter to manage pod-deletion-cost annotations on ReplicaSet pods on its nodes,
270 # so that ReplicaSet scale-down prefers to remove pods from nodes Karpenter wants to consolidate.
271 podDeletionCostManagement: false
272 # -- AWS-specific Feature Gate configuration values.
274 # -- nodeClassCEL is ALPHA and is disabled by default.
275 # Setting this to true will enable CEL validation on EC2NodeClass resources.
277 # -- (bool) draNVIDIAGPU is ALPHA and is disabled by default.
278 # Setting this to true will make Karpenter calculate the DRA devices the NVIDIA GPU driver publishes,
279 # so it can account for gpu.nvidia.com claims when it sizes new nodes. Can't be combined with settings.enableDRA.
280 # @default -- `false`
282 # -- (bool) draEFA is ALPHA and is disabled by default.
283 # Setting this to true will make Karpenter calculate the DRA devices the dranet driver publishes for
284 # EFA interfaces, so it can account for dra.net claims when it sizes new nodes. Can't be combined with settings.enableDRA.
285 # @default -- `false`
287 # -- rebootForRepair is ALPHA and is disabled by default. It has no effect without the nodeRepair feature gate.
288 # Setting this to true will make node repair reboot a node in place for reboot-clearable GPU faults instead of
289 # replacing it. Requires the ec2:RebootInstances permission.
290 rebootForRepair: false