Skip to content

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

required

node-group-name

string

required

node-role-arn

string

required

subnet-ids

list(string)

required

scaling-config

object
object({
  desired-size: integer
  min-size: integer
  max-size: integer
})

required

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

default 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)
  })
)