createNodegroup method
- required String clusterName,
- required String nodeRole,
- required String nodegroupName,
- required List<
String> subnets, - AMITypes? amiType,
- CapacityTypes? capacityType,
- String? clientRequestToken,
- int? diskSize,
- List<
String> ? instanceTypes, - Map<
String, String> ? labels, - LaunchTemplateSpecification? launchTemplate,
- NodeRepairConfig? nodeRepairConfig,
- String? releaseVersion,
- RemoteAccessConfig? remoteAccess,
- NodegroupScalingConfig? scalingConfig,
- Map<
String, String> ? tags, - List<
Taint> ? taints, - NodegroupUpdateConfig? updateConfig,
- String? version,
- WarmPoolConfig? warmPoolConfig,
Creates a managed node group for an Amazon EKS cluster.
You can only create a node group for your cluster that is equal to the current Kubernetes version for the cluster. All node groups are created with the latest AMI release version for the respective minor Kubernetes version of the cluster, unless you deploy a custom AMI using a launch template.
For later updates, you will only be able to update a node group using a launch template only if it was originally deployed with a launch template. Additionally, the launch template ID or name must match what was used when the node group was created. You can update the launch template version with necessary changes. For more information about using launch templates, see Customizing managed nodes with launch templates.
An Amazon EKS managed node group is an Amazon EC2 Auto Scaling group and associated Amazon EC2 instances that are managed by Amazon Web Services for an Amazon EKS cluster. For more information, see Managed node groups in the Amazon EKS User Guide.
May throw ClientException.
May throw InvalidParameterException.
May throw InvalidRequestException.
May throw ResourceInUseException.
May throw ResourceLimitExceededException.
May throw ServerException.
May throw ServiceUnavailableException.
Parameter clusterName :
The name of your cluster.
Parameter nodeRole :
The Amazon Resource Name (ARN) of the IAM role to associate with your node
group. The Amazon EKS worker node kubelet daemon makes calls
to Amazon Web Services APIs on your behalf. Nodes receive permissions for
these API calls through an IAM instance profile and associated policies.
Before you can launch nodes and register them into a cluster, you must
create an IAM role for those nodes to use when they are launched. For more
information, see Amazon
EKS node IAM role in the Amazon EKS User Guide . If you
specify launchTemplate, then don't specify IamInstanceProfile
in your launch template, or the node group deployment will fail.
For more information about using launch templates with Amazon EKS, see Customizing
managed nodes with launch templates in the Amazon EKS User
Guide.
Parameter nodegroupName :
The unique name to give your node group.
Parameter subnets :
The subnets to use for the Auto Scaling group that is created for your
node group. If you specify launchTemplate, then don't specify
SubnetId
in your launch template, or the node group deployment will fail.
For more information about using launch templates with Amazon EKS, see Customizing
managed nodes with launch templates in the Amazon EKS User
Guide.
Parameter amiType :
The AMI type for your node group. If you specify
launchTemplate, and your launch template uses a custom AMI,
then don't specify amiType, or the node group deployment will
fail. If your launch template uses a Windows custom AMI, then add
eks:kube-proxy-windows to your Windows nodes
rolearn in the aws-auth ConfigMap.
For more information about using launch templates with Amazon EKS, see Customizing
managed nodes with launch templates in the Amazon EKS User
Guide.
Parameter capacityType :
The capacity type for your node group.
Parameter clientRequestToken :
A unique, case-sensitive identifier that you provide to ensure the
idempotency of the request.
Parameter diskSize :
The root device disk size (in GiB) for your node group instances. The
default disk size is 20 GiB for Linux and Bottlerocket. The default disk
size is 50 GiB for Windows. If you specify launchTemplate,
then don't specify diskSize, or the node group deployment
will fail. For more information about using launch templates with Amazon
EKS, see Customizing
managed nodes with launch templates in the Amazon EKS User
Guide.
Parameter instanceTypes :
Specify the instance types for a node group. If you specify a GPU instance
type, make sure to also specify an applicable GPU AMI type with the
amiType parameter. If you specify
launchTemplate, then you can specify zero or one instance
type in your launch template or you can specify 0-20 instance types
for instanceTypes. If however, you specify an instance type
in your launch template and specify any instanceTypes,
the node group deployment will fail. If you don't specify an instance type
in a launch template or for instanceTypes, then
t3.medium is used, by default. If you specify
Spot for capacityType, then we recommend
specifying multiple values for instanceTypes. For more
information, see Managed
node group capacity types and Customizing
managed nodes with launch templates in the Amazon EKS User
Guide.
Parameter labels :
The Kubernetes labels to apply to the nodes in the node group
when they are created.
Parameter launchTemplate :
An object representing a node group's launch template specification. When
using this object, don't directly specify instanceTypes,
diskSize, or remoteAccess. You cannot later
specify a different launch template ID or name than what was used to
create the node group.
Make sure that the launch template meets the requirements in
launchTemplateSpecification. Also refer to Customizing
managed nodes with launch templates in the Amazon EKS User
Guide.
Parameter nodeRepairConfig :
The node auto repair configuration for the node group.
Parameter releaseVersion :
The AMI version of the Amazon EKS optimized AMI to use with your node
group. By default, the latest available AMI version for the node group's
current Kubernetes version is used. For information about Linux versions,
see Amazon
EKS optimized Amazon Linux AMI versions in the Amazon EKS User
Guide. Amazon EKS managed node groups support the November 2022 and
later releases of the Windows AMIs. For information about Windows
versions, see Amazon
EKS optimized Windows AMI versions in the Amazon EKS User
Guide.
If you specify launchTemplate, and your launch template uses
a custom AMI, then don't specify releaseVersion, or the node
group deployment will fail. For more information about using launch
templates with Amazon EKS, see Customizing
managed nodes with launch templates in the Amazon EKS User
Guide.
Parameter remoteAccess :
The remote access configuration to use with your node group. For Linux,
the protocol is SSH. For Windows, the protocol is RDP. If you specify
launchTemplate, then don't specify remoteAccess,
or the node group deployment will fail. For more information about using
launch templates with Amazon EKS, see Customizing
managed nodes with launch templates in the Amazon EKS User
Guide.
Parameter scalingConfig :
The scaling configuration details for the Auto Scaling group that is
created for your node group.
Parameter tags :
Metadata that assists with categorization and organization. Each tag
consists of a key and an optional value. You define both. Tags don't
propagate to any other cluster or Amazon Web Services resources.
Parameter taints :
The Kubernetes taints to be applied to the nodes in the node group. For
more information, see Node
taints on managed node groups.
Parameter updateConfig :
The node group update configuration.
Parameter version :
The Kubernetes version to use for your managed nodes. By default, the
Kubernetes version of the cluster is used, and this is the only accepted
specified value. If you specify launchTemplate, and your
launch template uses a custom AMI, then don't specify
version, or the node group deployment will fail. For more
information about using launch templates with Amazon EKS, see Customizing
managed nodes with launch templates in the Amazon EKS User
Guide.
Parameter warmPoolConfig :
The warm pool configuration for the node group. Warm pools maintain
pre-initialized EC2 instances that can quickly join your cluster during
scale-out events, improving application scaling performance and reducing
costs.
Implementation
Future<CreateNodegroupResponse> createNodegroup({
required String clusterName,
required String nodeRole,
required String nodegroupName,
required List<String> subnets,
AMITypes? amiType,
CapacityTypes? capacityType,
String? clientRequestToken,
int? diskSize,
List<String>? instanceTypes,
Map<String, String>? labels,
LaunchTemplateSpecification? launchTemplate,
NodeRepairConfig? nodeRepairConfig,
String? releaseVersion,
RemoteAccessConfig? remoteAccess,
NodegroupScalingConfig? scalingConfig,
Map<String, String>? tags,
List<Taint>? taints,
NodegroupUpdateConfig? updateConfig,
String? version,
WarmPoolConfig? warmPoolConfig,
}) async {
final $payload = <String, dynamic>{
'nodeRole': nodeRole,
'nodegroupName': nodegroupName,
'subnets': subnets,
if (amiType != null) 'amiType': amiType.value,
if (capacityType != null) 'capacityType': capacityType.value,
'clientRequestToken': clientRequestToken ?? _s.generateIdempotencyToken(),
if (diskSize != null) 'diskSize': diskSize,
if (instanceTypes != null) 'instanceTypes': instanceTypes,
if (labels != null) 'labels': labels,
if (launchTemplate != null) 'launchTemplate': launchTemplate,
if (nodeRepairConfig != null) 'nodeRepairConfig': nodeRepairConfig,
if (releaseVersion != null) 'releaseVersion': releaseVersion,
if (remoteAccess != null) 'remoteAccess': remoteAccess,
if (scalingConfig != null) 'scalingConfig': scalingConfig,
if (tags != null) 'tags': tags,
if (taints != null) 'taints': taints,
if (updateConfig != null) 'updateConfig': updateConfig,
if (version != null) 'version': version,
if (warmPoolConfig != null) 'warmPoolConfig': warmPoolConfig,
};
final response = await _protocol.send(
payload: $payload,
method: 'POST',
requestUri: '/clusters/${Uri.encodeComponent(clusterName)}/node-groups',
exceptionFnMap: _exceptionFns,
);
return CreateNodegroupResponse.fromJson(response);
}