1## Ref: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/#affinity-and-anti-affinity
2# affinity -- Affinity for pod assignment
4# additionalLabels -- Labels to add to each object of the chart.
7 # cloudProviders `aws`, `gce`, `azure`, `magnum`, `clusterapi` and `oci` are supported by auto-discovery at this time
8 # AWS: Set tags as described in https://github.com/kubernetes/autoscaler/blob/master/cluster-autoscaler/cloudprovider/aws/README.md#auto-discovery-setup
10 # autoDiscovery.clusterName -- Enable autodiscovery for `cloudProvider=aws`, for groups matching `autoDiscovery.tags`.
11 # autoDiscovery.clusterName -- Enable autodiscovery for `cloudProvider=azure`, using tags defined in https://github.com/kubernetes/autoscaler/blob/master/cluster-autoscaler/cloudprovider/azure/README.md#auto-discovery-setup.
12 # Enable autodiscovery for `cloudProvider=clusterapi`, for groups matching `autoDiscovery.labels`.
13 # Enable autodiscovery for `cloudProvider=gce`, but no MIG tagging required.
14 # Enable autodiscovery for `cloudProvider=magnum`, for groups matching `autoDiscovery.roles`.
15 clusterName: # cluster.local
16 # autoDiscovery.namespace -- Enable autodiscovery via cluster namespace for for `cloudProvider=clusterapi`
18 # autoDiscovery.tags -- ASG tags to match, run through `tpl`.
20 - k8s.io/cluster-autoscaler/enabled
21 - k8s.io/cluster-autoscaler/{{ .Values.autoDiscovery.clusterName }}
22 # - kubernetes.io/cluster/{{ .Values.autoDiscovery.clusterName }}
24 # autoDiscovery.roles -- Magnum node group roles to match.
27 # autoDiscovery.labels -- Cluster-API labels to match https://github.com/kubernetes/autoscaler/blob/master/cluster-autoscaler/cloudprovider/clusterapi/README.md#configuring-node-group-auto-discovery
31# autoscalingGroups -- For AWS, Azure AKS, Exoscale or Magnum. At least one element is required if not using `autoDiscovery`. For example:
37# For Hetzner Cloud, the `instanceType` and `region` keys are also required.
42# instanceType: CPX21<br />
53# autoscalingGroupsnamePrefix -- For GCE. At least one element is required if not using `autoDiscovery`. For example:
59autoscalingGroupsnamePrefix: []
67# awsAccessKeyID -- AWS access key ID ([if AWS user keys used](https://github.com/kubernetes/autoscaler/blob/master/cluster-autoscaler/cloudprovider/aws/README.md#using-aws-credentials))
69# awsRegion -- AWS region (required if `cloudProvider=aws`)
71# awsSecretAccessKey -- AWS access secret key ([if AWS user keys used](https://github.com/kubernetes/autoscaler/blob/master/cluster-autoscaler/cloudprovider/aws/README.md#using-aws-credentials))
73# azureClientID -- Service Principal ClientID with contributor permission to Cluster and Node ResourceGroup.
74# Required if `cloudProvider=azure`
76# azureClientSecret -- Service Principal ClientSecret with contributor permission to Cluster and Node ResourceGroup.
77# Required if `cloudProvider=azure`
79# azureResourceGroup -- Azure resource group that the cluster is located.
80# Required if `cloudProvider=azure`
82# azureSubscriptionID -- Azure subscription where the resources are located.
83# Required if `cloudProvider=azure`
84azureSubscriptionID: ""
85# azureTenantID -- Azure tenant where the resources are located.
86# Required if `cloudProvider=azure`
88# azureUseManagedIdentityExtension -- Whether to use Azure's managed identity extension for credentials. If using MSI, ensure subscription ID, resource group, and azure AKS cluster name are set. You can only use one authentication method at a time, either azureUseWorkloadIdentityExtension or azureUseManagedIdentityExtension should be set.
89azureUseManagedIdentityExtension: false
90# azureUserAssignedIdentityID -- When vmss has multiple user assigned identity assigned, azureUserAssignedIdentityID specifies which identity to be used
91azureUserAssignedIdentityID: ""
92# azureUseWorkloadIdentityExtension -- Whether to use Azure's workload identity extension for credentials. See the project here: https://github.com/Azure/azure-workload-identity for more details. You can only use one authentication method at a time, either azureUseWorkloadIdentityExtension or azureUseManagedIdentityExtension should be set.
93azureUseWorkloadIdentityExtension: false
94# azureVMType -- Azure VM type.
96# azureEnableForceDelete -- Whether to force delete VMs or VMSS instances when scaling down.
97azureEnableForceDelete: false
98# civoApiUrl -- URL for the Civo API.
99# Required if `cloudProvider=civo`
100civoApiUrl: "https://api.civo.com"
101# civoApiKey -- API key for the Civo API.
102# Required if `cloudProvider=civo`
104# civoClusterID -- Cluster ID for the Civo cluster.
105# Required if `cloudProvider=civo`
107# civoRegion -- Region for the Civo cluster.
108# Required if `cloudProvider=civo`
110# cloudConfigPath -- Configuration file for cloud provider.
112# cloudProvider -- The cloud provider where the autoscaler runs.
113# Currently only `gce`, `aws`, `azure`, `magnum`, `clusterapi`, `civo` and `coreweave` are supported.
114# `aws` supported for AWS. `gce` for GCE. `azure` for Azure AKS.
115# `magnum` for OpenStack Magnum, `clusterapi` for Cluster API.
116# `civo` for Civo Cloud.
117# `coreweave` for CoreWeave.
119# clusterAPICloudConfigPath -- Path to kubeconfig for connecting to Cluster API Management Cluster, only used if `clusterAPIMode=kubeconfig-kubeconfig or incluster-kubeconfig`
120clusterAPICloudConfigPath: /etc/kubernetes/mgmt-kubeconfig
121# clusterAPIConfigMapsNamespace -- Namespace on the workload cluster to store Leader election and status configmaps
122clusterAPIConfigMapsNamespace: ""
123# clusterAPIKubeconfigSecret -- Secret containing kubeconfig for connecting to Cluster API managed workloadcluster
124# Required if `cloudProvider=clusterapi` and `clusterAPIMode=kubeconfig-kubeconfig,kubeconfig-incluster or incluster-kubeconfig`
125clusterAPIKubeconfigSecret: ""
126# clusterAPIMode -- Cluster API mode, see https://github.com/kubernetes/autoscaler/blob/master/cluster-autoscaler/cloudprovider/clusterapi/README.md#connecting-cluster-autoscaler-to-cluster-api-management-and-workload-clusters
127# Syntax: workloadClusterMode-ManagementClusterMode
128# for `kubeconfig-kubeconfig`, `incluster-kubeconfig` and `single-kubeconfig` you always must mount the external kubeconfig using either `extraVolumeSecrets` or `extraMounts` and `extraVolumes`
129# if you dont set `clusterAPIKubeconfigSecret`and thus use an in-cluster config or want to use a non capi generated kubeconfig you must do so for the workload kubeconfig as well
130clusterAPIMode: incluster-incluster # incluster-incluster, incluster-kubeconfig, kubeconfig-incluster, kubeconfig-kubeconfig, single-kubeconfig
131# clusterAPIWorkloadKubeconfigPath -- Path to kubeconfig for connecting to Cluster API managed workloadcluster, only used if `clusterAPIMode=kubeconfig-kubeconfig or kubeconfig-incluster`
132clusterAPIWorkloadKubeconfigPath: /etc/kubernetes/value
133# containerSecurityContext -- [Security context for container](https://kubernetes.io/docs/tasks/configure-pod-container/security-context/)
134containerSecurityContext: {}
135# allowPrivilegeEscalation: false
139# readOnlyRootFilesystem: true
142 # deployment.annotations -- Annotations to add to the Deployment object.
144 # deployment.selector -- Labels for Deployment `spec.selector.matchLabels`.
146# dnsConfig -- [Pod's DNS Config](https://kubernetes.io/docs/concepts/services-networking/dns-pod-service/#pod-dns-config)
151# - ns1.svc.cluster-domain.example
152# - my.dns.search.suffix
158# dnsPolicy -- Defaults to `ClusterFirst`. Valid values are:
159# `ClusterFirstWithHostNet`, `ClusterFirst`, `Default` or `None`.
160# If autoscaler does not depend on cluster DNS, recommended to set this to `Default`.
161dnsPolicy: ClusterFirst
162# envFromConfigMap -- ConfigMap name to use as envFrom.
164# envFromSecret -- Secret name to use as envFrom.
166## Priorities Expander
167# expanderPriorities -- The expanderPriorities is used if `extraArgs.expander` contains `priority` and expanderPriorities is also set with the priorities.
168# If `extraArgs.expander` contains `priority`, then expanderPriorities is used to define cluster-autoscaler-priority-expander priorities.
169# See: https://github.com/kubernetes/autoscaler/blob/master/cluster-autoscaler/expander/priority/readme.md
170expanderPriorities: {}
171# extraArgs -- Additional container arguments.
172# Refer to https://github.com/kubernetes/autoscaler/blob/master/cluster-autoscaler/FAQ.md#what-are-the-parameters-to-ca for the full list of cluster autoscaler
173# parameters and their default values.
174# Everything after the first _ will be ignored allowing the use of multi-string arguments.
177 stderrthreshold: info
179 # write-status-configmap: true
180 # status-config-map-name: cluster-autoscaler-status
182 # leader-elect-resource-lock: endpoints
183 # skip-nodes-with-local-storage: true
185 # scale-down-enabled: true
186 # balance-similar-node-groups: true
187 # min-replica-count: 0
188 # scale-down-utilization-threshold: 0.5
189 # scale-down-non-empty-candidates-count: 30
190 # max-node-provision-time: 15m0s
192 # scale-down-delay-after-add: 10m
193 # scale-down-delay-after-delete: 0s
194 # scale-down-delay-after-failure: 3m
195 # scale-down-unneeded-time: 10m
196 # node-deletion-delay-timeout: 2m
197 # node-deletion-batcher-interval: 0s
198 # skip-nodes-with-system-pods: true
199 # balancing-ignore-label_1: first-label-to-ignore
200 # balancing-ignore-label_2: second-label-to-ignore
201# customArgs -- Additional custom container arguments.
202# Refer to https://github.com/kubernetes/autoscaler/blob/master/cluster-autoscaler/FAQ.md#what-are-the-parameters-to-ca for the full list of cluster autoscaler
203# parameters and their default values.
204# List of arguments as strings.
206# extraEnv -- Additional container environment variables.
208# extraEnvConfigMaps -- Additional container environment variables from ConfigMaps.
209extraEnvConfigMaps: {}
210# extraEnvSecrets -- Additional container environment variables from Secrets.
212# extraObjects -- Extra K8s manifests to deploy
220# - apiVersion: scheduling.k8s.io/v1
225# globalDefault: false
226# description: "This priority class should be used for XYZ service pods only."
228# extraVolumeMounts -- Additional volumes to mount.
231# mountPath: /etc/ssl/certs/ca-certificates.crt
234# extraVolumes -- Additional volumes.
238# path: /etc/ssl/certs/ca-bundle.crt
240# extraVolumeSecrets -- Additional volumes to mount from Secrets.
241extraVolumeSecrets: {}
243# mountPath: /data/autoscaler/
246# mountPath: /data/custom/
251# initContainers -- Any additional init containers.
253# fullnameOverride -- String to fully override `cluster-autoscaler.fullname` template.
255# hostNetwork -- Whether to expose network interfaces of the host machine to pods.
258 # image.repository -- Image repository
259 repository: cgr.dev/chainguard-private/cluster-autoscaler
260 # image.tag -- Image tag
261 tag: latest@sha256:d3b7a1bb3dc02125f806be39fbfadd127ceca2abdac2ec5f558710316c23f4b2
262 # image.pullPolicy -- Image pull policy
263 pullPolicy: IfNotPresent
264 ## Optionally specify an array of imagePullSecrets.
265 ## Secrets must be manually created in the namespace.
266 ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/pull-image-private-registry/
268 # image.pullSecrets -- Image pull secrets
270 # - myRegistrKeySecretName
271# kubeTargetVersionOverride -- Allow overriding the `.Capabilities.KubeVersion.GitVersion` check. Useful for `helm template` commands.
272kubeTargetVersionOverride: ""
273# kwokConfigMapName -- configmap for configuring kwok provider
274kwokConfigMapName: "kwok-provider-config"
275# magnumCABundlePath -- Path to the host's CA bundle, from `ca-file` in the cloud-config file.
276magnumCABundlePath: "/etc/kubernetes/ca-bundle.crt"
277# magnumClusterName -- Cluster name or ID in Magnum.
278# Required if `cloudProvider=magnum` and not setting `autoDiscovery.clusterName`.
280# nameOverride -- String to partially override `cluster-autoscaler.fullname` template (will maintain the release name)
282# nodeSelector -- Node labels for pod assignment. Ref: https://kubernetes.io/docs/user-guide/node-selection/.
284# podAnnotations -- Annotations to add to each pod.
286# podDisruptionBudget -- Pod disruption budget.
288 # podDisruptionBudget.annotations -- Annotations to add to the PodDisruptionBudget.
290 # podDisruptionBudget.selector -- Override labels for PodDisruptionBudget `spec.selector.matchLabels`.
294# podLabels -- Labels to add to each pod.
296# priorityClassName -- priorityClassName
297priorityClassName: "system-cluster-critical"
298# priorityConfigMapAnnotations -- Annotations to add to `cluster-autoscaler-priority-expander` ConfigMap.
299priorityConfigMapAnnotations: {}
303## Custom PrometheusRule to be defined
304## The value is evaluated as a template, so, for example, the value can depend on .Release or .Chart
305## ref: https://github.com/coreos/prometheus-operator#customresourcedefinitions
307 # prometheusRule.enabled -- If true, creates a Prometheus Operator PrometheusRule.
309 # prometheusRule.additionalLabels -- Additional labels to be set in metadata.
311 # prometheusRule.namespace -- Namespace which Prometheus is running in.
312 namespace: monitoring
313 # prometheusRule.interval -- How often rules in the group are evaluated (falls back to `global.evaluation_interval` if not set).
315 # prometheusRule.rules -- Rules spec template (see https://github.com/prometheus-operator/prometheus-operator/blob/master/Documentation/api.md#rule).
318 # rbac.create -- If `true`, create and use RBAC resources.
320 # rbac.pspEnabled -- If `true`, creates and uses RBAC resources required in the cluster with [Pod Security Policies](https://kubernetes.io/docs/concepts/policy/pod-security-policy/) enabled.
321 # Must be used with `rbac.create` set to `true`.
323 # rbac.clusterScoped -- if set to false will only provision RBAC to alter resources in the current namespace. Most useful for Cluster-API
325 # rbac.annotations -- Additional annotations to add to RBAC resources (Role/RoleBinding/ClusterRole/ClusterRoleBinding).
328 # rbac.serviceAccount.annotations -- Additional Service Account annotations.
330 # rbac.serviceAccount.create -- If `true` and `rbac.create` is also true, a Service Account will be created.
332 # rbac.serviceAccount.name -- The name of the ServiceAccount to use. If not set and create is `true`, a name is generated using the fullname template.
334 # rbac.serviceAccount.automountServiceAccountToken -- Automount API credentials for a Service Account.
335 automountServiceAccountToken: true
336 # rbac.additionalRules -- Additional rules for role/clusterrole
339 # - infrastructure.cluster.x-k8s.io
341 # - kubemarkmachinetemplates
346# replicaCount -- Desired number of pods
348# resources -- Pod resource requests and limits.
357# revisionHistoryLimit -- The number of revisions to keep.
358revisionHistoryLimit: 10
359# securityContext -- [Security context for pod](https://kubernetes.io/docs/tasks/configure-pod-container/security-context/)
365# type: RuntimeDefault
368 # service.create -- If `true`, a Service will be created.
370 # service.annotations -- Annotations to add to service
372 # service.labels -- Labels to add to service
374 # service.externalIPs -- List of IP addresses at which the service is available. Ref: https://kubernetes.io/docs/concepts/services-networking/service/#external-ips.
376 # service.selector -- Override labels for Service `spec.selector`.
378 # service.clusterIP -- IP address to assign to service
380 # service.loadBalancerIP -- IP address to assign to load balancer (if supported).
382 # service.loadBalancerSourceRanges -- List of IP CIDRs allowed access to load balancer (if supported).
383 loadBalancerSourceRanges: []
384 # service.servicePort -- Service port to expose.
386 # service.portName -- Name for service port.
388 # service.type -- Type of service to create.
390## Are you using Prometheus Operator?
392 # serviceMonitor.enabled -- If true, creates a Prometheus Operator ServiceMonitor.
394 # serviceMonitor.interval -- Interval that Prometheus scrapes Cluster Autoscaler metrics.
396 # serviceMonitor.namespace -- Namespace which Prometheus is running in.
397 namespace: monitoring
398 ## [Prometheus Selector Label](https://github.com/helm/charts/tree/master/stable/prometheus-operator#prometheus-operator-1)
399 ## [Kube Prometheus Selector Label](https://github.com/helm/charts/tree/master/stable/prometheus-operator#exporters)
400 # serviceMonitor.selector -- Default to kube-prometheus install (CoreOS recommended), but should be set according to Prometheus install.
402 release: prometheus-operator
403 # serviceMonitor.path -- The path to scrape for metrics; autoscaler exposes `/metrics` (this is standard)
405 # serviceMonitor.annotations -- Annotations to add to service monitor
407 ## [RelabelConfig](https://github.com/prometheus-operator/prometheus-operator/blob/main/Documentation/api.md#monitoring.coreos.com/v1.RelabelConfig)
408 # serviceMonitor.relabelings -- RelabelConfigs to apply to metrics before scraping.
410 ## [RelabelConfig](https://github.com/prometheus-operator/prometheus-operator/blob/main/Documentation/api.md#monitoring.coreos.com/v1.RelabelConfig)
411 # serviceMonitor.metricRelabelings -- MetricRelabelConfigs to apply to samples before ingestion.
412 metricRelabelings: {}
413# tolerations -- List of node taints to tolerate (requires Kubernetes >= 1.6).
415# topologySpreadConstraints -- You can use topology spread constraints to control how Pods are spread across your cluster among failure-domains such as regions, zones, nodes, and other user-defined topology domains. (requires Kubernetes >= 1.19).
416topologySpreadConstraints: []
418# topologyKey: topology.kubernetes.io/zone
419# whenUnsatisfiable: DoNotSchedule
422# app.kubernetes.io/instance: cluster-autoscaler
424# updateStrategy -- [Deployment update strategy](https://kubernetes.io/docs/concepts/workloads/controllers/deployment/#strategy)
431# vpa -- Configure a VerticalPodAutoscaler for the cluster-autoscaler Deployment.
433 # vpa.enabled -- If true, creates a VerticalPodAutoscaler.
435 # vpa.updateMode -- [UpdateMode](https://github.com/kubernetes/autoscaler/blob/vertical-pod-autoscaler/v0.13.0/vertical-pod-autoscaler/pkg/apis/autoscaling.k8s.io/v1/types.go#L124)
437 # vpa.containerPolicy -- [ContainerResourcePolicy](https://github.com/kubernetes/autoscaler/blob/vertical-pod-autoscaler/v0.13.0/vertical-pod-autoscaler/pkg/apis/autoscaling.k8s.io/v1/types.go#L159). The containerName is always set to the deployment's container name. This value is required if VPA is enabled.
439 # vpa.recommender -- Name of the VPA recommender that will provide recommendations for vertical scaling.
441# secretKeyRefNameOverride -- Overrides the name of the Secret to use when loading the secretKeyRef for AWS, Azure and Civo env variables
442secretKeyRefNameOverride: ""