# For details, Please check eksctl documentation or API specs.
# https://github.com/weaveworks/eksctl/blob/master/pkg/apis/eksctl.io/v1alpha4/types.go

apiVersion: eksctl.io/v1alpha5
kind: ClusterConfig
metadata:
  # AWS_CLUSTER_NAME and AWS_REGION will override `name` and `region` here.
  name: your_cluster_name
  region: your_cluster_region
  version: '1.14'
# If your region has multiple availability zones, you can specify 3 of them.
# cluster AZs must be set explicitly for single AZ nodegroup example to work
#availabilityZones: ["us-west-2b", "us-west-2c", "us-west-2d"]

# NodeGroup holds all configuration attributes that are specific to a nodegroup
# You can have several node group in your cluster.
nodeGroups:
  - name: cpu-nodegroup
    instanceType: m5.xlarge
    desiredCapacity: 2
    minSize: 0
    maxSize: 3
    volumeSize: 30

  # Example of GPU node group
#   - name: gpu-nodegroup
#     instanceType: p3.2xlarge
#     ami: auto
#     availabilityZones: ["us-west-2b"] # GPU cluster can use single availability zone to improve network performance
#     desiredCapacity: 0
#     minSize: 0
#     maxSize: 4
#     volumeSize: 50 # Node Root Disk
#     ssh:
#       allow: true
#       sshPublicKeyPath: '~/.ssh/id_rsa.pub'
#     labels:
#       k8s.amazonaws.com/accelerator: 'nvidia-tesla-k80'    # Customize Labels
#     tags:
#       k8s.io/cluster-autoscaler/enabled: 'true'
#     iam:
#       withAddonPolicies:
#         autoScaler: true
#