Class CfnNodegroup

java.lang.Object
software.amazon.jsii.JsiiObject
All Implemented Interfaces:
IConstruct, IDependable, IInspectable, software.amazon.jsii.JsiiSerializable, software.constructs.IConstruct

@Generated(value="jsii-pacmak/1.84.0 (build 5404dcf)", date="2023-06-19T16:30:46.739Z") @Stability(Stable) public class CfnNodegroup extends CfnResource implements IInspectable
A CloudFormation AWS::EKS::Nodegroup.

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 more information about using launch templates, see Launch template support .

An Amazon EKS managed node group is an Amazon EC2 Auto Scaling group and associated Amazon EC2 instances that are managed by AWS for an Amazon EKS cluster. For more information, see Managed node groups in the Amazon EKS User Guide .

Windows AMI types are only supported for commercial Regions that support Windows Amazon EKS.

Example:

 // The code below shows an example of how to instantiate this type.
 // The values are placeholders you should change.
 import software.amazon.awscdk.services.eks.legacy.*;
 CfnNodegroup cfnNodegroup = CfnNodegroup.Builder.create(this, "MyCfnNodegroup")
         .clusterName("clusterName")
         .nodeRole("nodeRole")
         .subnets(List.of("subnets"))
         // the properties below are optional
         .amiType("amiType")
         .capacityType("capacityType")
         .diskSize(123)
         .forceUpdateEnabled(false)
         .instanceTypes(List.of("instanceTypes"))
         .labels(Map.of(
                 "labelsKey", "labels"))
         .launchTemplate(LaunchTemplateSpecificationProperty.builder()
                 .id("id")
                 .name("name")
                 .version("version")
                 .build())
         .nodegroupName("nodegroupName")
         .releaseVersion("releaseVersion")
         .remoteAccess(RemoteAccessProperty.builder()
                 .ec2SshKey("ec2SshKey")
                 // the properties below are optional
                 .sourceSecurityGroups(List.of("sourceSecurityGroups"))
                 .build())
         .scalingConfig(ScalingConfigProperty.builder()
                 .desiredSize(123)
                 .maxSize(123)
                 .minSize(123)
                 .build())
         .tags(Map.of(
                 "tagsKey", "tags"))
         .taints(List.of(TaintProperty.builder()
                 .effect("effect")
                 .key("key")
                 .value("value")
                 .build()))
         .updateConfig(UpdateConfigProperty.builder()
                 .maxUnavailable(123)
                 .maxUnavailablePercentage(123)
                 .build())
         .version("version")
         .build();
 
  • Field Details

    • CFN_RESOURCE_TYPE_NAME

      @Stability(Stable) public static final String CFN_RESOURCE_TYPE_NAME
      The CloudFormation resource type name for this resource class.
  • Constructor Details

    • CfnNodegroup

      protected CfnNodegroup(software.amazon.jsii.JsiiObjectRef objRef)
    • CfnNodegroup

      protected CfnNodegroup(software.amazon.jsii.JsiiObject.InitializationMode initializationMode)
    • CfnNodegroup

      @Stability(Stable) public CfnNodegroup(@NotNull Construct scope, @NotNull String id, @NotNull CfnNodegroupProps props)
      Create a new AWS::EKS::Nodegroup.

      Parameters:
      scope -
      • scope in which this resource is defined.
      This parameter is required.
      id -
      • scoped id of the resource.
      This parameter is required.
      props -
      • resource properties.
      This parameter is required.
  • Method Details

    • inspect

      @Stability(Stable) public void inspect(@NotNull TreeInspector inspector)
      Examines the CloudFormation resource and discloses attributes.

      Specified by:
      inspect in interface IInspectable
      Parameters:
      inspector -
      • tree inspector to collect and process attributes.
      This parameter is required.
    • renderProperties

      @Stability(Stable) @NotNull protected Map<String,Object> renderProperties(@NotNull Map<String,Object> props)
      Overrides:
      renderProperties in class CfnResource
      Parameters:
      props - This parameter is required.
    • getAttrArn

      @Stability(Stable) @NotNull public String getAttrArn()
      The Amazon Resource Name (ARN) associated with the managed node group.
    • getAttrClusterName

      @Stability(Stable) @NotNull public String getAttrClusterName()
      The name of the cluster that the managed node group resides in.
    • getAttrId

      @Stability(Stable) @NotNull public String getAttrId()
    • getAttrNodegroupName

      @Stability(Stable) @NotNull public String getAttrNodegroupName()
      The name associated with an Amazon EKS managed node group.
    • getCfnProperties

      @Stability(Stable) @NotNull protected Map<String,Object> getCfnProperties()
      Overrides:
      getCfnProperties in class CfnResource
    • getTags

      @Stability(Stable) @NotNull public TagManager getTags()
      The metadata applied to the node group to assist with categorization and organization.

      Each tag consists of a key and an optional value. You define both. Node group tags do not propagate to any other resources associated with the node group, such as the Amazon EC2 instances or subnets.

    • getClusterName

      @Stability(Stable) @NotNull public String getClusterName()
      The name of the cluster to create the node group in.
    • setClusterName

      @Stability(Stable) public void setClusterName(@NotNull String value)
      The name of the cluster to create the node group in.
    • getNodeRole

      @Stability(Stable) @NotNull public String getNodeRole()
      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 AWS 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 Launch template support in the Amazon EKS User Guide .

    • setNodeRole

      @Stability(Stable) public void setNodeRole(@NotNull String value)
      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 AWS 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 Launch template support in the Amazon EKS User Guide .

    • getSubnets

      @Stability(Stable) @NotNull public List<String> getSubnets()
      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 Launch template support in the Amazon EKS User Guide .

    • setSubnets

      @Stability(Stable) public void setSubnets(@NotNull List<String> value)
      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 Launch template support in the Amazon EKS User Guide .

    • getAmiType

      @Stability(Stable) @Nullable public String getAmiType()
      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 Launch template support in the Amazon EKS User Guide .

    • setAmiType

      @Stability(Stable) public void setAmiType(@Nullable String value)
      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 Launch template support in the Amazon EKS User Guide .

    • getCapacityType

      @Stability(Stable) @Nullable public String getCapacityType()
      The capacity type of your managed node group.
    • setCapacityType

      @Stability(Stable) public void setCapacityType(@Nullable String value)
      The capacity type of your managed node group.
    • getDiskSize

      @Stability(Stable) @Nullable public Number getDiskSize()
      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 Launch template support in the Amazon EKS User Guide .

    • setDiskSize

      @Stability(Stable) public void setDiskSize(@Nullable Number value)
      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 Launch template support in the Amazon EKS User Guide .

    • getForceUpdateEnabled

      @Stability(Stable) @Nullable public Object getForceUpdateEnabled()
      Force the update if the existing node group's pods are unable to be drained due to a pod disruption budget issue.

      If an update fails because pods could not be drained, you can force the update after it fails to terminate the old node whether or not any pods are running on the node.

    • setForceUpdateEnabled

      @Stability(Stable) public void setForceUpdateEnabled(@Nullable Boolean value)
      Force the update if the existing node group's pods are unable to be drained due to a pod disruption budget issue.

      If an update fails because pods could not be drained, you can force the update after it fails to terminate the old node whether or not any pods are running on the node.

    • setForceUpdateEnabled

      @Stability(Stable) public void setForceUpdateEnabled(@Nullable IResolvable value)
      Force the update if the existing node group's pods are unable to be drained due to a pod disruption budget issue.

      If an update fails because pods could not be drained, you can force the update after it fails to terminate the old node whether or not any pods are running on the node.

    • getInstanceTypes

      @Stability(Stable) @Nullable public List<String> getInstanceTypes()
      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 Launch template support in the Amazon EKS User Guide .

    • setInstanceTypes

      @Stability(Stable) public void setInstanceTypes(@Nullable List<String> value)
      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 Launch template support in the Amazon EKS User Guide .

    • getLabels

      @Stability(Stable) @Nullable public Object getLabels()
      The Kubernetes labels applied to the nodes in the node group.

      Only labels that are applied with the Amazon EKS API are shown here. There may be other Kubernetes labels applied to the nodes in this group.

    • setLabels

      @Stability(Stable) public void setLabels(@Nullable IResolvable value)
      The Kubernetes labels applied to the nodes in the node group.

      Only labels that are applied with the Amazon EKS API are shown here. There may be other Kubernetes labels applied to the nodes in this group.

    • setLabels

      @Stability(Stable) public void setLabels(@Nullable Map<String,String> value)
      The Kubernetes labels applied to the nodes in the node group.

      Only labels that are applied with the Amazon EKS API are shown here. There may be other Kubernetes labels applied to the nodes in this group.

    • getLaunchTemplate

      @Stability(Stable) @Nullable public Object getLaunchTemplate()
      An object representing a node group's launch template specification.

      If specified, then do not specify instanceTypes , diskSize , or remoteAccess and make sure that the launch template meets the requirements in launchTemplateSpecification .

    • setLaunchTemplate

      @Stability(Stable) public void setLaunchTemplate(@Nullable IResolvable value)
      An object representing a node group's launch template specification.

      If specified, then do not specify instanceTypes , diskSize , or remoteAccess and make sure that the launch template meets the requirements in launchTemplateSpecification .

    • setLaunchTemplate

      @Stability(Stable) public void setLaunchTemplate(@Nullable CfnNodegroup.LaunchTemplateSpecificationProperty value)
      An object representing a node group's launch template specification.

      If specified, then do not specify instanceTypes , diskSize , or remoteAccess and make sure that the launch template meets the requirements in launchTemplateSpecification .

    • getNodegroupName

      @Stability(Stable) @Nullable public String getNodegroupName()
      The unique name to give your node group.
    • setNodegroupName

      @Stability(Stable) public void setNodegroupName(@Nullable String value)
      The unique name to give your node group.
    • getReleaseVersion

      @Stability(Stable) @Nullable public String getReleaseVersion()
      The AMI version of the Amazon EKS optimized AMI to use with your node group (for example, 1.14.7- *YYYYMMDD* ). By default, the latest available AMI version for the node group's current Kubernetes version is used. For more information, see Amazon EKS optimized Linux AMI Versions in the Amazon EKS User Guide .

      Changing this value triggers an update of the node group if one is available. You can't update other properties at the same time as updating Release Version .

    • setReleaseVersion

      @Stability(Stable) public void setReleaseVersion(@Nullable String value)
      The AMI version of the Amazon EKS optimized AMI to use with your node group (for example, 1.14.7- *YYYYMMDD* ). By default, the latest available AMI version for the node group's current Kubernetes version is used. For more information, see Amazon EKS optimized Linux AMI Versions in the Amazon EKS User Guide .

      Changing this value triggers an update of the node group if one is available. You can't update other properties at the same time as updating Release Version .

    • getRemoteAccess

      @Stability(Stable) @Nullable public Object getRemoteAccess()
      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 Launch template support in the Amazon EKS User Guide .

    • setRemoteAccess

      @Stability(Stable) public void setRemoteAccess(@Nullable IResolvable value)
      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 Launch template support in the Amazon EKS User Guide .

    • setRemoteAccess

      @Stability(Stable) public void setRemoteAccess(@Nullable CfnNodegroup.RemoteAccessProperty value)
      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 Launch template support in the Amazon EKS User Guide .

    • getScalingConfig

      @Stability(Stable) @Nullable public Object getScalingConfig()
      The scaling configuration details for the Auto Scaling group that is created for your node group.
    • setScalingConfig

      @Stability(Stable) public void setScalingConfig(@Nullable IResolvable value)
      The scaling configuration details for the Auto Scaling group that is created for your node group.
    • setScalingConfig

      @Stability(Stable) public void setScalingConfig(@Nullable CfnNodegroup.ScalingConfigProperty value)
      The scaling configuration details for the Auto Scaling group that is created for your node group.
    • getTaints

      @Stability(Stable) @Nullable public Object getTaints()
      The Kubernetes taints to be applied to the nodes in the node group when they are created.

      Effect is one of No_Schedule , Prefer_No_Schedule , or No_Execute . Kubernetes taints can be used together with tolerations to control how workloads are scheduled to your nodes. For more information, see Node taints on managed node groups .

    • setTaints

      @Stability(Stable) public void setTaints(@Nullable IResolvable value)
      The Kubernetes taints to be applied to the nodes in the node group when they are created.

      Effect is one of No_Schedule , Prefer_No_Schedule , or No_Execute . Kubernetes taints can be used together with tolerations to control how workloads are scheduled to your nodes. For more information, see Node taints on managed node groups .

    • setTaints

      @Stability(Stable) public void setTaints(@Nullable List<Object> value)
      The Kubernetes taints to be applied to the nodes in the node group when they are created.

      Effect is one of No_Schedule , Prefer_No_Schedule , or No_Execute . Kubernetes taints can be used together with tolerations to control how workloads are scheduled to your nodes. For more information, see Node taints on managed node groups .

    • getUpdateConfig

      @Stability(Stable) @Nullable public Object getUpdateConfig()
      The node group update configuration.
    • setUpdateConfig

      @Stability(Stable) public void setUpdateConfig(@Nullable IResolvable value)
      The node group update configuration.
    • setUpdateConfig

      @Stability(Stable) public void setUpdateConfig(@Nullable CfnNodegroup.UpdateConfigProperty value)
      The node group update configuration.
    • getVersion

      @Stability(Stable) @Nullable public String getVersion()
      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 Launch template support in the Amazon EKS User Guide .

      You can't update other properties at the same time as updating Version .

    • setVersion

      @Stability(Stable) public void setVersion(@Nullable String value)
      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 Launch template support in the Amazon EKS User Guide .

      You can't update other properties at the same time as updating Version .