1
0
mirror of https://github.com/terraform-aws-modules/terraform-aws-eks.git synced 2025-09-09 19:32:58 +08:00

fix: Allow disabling instance refresh on self-managed node groups (part deux) (#3478)

This commit is contained in:
Bryant Biggs
2025-08-13 10:13:24 -05:00
committed by GitHub
parent d97712a888
commit ca8f37e8ce
6 changed files with 9 additions and 15 deletions
+2 -2
View File
@@ -1,6 +1,6 @@
repos: repos:
- repo: https://github.com/antonbabenko/pre-commit-terraform - repo: https://github.com/antonbabenko/pre-commit-terraform
rev: v1.99.5 rev: v1.100.0
hooks: hooks:
- id: terraform_fmt - id: terraform_fmt
- id: terraform_docs - id: terraform_docs
@@ -23,7 +23,7 @@ repos:
- '--args=--only=terraform_workspace_remote' - '--args=--only=terraform_workspace_remote'
- id: terraform_validate - id: terraform_validate
- repo: https://github.com/pre-commit/pre-commit-hooks - repo: https://github.com/pre-commit/pre-commit-hooks
rev: v5.0.0 rev: v6.0.0
hooks: hooks:
- id: check-merge-conflict - id: check-merge-conflict
- id: end-of-file-fixer - id: end-of-file-fixer
+1 -1
View File
File diff suppressed because one or more lines are too long
+1 -1
View File
@@ -144,7 +144,7 @@ module "self_managed_node_group" {
| <a name="input_instance_initiated_shutdown_behavior"></a> [instance\_initiated\_shutdown\_behavior](#input\_instance\_initiated\_shutdown\_behavior) | Shutdown behavior for the instance. Can be `stop` or `terminate`. (Default: `stop`) | `string` | `null` | no | | <a name="input_instance_initiated_shutdown_behavior"></a> [instance\_initiated\_shutdown\_behavior](#input\_instance\_initiated\_shutdown\_behavior) | Shutdown behavior for the instance. Can be `stop` or `terminate`. (Default: `stop`) | `string` | `null` | no |
| <a name="input_instance_maintenance_policy"></a> [instance\_maintenance\_policy](#input\_instance\_maintenance\_policy) | If this block is configured, add a instance maintenance policy to the specified Auto Scaling group | <pre>object({<br/> max_healthy_percentage = number<br/> min_healthy_percentage = number<br/> })</pre> | `null` | no | | <a name="input_instance_maintenance_policy"></a> [instance\_maintenance\_policy](#input\_instance\_maintenance\_policy) | If this block is configured, add a instance maintenance policy to the specified Auto Scaling group | <pre>object({<br/> max_healthy_percentage = number<br/> min_healthy_percentage = number<br/> })</pre> | `null` | no |
| <a name="input_instance_market_options"></a> [instance\_market\_options](#input\_instance\_market\_options) | The market (purchasing) option for the instance | <pre>object({<br/> market_type = optional(string)<br/> spot_options = optional(object({<br/> block_duration_minutes = optional(number)<br/> instance_interruption_behavior = optional(string)<br/> max_price = optional(string)<br/> spot_instance_type = optional(string)<br/> valid_until = optional(string)<br/> }))<br/> })</pre> | `null` | no | | <a name="input_instance_market_options"></a> [instance\_market\_options](#input\_instance\_market\_options) | The market (purchasing) option for the instance | <pre>object({<br/> market_type = optional(string)<br/> spot_options = optional(object({<br/> block_duration_minutes = optional(number)<br/> instance_interruption_behavior = optional(string)<br/> max_price = optional(string)<br/> spot_instance_type = optional(string)<br/> valid_until = optional(string)<br/> }))<br/> })</pre> | `null` | no |
| <a name="input_instance_refresh"></a> [instance\_refresh](#input\_instance\_refresh) | If this block is configured, start an Instance Refresh when this Auto Scaling Group is updated | <pre>object({<br/> preferences = optional(object({<br/> alarm_specification = optional(object({<br/> alarms = optional(list(string))<br/> }))<br/> auto_rollback = optional(bool)<br/> checkpoint_delay = optional(number)<br/> checkpoint_percentages = optional(list(number))<br/> instance_warmup = optional(number)<br/> max_healthy_percentage = optional(number)<br/> min_healthy_percentage = optional(number, 66)<br/> scale_in_protected_instances = optional(string)<br/> skip_matching = optional(bool)<br/> standby_instances = optional(string)<br/> }))<br/> strategy = optional(string, "Rolling")<br/> triggers = optional(list(string))<br/> })</pre> | <pre>{<br/> "preferences": {<br/> "min_healthy_percentage": 66<br/> },<br/> "strategy": "Rolling"<br/>}</pre> | no | | <a name="input_instance_refresh"></a> [instance\_refresh](#input\_instance\_refresh) | If this block is configured, start an Instance Refresh when this Auto Scaling Group is updated | <pre>object({<br/> preferences = optional(object({<br/> alarm_specification = optional(object({<br/> alarms = optional(list(string))<br/> }))<br/> auto_rollback = optional(bool)<br/> checkpoint_delay = optional(number)<br/> checkpoint_percentages = optional(list(number))<br/> instance_warmup = optional(number)<br/> max_healthy_percentage = optional(number)<br/> min_healthy_percentage = optional(number)<br/> scale_in_protected_instances = optional(string)<br/> skip_matching = optional(bool)<br/> standby_instances = optional(string)<br/> }))<br/> strategy = optional(string)<br/> triggers = optional(list(string))<br/> })</pre> | <pre>{<br/> "preferences": {<br/> "min_healthy_percentage": 66<br/> },<br/> "strategy": "Rolling"<br/>}</pre> | no |
| <a name="input_instance_requirements"></a> [instance\_requirements](#input\_instance\_requirements) | The attribute requirements for the type of instance. If present then `instance_type` cannot be present | <pre>object({<br/> accelerator_count = optional(object({<br/> max = optional(number)<br/> min = optional(number)<br/> }))<br/> accelerator_manufacturers = optional(list(string))<br/> accelerator_names = optional(list(string))<br/> accelerator_total_memory_mib = optional(object({<br/> max = optional(number)<br/> min = optional(number)<br/> }))<br/> accelerator_types = optional(list(string))<br/> allowed_instance_types = optional(list(string))<br/> bare_metal = optional(string)<br/> baseline_ebs_bandwidth_mbps = optional(object({<br/> max = optional(number)<br/> min = optional(number)<br/> }))<br/> burstable_performance = optional(string)<br/> cpu_manufacturers = optional(list(string))<br/> excluded_instance_types = optional(list(string))<br/> instance_generations = optional(list(string))<br/> local_storage = optional(string)<br/> local_storage_types = optional(list(string))<br/> max_spot_price_as_percentage_of_optimal_on_demand_price = optional(number)<br/> memory_gib_per_vcpu = optional(object({<br/> max = optional(number)<br/> min = optional(number)<br/> }))<br/> memory_mib = optional(object({<br/> max = optional(number)<br/> min = optional(number)<br/> }))<br/> network_bandwidth_gbps = optional(object({<br/> max = optional(number)<br/> min = optional(number)<br/> }))<br/> network_interface_count = optional(object({<br/> max = optional(number)<br/> min = optional(number)<br/> }))<br/> on_demand_max_price_percentage_over_lowest_price = optional(number)<br/> require_hibernate_support = optional(bool)<br/> spot_max_price_percentage_over_lowest_price = optional(number)<br/> total_local_storage_gb = optional(object({<br/> max = optional(number)<br/> min = optional(number)<br/> }))<br/> vcpu_count = optional(object({<br/> max = optional(number)<br/> min = string<br/> }))<br/> })</pre> | `null` | no | | <a name="input_instance_requirements"></a> [instance\_requirements](#input\_instance\_requirements) | The attribute requirements for the type of instance. If present then `instance_type` cannot be present | <pre>object({<br/> accelerator_count = optional(object({<br/> max = optional(number)<br/> min = optional(number)<br/> }))<br/> accelerator_manufacturers = optional(list(string))<br/> accelerator_names = optional(list(string))<br/> accelerator_total_memory_mib = optional(object({<br/> max = optional(number)<br/> min = optional(number)<br/> }))<br/> accelerator_types = optional(list(string))<br/> allowed_instance_types = optional(list(string))<br/> bare_metal = optional(string)<br/> baseline_ebs_bandwidth_mbps = optional(object({<br/> max = optional(number)<br/> min = optional(number)<br/> }))<br/> burstable_performance = optional(string)<br/> cpu_manufacturers = optional(list(string))<br/> excluded_instance_types = optional(list(string))<br/> instance_generations = optional(list(string))<br/> local_storage = optional(string)<br/> local_storage_types = optional(list(string))<br/> max_spot_price_as_percentage_of_optimal_on_demand_price = optional(number)<br/> memory_gib_per_vcpu = optional(object({<br/> max = optional(number)<br/> min = optional(number)<br/> }))<br/> memory_mib = optional(object({<br/> max = optional(number)<br/> min = optional(number)<br/> }))<br/> network_bandwidth_gbps = optional(object({<br/> max = optional(number)<br/> min = optional(number)<br/> }))<br/> network_interface_count = optional(object({<br/> max = optional(number)<br/> min = optional(number)<br/> }))<br/> on_demand_max_price_percentage_over_lowest_price = optional(number)<br/> require_hibernate_support = optional(bool)<br/> spot_max_price_percentage_over_lowest_price = optional(number)<br/> total_local_storage_gb = optional(object({<br/> max = optional(number)<br/> min = optional(number)<br/> }))<br/> vcpu_count = optional(object({<br/> max = optional(number)<br/> min = string<br/> }))<br/> })</pre> | `null` | no |
| <a name="input_instance_type"></a> [instance\_type](#input\_instance\_type) | The type of the instance to launch | `string` | `"m6i.large"` | no | | <a name="input_instance_type"></a> [instance\_type](#input\_instance\_type) | The type of the instance to launch | `string` | `"m6i.large"` | no |
| <a name="input_kernel_id"></a> [kernel\_id](#input\_kernel\_id) | The kernel ID | `string` | `null` | no | | <a name="input_kernel_id"></a> [kernel\_id](#input\_kernel\_id) | The kernel ID | `string` | `null` | no |
+1 -1
View File
@@ -526,7 +526,7 @@ resource "aws_autoscaling_group" "this" {
} }
dynamic "instance_refresh" { dynamic "instance_refresh" {
for_each = var.instance_refresh != null ? [var.instance_refresh] : [] for_each = length({ for k, v in var.instance_refresh : k => v if v != null }) > 0 ? [var.instance_refresh] : []
content { content {
dynamic "preferences" { dynamic "preferences" {
+3 -2
View File
@@ -710,12 +710,12 @@ variable "instance_refresh" {
checkpoint_percentages = optional(list(number)) checkpoint_percentages = optional(list(number))
instance_warmup = optional(number) instance_warmup = optional(number)
max_healthy_percentage = optional(number) max_healthy_percentage = optional(number)
min_healthy_percentage = optional(number, 66) min_healthy_percentage = optional(number)
scale_in_protected_instances = optional(string) scale_in_protected_instances = optional(string)
skip_matching = optional(bool) skip_matching = optional(bool)
standby_instances = optional(string) standby_instances = optional(string)
})) }))
strategy = optional(string, "Rolling") strategy = optional(string)
triggers = optional(list(string)) triggers = optional(list(string))
}) })
default = { default = {
@@ -724,6 +724,7 @@ variable "instance_refresh" {
min_healthy_percentage = 66 min_healthy_percentage = 66
} }
} }
nullable = false
} }
variable "use_mixed_instances_policy" { variable "use_mixed_instances_policy" {
+1 -8
View File
@@ -841,14 +841,7 @@ variable "self_managed_node_groups" {
})) }))
strategy = optional(string) strategy = optional(string)
triggers = optional(list(string)) triggers = optional(list(string))
}), })
# Default
{
strategy = "Rolling"
preferences = {
min_healthy_percentage = 66
}
}
) )
use_mixed_instances_policy = optional(bool) use_mixed_instances_policy = optional(bool)
mixed_instances_policy = optional(object({ mixed_instances_policy = optional(object({