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# azureEnableVMSSEtag -- Whether to send the cached VMSS ETag as an `If-Match` header on capacity updates, so concurrent modifications are rejected (HTTP 412) and retried instead of silently overwritten.
99azureEnableVMSSEtag: false
100# civoApiUrl -- URL for the Civo API.
101# Required if `cloudProvider=civo`
102civoApiUrl: "https://api.civo.com"
103# civoApiKey -- API key for the Civo API.
104# Required if `cloudProvider=civo`
106# civoClusterID -- Cluster ID for the Civo cluster.
107# Required if `cloudProvider=civo`
109# civoRegion -- Region for the Civo cluster.
110# Required if `cloudProvider=civo`
112# cloudConfigPath -- Configuration file for cloud provider.
114# cloudProvider -- The cloud provider where the autoscaler runs.
115# Currently only `gce`, `aws`, `azure`, `magnum`, `clusterapi`, `civo` and `coreweave` are supported.
116# `aws` supported for AWS. `gce` for GCE. `azure` for Azure AKS.
117# `magnum` for OpenStack Magnum, `clusterapi` for Cluster API.
118# `civo` for Civo Cloud.
119# `coreweave` for CoreWeave.
121# clusterAPICloudConfigPath -- Path to kubeconfig for connecting to Cluster API Management Cluster, only used if `clusterAPIMode=kubeconfig-kubeconfig or incluster-kubeconfig`
122clusterAPICloudConfigPath: /etc/kubernetes/mgmt-kubeconfig
123# clusterAPIConfigMapsNamespace -- Namespace on the workload cluster to store Leader election and status configmaps
124clusterAPIConfigMapsNamespace: ""
125# clusterAPIKubeconfigSecret -- Secret containing kubeconfig for connecting to Cluster API managed workloadcluster
126# Required if `cloudProvider=clusterapi` and `clusterAPIMode=kubeconfig-kubeconfig,kubeconfig-incluster or incluster-kubeconfig`
127clusterAPIKubeconfigSecret: ""
128# 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
129# Syntax: workloadClusterMode-ManagementClusterMode
130# for `kubeconfig-kubeconfig`, `incluster-kubeconfig` and `single-kubeconfig` you always must mount the external kubeconfig using either `extraVolumeSecrets` or `extraMounts` and `extraVolumes`
131# 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
132clusterAPIMode: incluster-incluster # incluster-incluster, incluster-kubeconfig, kubeconfig-incluster, kubeconfig-kubeconfig, single-kubeconfig
133# clusterAPIWorkloadKubeconfigPath -- Path to kubeconfig for connecting to Cluster API managed workloadcluster, only used if `clusterAPIMode=kubeconfig-kubeconfig or kubeconfig-incluster`
134clusterAPIWorkloadKubeconfigPath: /etc/kubernetes/value
135# containerSecurityContext -- [Security context for container](https://kubernetes.io/docs/tasks/configure-pod-container/security-context/)
136containerSecurityContext: {}
137# allowPrivilegeEscalation: false
141# readOnlyRootFilesystem: true
144 # deployment.annotations -- Annotations to add to the Deployment object.
146 # deployment.selector -- Labels for Deployment `spec.selector.matchLabels`.
148# dnsConfig -- [Pod's DNS Config](https://kubernetes.io/docs/concepts/services-networking/dns-pod-service/#pod-dns-config)
153# - ns1.svc.cluster-domain.example
154# - my.dns.search.suffix
160# dnsPolicy -- Defaults to `ClusterFirst`. Valid values are:
161# `ClusterFirstWithHostNet`, `ClusterFirst`, `Default` or `None`.
162# If autoscaler does not depend on cluster DNS, recommended to set this to `Default`.
163dnsPolicy: ClusterFirst
164# envFromConfigMap -- ConfigMap name to use as envFrom.
166# envFromSecret -- Secret name to use as envFrom.
168## Priorities Expander
169# expanderPriorities -- The expanderPriorities is used if `extraArgs.expander` contains `priority` and expanderPriorities is also set with the priorities.
170# If `extraArgs.expander` contains `priority`, then expanderPriorities is used to define cluster-autoscaler-priority-expander priorities.
171# See: https://github.com/kubernetes/autoscaler/blob/master/cluster-autoscaler/expander/priority/readme.md
172expanderPriorities: {}
173# extraArgs -- Additional container arguments.
174# 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
175# parameters and their default values.
176# Everything after the first _ will be ignored allowing the use of multi-string arguments.
179 stderrthreshold: info
181 # write-status-configmap: true
182 # status-config-map-name: cluster-autoscaler-status
184 # leader-elect-resource-lock: endpoints
185 # skip-nodes-with-local-storage: true
187 # scale-down-enabled: true
188 # balance-similar-node-groups: true
189 # min-replica-count: 0
190 # scale-down-utilization-threshold: 0.5
191 # scale-down-non-empty-candidates-count: 30
192 # max-node-provision-time: 15m0s
194 # scale-down-delay-after-add: 10m
195 # scale-down-delay-after-delete: 0s
196 # scale-down-delay-after-failure: 3m
197 # scale-down-unneeded-time: 10m
198 # node-deletion-delay-timeout: 2m
199 # node-deletion-batcher-interval: 0s
200 # skip-nodes-with-system-pods: true
201 # balancing-ignore-label_1: first-label-to-ignore
202 # balancing-ignore-label_2: second-label-to-ignore
203# customArgs -- Additional custom container arguments.
204# 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
205# parameters and their default values.
206# List of arguments as strings.
208# extraEnv -- Additional container environment variables.
210# extraEnvConfigMaps -- Additional container environment variables from ConfigMaps.
211extraEnvConfigMaps: {}
212# extraEnvSecrets -- Additional container environment variables from Secrets.
214# extraObjects -- Extra K8s manifests to deploy
222# - apiVersion: scheduling.k8s.io/v1
227# globalDefault: false
228# description: "This priority class should be used for XYZ service pods only."
230# extraVolumeMounts -- Additional volumes to mount.
233# mountPath: /etc/ssl/certs/ca-certificates.crt
236# extraVolumes -- Additional volumes.
240# path: /etc/ssl/certs/ca-bundle.crt
242# extraVolumeSecrets -- Additional volumes to mount from Secrets.
243extraVolumeSecrets: {}
245# mountPath: /data/autoscaler/
248# mountPath: /data/custom/
253# initContainers -- Any additional init containers.
255# fullnameOverride -- String to fully override `cluster-autoscaler.fullname` template.
257# hostNetwork -- Whether to expose network interfaces of the host machine to pods.
260 # image.repository -- Image repository
261 repository: cgr.dev/chainguard-private/cluster-autoscaler
262 # image.tag -- Image tag
263 tag: latest@sha256:12e46d6a3f116ab12101458675b5817d752fd65ef0d99842797b67373be4f365
264 # image.pullPolicy -- Image pull policy
265 pullPolicy: IfNotPresent
266 ## Optionally specify an array of imagePullSecrets.
267 ## Secrets must be manually created in the namespace.
268 ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/pull-image-private-registry/
270 # image.pullSecrets -- Image pull secrets
272 # - myRegistrKeySecretName
273# kubeTargetVersionOverride -- Allow overriding the `.Capabilities.KubeVersion.GitVersion` check. Useful for `helm template` commands.
274kubeTargetVersionOverride: ""
275# kwokConfigMapName -- configmap for configuring kwok provider
276kwokConfigMapName: "kwok-provider-config"
277# magnumCABundlePath -- Path to the host's CA bundle, from `ca-file` in the cloud-config file.
278magnumCABundlePath: "/etc/kubernetes/ca-bundle.crt"
279# magnumClusterName -- Cluster name or ID in Magnum.
280# Required if `cloudProvider=magnum` and not setting `autoDiscovery.clusterName`.
282# nameOverride -- String to partially override `cluster-autoscaler.fullname` template (will maintain the release name)
284# nodeSelector -- Node labels for pod assignment. Ref: https://kubernetes.io/docs/user-guide/node-selection/.
286# podAnnotations -- Annotations to add to each pod.
288# podDisruptionBudget -- Pod disruption budget.
290 # podDisruptionBudget.annotations -- Annotations to add to the PodDisruptionBudget.
292 # podDisruptionBudget.selector -- Override labels for PodDisruptionBudget `spec.selector.matchLabels`.
296# podLabels -- Labels to add to each pod.
298# priorityClassName -- priorityClassName
299priorityClassName: "system-cluster-critical"
300# priorityConfigMapAnnotations -- Annotations to add to `cluster-autoscaler-priority-expander` ConfigMap.
301priorityConfigMapAnnotations: {}
305## Custom PrometheusRule to be defined
306## The value is evaluated as a template, so, for example, the value can depend on .Release or .Chart
307## ref: https://github.com/coreos/prometheus-operator#customresourcedefinitions
309 # prometheusRule.enabled -- If true, creates a Prometheus Operator PrometheusRule.
311 # prometheusRule.additionalLabels -- Additional labels to be set in metadata.
313 # prometheusRule.namespace -- Namespace which Prometheus is running in.
314 namespace: monitoring
315 # prometheusRule.interval -- How often rules in the group are evaluated (falls back to `global.evaluation_interval` if not set).
317 # prometheusRule.rules -- Rules spec template (see https://github.com/prometheus-operator/prometheus-operator/blob/master/Documentation/api.md#rule).
320 # rbac.create -- If `true`, create and use RBAC resources.
322 # 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.
323 # Must be used with `rbac.create` set to `true`.
325 # rbac.clusterScoped -- if set to false will only provision RBAC to alter resources in the current namespace. Most useful for Cluster-API
327 # rbac.annotations -- Additional annotations to add to RBAC resources (Role/RoleBinding/ClusterRole/ClusterRoleBinding).
330 # rbac.serviceAccount.annotations -- Additional Service Account annotations.
332 # rbac.serviceAccount.create -- If `true` and `rbac.create` is also true, a Service Account will be created.
334 # 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.
336 # rbac.serviceAccount.automountServiceAccountToken -- Automount API credentials for a Service Account.
337 automountServiceAccountToken: true
338 # rbac.additionalRules -- Additional rules for role/clusterrole
341 # - infrastructure.cluster.x-k8s.io
343 # - kubemarkmachinetemplates
348# replicaCount -- Desired number of pods
350# resources -- Pod resource requests and limits.
359# revisionHistoryLimit -- The number of revisions to keep.
360revisionHistoryLimit: 10
361# securityContext -- [Security context for pod](https://kubernetes.io/docs/tasks/configure-pod-container/security-context/)
367# type: RuntimeDefault
370 # service.create -- If `true`, a Service will be created.
372 # service.annotations -- Annotations to add to service
374 # service.labels -- Labels to add to service
376 # service.externalIPs -- List of IP addresses at which the service is available. Ref: https://kubernetes.io/docs/concepts/services-networking/service/#external-ips.
378 # service.selector -- Override labels for Service `spec.selector`.
380 # service.clusterIP -- IP address to assign to service
382 # service.loadBalancerIP -- IP address to assign to load balancer (if supported).
384 # service.loadBalancerSourceRanges -- List of IP CIDRs allowed access to load balancer (if supported).
385 loadBalancerSourceRanges: []
386 # service.servicePort -- Service port to expose.
388 # service.portName -- Name for service port.
390 # service.type -- Type of service to create.
392## Are you using Prometheus Operator?
394 # serviceMonitor.enabled -- If true, creates a Prometheus Operator ServiceMonitor.
396 # serviceMonitor.interval -- Interval that Prometheus scrapes Cluster Autoscaler metrics.
398 # serviceMonitor.namespace -- Namespace which Prometheus is running in.
399 namespace: monitoring
400 ## [Prometheus Selector Label](https://github.com/helm/charts/tree/master/stable/prometheus-operator#prometheus-operator-1)
401 ## [Kube Prometheus Selector Label](https://github.com/helm/charts/tree/master/stable/prometheus-operator#exporters)
402 # serviceMonitor.selector -- Default to kube-prometheus install (CoreOS recommended), but should be set according to Prometheus install.
404 release: prometheus-operator
405 # serviceMonitor.path -- The path to scrape for metrics; autoscaler exposes `/metrics` (this is standard)
407 # serviceMonitor.annotations -- Annotations to add to service monitor
409 ## [RelabelConfig](https://github.com/prometheus-operator/prometheus-operator/blob/main/Documentation/api.md#monitoring.coreos.com/v1.RelabelConfig)
410 # serviceMonitor.relabelings -- RelabelConfigs to apply to metrics before scraping.
412 ## [RelabelConfig](https://github.com/prometheus-operator/prometheus-operator/blob/main/Documentation/api.md#monitoring.coreos.com/v1.RelabelConfig)
413 # serviceMonitor.metricRelabelings -- MetricRelabelConfigs to apply to samples before ingestion.
414 metricRelabelings: {}
415# tolerations -- List of node taints to tolerate (requires Kubernetes >= 1.6).
417# 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).
418topologySpreadConstraints: []
420# topologyKey: topology.kubernetes.io/zone
421# whenUnsatisfiable: DoNotSchedule
424# app.kubernetes.io/instance: cluster-autoscaler
426# updateStrategy -- [Deployment update strategy](https://kubernetes.io/docs/concepts/workloads/controllers/deployment/#strategy)
433# vpa -- Configure a VerticalPodAutoscaler for the cluster-autoscaler Deployment.
435 # vpa.enabled -- If true, creates a VerticalPodAutoscaler.
437 # 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)
439 # 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.
441 # vpa.recommender -- Name of the VPA recommender that will provide recommendations for vertical scaling.
443# secretKeyRefNameOverride -- Overrides the name of the Secret to use when loading the secretKeyRef for AWS, Azure and Civo env variables
444secretKeyRefNameOverride: ""