Panfactum LogoPanfactum
Infrastructure ModulesSubmodulesKuberneteskube_workload_utility
kube_workload_utility
Stable
Submodule
Source Code Link

Kubernetes Utility Module

This module is used to construct standard values for the following fields:

Providers

The following providers are needed by this module:

  • pf (0.0.3)

  • random (3.6.0)

Required Inputs

No required inputs.

Optional Inputs

The following input variables are optional (have default values):

arm_nodes_enabled

Description: Whether to allow pods to schedule on arm64 nodes

Type: bool

Default: true

az_anti_affinity_required

Description: Whether to prevent pods from being scheduled in the same availability zone

Type: bool

Default: false

az_spread_preferred

Description: Whether to enable topology spread constraints to spread pods across availability zones (with ScheduleAnyways)

Type: bool

Default: true

az_spread_required

Description: Whether to enable topology spread constraints to spread pods across availability zones (with DoNotSchedule)

Type: bool

Default: false

burstable_nodes_enabled

Description: Whether to allow pods to schedule on burstable nodes

Type: bool

Default: false

controller_nodes_enabled

Description: Whether to allow pods to schedule on EKS Node Group nodes (controller nodes)

Type: bool

Default: false

controller_nodes_required

Description: Whether the pods must be scheduled on an EKS Node Group node

Type: bool

Default: false

extra_labels

Description: Extra labels to add to the workload

Type: map(string)

Default: {}

extra_tolerations

Description: Extra tolerations to add to the pods

Type:

list(object({
    key      = optional(string)
    operator = string
    value    = optional(string)
    effect   = optional(string)
  }))

Default: []

host_anti_affinity_required

Description: Whether to prefer preventing pods from being scheduled on the same host

Type: bool

Default: true

instance_type_anti_affinity_required

Description: Whether to enable anti-affinity to prevent pods from being scheduled on the same instance type

Type: bool

Default: false

lifetime_evictions_enabled

Description: Whether to allow pods to be evicted after exceeding a certain age (configured by Descheduler)

Type: bool

Default: true

match_labels

Description: kubernetes labels to use in selectors to match the workload

Type: map(string)

Default: null

node_preferences

Description: Node label preferences for the pods

Type: map(object({ weight = number, operator = string, values = list(string) }))

Default: {}

node_requirements

Description: Node label requirements for the pods

Type: map(list(string))

Default: {}

panfactum_scheduler_enabled

Description: Whether to use the Panfactum pod scheduler with enhanced bin-packing

Type: bool

Default: false

pod_affinity_match_labels

Description: Labels to match for pod affinity

Type: map(string)

Default: {}

pull_through_cache_enabled

Description: Whether to use the ECR pull through cache for the deployed images

Type: bool

Default: true

spot_nodes_enabled

Description: Whether to allow pods to schedule on spot nodes

Type: bool

Default: true

workload_name

Description: The name of the workload. Used by observability platform for grouping pods.

Type: string

Default: null

Outputs

The following outputs are exported:

affinity

Description: The affinity spec to add to each pod

labels

Description: The labels to add to each pod

match_labels

Description: The label selector to use to match pods in this workload

scheduler_name

Description: The schedulerName to use for the pods in the workload

tolerations

Description: The tolerations to add to each pod

topology_spread_constraints

Description: The topology spread constraints to add to each pod

Usage

No notes