in internal/deployers/eksapi/deployer.go [233:302]
func (d *deployer) verifyUpFlags() error {
if d.KubernetesVersion == "" {
klog.Infof("--kubernetes-version is empty, attempting to detect it...")
detectedVersion, err := detectKubernetesVersion()
if err != nil {
return fmt.Errorf("unable to detect --kubernetes-version, flag cannot be empty")
}
klog.Infof("detected --kubernetes-version=%s", detectedVersion)
d.KubernetesVersion = detectedVersion
}
if d.Nodes < 0 {
return fmt.Errorf("number of nodes must be greater than zero")
}
if d.Nodes == 0 {
d.Nodes = 3
klog.Infof("Using default number of nodes: %d", d.Nodes)
}
if d.IPFamily == "" {
d.IPFamily = string(ekstypes.IpFamilyIpv4)
klog.Infof("Using default IP family: %s", d.IPFamily)
}
if d.ClusterCreationTimeout == 0 {
d.ClusterCreationTimeout = time.Minute * 15
}
if d.NodeCreationTimeout == 0 {
d.NodeCreationTimeout = time.Minute * 20
}
if d.NodeReadyTimeout == 0 {
d.NodeReadyTimeout = time.Minute * 5
}
if d.StaticClusterName != "" {
klog.Infof("Skip configuration for static cluster")
return nil
}
if len(d.InstanceTypes) > 0 && len(d.InstanceTypeArchs) > 0 {
return fmt.Errorf("--instance-types and --instance-type-archs are mutually exclusive")
}
if d.UnmanagedNodes {
if d.AMI == "" {
return fmt.Errorf("--ami must be specified for --unmanaged-nodes")
}
if d.AMIType != "" {
return fmt.Errorf("--ami-type should not be provided with --unmanaged-nodes")
}
if d.NodeNameStrategy == "" {
d.NodeNameStrategy = "EC2PrivateDNSName"
klog.Infof("Using default node name strategy: EC2PrivateDNSName")
} else {
if !slices.Contains(SupportedNodeNameStrategy, d.NodeNameStrategy) {
return fmt.Errorf("--node-name-strategy must be one of the following values: ['SessionName', 'EC2PrivateDNSName']")
}
}
if d.UserDataFormat == "" {
d.UserDataFormat = "bootstrap.sh"
klog.Infof("Using default user data format: %s", d.UserDataFormat)
}
if d.EFA && len(d.InstanceTypes) != 1 {
return fmt.Errorf("--efa requires a single instance type")
}
} else {
if d.AMI != "" {
return fmt.Errorf("--ami should not be provided without --unmanaged-nodes")
}
if d.AMIType == "" {
d.AMIType = "AL2023_x86_64_STANDARD"
klog.Infof("Using default AMI type: %s", d.AMIType)
}
}
return nil
}