node-group resource¶
Description¶
NodeGroupResource manages an Amazon EKS managed node group.
Source: internal/service/eks/node_group_types.go:4
Example usage:
imports: {
aws-eks: 'github.com/cloudboss/unobin-library-aws//service/eks'
}
resources: {
example: aws-eks.node-group {
# Set input fields here.
}
}
Inputs¶
cluster-name
string
node-group-name
string
node-role-arn
string
subnet-ids
list(string)
scaling-config
object
object({
desired-size: integer
min-size: integer
max-size: integer
})
ami-type
optional(string)
capacity-type
optional(string)
disk-size
optional(integer)
instance-types
optional(list(string))
labels
optional(map(string))
launch-template-id
optional(string)
launch-template-name
optional(string)
launch-template-version
optional(string)
node-repair-config
optional(object)
optional(
object({
enabled: optional(boolean)
max-parallel-nodes-repaired-count: optional(integer)
max-parallel-nodes-repaired-percentage: optional(integer)
max-unhealthy-node-threshold-count: optional(integer)
max-unhealthy-node-threshold-percentage: optional(integer)
overrides: optional(
list(
object({
condition: string
reason: string
min-repair-wait-mins: integer
repair-action: string
})
)
)
})
)
release-version
optional(string)
remote-access
optional(object)
optional(
object({
ec2-ssh-key: string
source-security-group-ids: optional(list(string))
})
)
tags
optional(map(string))
taints
optional(list(object))
optional(
list(
object({
key: string
value: optional(string)
effect: string
})
)
)
update-config
optional(object)
optional(
object({
max-unavailable: optional(integer)
max-unavailable-percentage: optional(integer)
strategy: optional(string)
})
)
version
optional(string)
force-update-version
boolean
false
warm-pool-config
optional(object)
optional(
object({
enabled: optional(boolean)
max-group-prepared-capacity: optional(integer)
min-size: optional(integer)
pool-state: optional(string)
reuse-on-scale-in: optional(boolean)
})
)
Input Constraints¶
Subnet ids rules
subnet-ids must not be empty.
Rule logic
- Require
@core.length(input.subnet-ids) >= 1
Scaling config rules
Conditional requirement.
Rule logic
- Require
input.scaling-config.desired-size >= 0
&& input.scaling-config.min-size >= 0
&& input.scaling-config.max-size >= 1
Instance types rules
Conditional requirement.
Rule logic
- When
input.instance-types != null- Require
@core.length(input.instance-types) <= 20
Field combinations
At most one of launch-template-id or launch-template-name.
Launch template version rules
Conditional requirement.
Rule logic
- When
input.launch-template-version != null- Require
input.launch-template-id != null
|| input.launch-template-name != null
Taints rules
Conditional requirement.
Rule logic
- When
input.taints != null- Require
@core.length(input.taints) <= 50
Conditional requirement.
Rule logic
- For each
input.taints ?? []- Require
@each.value.effect == 'NO_SCHEDULE'
|| @each.value.effect == 'NO_EXECUTE'
|| @each.value.effect == 'PREFER_NO_SCHEDULE'
Update config rules
At most one of update-config.max-unavailable or update-config.max-unavailable-percentage.
Conditional requirement.
Rule logic
- When
input.update-config != null- Require
input.update-config.max-unavailable != null
|| input.update-config.max-unavailable-percentage != null
Conditional requirement.
Rule logic
- When
input.update-config.max-unavailable != null- Require
input.update-config.max-unavailable >= 1
&& input.update-config.max-unavailable <= 100
Conditional requirement.
Rule logic
- When
input.update-config.max-unavailable-percentage != null- Require
input.update-config.max-unavailable-percentage >= 1
&& input.update-config.max-unavailable-percentage <= 100
Conditional requirement.
Rule logic
- When
input.update-config.strategy != null- Require
input.update-config.strategy == 'DEFAULT'
|| input.update-config.strategy == 'MINIMAL'
Node repair config rules
At most one of node-repair-config.max-parallel-nodes-repaired-count or node-repair-config.max-parallel-nodes-repaired-percentage.
At most one of node-repair-config.max-unhealthy-node-threshold-count or node-repair-config.max-unhealthy-node-threshold-percentage.
Conditional requirement.
Rule logic
- For each
input.node-repair-config.overrides ?? []- Require
@each.value.min-repair-wait-mins >= 1
Conditional requirement.
Rule logic
- For each
input.node-repair-config.overrides ?? []- Require
@each.value.repair-action == 'Replace'
|| @each.value.repair-action == 'Reboot'
|| @each.value.repair-action == 'NoAction'
Warm pool config rules
Conditional requirement.
Rule logic
- When
input.warm-pool-config.max-group-prepared-capacity != null- Require
input.warm-pool-config.max-group-prepared-capacity >= -1
Conditional requirement.
Rule logic
- When
input.warm-pool-config.min-size != null- Require
input.warm-pool-config.min-size >= 0
Conditional requirement.
Rule logic
- When
input.warm-pool-config.pool-state != null- Require
input.warm-pool-config.pool-state == 'STOPPED'
|| input.warm-pool-config.pool-state == 'RUNNING'
|| input.warm-pool-config.pool-state == 'HIBERNATED'
Outputs¶
cluster-name
string
node-group-name
string
arn
string
status
string
auto-scaling-group-names
list(string)
remote-access-security-group-id
optional(string)
ami-type
string
capacity-type
string
disk-size
optional(integer)
instance-types
list(string)
launch-template-id
optional(string)
launch-template-name
optional(string)
launch-template-version
optional(string)
node-repair-config
optional(object)
optional(
object({
enabled: optional(boolean)
max-parallel-nodes-repaired-count: optional(integer)
max-parallel-nodes-repaired-percentage: optional(integer)
max-unhealthy-node-threshold-count: optional(integer)
max-unhealthy-node-threshold-percentage: optional(integer)
overrides: optional(
list(
object({
condition: string
reason: string
min-repair-wait-mins: integer
repair-action: string
})
)
)
})
)
release-version
string
update-config
optional(object)
optional(
object({
max-unavailable: optional(integer)
max-unavailable-percentage: optional(integer)
strategy: optional(string)
})
)
version
string
warm-pool-config
optional(object)
optional(
object({
enabled: optional(boolean)
max-group-prepared-capacity: optional(integer)
min-size: optional(integer)
pool-state: optional(string)
reuse-on-scale-in: optional(boolean)
})
)