# yaml-language-server: $schema=https://raw.githubusercontent.com/weaveworks/eksctl/main/pkg/apis/eksctl.io/v1alpha5/assets/schema.json
apiVersion: eksctl.io/v1alpha5
kind: ClusterConfig

metadata:
  name: jcw-test-airgap
  region: us-east-2
  version: "1.30"


# See https://eksctl.io/usage/eks-private-cluster
privateCluster:
  enabled: true

addons:
  - name: aws-ebs-csi-driver

# create the required IAM roles and kubernetes service account for the cluster-autoscaler
iam:
  withOIDC: true
  serviceAccounts:
  - metadata:
      name: cluster-autoscaler
      namespace: kube-system
    wellKnownPolicies:
      autoScaler: true

managedNodeGroups:
  - name: general
    privateNetworking: true
    instanceSelector:
      vCPUs: 8
      memory: 16GiB 
      gpus: 0
      cpuArchitecture: x86_64
    minSize: 1
    maxSize: 3
    volumeSize: 100
    desiredCapacity: 1
    labels:
      wallaroo.ai/node-purpose: general
    iam:
      withAddonPolicies:
        autoScaler: true # add iam role for cluster-autoscaler; any nodegroup that should autoscale needs this and below
    propagateASGTags: true # add the labels and taints as appropriate autoscaling groups for cluster-autoscaler
  - name: persistent
    privateNetworking: true
    instanceSelector:
      vCPUs: 8
      memory: 16GiB 
      gpus: 0
      cpuArchitecture: x86_64
    desiredCapacity: 1
    minSize: 1
    maxSize: 3
    volumeSize: 100
    iam:
      withAddonPolicies:
        autoScaler: true
    propagateASGTags: true
    labels:
      wallaroo.ai/node-purpose: persistent
    taints:
      - key: wallaroo.ai/persistent
        value: "true"
        effect: NoSchedule
    availabilityZones:
      - us-east-2c

  - name: pipelines-x86
    privateNetworking: true
    instanceTypes:
    - c7i.2xlarge
    - c7a.2xlarge
    - c6i.2xlarge
    - c6a.2xlarge
    desiredCapacity: 2
    minSize: 2
    maxSize: 3
    volumeSize: 100
    iam:
      withAddonPolicies:
        autoScaler: true
    propagateASGTags: true
    labels:
      wallaroo.ai/node-purpose: pipelines
    taints:
      - key: wallaroo.ai/pipelines
        value: "true"
        effect: NoSchedule

  - name: pipelines-gpu
    instanceType: g6e.2xlarge #example
    minSize: 1
    maxSize: 1
    volumeSize: 100
    desiredCapacity: 1
    privateNetworking: true
    labels:
      lifecycle: ec2-autoscaler
      wallaroo.ai/accelerator: gpu 		# use for deployment label in deployment config
      wallaroo.ai/node-purpose: pipelines
    taints:
      - key: wallaroo.ai/pipelines
        value: "true"
        effect: NoSchedule
      - key: nvidia.com/gpu
        value: "true"
        effect: NoSchedule
    iam:
      withAddonPolicies:
        autoScaler: true
    