Karpenter nodepool

icon

Configure a single Karpenter NodePool for EKS auto-scaling. The install name becomes the NodePool resource name. Install multiple times to create multiple NodePools — each install is independent. Requires a karpenter-nodeclass install (or equivalent EC2NodeClass) to already exist in the cluster.


plugins/karpenter-nodepool/terra.yaml
resource_id: karpenter-nodepool
name: Karpenter NodePool
icon: https://github.com/juno-fx/Terra-Official-Plugins/blob/main/plugins/karpenter-nodepool/assets/logo.png?raw=true
description: |
  Configure a single Karpenter NodePool for EKS auto-scaling. The install name becomes the
  NodePool resource name. Install multiple times to create multiple NodePools — each install
  is independent. Requires a karpenter-nodeclass install (or equivalent EC2NodeClass) to
  already exist in the cluster.
category: Compute
compatibility: genesis-deployment>=3.0.2,orion-deployment>=3.1.0
editable: true
tags:
  - karpenter
  - autoscaling
  - ec2
  - nodepool
  - aws
  - cluster-level
fields:
  - name: nodeclass_ref
    description: >-
      Name of the EC2NodeClass to use for this pool. Must match the install name of your
      karpenter-nodeclass plugin install.
    required: true
    type: string
  - name: pool_type
    description: >-
      Type of NodePool. Determines the node label and CPU architecture applied to provisioned nodes.
      service = amd64, labeled for ingress-nginx (juno-innovations.com/service=true).
      workstation-cpu = amd64 general workstation.
      workstation-arm64 = ARM64 workstation.
      workstation-gpu = amd64 GPU workstation.
    required: true
    type: select
    options:
      - service
      - workstation-cpu
      - workstation-arm64
      - workstation-gpu
  - name: availability_zone
    description: 'Availability zone for provisioned nodes (e.g. us-east-1a).'
    required: true
    type: string
  - name: capacity_type
    description: EC2 capacity type. Use spot for cost savings, on-demand for guaranteed availability.
    required: true
    type: select
    default: spot
    options:
      - spot
      - on-demand
  - name: instance_categories
    description: >-
      Comma-separated Karpenter instance category letters (e.g. c,t,r).
      c=compute, m=general, r=memory, t=burstable, g=GPU, p=GPU-optimized.
    required: true
    type: string
    default: 'c,t,r'
  - name: instance_types
    description: >-
      Comma-separated EC2 instance types Karpenter may provision (e.g. c5.xlarge,c6a.xlarge).
      Karpenter picks from this list when launching nodes.
    required: true
    type: string
    default: 'c5.xlarge,c5a.xlarge,c5ad.xlarge,c6a.xlarge,c7i-flex.xlarge'
  - name: cpu_limit
    description: Maximum total CPU cores this pool may provision across all nodes.
    required: true
    type: string
    default: '16'
  - name: memory_limit
    description: 'Maximum total memory this pool may provision across all nodes (e.g. 32Gi).'
    required: true
    type: string
    default: 32Gi
  - name: weight
    description: >-
      NodePool scheduling weight (1-100). Higher weight = higher priority when Karpenter chooses
      between pools. Leave empty to use Karpenter default (0).
    required: false
    type: int
  - name: min_cpu
    description: >-
      Minimum vCPUs for candidate instance types. Adds a Gt (greater-than) CPU requirement.
      Leave empty to allow any size instance that matches the other requirements.
    required: false
    type: string