Skip to content

Commit a12cf36

Browse files
authored
feat: add localnode dns and enable coredns autoscaling (#171)
* init * feat: add localnode dns and enable coredns autoscaling * fix: variable type * fix: local * fix: lint * fix: variable * fix: variable value * chore: cleanup code * fix: CoreDNS config values
1 parent d20b0b0 commit a12cf36

File tree

12 files changed

+196
-8
lines changed

12 files changed

+196
-8
lines changed

README.md

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -272,7 +272,7 @@ module "karpenter" {
272272
| <a name="input_cluster_security_group_name"></a> [cluster\_security\_group\_name](#input\_cluster\_security\_group\_name) | Cluster security group name | `string` | `null` | no |
273273
| <a name="input_cluster_service_ipv4_cidr"></a> [cluster\_service\_ipv4\_cidr](#input\_cluster\_service\_ipv4\_cidr) | The CIDR block to assign Kubernetes service IP addresses from. If you don't specify a block, Kubernetes assigns addresses from either the 10.100.0.0/16 or 172.20.0.0/16 CIDR blocks | `string` | `null` | no |
274274
| <a name="input_cluster_service_ipv6_cidr"></a> [cluster\_service\_ipv6\_cidr](#input\_cluster\_service\_ipv6\_cidr) | The CIDR block to assign Kubernetes pod and service IP addresses from if `ipv6` was specified when the cluster was created. Kubernetes assigns service addresses from the unique local address range (fc00::/7) because you can't specify a custom IPv6 CIDR block when you create the cluster | `string` | `null` | no |
275-
| <a name="input_cluster_version"></a> [cluster\_version](#input\_cluster\_version) | EKS Cluster Version | `string` | `"1.31"` | no |
275+
| <a name="input_cluster_version"></a> [cluster\_version](#input\_cluster\_version) | EKS Cluster Version | `string` | `"1.32"` | no |
276276
| <a name="input_create_aws_auth_configmap"></a> [create\_aws\_auth\_configmap](#input\_create\_aws\_auth\_configmap) | Determines whether to create the aws-auth configmap. NOTE - this is only intended for scenarios where the configmap does not exist (i.e. - when using only self-managed node groups). Most users should use `manage_aws_auth_configmap` | `bool` | `false` | no |
277277
| <a name="input_create_aws_observability_ns"></a> [create\_aws\_observability\_ns](#input\_create\_aws\_observability\_ns) | Whether to create AWS Observability Namespace. | `bool` | `true` | no |
278278
| <a name="input_create_aws_observability_ns_for_karpenter"></a> [create\_aws\_observability\_ns\_for\_karpenter](#input\_create\_aws\_observability\_ns\_for\_karpenter) | Create aws-observability namespace flag | `bool` | `false` | no |
@@ -307,11 +307,12 @@ module "karpenter" {
307307
| <a name="input_force_imdsv2"></a> [force\_imdsv2](#input\_force\_imdsv2) | Force IMDSv2 metadata server. | `bool` | `true` | no |
308308
| <a name="input_force_irsa"></a> [force\_irsa](#input\_force\_irsa) | Force usage of IAM Roles for Service Account | `bool` | `true` | no |
309309
| <a name="input_iam_role_additional_policies"></a> [iam\_role\_additional\_policies](#input\_iam\_role\_additional\_policies) | Additional policies to be added to the IAM role | `set(string)` | `[]` | no |
310-
| <a name="input_karpenter_chart_version"></a> [karpenter\_chart\_version](#input\_karpenter\_chart\_version) | Chart version for Karpenter | `string` | `"1.2.1"` | no |
311-
| <a name="input_karpenter_crd_chart_version"></a> [karpenter\_crd\_chart\_version](#input\_karpenter\_crd\_chart\_version) | Chart version for Karpenter CRDs same version as `karpenter_chart_version` | `string` | `"1.2.1"` | no |
310+
| <a name="input_karpenter_chart_version"></a> [karpenter\_chart\_version](#input\_karpenter\_chart\_version) | Chart version for Karpenter | `string` | `"1.3.3"` | no |
311+
| <a name="input_karpenter_crd_chart_version"></a> [karpenter\_crd\_chart\_version](#input\_karpenter\_crd\_chart\_version) | Chart version for Karpenter CRDs same version as `karpenter_chart_version` | `string` | `"1.3.3"` | no |
312312
| <a name="input_karpenter_default_subnet_selector_tags"></a> [karpenter\_default\_subnet\_selector\_tags](#input\_karpenter\_default\_subnet\_selector\_tags) | Subnet selector tags for Karpenter default node class | `map(string)` | <pre>{<br/> "kubernetes.io/role/internal-elb": "1"<br/>}</pre> | no |
313313
| <a name="input_karpenter_ephemeral_volume_size"></a> [karpenter\_ephemeral\_volume\_size](#input\_karpenter\_ephemeral\_volume\_size) | Ephemeral volume size for Karpenter node groups | `string` | `"50Gi"` | no |
314-
| <a name="input_karpenter_nodeclasses"></a> [karpenter\_nodeclasses](#input\_karpenter\_nodeclasses) | List of nodetemplate maps | <pre>list(object({<br/> nodeclass_name = string<br/> karpenter_subnet_selector_maps = list(map(any))<br/> karpenter_security_group_selector_maps = list(map(any))<br/> karpenter_ami_selector_maps = list(map(any))<br/> karpenter_node_role = string<br/> karpenter_node_tags_map = map(string)<br/> karpenter_node_user_data = string<br/> karpenter_node_metadata_options = map(any)<br/> karpenter_block_device_mapping = list(object({<br/> deviceName = string<br/> ebs = object({<br/> encrypted = bool<br/> volumeSize = string<br/> volumeType = string<br/> kmsKeyID = optional(string)<br/> deleteOnTermination = bool<br/> })<br/> }))<br/> }))</pre> | `[]` | no |
314+
| <a name="input_karpenter_nodeclass_kubelet_clusterdns_ips"></a> [karpenter\_nodeclass\_kubelet\_clusterdns\_ips](#input\_karpenter\_nodeclass\_kubelet\_clusterdns\_ips) | Cluster DNS IPs for Karpenter node classes | `list(string)` | `[]` | no |
315+
| <a name="input_karpenter_nodeclasses"></a> [karpenter\_nodeclasses](#input\_karpenter\_nodeclasses) | List of nodetemplate maps | <pre>list(object({<br/> nodeclass_name = string<br/> karpenter_subnet_selector_maps = list(map(any))<br/> karpenter_security_group_selector_maps = list(map(any))<br/> karpenter_ami_selector_maps = list(map(any))<br/> karpenter_node_role = string<br/> karpenter_node_tags_map = map(string)<br/> karpenter_node_user_data = string<br/> karpenter_node_metadata_options = map(any)<br/> karpenter_node_kubelet_yaml = map(any)<br/> karpenter_block_device_mapping = list(object({<br/> deviceName = string<br/> ebs = object({<br/> encrypted = bool<br/> volumeSize = string<br/> volumeType = string<br/> kmsKeyID = optional(string)<br/> deleteOnTermination = bool<br/> })<br/> }))<br/> }))</pre> | `[]` | no |
315316
| <a name="input_karpenter_nodepools"></a> [karpenter\_nodepools](#input\_karpenter\_nodepools) | List of Provisioner maps | <pre>list(object({<br/> nodepool_name = string<br/> nodeclass_name = string<br/> karpenter_nodepool_node_labels = map(string)<br/> karpenter_nodepool_annotations = map(string)<br/> karpenter_nodepool_node_taints = list(map(string))<br/> karpenter_nodepool_startup_taints = list(map(string))<br/> karpenter_requirements = list(object({<br/> key = string<br/> operator = string<br/> values = list(string)<br/> })<br/> )<br/> karpenter_nodepool_disruption = object({<br/> consolidation_policy = string<br/> consolidate_after = string<br/> expire_after = string<br/> })<br/> karpenter_nodepool_disruption_budgets = list(map(any))<br/> karpenter_nodepool_weight = number<br/> }))</pre> | <pre>[<br/> {<br/> "karpenter_nodepool_annotations": {},<br/> "karpenter_nodepool_disruption": {<br/> "consolidate_after": "10m",<br/> "consolidation_policy": "WhenEmptyOrUnderutilized",<br/> "expire_after": "168h"<br/> },<br/> "karpenter_nodepool_disruption_budgets": [<br/> {<br/> "nodes": "10%"<br/> }<br/> ],<br/> "karpenter_nodepool_node_labels": {<br/> "bottlerocket.aws/updater-interface-version": "2.0.0"<br/> },<br/> "karpenter_nodepool_node_taints": [],<br/> "karpenter_nodepool_startup_taints": [],<br/> "karpenter_nodepool_weight": 10,<br/> "karpenter_requirements": [<br/> {<br/> "key": "karpenter.k8s.aws/instance-category",<br/> "operator": "In",<br/> "values": [<br/> "t",<br/> "m"<br/> ]<br/> },<br/> {<br/> "key": "karpenter.k8s.aws/instance-cpu",<br/> "operator": "In",<br/> "values": [<br/> "2",<br/> "4"<br/> ]<br/> },<br/> {<br/> "key": "karpenter.k8s.aws/instance-memory",<br/> "operator": "Gt",<br/> "values": [<br/> "2048"<br/> ]<br/> },<br/> {<br/> "key": "karpenter.k8s.aws/instance-generation",<br/> "operator": "Gt",<br/> "values": [<br/> "2"<br/> ]<br/> },<br/> {<br/> "key": "karpenter.sh/capacity-type",<br/> "operator": "In",<br/> "values": [<br/> "on-demand"<br/> ]<br/> },<br/> {<br/> "key": "kubernetes.io/arch",<br/> "operator": "In",<br/> "values": [<br/> "amd64"<br/> ]<br/> },<br/> {<br/> "key": "kubernetes.io/os",<br/> "operator": "In",<br/> "values": [<br/> "linux"<br/> ]<br/> }<br/> ],<br/> "nodeclass_name": "default",<br/> "nodepool_name": "default"<br/> }<br/>]</pre> | no |
316317
| <a name="input_karpenter_pod_resources"></a> [karpenter\_pod\_resources](#input\_karpenter\_pod\_resources) | Karpenter Pod Resource | <pre>object({<br/> requests = object({<br/> cpu = string<br/> memory = string<br/> })<br/> limits = object({<br/> cpu = string<br/> memory = string<br/> })<br/> })</pre> | <pre>{<br/> "limits": {<br/> "cpu": "1",<br/> "memory": "2Gi"<br/> },<br/> "requests": {<br/> "cpu": "1",<br/> "memory": "2Gi"<br/> }<br/>}</pre> | no |
317318
| <a name="input_karpenter_security_group_selector_terms_type"></a> [karpenter\_security\_group\_selector\_terms\_type](#input\_karpenter\_security\_group\_selector\_terms\_type) | Type of terms to use in the security group selector | `string` | `"tags"` | no |

karpenter.tf

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,9 @@ locals {
4848
}
4949
}
5050
]
51+
karpenter_node_kubelet = {
52+
clusterDNS = var.karpenter_nodeclass_kubelet_clusterdns_ips
53+
}
5154
},
5255
])
5356

main.tf

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -170,10 +170,18 @@ module "eks" {
170170
memory = "256M"
171171
}
172172
}
173+
autoScaling = {
174+
enabled = true
175+
}
173176
})
174177
} : {
175178
most_recent = true
176179
resolve_conflicts_on_update = "OVERWRITE"
180+
configuration_values = jsonencode({
181+
autoScaling = {
182+
enabled = true
183+
}
184+
})
177185
}
178186
eks-pod-identity-agent = var.cluster_ip_family == "ipv4" ? {
179187
most_recent = true

0 commit comments

Comments
 (0)