diff --git a/examples/complete/main.tf b/examples/complete/main.tf index 65ba010..eb22c06 100644 --- a/examples/complete/main.tf +++ b/examples/complete/main.tf @@ -188,7 +188,7 @@ module "eks" { module "managed_node_group_addons" { source = "squareops/eks/aws//modules/managed-nodegroup" - version = "5.4.2" + version = "5.4.3" depends_on = [module.vpc, module.eks] managed_ng_name = "Infra" managed_ng_min_size = 2 @@ -197,6 +197,7 @@ module "managed_node_group_addons" { vpc_subnet_ids = [module.vpc.private_subnets[0]] environment = local.environment managed_ng_kms_key_arn = module.kms.key_arn + update_config = var.update_config // Defines how many nodes can be unavailable during the update process managed_ng_capacity_type = local.managed_ng_capacity_type managed_ng_ebs_volume_size = local.ebs_volume_size managed_ng_ebs_volume_type = "gp3" diff --git a/modules/managed-nodegroup/README.md b/modules/managed-nodegroup/README.md index 3a7bcc8..120d1e2 100644 --- a/modules/managed-nodegroup/README.md +++ b/modules/managed-nodegroup/README.md @@ -46,7 +46,7 @@ No modules. | [eks\_cluster\_name](#input\_eks\_cluster\_name) | Name of EKS cluster | `string` | `""` | no | | [environment](#input\_environment) | The environment for the nodes or node groups. | `string` | `null` | no | | [managed\_ng\_name](#input\_managed\_ng\_name) | Specify the name of the EKS managed Nodegroup | `string` | `""` | no | -| [managed\_ng\_instance\_types](#input\_managed\_ng\_instance\_types) | The instance types to be used for the EKS node group (e.g., t2.medium). | `list(any)` |
[| no | +| [managed\_ng\_instance\_types](#input\_managed\_ng\_instance\_types) | The instance types to be used for the EKS node group (e.g., t2.medium). | `list(any)` |
"t3a.medium"
]
[| no | | [managed\_ng\_capacity\_type](#input\_managed\_ng\_capacity\_type) | The capacity type for the EKS node group (ON\_DEMAND or SPOT). | `string` | `"ON_DEMAND"` | no | | [image\_high\_threshold\_percent](#input\_image\_high\_threshold\_percent) | The percentage of disk usage at which garbage collection should be triggered. | `number` | `60` | no | | [image\_low\_threshold\_percent](#input\_image\_low\_threshold\_percent) | The percentage of disk usage at which garbage collection took place. | `number` | `40` | no | @@ -62,7 +62,7 @@ No modules. | [managed\_ng\_ebs\_volume\_size](#input\_managed\_ng\_ebs\_volume\_size) | The type of EBS volume for nodes. | `string` | `"50"` | no | | [managed\_ng\_ebs\_volume\_type](#input\_managed\_ng\_ebs\_volume\_type) | Specify the type of EBS volume for nodes. | `string` | `"gp3"` | no | | [managed\_ng\_ebs\_encrypted](#input\_managed\_ng\_ebs\_encrypted) | Specify whether to encrypt the EBS volume for nodes. | `bool` | `true` | no | -| [vpc\_subnet\_ids](#input\_vpc\_subnet\_ids) | The IDs of the subnets in the VPC that can be used by EKS. | `list(string)` |
"t3a.medium"
]
[| no | +| [vpc\_subnet\_ids](#input\_vpc\_subnet\_ids) | The IDs of the subnets in the VPC that can be used by EKS. | `list(string)` |
""
]
[| no | | [tags](#input\_tags) | Tags to be applied to the node group. | `any` | `{}` | no | | [k8s\_labels](#input\_k8s\_labels) | Labels to be applied to the Kubernetes node groups. | `map(any)` | `{}` | no | | [worker\_iam\_role\_arn](#input\_worker\_iam\_role\_arn) | The ARN of the worker role for EKS. | `string` | `""` | no | @@ -74,9 +74,10 @@ No modules. | [aws\_managed\_node\_group\_arch](#input\_aws\_managed\_node\_group\_arch) | Enter your linux architecture. | `string` | `"amd64"` | no | | [launch\_template\_name](#input\_launch\_template\_name) | The name of the launch template. | `string` | `""` | no | | [enable\_bottlerocket\_ami](#input\_enable\_bottlerocket\_ami) | Set to true to enable the use of Bottlerocket AMIs for instances. | `bool` | `false` | no | -| [bottlerocket\_node\_config](#input\_bottlerocket\_node\_config) | Bottlerocket Node configurations for EKS. | `map(any)` |
""
]
{
"bottlerocket_eks_enable_control_container": true,
"bottlerocket_eks_node_admin_container_enabled": false
} | no |
+| [bottlerocket\_node\_config](#input\_bottlerocket\_node\_config) | Bottlerocket Node configurations for EKS. | `map(any)` | {
"bottlerocket_eks_enable_control_container": true,
"bottlerocket_eks_node_admin_container_enabled": false
} | no |
| [custom\_ami\_id](#input\_custom\_ami\_id) | worker node AMI id to be created | `string` | `""` | no |
-| [managed\_ng\_node\_autorepair](#input\_managed\_ng\_node\_autorepair) | Choose whether to enable managed nodegroup auto repair feature | object({
enabled = bool
enable_node_monitoring_agent_addon = bool
}) | {
"enable_node_monitoring_agent_addon": false,
"enabled": false
} | no |
+| [managed\_ng\_node\_autorepair](#input\_managed\_ng\_node\_autorepair) | Choose whether to enable managed nodegroup auto repair feature | object({
enabled = bool
enable_node_monitoring_agent_addon = bool
}) | {
"enable_node_monitoring_agent_addon": false,
"enabled": false
} | no |
+| [update\_config](#input\_update\_config) | Configuration for the update config of the EKS managed node group.object({
max_unavailable_value = number
use_percentage = bool
}) | {
"max_unavailable_value": 50,
"use_percentage": true
} | no |
## Outputs
diff --git a/modules/managed-nodegroup/main.tf b/modules/managed-nodegroup/main.tf
index 5ea6333..e9c68d9 100644
--- a/modules/managed-nodegroup/main.tf
+++ b/modules/managed-nodegroup/main.tf
@@ -122,7 +122,8 @@ resource "aws_eks_node_group" "managed_ng" {
version = aws_launch_template.eks_template.latest_version
}
update_config {
- max_unavailable_percentage = 50
+ max_unavailable = var.update_config.use_percentage ? null : var.update_config.max_unavailable_value
+ max_unavailable_percentage = var.update_config.use_percentage ? var.update_config.max_unavailable_value : null
}
tags = merge(
{
diff --git a/modules/managed-nodegroup/variables.tf b/modules/managed-nodegroup/variables.tf
index b868bc4..672d28d 100644
--- a/modules/managed-nodegroup/variables.tf
+++ b/modules/managed-nodegroup/variables.tf
@@ -216,3 +216,20 @@ variable "managed_ng_node_autorepair" {
enable_node_monitoring_agent_addon = false
}
}
+
+variable "update_config" {
+ description = <