eks.ManagedNodeGroup
Explore with Pulumi AI
Manages an EKS Node Group, which can provision and optionally update an Auto Scaling Group of Kubernetes worker nodes compatible with EKS. Additional documentation about this functionality can be found in the EKS User Guide.
Example Usage
Basic Managed Node Group
using System.Collections.Generic;
using System.Linq;
using System.Text.Json;
using Pulumi;
using Aws = Pulumi.Aws;
using Awsx = Pulumi.Awsx;
using Eks = Pulumi.Eks;
return await Deployment.RunAsync(() => 
{
    var eksVpc = new Awsx.Ec2.Vpc("eks-vpc", new()
    {
        EnableDnsHostnames = true,
        CidrBlock = "10.0.0.0/16",
    });
    var eksCluster = new Eks.Cluster("eks-cluster", new()
    {
        VpcId = eksVpc.VpcId,
        AuthenticationMode = Eks.AuthenticationMode.Api,
        PublicSubnetIds = eksVpc.PublicSubnetIds,
        PrivateSubnetIds = eksVpc.PrivateSubnetIds,
        SkipDefaultNodeGroup = true,
    });
    var nodeRole = new Aws.Iam.Role("node-role", new()
    {
        AssumeRolePolicy = JsonSerializer.Serialize(new Dictionary<string, object?>
        {
            ["Version"] = "2012-10-17",
            ["Statement"] = new[]
            {
                new Dictionary<string, object?>
                {
                    ["Action"] = "sts:AssumeRole",
                    ["Effect"] = "Allow",
                    ["Sid"] = "",
                    ["Principal"] = new Dictionary<string, object?>
                    {
                        ["Service"] = "ec2.amazonaws.com",
                    },
                },
            },
        }),
    });
    var workerNodePolicy = new Aws.Iam.RolePolicyAttachment("worker-node-policy", new()
    {
        Role = nodeRole.Name,
        PolicyArn = "arn:aws:iam::aws:policy/AmazonEKSWorkerNodePolicy",
    });
    var cniPolicy = new Aws.Iam.RolePolicyAttachment("cni-policy", new()
    {
        Role = nodeRole.Name,
        PolicyArn = "arn:aws:iam::aws:policy/AmazonEKS_CNI_Policy",
    });
    var registryPolicy = new Aws.Iam.RolePolicyAttachment("registry-policy", new()
    {
        Role = nodeRole.Name,
        PolicyArn = "arn:aws:iam::aws:policy/AmazonEC2ContainerRegistryReadOnly",
    });
    var nodeGroup = new Eks.ManagedNodeGroup("node-group", new()
    {
        Cluster = eksCluster,
        NodeRole = nodeRole,
    });
    return new Dictionary<string, object?>{};
});
package main
import (
	"encoding/json"
	"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/iam"
	"github.com/pulumi/pulumi-awsx/sdk/v2/go/awsx/ec2"
	"github.com/pulumi/pulumi-eks/sdk/v3/go/eks"
	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
)
func main() {
	pulumi.Run(func(ctx *pulumi.Context) error {
		eksVpc, err := ec2.NewVpc(ctx, "eks-vpc", &ec2.VpcArgs{
			EnableDnsHostnames: pulumi.Bool(true),
			CidrBlock:          "10.0.0.0/16",
		})
		if err != nil {
			return err
		}
		eksCluster, err := eks.NewCluster(ctx, "eks-cluster", &eks.ClusterArgs{
			VpcId:                eksVpc.VpcId,
			AuthenticationMode:   eks.AuthenticationModeApi,
			PublicSubnetIds:      eksVpc.PublicSubnetIds,
			PrivateSubnetIds:     eksVpc.PrivateSubnetIds,
			SkipDefaultNodeGroup: true,
		})
		if err != nil {
			return err
		}
		tmpJSON0, err := json.Marshal(map[string]interface{}{
			"Version": "2012-10-17",
			"Statement": []map[string]interface{}{
				map[string]interface{}{
					"Action": "sts:AssumeRole",
					"Effect": "Allow",
					"Sid":    "",
					"Principal": map[string]interface{}{
						"Service": "ec2.amazonaws.com",
					},
				},
			},
		})
		if err != nil {
			return err
		}
		json0 := string(tmpJSON0)
		nodeRole, err := iam.NewRole(ctx, "node-role", &iam.RoleArgs{
			AssumeRolePolicy: pulumi.String(json0),
		})
		if err != nil {
			return err
		}
		_, err = iam.NewRolePolicyAttachment(ctx, "worker-node-policy", &iam.RolePolicyAttachmentArgs{
			Role:      nodeRole.Name,
			PolicyArn: pulumi.String("arn:aws:iam::aws:policy/AmazonEKSWorkerNodePolicy"),
		})
		if err != nil {
			return err
		}
		_, err = iam.NewRolePolicyAttachment(ctx, "cni-policy", &iam.RolePolicyAttachmentArgs{
			Role:      nodeRole.Name,
			PolicyArn: pulumi.String("arn:aws:iam::aws:policy/AmazonEKS_CNI_Policy"),
		})
		if err != nil {
			return err
		}
		_, err = iam.NewRolePolicyAttachment(ctx, "registry-policy", &iam.RolePolicyAttachmentArgs{
			Role:      nodeRole.Name,
			PolicyArn: pulumi.String("arn:aws:iam::aws:policy/AmazonEC2ContainerRegistryReadOnly"),
		})
		if err != nil {
			return err
		}
		_, err = eks.NewManagedNodeGroup(ctx, "node-group", &eks.ManagedNodeGroupArgs{
			Cluster:  eksCluster,
			NodeRole: nodeRole,
		})
		if err != nil {
			return err
		}
		return nil
	})
}
package generated_program;
import com.pulumi.Context;
import com.pulumi.Pulumi;
import com.pulumi.core.Output;
import com.pulumi.awsx.ec2.Vpc;
import com.pulumi.awsx.ec2.VpcArgs;
import com.pulumi.eks.Cluster;
import com.pulumi.eks.ClusterArgs;
import com.pulumi.aws.iam.Role;
import com.pulumi.aws.iam.RoleArgs;
import com.pulumi.aws.iam.RolePolicyAttachment;
import com.pulumi.aws.iam.RolePolicyAttachmentArgs;
import com.pulumi.eks.ManagedNodeGroup;
import com.pulumi.eks.ManagedNodeGroupArgs;
import static com.pulumi.codegen.internal.Serialization.*;
import java.util.List;
import java.util.ArrayList;
import java.util.Map;
import java.io.File;
import java.nio.file.Files;
import java.nio.file.Paths;
public class App {
    public static void main(String[] args) {
        Pulumi.run(App::stack);
    }
    public static void stack(Context ctx) {
        var eksVpc = new Vpc("eksVpc", VpcArgs.builder()
            .enableDnsHostnames(true)
            .cidrBlock("10.0.0.0/16")
            .build());
        var eksCluster = new Cluster("eksCluster", ClusterArgs.builder()
            .vpcId(eksVpc.vpcId())
            .authenticationMode("API")
            .publicSubnetIds(eksVpc.publicSubnetIds())
            .privateSubnetIds(eksVpc.privateSubnetIds())
            .skipDefaultNodeGroup(true)
            .build());
        var nodeRole = new Role("nodeRole", RoleArgs.builder()
            .assumeRolePolicy(serializeJson(
                jsonObject(
                    jsonProperty("Version", "2012-10-17"),
                    jsonProperty("Statement", jsonArray(jsonObject(
                        jsonProperty("Action", "sts:AssumeRole"),
                        jsonProperty("Effect", "Allow"),
                        jsonProperty("Sid", ""),
                        jsonProperty("Principal", jsonObject(
                            jsonProperty("Service", "ec2.amazonaws.com")
                        ))
                    )))
                )))
            .build());
        var workerNodePolicy = new RolePolicyAttachment("workerNodePolicy", RolePolicyAttachmentArgs.builder()
            .role(nodeRole.name())
            .policyArn("arn:aws:iam::aws:policy/AmazonEKSWorkerNodePolicy")
            .build());
        var cniPolicy = new RolePolicyAttachment("cniPolicy", RolePolicyAttachmentArgs.builder()
            .role(nodeRole.name())
            .policyArn("arn:aws:iam::aws:policy/AmazonEKS_CNI_Policy")
            .build());
        var registryPolicy = new RolePolicyAttachment("registryPolicy", RolePolicyAttachmentArgs.builder()
            .role(nodeRole.name())
            .policyArn("arn:aws:iam::aws:policy/AmazonEC2ContainerRegistryReadOnly")
            .build());
        var nodeGroup = new ManagedNodeGroup("nodeGroup", ManagedNodeGroupArgs.builder()
            .cluster(eksCluster)
            .nodeRole(nodeRole)
            .build());
    }
}
import * as pulumi from "@pulumi/pulumi";
import * as aws from "@pulumi/aws";
import * as awsx from "@pulumi/awsx";
import * as eks from "@pulumi/eks";
const eksVpc = new awsx.ec2.Vpc("eks-vpc", {
    enableDnsHostnames: true,
    cidrBlock: "10.0.0.0/16",
});
const eksCluster = new eks.Cluster("eks-cluster", {
    vpcId: eksVpc.vpcId,
    authenticationMode: eks.AuthenticationMode.Api,
    publicSubnetIds: eksVpc.publicSubnetIds,
    privateSubnetIds: eksVpc.privateSubnetIds,
    skipDefaultNodeGroup: true,
});
const nodeRole = new aws.iam.Role("node-role", {assumeRolePolicy: JSON.stringify({
    Version: "2012-10-17",
    Statement: [{
        Action: "sts:AssumeRole",
        Effect: "Allow",
        Sid: "",
        Principal: {
            Service: "ec2.amazonaws.com",
        },
    }],
})});
const workerNodePolicy = new aws.iam.RolePolicyAttachment("worker-node-policy", {
    role: nodeRole.name,
    policyArn: "arn:aws:iam::aws:policy/AmazonEKSWorkerNodePolicy",
});
const cniPolicy = new aws.iam.RolePolicyAttachment("cni-policy", {
    role: nodeRole.name,
    policyArn: "arn:aws:iam::aws:policy/AmazonEKS_CNI_Policy",
});
const registryPolicy = new aws.iam.RolePolicyAttachment("registry-policy", {
    role: nodeRole.name,
    policyArn: "arn:aws:iam::aws:policy/AmazonEC2ContainerRegistryReadOnly",
});
const nodeGroup = new eks.ManagedNodeGroup("node-group", {
    cluster: eksCluster,
    nodeRole: nodeRole,
});
import pulumi
import json
import pulumi_aws as aws
import pulumi_awsx as awsx
import pulumi_eks as eks
eks_vpc = awsx.ec2.Vpc("eks-vpc",
    enable_dns_hostnames=True,
    cidr_block="10.0.0.0/16")
eks_cluster = eks.Cluster("eks-cluster",
    vpc_id=eks_vpc.vpc_id,
    authentication_mode=eks.AuthenticationMode.API,
    public_subnet_ids=eks_vpc.public_subnet_ids,
    private_subnet_ids=eks_vpc.private_subnet_ids,
    skip_default_node_group=True)
node_role = aws.iam.Role("node-role", assume_role_policy=json.dumps({
    "Version": "2012-10-17",
    "Statement": [{
        "Action": "sts:AssumeRole",
        "Effect": "Allow",
        "Sid": "",
        "Principal": {
            "Service": "ec2.amazonaws.com",
        },
    }],
}))
worker_node_policy = aws.iam.RolePolicyAttachment("worker-node-policy",
    role=node_role.name,
    policy_arn="arn:aws:iam::aws:policy/AmazonEKSWorkerNodePolicy")
cni_policy = aws.iam.RolePolicyAttachment("cni-policy",
    role=node_role.name,
    policy_arn="arn:aws:iam::aws:policy/AmazonEKS_CNI_Policy")
registry_policy = aws.iam.RolePolicyAttachment("registry-policy",
    role=node_role.name,
    policy_arn="arn:aws:iam::aws:policy/AmazonEC2ContainerRegistryReadOnly")
node_group = eks.ManagedNodeGroup("node-group",
    cluster=eks_cluster,
    node_role=node_role)
resources:
  eks-vpc:
    type: awsx:ec2:Vpc
    properties:
      enableDnsHostnames: true
      cidrBlock: 10.0.0.0/16
  eks-cluster:
    type: eks:Cluster
    properties:
      vpcId: ${eks-vpc.vpcId}
      authenticationMode: API
      publicSubnetIds: ${eks-vpc.publicSubnetIds}
      privateSubnetIds: ${eks-vpc.privateSubnetIds}
      skipDefaultNodeGroup: true
  node-role:
    type: aws:iam:Role
    properties:
      assumeRolePolicy:
        fn::toJSON:
          Version: 2012-10-17
          Statement:
            - Action: sts:AssumeRole
              Effect: Allow
              Sid: ""
              Principal:
                Service: ec2.amazonaws.com
  worker-node-policy:
    type: aws:iam:RolePolicyAttachment
    properties:
      role: ${node-role.name}
      policyArn: "arn:aws:iam::aws:policy/AmazonEKSWorkerNodePolicy"
  cni-policy:
    type: aws:iam:RolePolicyAttachment
    properties:
      role: ${node-role.name}
      policyArn: "arn:aws:iam::aws:policy/AmazonEKS_CNI_Policy"
  registry-policy:
    type: aws:iam:RolePolicyAttachment
    properties:
      role: ${node-role.name}
      policyArn: "arn:aws:iam::aws:policy/AmazonEC2ContainerRegistryReadOnly"
  node-group:
    type: eks:ManagedNodeGroup
    properties:
      cluster: ${eks-cluster}
      nodeRole: ${node-role}
Enabling EFA Support
using System.Collections.Generic;
using System.Linq;
using System.Text.Json;
using Pulumi;
using Aws = Pulumi.Aws;
using Awsx = Pulumi.Awsx;
using Eks = Pulumi.Eks;
using Kubernetes = Pulumi.Kubernetes;
return await Deployment.RunAsync(() => 
{
    var eksVpc = new Awsx.Ec2.Vpc("eks-vpc", new()
    {
        EnableDnsHostnames = true,
        CidrBlock = "10.0.0.0/16",
    });
    var eksCluster = new Eks.Cluster("eks-cluster", new()
    {
        VpcId = eksVpc.VpcId,
        AuthenticationMode = Eks.AuthenticationMode.Api,
        PublicSubnetIds = eksVpc.PublicSubnetIds,
        PrivateSubnetIds = eksVpc.PrivateSubnetIds,
        SkipDefaultNodeGroup = true,
    });
    var k8SProvider = new Kubernetes.Provider.Provider("k8sProvider", new()
    {
        KubeConfig = eksCluster.Kubeconfig,
    });
    var nodeRole = new Aws.Iam.Role("node-role", new()
    {
        AssumeRolePolicy = JsonSerializer.Serialize(new Dictionary<string, object?>
        {
            ["Version"] = "2012-10-17",
            ["Statement"] = new[]
            {
                new Dictionary<string, object?>
                {
                    ["Action"] = "sts:AssumeRole",
                    ["Effect"] = "Allow",
                    ["Sid"] = "",
                    ["Principal"] = new Dictionary<string, object?>
                    {
                        ["Service"] = "ec2.amazonaws.com",
                    },
                },
            },
        }),
    });
    var workerNodePolicy = new Aws.Iam.RolePolicyAttachment("worker-node-policy", new()
    {
        Role = nodeRole.Name,
        PolicyArn = "arn:aws:iam::aws:policy/AmazonEKSWorkerNodePolicy",
    });
    var cniPolicy = new Aws.Iam.RolePolicyAttachment("cni-policy", new()
    {
        Role = nodeRole.Name,
        PolicyArn = "arn:aws:iam::aws:policy/AmazonEKS_CNI_Policy",
    });
    var registryPolicy = new Aws.Iam.RolePolicyAttachment("registry-policy", new()
    {
        Role = nodeRole.Name,
        PolicyArn = "arn:aws:iam::aws:policy/AmazonEC2ContainerRegistryReadOnly",
    });
    // The node group for running system pods (e.g. coredns, etc.)
    var systemNodeGroup = new Eks.ManagedNodeGroup("system-node-group", new()
    {
        Cluster = eksCluster,
        NodeRole = nodeRole,
    });
    // The EFA device plugin for exposing EFA interfaces as extended resources
    var devicePlugin = new Kubernetes.Helm.V3.Release("device-plugin", new()
    {
        Version = "0.5.7",
        RepositoryOpts = new Kubernetes.Types.Inputs.Helm.V3.RepositoryOptsArgs
        {
            Repo = "https://aws.github.io/eks-charts",
        },
        Chart = "aws-efa-k8s-device-plugin",
        Namespace = "kube-system",
        Atomic = true,
        Values = 
        {
            { "tolerations", new[]
            {
                
                {
                    { "key", "efa-enabled" },
                    { "operator", "Exists" },
                    { "effect", "NoExecute" },
                },
            } },
        },
    }, new CustomResourceOptions
    {
        Provider = k8SProvider,
    });
    // The node group for running EFA enabled workloads
    var efaNodeGroup = new Eks.ManagedNodeGroup("efa-node-group", new()
    {
        Cluster = eksCluster,
        NodeRole = nodeRole,
        InstanceTypes = new[]
        {
            "g6.8xlarge",
        },
        Gpu = true,
        ScalingConfig = new Aws.Eks.Inputs.NodeGroupScalingConfigArgs
        {
            MinSize = 2,
            DesiredSize = 2,
            MaxSize = 4,
        },
        EnableEfaSupport = true,
        PlacementGroupAvailabilityZone = "us-west-2b",
        // Taint the nodes so that only pods with the efa-enabled label can be scheduled on them
        Taints = new[]
        {
            new Aws.Eks.Inputs.NodeGroupTaintArgs
            {
                Key = "efa-enabled",
                Value = "true",
                Effect = "NO_EXECUTE",
            },
        },
        // Instances with GPUs usually have nvme instance store volumes, so we can mount them in RAID-0 for kubelet and containerd
        NodeadmExtraOptions = new[]
        {
            new Eks.Inputs.NodeadmOptionsArgs
            {
                ContentType = "application/node.eks.aws",
                Content = @"apiVersion: node.eks.aws/v1alpha1
kind: NodeConfig
spec:
  instance:
    localStorage:
      strategy: RAID0
",
            },
        },
    });
});
package main
import (
	"encoding/json"
	awseks "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/eks"
	"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/iam"
	"github.com/pulumi/pulumi-awsx/sdk/v2/go/awsx/ec2"
	"github.com/pulumi/pulumi-eks/sdk/v3/go/eks"
	"github.com/pulumi/pulumi-kubernetes/sdk/v4/go/kubernetes"
	helmv3 "github.com/pulumi/pulumi-kubernetes/sdk/v4/go/kubernetes/helm/v3"
	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
)
func main() {
	pulumi.Run(func(ctx *pulumi.Context) error {
		eksVpc, err := ec2.NewVpc(ctx, "eks-vpc", &ec2.VpcArgs{
			EnableDnsHostnames: pulumi.Bool(true),
			CidrBlock:          "10.0.0.0/16",
		})
		if err != nil {
			return err
		}
		eksCluster, err := eks.NewCluster(ctx, "eks-cluster", &eks.ClusterArgs{
			VpcId:                eksVpc.VpcId,
			AuthenticationMode:   eks.AuthenticationModeApi,
			PublicSubnetIds:      eksVpc.PublicSubnetIds,
			PrivateSubnetIds:     eksVpc.PrivateSubnetIds,
			SkipDefaultNodeGroup: true,
		})
		if err != nil {
			return err
		}
		k8SProvider, err := kubernetes.NewProvider(ctx, "k8sProvider", &kubernetes.ProviderArgs{
			Kubeconfig: eksCluster.Kubeconfig,
		})
		if err != nil {
			return err
		}
		tmpJSON0, err := json.Marshal(map[string]interface{}{
			"Version": "2012-10-17",
			"Statement": []map[string]interface{}{
				map[string]interface{}{
					"Action": "sts:AssumeRole",
					"Effect": "Allow",
					"Sid":    "",
					"Principal": map[string]interface{}{
						"Service": "ec2.amazonaws.com",
					},
				},
			},
		})
		if err != nil {
			return err
		}
		json0 := string(tmpJSON0)
		nodeRole, err := iam.NewRole(ctx, "node-role", &iam.RoleArgs{
			AssumeRolePolicy: pulumi.String(json0),
		})
		if err != nil {
			return err
		}
		_, err = iam.NewRolePolicyAttachment(ctx, "worker-node-policy", &iam.RolePolicyAttachmentArgs{
			Role:      nodeRole.Name,
			PolicyArn: pulumi.String("arn:aws:iam::aws:policy/AmazonEKSWorkerNodePolicy"),
		})
		if err != nil {
			return err
		}
		_, err = iam.NewRolePolicyAttachment(ctx, "cni-policy", &iam.RolePolicyAttachmentArgs{
			Role:      nodeRole.Name,
			PolicyArn: pulumi.String("arn:aws:iam::aws:policy/AmazonEKS_CNI_Policy"),
		})
		if err != nil {
			return err
		}
		_, err = iam.NewRolePolicyAttachment(ctx, "registry-policy", &iam.RolePolicyAttachmentArgs{
			Role:      nodeRole.Name,
			PolicyArn: pulumi.String("arn:aws:iam::aws:policy/AmazonEC2ContainerRegistryReadOnly"),
		})
		if err != nil {
			return err
		}
        // The node group for running system pods (e.g. coredns, etc.)
		_, err = eks.NewManagedNodeGroup(ctx, "system-node-group", &eks.ManagedNodeGroupArgs{
			Cluster:  eksCluster,
			NodeRole: nodeRole,
		})
		if err != nil {
			return err
		}
        // The EFA device plugin for exposing EFA interfaces as extended resources
		_, err = helmv3.NewRelease(ctx, "device-plugin", &helmv3.ReleaseArgs{
			Version: pulumi.String("0.5.7"),
			RepositoryOpts: &helmv3.RepositoryOptsArgs{
				Repo: pulumi.String("https://aws.github.io/eks-charts"),
			},
			Chart:     pulumi.String("aws-efa-k8s-device-plugin"),
			Namespace: pulumi.String("kube-system"),
			Atomic:    pulumi.Bool(true),
			Values: pulumi.Map{
				"tolerations": pulumi.Any{
					[]map[string]interface{}{
                        {
                            "key":      "efa-enabled",
                            "operator": "Exists",
                            "effect":   "NoExecute",
                        }
					},
				},
			},
		}, pulumi.Provider(k8SProvider))
		if err != nil {
			return err
		}
        // The node group for running EFA enabled workloads
		_, err = eks.NewManagedNodeGroup(ctx, "efa-node-group", &eks.ManagedNodeGroupArgs{
			Cluster:  eksCluster,
			NodeRole: nodeRole,
			InstanceTypes: pulumi.StringArray{
				pulumi.String("g6.8xlarge"),
			},
			Gpu: pulumi.Bool(true),
			ScalingConfig: &eks.NodeGroupScalingConfigArgs{
				MinSize:     pulumi.Int(2),
				DesiredSize: pulumi.Int(2),
				MaxSize:     pulumi.Int(4),
			},
			EnableEfaSupport:               true,
			PlacementGroupAvailabilityZone: pulumi.String("us-west-2b"),
            // Taint the nodes so that only pods with the efa-enabled label can be scheduled on them
			Taints: eks.NodeGroupTaintArray{
				&eks.NodeGroupTaintArgs{
					Key:    pulumi.String("efa-enabled"),
					Value:  pulumi.String("true"),
					Effect: pulumi.String("NO_EXECUTE"),
				},
			},
            // Instances with GPUs usually have nvme instance store volumes, so we can mount them in RAID-0 for kubelet and containerd
            // These are faster than the regular EBS volumes
			NodeadmExtraOptions: eks.NodeadmOptionsArray{
				&eks.NodeadmOptionsArgs{
					ContentType: pulumi.String("application/node.eks.aws"),
					Content: pulumi.String(`apiVersion: node.eks.aws/v1alpha1
kind: NodeConfig
spec:
  instance:
    localStorage:
      strategy: RAID0
`),
				},
			},
		})
		if err != nil {
			return err
		}
		return nil
	})
}
Coming soon!
import * as pulumi from "@pulumi/pulumi";
import * as aws from "@pulumi/aws";
import * as awsx from "@pulumi/awsx";
import * as eks from "@pulumi/eks";
import * as kubernetes from "@pulumi/kubernetes";
const eksVpc = new awsx.ec2.Vpc("eks-vpc", {
    enableDnsHostnames: true,
    cidrBlock: "10.0.0.0/16",
});
const eksCluster = new eks.Cluster("eks-cluster", {
    vpcId: eksVpc.vpcId,
    authenticationMode: eks.AuthenticationMode.Api,
    publicSubnetIds: eksVpc.publicSubnetIds,
    privateSubnetIds: eksVpc.privateSubnetIds,
    skipDefaultNodeGroup: true,
});
const k8SProvider = new kubernetes.Provider("k8sProvider", {kubeconfig: eksCluster.kubeconfig});
const nodeRole = new aws.iam.Role("node-role", {assumeRolePolicy: JSON.stringify({
    Version: "2012-10-17",
    Statement: [{
        Action: "sts:AssumeRole",
        Effect: "Allow",
        Sid: "",
        Principal: {
            Service: "ec2.amazonaws.com",
        },
    }],
})});
const workerNodePolicy = new aws.iam.RolePolicyAttachment("worker-node-policy", {
    role: nodeRole.name,
    policyArn: "arn:aws:iam::aws:policy/AmazonEKSWorkerNodePolicy",
});
const cniPolicy = new aws.iam.RolePolicyAttachment("cni-policy", {
    role: nodeRole.name,
    policyArn: "arn:aws:iam::aws:policy/AmazonEKS_CNI_Policy",
});
const registryPolicy = new aws.iam.RolePolicyAttachment("registry-policy", {
    role: nodeRole.name,
    policyArn: "arn:aws:iam::aws:policy/AmazonEC2ContainerRegistryReadOnly",
});
// The node group for running system pods (e.g. coredns, etc.)
const systemNodeGroup = new eks.ManagedNodeGroup("system-node-group", {
    cluster: eksCluster,
    nodeRole: nodeRole,
});
// The EFA device plugin for exposing EFA interfaces as extended resources
const devicePlugin = new kubernetes.helm.v3.Release("device-plugin", {
    version: "0.5.7",
    repositoryOpts: {
        repo: "https://aws.github.io/eks-charts",
    },
    chart: "aws-efa-k8s-device-plugin",
    namespace: "kube-system",
    atomic: true,
    values: {
        tolerations: [{
            key: "efa-enabled",
            operator: "Exists",
            effect: "NoExecute",
        }],
    },
}, {
    provider: k8SProvider,
});
// The node group for running EFA enabled workloads
const efaNodeGroup = new eks.ManagedNodeGroup("efa-node-group", {
    cluster: eksCluster,
    nodeRole: nodeRole,
    instanceTypes: ["g6.8xlarge"],
    gpu: true,
    scalingConfig: {
        minSize: 2,
        desiredSize: 2,
        maxSize: 4,
    },
    enableEfaSupport: true,
    placementGroupAvailabilityZone: "us-west-2b",
    // Taint the nodes so that only pods with the efa-enabled label can be scheduled on them
    taints: [{
        key: "efa-enabled",
        value: "true",
        effect: "NO_EXECUTE",
    }],
    // Instances with GPUs usually have nvme instance store volumes, so we can mount them in RAID-0 for kubelet and containerd
    // These are faster than the regular EBS volumes
    nodeadmExtraOptions: [{
        contentType: "application/node.eks.aws",
        content: `apiVersion: node.eks.aws/v1alpha1
kind: NodeConfig
spec:
  instance:
    localStorage:
      strategy: RAID0
`,
    }],
});
import pulumi
import json
import pulumi_aws as aws
import pulumi_awsx as awsx
import pulumi_eks as eks
import pulumi_kubernetes as kubernetes
eks_vpc = awsx.ec2.Vpc("eks-vpc",
    enable_dns_hostnames=True,
    cidr_block="10.0.0.0/16")
eks_cluster = eks.Cluster("eks-cluster",
    vpc_id=eks_vpc.vpc_id,
    authentication_mode=eks.AuthenticationMode.API,
    public_subnet_ids=eks_vpc.public_subnet_ids,
    private_subnet_ids=eks_vpc.private_subnet_ids,
    skip_default_node_group=True)
k8_s_provider = kubernetes.Provider("k8sProvider", kubeconfig=eks_cluster.kubeconfig)
node_role = aws.iam.Role("node-role", assume_role_policy=json.dumps({
    "Version": "2012-10-17",
    "Statement": [{
        "Action": "sts:AssumeRole",
        "Effect": "Allow",
        "Sid": "",
        "Principal": {
            "Service": "ec2.amazonaws.com",
        },
    }],
}))
worker_node_policy = aws.iam.RolePolicyAttachment("worker-node-policy",
    role=node_role.name,
    policy_arn="arn:aws:iam::aws:policy/AmazonEKSWorkerNodePolicy")
cni_policy = aws.iam.RolePolicyAttachment("cni-policy",
    role=node_role.name,
    policy_arn="arn:aws:iam::aws:policy/AmazonEKS_CNI_Policy")
registry_policy = aws.iam.RolePolicyAttachment("registry-policy",
    role=node_role.name,
    policy_arn="arn:aws:iam::aws:policy/AmazonEC2ContainerRegistryReadOnly")
# The node group for running system pods (e.g. coredns, etc.)
system_node_group = eks.ManagedNodeGroup("system-node-group",
    cluster=eks_cluster,
    node_role=node_role)
# The EFA device plugin for exposing EFA interfaces as extended resources
device_plugin = kubernetes.helm.v3.Release("device-plugin",
    version="0.5.7",
    repository_opts={
        "repo": "https://aws.github.io/eks-charts",
    },
    chart="aws-efa-k8s-device-plugin",
    namespace="kube-system",
    atomic=True,
    values={
        "tolerations": [{
            "key": "efa-enabled",
            "operator": "Exists",
            "effect": "NoExecute",
        }],
    },
    opts = pulumi.ResourceOptions(provider=k8_s_provider))
# The node group for running EFA enabled workloads
efa_node_group = eks.ManagedNodeGroup("efa-node-group",
    cluster=eks_cluster,
    node_role=node_role,
    instance_types=["g6.8xlarge"],
    gpu=True,
    scaling_config={
        "min_size": 2,
        "desired_size": 2,
        "max_size": 4,
    },
    enable_efa_support=True,
    placement_group_availability_zone="us-west-2b",
    # Taint the nodes so that only pods with the efa-enabled label can be scheduled on them
    taints=[{
        "key": "efa-enabled",
        "value": "true",
        "effect": "NO_EXECUTE",
    }],
    # Instances with GPUs usually have nvme instance store volumes, so we can mount them in RAID-0 for kubelet and containerd
    # These are faster than the regular EBS volumes
    nodeadm_extra_options=[{
        "content_type": "application/node.eks.aws",
        "content": """apiVersion: node.eks.aws/v1alpha1
kind: NodeConfig
spec:
  instance:
    localStorage:
      strategy: RAID0
""",
    }])
name: eks-mng-docs
description: A Pulumi YAML program to deploy a Kubernetes cluster on AWS
runtime: yaml
resources:
  eks-vpc:
    type: awsx:ec2:Vpc
    properties:
      enableDnsHostnames: true
      cidrBlock: 10.0.0.0/16
  eks-cluster:
    type: eks:Cluster
    properties:
      vpcId: ${eks-vpc.vpcId}
      authenticationMode: API
      publicSubnetIds: ${eks-vpc.publicSubnetIds}
      privateSubnetIds: ${eks-vpc.privateSubnetIds}
      skipDefaultNodeGroup: true
  k8sProvider:
    type: pulumi:providers:kubernetes
    properties:
      kubeconfig: ${eks-cluster.kubeconfig}
  node-role:
    type: aws:iam:Role
    properties:
      assumeRolePolicy:
        fn::toJSON:
          Version: 2012-10-17
          Statement:
            - Action: sts:AssumeRole
              Effect: Allow
              Sid: ""
              Principal:
                Service: ec2.amazonaws.com
  worker-node-policy:
    type: aws:iam:RolePolicyAttachment
    properties:
      role: ${node-role.name}
      policyArn: "arn:aws:iam::aws:policy/AmazonEKSWorkerNodePolicy"
  cni-policy:
    type: aws:iam:RolePolicyAttachment
    properties:
      role: ${node-role.name}
      policyArn: "arn:aws:iam::aws:policy/AmazonEKS_CNI_Policy"
  registry-policy:
    type: aws:iam:RolePolicyAttachment
    properties:
      role: ${node-role.name}
      policyArn: "arn:aws:iam::aws:policy/AmazonEC2ContainerRegistryReadOnly"
  
  # The node group for running system pods (e.g. coredns, etc.)
  system-node-group:
    type: eks:ManagedNodeGroup
    properties:
      cluster: ${eks-cluster}
      nodeRole: ${node-role}
  # EFA device plugin for exposing EFA interfaces as extended resources
  device-plugin:
    type: kubernetes:helm.sh/v3:Release
    properties:
      version: "0.5.7"
      repositoryOpts:
        repo: "https://aws.github.io/eks-charts"
      chart: "aws-efa-k8s-device-plugin"
      namespace: "kube-system"
      atomic: true
      values:
        tolerations:
          - key: "efa-enabled"
            operator: "Exists"
            effect: "NoExecute"
    options:
      provider: ${k8sProvider}
  # The node group for running EFA enabled workloads
  efa-node-group:
    type: eks:ManagedNodeGroup
    properties:
      cluster: ${eks-cluster}
      nodeRole: ${node-role}
      instanceTypes: ["g6.8xlarge"]
      gpu: true
      scalingConfig:
        minSize: 2
        desiredSize: 2
        maxSize: 4
      enableEfaSupport: true
      placementGroupAvailabilityZone: "us-west-2b"
      # Taint the nodes so that only pods with the efa-enabled label can be scheduled on them
      taints:
        - key: "efa-enabled"
          value: "true"
          effect: "NO_EXECUTE"
      # Instances with GPUs usually have nvme instance store volumes, so we can mount them in RAID-0 for kubelet and containerd
      # These are faster than the regular EBS volumes
      nodeadmExtraOptions:
        - contentType: "application/node.eks.aws"
          content: |
            apiVersion: node.eks.aws/v1alpha1
            kind: NodeConfig
            spec:
              instance:
                localStorage:
                  strategy: RAID0            
Create ManagedNodeGroup Resource
Resources are created with functions called constructors. To learn more about declaring and configuring resources, see Resources.
Constructor syntax
new ManagedNodeGroup(name: string, args: ManagedNodeGroupArgs, opts?: ComponentResourceOptions);@overload
def ManagedNodeGroup(resource_name: str,
                     args: ManagedNodeGroupArgs,
                     opts: Optional[ResourceOptions] = None)
@overload
def ManagedNodeGroup(resource_name: str,
                     opts: Optional[ResourceOptions] = None,
                     cluster: Optional[Union[Cluster, CoreDataArgs]] = None,
                     launch_template: Optional[pulumi_aws.eks.NodeGroupLaunchTemplateArgs] = None,
                     version: Optional[str] = None,
                     labels: Optional[Mapping[str, str]] = None,
                     capacity_type: Optional[str] = None,
                     ami_type: Optional[str] = None,
                     cluster_name: Optional[str] = None,
                     disk_size: Optional[int] = None,
                     enable_efa_support: Optional[bool] = None,
                     enable_imd_sv2: Optional[bool] = None,
                     force_update_version: Optional[bool] = None,
                     gpu: Optional[bool] = None,
                     ignore_scaling_changes: Optional[bool] = None,
                     instance_types: Optional[Sequence[str]] = None,
                     kubelet_extra_args: Optional[str] = None,
                     bottlerocket_settings: Optional[Mapping[str, Any]] = None,
                     node_group_name: Optional[str] = None,
                     bootstrap_extra_args: Optional[str] = None,
                     node_group_name_prefix: Optional[str] = None,
                     node_role: Optional[pulumi_aws.iam.Role] = None,
                     node_role_arn: Optional[str] = None,
                     nodeadm_extra_options: Optional[Sequence[NodeadmOptionsArgs]] = None,
                     operating_system: Optional[OperatingSystem] = None,
                     placement_group_availability_zone: Optional[str] = None,
                     release_version: Optional[str] = None,
                     remote_access: Optional[pulumi_aws.eks.NodeGroupRemoteAccessArgs] = None,
                     scaling_config: Optional[pulumi_aws.eks.NodeGroupScalingConfigArgs] = None,
                     subnet_ids: Optional[Sequence[str]] = None,
                     tags: Optional[Mapping[str, str]] = None,
                     taints: Optional[Sequence[pulumi_aws.eks.NodeGroupTaintArgs]] = None,
                     user_data: Optional[str] = None,
                     ami_id: Optional[str] = None)func NewManagedNodeGroup(ctx *Context, name string, args ManagedNodeGroupArgs, opts ...ResourceOption) (*ManagedNodeGroup, error)public ManagedNodeGroup(string name, ManagedNodeGroupArgs args, ComponentResourceOptions? opts = null)
public ManagedNodeGroup(String name, ManagedNodeGroupArgs args)
public ManagedNodeGroup(String name, ManagedNodeGroupArgs args, ComponentResourceOptions options)
type: eks:ManagedNodeGroup
properties: # The arguments to resource properties.
options: # Bag of options to control resource's behavior.
Parameters
- name string
- The unique name of the resource.
- args ManagedNodeGroupArgs
- The arguments to resource properties.
- opts ComponentResourceOptions
- Bag of options to control resource's behavior.
- resource_name str
- The unique name of the resource.
- args ManagedNodeGroupArgs
- The arguments to resource properties.
- opts ResourceOptions
- Bag of options to control resource's behavior.
- ctx Context
- Context object for the current deployment.
- name string
- The unique name of the resource.
- args ManagedNodeGroupArgs
- The arguments to resource properties.
- opts ResourceOption
- Bag of options to control resource's behavior.
- name string
- The unique name of the resource.
- args ManagedNodeGroupArgs
- The arguments to resource properties.
- opts ComponentResourceOptions
- Bag of options to control resource's behavior.
- name String
- The unique name of the resource.
- args ManagedNodeGroupArgs
- The arguments to resource properties.
- options ComponentResourceOptions
- Bag of options to control resource's behavior.
ManagedNodeGroup Resource Properties
To learn more about resource properties and how to use them, see Inputs and Outputs in the Architecture and Concepts docs.
Inputs
In Python, inputs that are objects can be passed either as argument classes or as dictionary literals.
The ManagedNodeGroup resource accepts the following input properties:
- Cluster
Pulumi.Eks. Cluster | Core Data 
- The target EKS cluster.
- AmiId string
- The AMI ID to use for the worker nodes. Defaults to the latest recommended EKS Optimized AMI from the AWS Systems Manager Parameter Store. - Note: - amiIdis mutually exclusive with- gpuand- amiType.- See for more details: https://docs.aws.amazon.com/eks/latest/userguide/eks-optimized-ami.html. 
- AmiType string
- Type of Amazon Machine Image (AMI) associated with the EKS Node Group. Defaults to - AL2_x86_64. Note:- amiTypeand- amiIdare mutually exclusive.- See the AWS documentation (https://docs.aws.amazon.com/eks/latest/APIReference/API_Nodegroup.html#AmazonEKS-Type-Nodegroup-amiType) for valid AMI Types. This provider will only perform drift detection if a configuration value is provided. 
- BootstrapExtra stringArgs 
- Additional args to pass directly to - /etc/eks/bootstrap.sh. For details on available options, see: https://github.com/awslabs/amazon-eks-ami/blob/master/files/bootstrap.sh. Note that the- --apiserver-endpoint,- --b64-cluster-caand- --kubelet-extra-argsflags are included automatically based on other configuration parameters.- Note that this field conflicts with - launchTemplate.
- BottlerocketSettings Dictionary<string, object>
- The configuration settings for Bottlerocket OS. The settings will get merged with the base settings the provider uses to configure Bottlerocket. - This includes: - settings.kubernetes.api-server
- settings.kubernetes.cluster-certificate
- settings.kubernetes.cluster-name
- settings.kubernetes.cluster-dns-ip
 - For an overview of the available settings, see https://bottlerocket.dev/en/os/1.20.x/api/settings/. 
- CapacityType string
- Type of capacity associated with the EKS Node Group. Valid values: ON_DEMAND,SPOT. This provider will only perform drift detection if a configuration value is provided.
- ClusterName string
- Name of the EKS Cluster.
- DiskSize int
- Disk size in GiB for worker nodes. Defaults to 20. This provider will only perform drift detection if a configuration value is provided.
- EnableEfa boolSupport 
- Determines whether to enable Elastic Fabric Adapter (EFA) support for the node group. If multiple different instance types are configured for the node group, the first one will be used to determine the network interfaces to use. Requires placementGroupAvailabilityZoneto be set.
- EnableIMDSv2 bool
- Enables the ability to use EC2 Instance Metadata Service v2, which provides a more secure way to access instance metadata. For more information, see: https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/configuring-instance-metadata-service.html. Defaults to - false.- Note that this field conflicts with - launchTemplate. If you are providing a custom- launchTemplate, you should enable this feature within the- launchTemplateMetadataOptionsof the supplied- launchTemplate.
- ForceUpdate boolVersion 
- Force version update if existing pods are unable to be drained due to a pod disruption budget issue.
- Gpu bool
- Use the latest recommended EKS Optimized AMI with GPU support for the worker nodes. Defaults to false. - Note: - gpuand- amiIdare mutually exclusive.- See for more details: https://docs.aws.amazon.com/eks/latest/userguide/eks-optimized-amis.html. 
- IgnoreScaling boolChanges 
- Whether to ignore changes to the desired size of the Auto Scaling Group. This is useful when using Cluster Autoscaler. - See EKS best practices for more details. 
- InstanceTypes List<string>
- Set of instance types associated with the EKS Node Group. Defaults to ["t3.medium"]. This provider will only perform drift detection if a configuration value is provided. Currently, the EKS API only accepts a single value in the set.
- KubeletExtra stringArgs 
- Extra args to pass to the Kubelet. Corresponds to the options passed in the --kubeletExtraArgsflag to/etc/eks/bootstrap.sh. For example, '--port=10251 --address=0.0.0.0'. To escape characters in the extra argsvalue, wrap the value in quotes. For example,kubeletExtraArgs = '--allowed-unsafe-sysctls "net.core.somaxconn"'. Note that this field conflicts withlaunchTemplate.
- Labels Dictionary<string, string>
- Key-value map of Kubernetes labels. Only labels that are applied with the EKS API are managed by this argument. Other Kubernetes labels applied to the EKS Node Group will not be managed.
- LaunchTemplate Pulumi.Aws. Eks. Inputs. Node Group Launch Template 
- Launch Template settings. - Note: This field is mutually exclusive with - kubeletExtraArgsand- bootstrapExtraArgs. This type is defined in the AWS Classic package.
- NodeGroup stringName 
- Name of the EKS Node Group. If omitted, this provider will assign a random, unique name. Conflicts with nodeGroupNamePrefix.
- NodeGroup stringName Prefix 
- Creates a unique name beginning with the specified prefix. Conflicts with nodeGroupName.
- NodeRole Pulumi.Aws. Iam. Role 
- The IAM Role that provides permissions for the EKS Node Group. - Note, - nodeRoleand- nodeRoleArnare mutually exclusive, and a single option must be used. This type is defined in the AWS Classic package.
- NodeRole stringArn 
- Amazon Resource Name (ARN) of the IAM Role that provides permissions for the EKS Node Group. - Note, - nodeRoleArnand- nodeRoleare mutually exclusive, and a single option must be used.
- NodeadmExtra List<NodeadmOptions Options> 
- Extra nodeadm configuration sections to be added to the nodeadm user data. This can be shell scripts, nodeadm NodeConfig or any other user data compatible script. When configuring additional nodeadm NodeConfig sections, they'll be merged with the base settings the provider sets. You can overwrite base settings or provide additional settings this way. The base settings the provider sets are: - cluster.name
- cluster.apiServerEndpoint
- cluster.certificateAuthority
- cluster.cidr
 - Note: This is only applicable when using AL2023. See for more details: - https://awslabs.github.io/amazon-eks-ami/nodeadm/
- https://awslabs.github.io/amazon-eks-ami/nodeadm/doc/api/
 
- OperatingSystem Pulumi.Eks. Operating System 
- The type of OS to use for the node group. Will be used to determine the right EKS optimized AMI to use based on the instance types and gpu configuration. Valid values are - RECOMMENDED,- AL2,- AL2023and- Bottlerocket.- Defaults to the current recommended OS. 
- PlacementGroup stringAvailability Zone 
- The availability zone of the placement group for EFA support. Required if enableEfaSupportis true.
- ReleaseVersion string
- AMI version of the EKS Node Group. Defaults to latest version for Kubernetes version.
- RemoteAccess Pulumi.Aws. Eks. Inputs. Node Group Remote Access 
- Remote access settings. This type is defined in the AWS Classic package.
- ScalingConfig Pulumi.Aws. Eks. Inputs. Node Group Scaling Config 
- Scaling settings. - Default scaling amounts of the node group autoscaling group are: - desiredSize: 2
- minSize: 1
- maxSize: 2 This type is defined in the AWS Classic package.
 
- SubnetIds List<string>
- Identifiers of EC2 Subnets to associate with the EKS Node Group. These subnets must have the following resource tag: - kubernetes.io/cluster/CLUSTER_NAME(where- CLUSTER_NAMEis replaced with the name of the EKS Cluster).- Default subnetIds is chosen from the following list, in order, if subnetIds arg is not set: - core.subnetIds
- core.privateIds
- core.publicSubnetIds
 - This default logic is based on the existing subnet IDs logic of this package: https://git.io/JeM11 
- Dictionary<string, string>
- Key-value mapping of resource tags.
- Taints
List<Pulumi.Aws. Eks. Inputs. Node Group Taint> 
- The Kubernetes taints to be applied to the nodes in the node group. Maximum of 50 taints per node group.
- UserData string
- User specified code to run on node startup. This is expected to handle the full AWS EKS node bootstrapping. If omitted, the provider will configure the user data. - See for more details: https://docs.aws.amazon.com/eks/latest/userguide/launch-templates.html#launch-template-user-data. 
- Version string
- Cluster
Cluster | CoreData Args 
- The target EKS cluster.
- AmiId string
- The AMI ID to use for the worker nodes. Defaults to the latest recommended EKS Optimized AMI from the AWS Systems Manager Parameter Store. - Note: - amiIdis mutually exclusive with- gpuand- amiType.- See for more details: https://docs.aws.amazon.com/eks/latest/userguide/eks-optimized-ami.html. 
- AmiType string
- Type of Amazon Machine Image (AMI) associated with the EKS Node Group. Defaults to - AL2_x86_64. Note:- amiTypeand- amiIdare mutually exclusive.- See the AWS documentation (https://docs.aws.amazon.com/eks/latest/APIReference/API_Nodegroup.html#AmazonEKS-Type-Nodegroup-amiType) for valid AMI Types. This provider will only perform drift detection if a configuration value is provided. 
- BootstrapExtra stringArgs 
- Additional args to pass directly to - /etc/eks/bootstrap.sh. For details on available options, see: https://github.com/awslabs/amazon-eks-ami/blob/master/files/bootstrap.sh. Note that the- --apiserver-endpoint,- --b64-cluster-caand- --kubelet-extra-argsflags are included automatically based on other configuration parameters.- Note that this field conflicts with - launchTemplate.
- BottlerocketSettings map[string]interface{}
- The configuration settings for Bottlerocket OS. The settings will get merged with the base settings the provider uses to configure Bottlerocket. - This includes: - settings.kubernetes.api-server
- settings.kubernetes.cluster-certificate
- settings.kubernetes.cluster-name
- settings.kubernetes.cluster-dns-ip
 - For an overview of the available settings, see https://bottlerocket.dev/en/os/1.20.x/api/settings/. 
- CapacityType string
- Type of capacity associated with the EKS Node Group. Valid values: ON_DEMAND,SPOT. This provider will only perform drift detection if a configuration value is provided.
- ClusterName string
- Name of the EKS Cluster.
- DiskSize int
- Disk size in GiB for worker nodes. Defaults to 20. This provider will only perform drift detection if a configuration value is provided.
- EnableEfa boolSupport 
- Determines whether to enable Elastic Fabric Adapter (EFA) support for the node group. If multiple different instance types are configured for the node group, the first one will be used to determine the network interfaces to use. Requires placementGroupAvailabilityZoneto be set.
- EnableIMDSv2 bool
- Enables the ability to use EC2 Instance Metadata Service v2, which provides a more secure way to access instance metadata. For more information, see: https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/configuring-instance-metadata-service.html. Defaults to - false.- Note that this field conflicts with - launchTemplate. If you are providing a custom- launchTemplate, you should enable this feature within the- launchTemplateMetadataOptionsof the supplied- launchTemplate.
- ForceUpdate boolVersion 
- Force version update if existing pods are unable to be drained due to a pod disruption budget issue.
- Gpu bool
- Use the latest recommended EKS Optimized AMI with GPU support for the worker nodes. Defaults to false. - Note: - gpuand- amiIdare mutually exclusive.- See for more details: https://docs.aws.amazon.com/eks/latest/userguide/eks-optimized-amis.html. 
- IgnoreScaling boolChanges 
- Whether to ignore changes to the desired size of the Auto Scaling Group. This is useful when using Cluster Autoscaler. - See EKS best practices for more details. 
- InstanceTypes []string
- Set of instance types associated with the EKS Node Group. Defaults to ["t3.medium"]. This provider will only perform drift detection if a configuration value is provided. Currently, the EKS API only accepts a single value in the set.
- KubeletExtra stringArgs 
- Extra args to pass to the Kubelet. Corresponds to the options passed in the --kubeletExtraArgsflag to/etc/eks/bootstrap.sh. For example, '--port=10251 --address=0.0.0.0'. To escape characters in the extra argsvalue, wrap the value in quotes. For example,kubeletExtraArgs = '--allowed-unsafe-sysctls "net.core.somaxconn"'. Note that this field conflicts withlaunchTemplate.
- Labels map[string]string
- Key-value map of Kubernetes labels. Only labels that are applied with the EKS API are managed by this argument. Other Kubernetes labels applied to the EKS Node Group will not be managed.
- LaunchTemplate NodeGroup Launch Template Args 
- Launch Template settings. - Note: This field is mutually exclusive with - kubeletExtraArgsand- bootstrapExtraArgs. This type is defined in the AWS Classic package.
- NodeGroup stringName 
- Name of the EKS Node Group. If omitted, this provider will assign a random, unique name. Conflicts with nodeGroupNamePrefix.
- NodeGroup stringName Prefix 
- Creates a unique name beginning with the specified prefix. Conflicts with nodeGroupName.
- NodeRole Role
- The IAM Role that provides permissions for the EKS Node Group. - Note, - nodeRoleand- nodeRoleArnare mutually exclusive, and a single option must be used. This type is defined in the AWS Classic package.
- NodeRole stringArn 
- Amazon Resource Name (ARN) of the IAM Role that provides permissions for the EKS Node Group. - Note, - nodeRoleArnand- nodeRoleare mutually exclusive, and a single option must be used.
- NodeadmExtra []NodeadmOptions Options Args 
- Extra nodeadm configuration sections to be added to the nodeadm user data. This can be shell scripts, nodeadm NodeConfig or any other user data compatible script. When configuring additional nodeadm NodeConfig sections, they'll be merged with the base settings the provider sets. You can overwrite base settings or provide additional settings this way. The base settings the provider sets are: - cluster.name
- cluster.apiServerEndpoint
- cluster.certificateAuthority
- cluster.cidr
 - Note: This is only applicable when using AL2023. See for more details: - https://awslabs.github.io/amazon-eks-ami/nodeadm/
- https://awslabs.github.io/amazon-eks-ami/nodeadm/doc/api/
 
- OperatingSystem OperatingSystem 
- The type of OS to use for the node group. Will be used to determine the right EKS optimized AMI to use based on the instance types and gpu configuration. Valid values are - RECOMMENDED,- AL2,- AL2023and- Bottlerocket.- Defaults to the current recommended OS. 
- PlacementGroup stringAvailability Zone 
- The availability zone of the placement group for EFA support. Required if enableEfaSupportis true.
- ReleaseVersion string
- AMI version of the EKS Node Group. Defaults to latest version for Kubernetes version.
- RemoteAccess NodeGroup Remote Access Args 
- Remote access settings. This type is defined in the AWS Classic package.
- ScalingConfig NodeGroup Scaling Config Args 
- Scaling settings. - Default scaling amounts of the node group autoscaling group are: - desiredSize: 2
- minSize: 1
- maxSize: 2 This type is defined in the AWS Classic package.
 
- SubnetIds []string
- Identifiers of EC2 Subnets to associate with the EKS Node Group. These subnets must have the following resource tag: - kubernetes.io/cluster/CLUSTER_NAME(where- CLUSTER_NAMEis replaced with the name of the EKS Cluster).- Default subnetIds is chosen from the following list, in order, if subnetIds arg is not set: - core.subnetIds
- core.privateIds
- core.publicSubnetIds
 - This default logic is based on the existing subnet IDs logic of this package: https://git.io/JeM11 
- map[string]string
- Key-value mapping of resource tags.
- Taints
NodeGroup Taint Args 
- The Kubernetes taints to be applied to the nodes in the node group. Maximum of 50 taints per node group.
- UserData string
- User specified code to run on node startup. This is expected to handle the full AWS EKS node bootstrapping. If omitted, the provider will configure the user data. - See for more details: https://docs.aws.amazon.com/eks/latest/userguide/launch-templates.html#launch-template-user-data. 
- Version string
- cluster
Cluster | CoreData 
- The target EKS cluster.
- amiId String
- The AMI ID to use for the worker nodes. Defaults to the latest recommended EKS Optimized AMI from the AWS Systems Manager Parameter Store. - Note: - amiIdis mutually exclusive with- gpuand- amiType.- See for more details: https://docs.aws.amazon.com/eks/latest/userguide/eks-optimized-ami.html. 
- amiType String
- Type of Amazon Machine Image (AMI) associated with the EKS Node Group. Defaults to - AL2_x86_64. Note:- amiTypeand- amiIdare mutually exclusive.- See the AWS documentation (https://docs.aws.amazon.com/eks/latest/APIReference/API_Nodegroup.html#AmazonEKS-Type-Nodegroup-amiType) for valid AMI Types. This provider will only perform drift detection if a configuration value is provided. 
- bootstrapExtra StringArgs 
- Additional args to pass directly to - /etc/eks/bootstrap.sh. For details on available options, see: https://github.com/awslabs/amazon-eks-ami/blob/master/files/bootstrap.sh. Note that the- --apiserver-endpoint,- --b64-cluster-caand- --kubelet-extra-argsflags are included automatically based on other configuration parameters.- Note that this field conflicts with - launchTemplate.
- bottlerocketSettings Map<String,Object>
- The configuration settings for Bottlerocket OS. The settings will get merged with the base settings the provider uses to configure Bottlerocket. - This includes: - settings.kubernetes.api-server
- settings.kubernetes.cluster-certificate
- settings.kubernetes.cluster-name
- settings.kubernetes.cluster-dns-ip
 - For an overview of the available settings, see https://bottlerocket.dev/en/os/1.20.x/api/settings/. 
- capacityType String
- Type of capacity associated with the EKS Node Group. Valid values: ON_DEMAND,SPOT. This provider will only perform drift detection if a configuration value is provided.
- clusterName String
- Name of the EKS Cluster.
- diskSize Integer
- Disk size in GiB for worker nodes. Defaults to 20. This provider will only perform drift detection if a configuration value is provided.
- enableEfa BooleanSupport 
- Determines whether to enable Elastic Fabric Adapter (EFA) support for the node group. If multiple different instance types are configured for the node group, the first one will be used to determine the network interfaces to use. Requires placementGroupAvailabilityZoneto be set.
- enableIMDSv2 Boolean
- Enables the ability to use EC2 Instance Metadata Service v2, which provides a more secure way to access instance metadata. For more information, see: https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/configuring-instance-metadata-service.html. Defaults to - false.- Note that this field conflicts with - launchTemplate. If you are providing a custom- launchTemplate, you should enable this feature within the- launchTemplateMetadataOptionsof the supplied- launchTemplate.
- forceUpdate BooleanVersion 
- Force version update if existing pods are unable to be drained due to a pod disruption budget issue.
- gpu Boolean
- Use the latest recommended EKS Optimized AMI with GPU support for the worker nodes. Defaults to false. - Note: - gpuand- amiIdare mutually exclusive.- See for more details: https://docs.aws.amazon.com/eks/latest/userguide/eks-optimized-amis.html. 
- ignoreScaling BooleanChanges 
- Whether to ignore changes to the desired size of the Auto Scaling Group. This is useful when using Cluster Autoscaler. - See EKS best practices for more details. 
- instanceTypes List<String>
- Set of instance types associated with the EKS Node Group. Defaults to ["t3.medium"]. This provider will only perform drift detection if a configuration value is provided. Currently, the EKS API only accepts a single value in the set.
- kubeletExtra StringArgs 
- Extra args to pass to the Kubelet. Corresponds to the options passed in the --kubeletExtraArgsflag to/etc/eks/bootstrap.sh. For example, '--port=10251 --address=0.0.0.0'. To escape characters in the extra argsvalue, wrap the value in quotes. For example,kubeletExtraArgs = '--allowed-unsafe-sysctls "net.core.somaxconn"'. Note that this field conflicts withlaunchTemplate.
- labels Map<String,String>
- Key-value map of Kubernetes labels. Only labels that are applied with the EKS API are managed by this argument. Other Kubernetes labels applied to the EKS Node Group will not be managed.
- launchTemplate NodeGroup Launch Template 
- Launch Template settings. - Note: This field is mutually exclusive with - kubeletExtraArgsand- bootstrapExtraArgs. This type is defined in the AWS Classic package.
- nodeGroup StringName 
- Name of the EKS Node Group. If omitted, this provider will assign a random, unique name. Conflicts with nodeGroupNamePrefix.
- nodeGroup StringName Prefix 
- Creates a unique name beginning with the specified prefix. Conflicts with nodeGroupName.
- nodeRole Role
- The IAM Role that provides permissions for the EKS Node Group. - Note, - nodeRoleand- nodeRoleArnare mutually exclusive, and a single option must be used. This type is defined in the AWS Classic package.
- nodeRole StringArn 
- Amazon Resource Name (ARN) of the IAM Role that provides permissions for the EKS Node Group. - Note, - nodeRoleArnand- nodeRoleare mutually exclusive, and a single option must be used.
- nodeadmExtra List<NodeadmOptions Options> 
- Extra nodeadm configuration sections to be added to the nodeadm user data. This can be shell scripts, nodeadm NodeConfig or any other user data compatible script. When configuring additional nodeadm NodeConfig sections, they'll be merged with the base settings the provider sets. You can overwrite base settings or provide additional settings this way. The base settings the provider sets are: - cluster.name
- cluster.apiServerEndpoint
- cluster.certificateAuthority
- cluster.cidr
 - Note: This is only applicable when using AL2023. See for more details: - https://awslabs.github.io/amazon-eks-ami/nodeadm/
- https://awslabs.github.io/amazon-eks-ami/nodeadm/doc/api/
 
- operatingSystem OperatingSystem 
- The type of OS to use for the node group. Will be used to determine the right EKS optimized AMI to use based on the instance types and gpu configuration. Valid values are - RECOMMENDED,- AL2,- AL2023and- Bottlerocket.- Defaults to the current recommended OS. 
- placementGroup StringAvailability Zone 
- The availability zone of the placement group for EFA support. Required if enableEfaSupportis true.
- releaseVersion String
- AMI version of the EKS Node Group. Defaults to latest version for Kubernetes version.
- remoteAccess NodeGroup Remote Access 
- Remote access settings. This type is defined in the AWS Classic package.
- scalingConfig NodeGroup Scaling Config 
- Scaling settings. - Default scaling amounts of the node group autoscaling group are: - desiredSize: 2
- minSize: 1
- maxSize: 2 This type is defined in the AWS Classic package.
 
- subnetIds List<String>
- Identifiers of EC2 Subnets to associate with the EKS Node Group. These subnets must have the following resource tag: - kubernetes.io/cluster/CLUSTER_NAME(where- CLUSTER_NAMEis replaced with the name of the EKS Cluster).- Default subnetIds is chosen from the following list, in order, if subnetIds arg is not set: - core.subnetIds
- core.privateIds
- core.publicSubnetIds
 - This default logic is based on the existing subnet IDs logic of this package: https://git.io/JeM11 
- Map<String,String>
- Key-value mapping of resource tags.
- taints
List<NodeGroup Taint> 
- The Kubernetes taints to be applied to the nodes in the node group. Maximum of 50 taints per node group.
- userData String
- User specified code to run on node startup. This is expected to handle the full AWS EKS node bootstrapping. If omitted, the provider will configure the user data. - See for more details: https://docs.aws.amazon.com/eks/latest/userguide/launch-templates.html#launch-template-user-data. 
- version String
- cluster
Cluster | CoreData 
- The target EKS cluster.
- amiId string
- The AMI ID to use for the worker nodes. Defaults to the latest recommended EKS Optimized AMI from the AWS Systems Manager Parameter Store. - Note: - amiIdis mutually exclusive with- gpuand- amiType.- See for more details: https://docs.aws.amazon.com/eks/latest/userguide/eks-optimized-ami.html. 
- amiType string
- Type of Amazon Machine Image (AMI) associated with the EKS Node Group. Defaults to - AL2_x86_64. Note:- amiTypeand- amiIdare mutually exclusive.- See the AWS documentation (https://docs.aws.amazon.com/eks/latest/APIReference/API_Nodegroup.html#AmazonEKS-Type-Nodegroup-amiType) for valid AMI Types. This provider will only perform drift detection if a configuration value is provided. 
- bootstrapExtra stringArgs 
- Additional args to pass directly to - /etc/eks/bootstrap.sh. For details on available options, see: https://github.com/awslabs/amazon-eks-ami/blob/master/files/bootstrap.sh. Note that the- --apiserver-endpoint,- --b64-cluster-caand- --kubelet-extra-argsflags are included automatically based on other configuration parameters.- Note that this field conflicts with - launchTemplate.
- bottlerocketSettings {[key: string]: any}
- The configuration settings for Bottlerocket OS. The settings will get merged with the base settings the provider uses to configure Bottlerocket. - This includes: - settings.kubernetes.api-server
- settings.kubernetes.cluster-certificate
- settings.kubernetes.cluster-name
- settings.kubernetes.cluster-dns-ip
 - For an overview of the available settings, see https://bottlerocket.dev/en/os/1.20.x/api/settings/. 
- capacityType string
- Type of capacity associated with the EKS Node Group. Valid values: ON_DEMAND,SPOT. This provider will only perform drift detection if a configuration value is provided.
- clusterName string
- Name of the EKS Cluster.
- diskSize number
- Disk size in GiB for worker nodes. Defaults to 20. This provider will only perform drift detection if a configuration value is provided.
- enableEfa booleanSupport 
- Determines whether to enable Elastic Fabric Adapter (EFA) support for the node group. If multiple different instance types are configured for the node group, the first one will be used to determine the network interfaces to use. Requires placementGroupAvailabilityZoneto be set.
- enableIMDSv2 boolean
- Enables the ability to use EC2 Instance Metadata Service v2, which provides a more secure way to access instance metadata. For more information, see: https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/configuring-instance-metadata-service.html. Defaults to - false.- Note that this field conflicts with - launchTemplate. If you are providing a custom- launchTemplate, you should enable this feature within the- launchTemplateMetadataOptionsof the supplied- launchTemplate.
- forceUpdate booleanVersion 
- Force version update if existing pods are unable to be drained due to a pod disruption budget issue.
- gpu boolean
- Use the latest recommended EKS Optimized AMI with GPU support for the worker nodes. Defaults to false. - Note: - gpuand- amiIdare mutually exclusive.- See for more details: https://docs.aws.amazon.com/eks/latest/userguide/eks-optimized-amis.html. 
- ignoreScaling booleanChanges 
- Whether to ignore changes to the desired size of the Auto Scaling Group. This is useful when using Cluster Autoscaler. - See EKS best practices for more details. 
- instanceTypes string[]
- Set of instance types associated with the EKS Node Group. Defaults to ["t3.medium"]. This provider will only perform drift detection if a configuration value is provided. Currently, the EKS API only accepts a single value in the set.
- kubeletExtra stringArgs 
- Extra args to pass to the Kubelet. Corresponds to the options passed in the --kubeletExtraArgsflag to/etc/eks/bootstrap.sh. For example, '--port=10251 --address=0.0.0.0'. To escape characters in the extra argsvalue, wrap the value in quotes. For example,kubeletExtraArgs = '--allowed-unsafe-sysctls "net.core.somaxconn"'. Note that this field conflicts withlaunchTemplate.
- labels {[key: string]: string}
- Key-value map of Kubernetes labels. Only labels that are applied with the EKS API are managed by this argument. Other Kubernetes labels applied to the EKS Node Group will not be managed.
- launchTemplate pulumiAwstypesinputeks Node Group Launch Template 
- Launch Template settings. - Note: This field is mutually exclusive with - kubeletExtraArgsand- bootstrapExtraArgs. This type is defined in the AWS Classic package.
- nodeGroup stringName 
- Name of the EKS Node Group. If omitted, this provider will assign a random, unique name. Conflicts with nodeGroupNamePrefix.
- nodeGroup stringName Prefix 
- Creates a unique name beginning with the specified prefix. Conflicts with nodeGroupName.
- nodeRole pulumiAwsiam Role 
- The IAM Role that provides permissions for the EKS Node Group. - Note, - nodeRoleand- nodeRoleArnare mutually exclusive, and a single option must be used. This type is defined in the AWS Classic package.
- nodeRole stringArn 
- Amazon Resource Name (ARN) of the IAM Role that provides permissions for the EKS Node Group. - Note, - nodeRoleArnand- nodeRoleare mutually exclusive, and a single option must be used.
- nodeadmExtra NodeadmOptions Options[] 
- Extra nodeadm configuration sections to be added to the nodeadm user data. This can be shell scripts, nodeadm NodeConfig or any other user data compatible script. When configuring additional nodeadm NodeConfig sections, they'll be merged with the base settings the provider sets. You can overwrite base settings or provide additional settings this way. The base settings the provider sets are: - cluster.name
- cluster.apiServerEndpoint
- cluster.certificateAuthority
- cluster.cidr
 - Note: This is only applicable when using AL2023. See for more details: - https://awslabs.github.io/amazon-eks-ami/nodeadm/
- https://awslabs.github.io/amazon-eks-ami/nodeadm/doc/api/
 
- operatingSystem OperatingSystem 
- The type of OS to use for the node group. Will be used to determine the right EKS optimized AMI to use based on the instance types and gpu configuration. Valid values are - RECOMMENDED,- AL2,- AL2023and- Bottlerocket.- Defaults to the current recommended OS. 
- placementGroup stringAvailability Zone 
- The availability zone of the placement group for EFA support. Required if enableEfaSupportis true.
- releaseVersion string
- AMI version of the EKS Node Group. Defaults to latest version for Kubernetes version.
- remoteAccess pulumiAwstypesinputeks Node Group Remote Access 
- Remote access settings. This type is defined in the AWS Classic package.
- scalingConfig pulumiAwstypesinputeks Node Group Scaling Config 
- Scaling settings. - Default scaling amounts of the node group autoscaling group are: - desiredSize: 2
- minSize: 1
- maxSize: 2 This type is defined in the AWS Classic package.
 
- subnetIds string[]
- Identifiers of EC2 Subnets to associate with the EKS Node Group. These subnets must have the following resource tag: - kubernetes.io/cluster/CLUSTER_NAME(where- CLUSTER_NAMEis replaced with the name of the EKS Cluster).- Default subnetIds is chosen from the following list, in order, if subnetIds arg is not set: - core.subnetIds
- core.privateIds
- core.publicSubnetIds
 - This default logic is based on the existing subnet IDs logic of this package: https://git.io/JeM11 
- {[key: string]: string}
- Key-value mapping of resource tags.
- taints
pulumiAwstypesinputeks Node Group Taint[] 
- The Kubernetes taints to be applied to the nodes in the node group. Maximum of 50 taints per node group.
- userData string
- User specified code to run on node startup. This is expected to handle the full AWS EKS node bootstrapping. If omitted, the provider will configure the user data. - See for more details: https://docs.aws.amazon.com/eks/latest/userguide/launch-templates.html#launch-template-user-data. 
- version string
- cluster
Cluster | CoreData Args 
- The target EKS cluster.
- ami_id str
- The AMI ID to use for the worker nodes. Defaults to the latest recommended EKS Optimized AMI from the AWS Systems Manager Parameter Store. - Note: - amiIdis mutually exclusive with- gpuand- amiType.- See for more details: https://docs.aws.amazon.com/eks/latest/userguide/eks-optimized-ami.html. 
- ami_type str
- Type of Amazon Machine Image (AMI) associated with the EKS Node Group. Defaults to - AL2_x86_64. Note:- amiTypeand- amiIdare mutually exclusive.- See the AWS documentation (https://docs.aws.amazon.com/eks/latest/APIReference/API_Nodegroup.html#AmazonEKS-Type-Nodegroup-amiType) for valid AMI Types. This provider will only perform drift detection if a configuration value is provided. 
- bootstrap_extra_ strargs 
- Additional args to pass directly to - /etc/eks/bootstrap.sh. For details on available options, see: https://github.com/awslabs/amazon-eks-ami/blob/master/files/bootstrap.sh. Note that the- --apiserver-endpoint,- --b64-cluster-caand- --kubelet-extra-argsflags are included automatically based on other configuration parameters.- Note that this field conflicts with - launchTemplate.
- bottlerocket_settings Mapping[str, Any]
- The configuration settings for Bottlerocket OS. The settings will get merged with the base settings the provider uses to configure Bottlerocket. - This includes: - settings.kubernetes.api-server
- settings.kubernetes.cluster-certificate
- settings.kubernetes.cluster-name
- settings.kubernetes.cluster-dns-ip
 - For an overview of the available settings, see https://bottlerocket.dev/en/os/1.20.x/api/settings/. 
- capacity_type str
- Type of capacity associated with the EKS Node Group. Valid values: ON_DEMAND,SPOT. This provider will only perform drift detection if a configuration value is provided.
- cluster_name str
- Name of the EKS Cluster.
- disk_size int
- Disk size in GiB for worker nodes. Defaults to 20. This provider will only perform drift detection if a configuration value is provided.
- enable_efa_ boolsupport 
- Determines whether to enable Elastic Fabric Adapter (EFA) support for the node group. If multiple different instance types are configured for the node group, the first one will be used to determine the network interfaces to use. Requires placementGroupAvailabilityZoneto be set.
- enable_imd_ boolsv2 
- Enables the ability to use EC2 Instance Metadata Service v2, which provides a more secure way to access instance metadata. For more information, see: https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/configuring-instance-metadata-service.html. Defaults to - false.- Note that this field conflicts with - launchTemplate. If you are providing a custom- launchTemplate, you should enable this feature within the- launchTemplateMetadataOptionsof the supplied- launchTemplate.
- force_update_ boolversion 
- Force version update if existing pods are unable to be drained due to a pod disruption budget issue.
- gpu bool
- Use the latest recommended EKS Optimized AMI with GPU support for the worker nodes. Defaults to false. - Note: - gpuand- amiIdare mutually exclusive.- See for more details: https://docs.aws.amazon.com/eks/latest/userguide/eks-optimized-amis.html. 
- ignore_scaling_ boolchanges 
- Whether to ignore changes to the desired size of the Auto Scaling Group. This is useful when using Cluster Autoscaler. - See EKS best practices for more details. 
- instance_types Sequence[str]
- Set of instance types associated with the EKS Node Group. Defaults to ["t3.medium"]. This provider will only perform drift detection if a configuration value is provided. Currently, the EKS API only accepts a single value in the set.
- kubelet_extra_ strargs 
- Extra args to pass to the Kubelet. Corresponds to the options passed in the --kubeletExtraArgsflag to/etc/eks/bootstrap.sh. For example, '--port=10251 --address=0.0.0.0'. To escape characters in the extra argsvalue, wrap the value in quotes. For example,kubeletExtraArgs = '--allowed-unsafe-sysctls "net.core.somaxconn"'. Note that this field conflicts withlaunchTemplate.
- labels Mapping[str, str]
- Key-value map of Kubernetes labels. Only labels that are applied with the EKS API are managed by this argument. Other Kubernetes labels applied to the EKS Node Group will not be managed.
- launch_template pulumi_aws.eks. Node Group Launch Template Args 
- Launch Template settings. - Note: This field is mutually exclusive with - kubeletExtraArgsand- bootstrapExtraArgs. This type is defined in the AWS Classic package.
- node_group_ strname 
- Name of the EKS Node Group. If omitted, this provider will assign a random, unique name. Conflicts with nodeGroupNamePrefix.
- node_group_ strname_ prefix 
- Creates a unique name beginning with the specified prefix. Conflicts with nodeGroupName.
- node_role pulumi_aws.iam. Role 
- The IAM Role that provides permissions for the EKS Node Group. - Note, - nodeRoleand- nodeRoleArnare mutually exclusive, and a single option must be used. This type is defined in the AWS Classic package.
- node_role_ strarn 
- Amazon Resource Name (ARN) of the IAM Role that provides permissions for the EKS Node Group. - Note, - nodeRoleArnand- nodeRoleare mutually exclusive, and a single option must be used.
- nodeadm_extra_ Sequence[Nodeadmoptions Options Args] 
- Extra nodeadm configuration sections to be added to the nodeadm user data. This can be shell scripts, nodeadm NodeConfig or any other user data compatible script. When configuring additional nodeadm NodeConfig sections, they'll be merged with the base settings the provider sets. You can overwrite base settings or provide additional settings this way. The base settings the provider sets are: - cluster.name
- cluster.apiServerEndpoint
- cluster.certificateAuthority
- cluster.cidr
 - Note: This is only applicable when using AL2023. See for more details: - https://awslabs.github.io/amazon-eks-ami/nodeadm/
- https://awslabs.github.io/amazon-eks-ami/nodeadm/doc/api/
 
- operating_system OperatingSystem 
- The type of OS to use for the node group. Will be used to determine the right EKS optimized AMI to use based on the instance types and gpu configuration. Valid values are - RECOMMENDED,- AL2,- AL2023and- Bottlerocket.- Defaults to the current recommended OS. 
- placement_group_ stravailability_ zone 
- The availability zone of the placement group for EFA support. Required if enableEfaSupportis true.
- release_version str
- AMI version of the EKS Node Group. Defaults to latest version for Kubernetes version.
- remote_access pulumi_aws.eks. Node Group Remote Access Args 
- Remote access settings. This type is defined in the AWS Classic package.
- scaling_config pulumi_aws.eks. Node Group Scaling Config Args 
- Scaling settings. - Default scaling amounts of the node group autoscaling group are: - desiredSize: 2
- minSize: 1
- maxSize: 2 This type is defined in the AWS Classic package.
 
- subnet_ids Sequence[str]
- Identifiers of EC2 Subnets to associate with the EKS Node Group. These subnets must have the following resource tag: - kubernetes.io/cluster/CLUSTER_NAME(where- CLUSTER_NAMEis replaced with the name of the EKS Cluster).- Default subnetIds is chosen from the following list, in order, if subnetIds arg is not set: - core.subnetIds
- core.privateIds
- core.publicSubnetIds
 - This default logic is based on the existing subnet IDs logic of this package: https://git.io/JeM11 
- Mapping[str, str]
- Key-value mapping of resource tags.
- taints
Sequence[pulumi_aws.eks. Node Group Taint Args] 
- The Kubernetes taints to be applied to the nodes in the node group. Maximum of 50 taints per node group.
- user_data str
- User specified code to run on node startup. This is expected to handle the full AWS EKS node bootstrapping. If omitted, the provider will configure the user data. - See for more details: https://docs.aws.amazon.com/eks/latest/userguide/launch-templates.html#launch-template-user-data. 
- version str
- cluster eks:Cluster | Property Map
- The target EKS cluster.
- amiId String
- The AMI ID to use for the worker nodes. Defaults to the latest recommended EKS Optimized AMI from the AWS Systems Manager Parameter Store. - Note: - amiIdis mutually exclusive with- gpuand- amiType.- See for more details: https://docs.aws.amazon.com/eks/latest/userguide/eks-optimized-ami.html. 
- amiType String
- Type of Amazon Machine Image (AMI) associated with the EKS Node Group. Defaults to - AL2_x86_64. Note:- amiTypeand- amiIdare mutually exclusive.- See the AWS documentation (https://docs.aws.amazon.com/eks/latest/APIReference/API_Nodegroup.html#AmazonEKS-Type-Nodegroup-amiType) for valid AMI Types. This provider will only perform drift detection if a configuration value is provided. 
- bootstrapExtra StringArgs 
- Additional args to pass directly to - /etc/eks/bootstrap.sh. For details on available options, see: https://github.com/awslabs/amazon-eks-ami/blob/master/files/bootstrap.sh. Note that the- --apiserver-endpoint,- --b64-cluster-caand- --kubelet-extra-argsflags are included automatically based on other configuration parameters.- Note that this field conflicts with - launchTemplate.
- bottlerocketSettings Map<Any>
- The configuration settings for Bottlerocket OS. The settings will get merged with the base settings the provider uses to configure Bottlerocket. - This includes: - settings.kubernetes.api-server
- settings.kubernetes.cluster-certificate
- settings.kubernetes.cluster-name
- settings.kubernetes.cluster-dns-ip
 - For an overview of the available settings, see https://bottlerocket.dev/en/os/1.20.x/api/settings/. 
- capacityType String
- Type of capacity associated with the EKS Node Group. Valid values: ON_DEMAND,SPOT. This provider will only perform drift detection if a configuration value is provided.
- clusterName String
- Name of the EKS Cluster.
- diskSize Number
- Disk size in GiB for worker nodes. Defaults to 20. This provider will only perform drift detection if a configuration value is provided.
- enableEfa BooleanSupport 
- Determines whether to enable Elastic Fabric Adapter (EFA) support for the node group. If multiple different instance types are configured for the node group, the first one will be used to determine the network interfaces to use. Requires placementGroupAvailabilityZoneto be set.
- enableIMDSv2 Boolean
- Enables the ability to use EC2 Instance Metadata Service v2, which provides a more secure way to access instance metadata. For more information, see: https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/configuring-instance-metadata-service.html. Defaults to - false.- Note that this field conflicts with - launchTemplate. If you are providing a custom- launchTemplate, you should enable this feature within the- launchTemplateMetadataOptionsof the supplied- launchTemplate.
- forceUpdate BooleanVersion 
- Force version update if existing pods are unable to be drained due to a pod disruption budget issue.
- gpu Boolean
- Use the latest recommended EKS Optimized AMI with GPU support for the worker nodes. Defaults to false. - Note: - gpuand- amiIdare mutually exclusive.- See for more details: https://docs.aws.amazon.com/eks/latest/userguide/eks-optimized-amis.html. 
- ignoreScaling BooleanChanges 
- Whether to ignore changes to the desired size of the Auto Scaling Group. This is useful when using Cluster Autoscaler. - See EKS best practices for more details. 
- instanceTypes List<String>
- Set of instance types associated with the EKS Node Group. Defaults to ["t3.medium"]. This provider will only perform drift detection if a configuration value is provided. Currently, the EKS API only accepts a single value in the set.
- kubeletExtra StringArgs 
- Extra args to pass to the Kubelet. Corresponds to the options passed in the --kubeletExtraArgsflag to/etc/eks/bootstrap.sh. For example, '--port=10251 --address=0.0.0.0'. To escape characters in the extra argsvalue, wrap the value in quotes. For example,kubeletExtraArgs = '--allowed-unsafe-sysctls "net.core.somaxconn"'. Note that this field conflicts withlaunchTemplate.
- labels Map<String>
- Key-value map of Kubernetes labels. Only labels that are applied with the EKS API are managed by this argument. Other Kubernetes labels applied to the EKS Node Group will not be managed.
- launchTemplate Property Map
- Launch Template settings. - Note: This field is mutually exclusive with - kubeletExtraArgsand- bootstrapExtraArgs. This type is defined in the AWS Classic package.
- nodeGroup StringName 
- Name of the EKS Node Group. If omitted, this provider will assign a random, unique name. Conflicts with nodeGroupNamePrefix.
- nodeGroup StringName Prefix 
- Creates a unique name beginning with the specified prefix. Conflicts with nodeGroupName.
- nodeRole aws:iam:Role
- The IAM Role that provides permissions for the EKS Node Group. - Note, - nodeRoleand- nodeRoleArnare mutually exclusive, and a single option must be used. This type is defined in the AWS Classic package.
- nodeRole StringArn 
- Amazon Resource Name (ARN) of the IAM Role that provides permissions for the EKS Node Group. - Note, - nodeRoleArnand- nodeRoleare mutually exclusive, and a single option must be used.
- nodeadmExtra List<Property Map>Options 
- Extra nodeadm configuration sections to be added to the nodeadm user data. This can be shell scripts, nodeadm NodeConfig or any other user data compatible script. When configuring additional nodeadm NodeConfig sections, they'll be merged with the base settings the provider sets. You can overwrite base settings or provide additional settings this way. The base settings the provider sets are: - cluster.name
- cluster.apiServerEndpoint
- cluster.certificateAuthority
- cluster.cidr
 - Note: This is only applicable when using AL2023. See for more details: - https://awslabs.github.io/amazon-eks-ami/nodeadm/
- https://awslabs.github.io/amazon-eks-ami/nodeadm/doc/api/
 
- operatingSystem "AL2" | "AL2023" | "Bottlerocket" | "AL2023"
- The type of OS to use for the node group. Will be used to determine the right EKS optimized AMI to use based on the instance types and gpu configuration. Valid values are - RECOMMENDED,- AL2,- AL2023and- Bottlerocket.- Defaults to the current recommended OS. 
- placementGroup StringAvailability Zone 
- The availability zone of the placement group for EFA support. Required if enableEfaSupportis true.
- releaseVersion String
- AMI version of the EKS Node Group. Defaults to latest version for Kubernetes version.
- remoteAccess Property Map
- Remote access settings. This type is defined in the AWS Classic package.
- scalingConfig Property Map
- Scaling settings. - Default scaling amounts of the node group autoscaling group are: - desiredSize: 2
- minSize: 1
- maxSize: 2 This type is defined in the AWS Classic package.
 
- subnetIds List<String>
- Identifiers of EC2 Subnets to associate with the EKS Node Group. These subnets must have the following resource tag: - kubernetes.io/cluster/CLUSTER_NAME(where- CLUSTER_NAMEis replaced with the name of the EKS Cluster).- Default subnetIds is chosen from the following list, in order, if subnetIds arg is not set: - core.subnetIds
- core.privateIds
- core.publicSubnetIds
 - This default logic is based on the existing subnet IDs logic of this package: https://git.io/JeM11 
- Map<String>
- Key-value mapping of resource tags.
- taints List<Property Map>
- The Kubernetes taints to be applied to the nodes in the node group. Maximum of 50 taints per node group.
- userData String
- User specified code to run on node startup. This is expected to handle the full AWS EKS node bootstrapping. If omitted, the provider will configure the user data. - See for more details: https://docs.aws.amazon.com/eks/latest/userguide/launch-templates.html#launch-template-user-data. 
- version String
Outputs
All input properties are implicitly available as output properties. Additionally, the ManagedNodeGroup resource produces the following output properties:
- NodeGroup Pulumi.Aws. Eks. Node Group 
- The AWS managed node group. This type is defined in the AWS Classic package.
- PlacementGroup stringName 
- The name of the placement group created for the managed node group.
- NodeGroup NodeGroup 
- The AWS managed node group. This type is defined in the AWS Classic package.
- PlacementGroup stringName 
- The name of the placement group created for the managed node group.
- nodeGroup NodeGroup 
- The AWS managed node group. This type is defined in the AWS Classic package.
- placementGroup StringName 
- The name of the placement group created for the managed node group.
- nodeGroup pulumiAwseks Node Group 
- The AWS managed node group. This type is defined in the AWS Classic package.
- placementGroup stringName 
- The name of the placement group created for the managed node group.
- node_group pulumi_aws.eks. Node Group 
- The AWS managed node group. This type is defined in the AWS Classic package.
- placement_group_ strname 
- The name of the placement group created for the managed node group.
- nodeGroup aws:eks:NodeGroup 
- The AWS managed node group. This type is defined in the AWS Classic package.
- placementGroup StringName 
- The name of the placement group created for the managed node group.
Supporting Types
AccessEntry, AccessEntryArgs    
- PrincipalArn string
- The IAM Principal ARN which requires Authentication access to the EKS cluster.
- AccessPolicies Dictionary<string, AccessPolicy Association> 
- The access policies to associate to the access entry.
- KubernetesGroups List<string>
- A list of groups within Kubernetes to which the IAM principal is mapped to.
- Dictionary<string, string>
- The tags to apply to the AccessEntry.
- Type
Pulumi.Eks. Access Entry Type 
- The type of the new access entry. Valid values are STANDARD, FARGATE_LINUX, EC2_LINUX, and EC2_WINDOWS. Defaults to STANDARD which provides the standard workflow. EC2_LINUX, EC2_WINDOWS, FARGATE_LINUX types disallow users to input a username or kubernetesGroup, and prevent associating access policies.
- Username string
- Defaults to the principalArn if the principal is a user, else defaults to assume-role/session-name.
- PrincipalArn string
- The IAM Principal ARN which requires Authentication access to the EKS cluster.
- AccessPolicies map[string]AccessPolicy Association 
- The access policies to associate to the access entry.
- KubernetesGroups []string
- A list of groups within Kubernetes to which the IAM principal is mapped to.
- map[string]string
- The tags to apply to the AccessEntry.
- Type
AccessEntry Type 
- The type of the new access entry. Valid values are STANDARD, FARGATE_LINUX, EC2_LINUX, and EC2_WINDOWS. Defaults to STANDARD which provides the standard workflow. EC2_LINUX, EC2_WINDOWS, FARGATE_LINUX types disallow users to input a username or kubernetesGroup, and prevent associating access policies.
- Username string
- Defaults to the principalArn if the principal is a user, else defaults to assume-role/session-name.
- principalArn String
- The IAM Principal ARN which requires Authentication access to the EKS cluster.
- accessPolicies Map<String,AccessPolicy Association> 
- The access policies to associate to the access entry.
- kubernetesGroups List<String>
- A list of groups within Kubernetes to which the IAM principal is mapped to.
- Map<String,String>
- The tags to apply to the AccessEntry.
- type
AccessEntry Type 
- The type of the new access entry. Valid values are STANDARD, FARGATE_LINUX, EC2_LINUX, and EC2_WINDOWS. Defaults to STANDARD which provides the standard workflow. EC2_LINUX, EC2_WINDOWS, FARGATE_LINUX types disallow users to input a username or kubernetesGroup, and prevent associating access policies.
- username String
- Defaults to the principalArn if the principal is a user, else defaults to assume-role/session-name.
- principalArn string
- The IAM Principal ARN which requires Authentication access to the EKS cluster.
- accessPolicies {[key: string]: AccessPolicy Association} 
- The access policies to associate to the access entry.
- kubernetesGroups string[]
- A list of groups within Kubernetes to which the IAM principal is mapped to.
- {[key: string]: string}
- The tags to apply to the AccessEntry.
- type
AccessEntry Type 
- The type of the new access entry. Valid values are STANDARD, FARGATE_LINUX, EC2_LINUX, and EC2_WINDOWS. Defaults to STANDARD which provides the standard workflow. EC2_LINUX, EC2_WINDOWS, FARGATE_LINUX types disallow users to input a username or kubernetesGroup, and prevent associating access policies.
- username string
- Defaults to the principalArn if the principal is a user, else defaults to assume-role/session-name.
- principal_arn str
- The IAM Principal ARN which requires Authentication access to the EKS cluster.
- access_policies Mapping[str, AccessPolicy Association] 
- The access policies to associate to the access entry.
- kubernetes_groups Sequence[str]
- A list of groups within Kubernetes to which the IAM principal is mapped to.
- Mapping[str, str]
- The tags to apply to the AccessEntry.
- type
AccessEntry Type 
- The type of the new access entry. Valid values are STANDARD, FARGATE_LINUX, EC2_LINUX, and EC2_WINDOWS. Defaults to STANDARD which provides the standard workflow. EC2_LINUX, EC2_WINDOWS, FARGATE_LINUX types disallow users to input a username or kubernetesGroup, and prevent associating access policies.
- username str
- Defaults to the principalArn if the principal is a user, else defaults to assume-role/session-name.
- principalArn String
- The IAM Principal ARN which requires Authentication access to the EKS cluster.
- accessPolicies Map<Property Map>
- The access policies to associate to the access entry.
- kubernetesGroups List<String>
- A list of groups within Kubernetes to which the IAM principal is mapped to.
- Map<String>
- The tags to apply to the AccessEntry.
- type "STANDARD" | "FARGATE_LINUX" | "EC2_LINUX" | "EC2_WINDOWS" | "EC2"
- The type of the new access entry. Valid values are STANDARD, FARGATE_LINUX, EC2_LINUX, and EC2_WINDOWS. Defaults to STANDARD which provides the standard workflow. EC2_LINUX, EC2_WINDOWS, FARGATE_LINUX types disallow users to input a username or kubernetesGroup, and prevent associating access policies.
- username String
- Defaults to the principalArn if the principal is a user, else defaults to assume-role/session-name.
AccessEntryType, AccessEntryTypeArgs      
- Standard
- STANDARDStandard Access Entry Workflow. Allows users to input a username and kubernetesGroup, and to associate access policies.
- FargateLinux 
- FARGATE_LINUXFor IAM roles used with AWS Fargate profiles.
- EC2Linux
- EC2_LINUXFor IAM roles associated with self-managed Linux node groups. Allows the nodes to join the cluster.
- EC2Windows
- EC2_WINDOWSFor IAM roles associated with self-managed Windows node groups. Allows the nodes to join the cluster.
- EC2
- EC2For IAM roles associated with EC2 instances that need access policies. Allows the nodes to join the cluster.
- AccessEntry Type Standard 
- STANDARDStandard Access Entry Workflow. Allows users to input a username and kubernetesGroup, and to associate access policies.
- AccessEntry Type Fargate Linux 
- FARGATE_LINUXFor IAM roles used with AWS Fargate profiles.
- AccessEntry Type EC2Linux 
- EC2_LINUXFor IAM roles associated with self-managed Linux node groups. Allows the nodes to join the cluster.
- AccessEntry Type EC2Windows 
- EC2_WINDOWSFor IAM roles associated with self-managed Windows node groups. Allows the nodes to join the cluster.
- AccessEntry Type EC2 
- EC2For IAM roles associated with EC2 instances that need access policies. Allows the nodes to join the cluster.
- Standard
- STANDARDStandard Access Entry Workflow. Allows users to input a username and kubernetesGroup, and to associate access policies.
- FargateLinux 
- FARGATE_LINUXFor IAM roles used with AWS Fargate profiles.
- EC2Linux
- EC2_LINUXFor IAM roles associated with self-managed Linux node groups. Allows the nodes to join the cluster.
- EC2Windows
- EC2_WINDOWSFor IAM roles associated with self-managed Windows node groups. Allows the nodes to join the cluster.
- EC2
- EC2For IAM roles associated with EC2 instances that need access policies. Allows the nodes to join the cluster.
- Standard
- STANDARDStandard Access Entry Workflow. Allows users to input a username and kubernetesGroup, and to associate access policies.
- FargateLinux 
- FARGATE_LINUXFor IAM roles used with AWS Fargate profiles.
- EC2Linux
- EC2_LINUXFor IAM roles associated with self-managed Linux node groups. Allows the nodes to join the cluster.
- EC2Windows
- EC2_WINDOWSFor IAM roles associated with self-managed Windows node groups. Allows the nodes to join the cluster.
- EC2
- EC2For IAM roles associated with EC2 instances that need access policies. Allows the nodes to join the cluster.
- STANDARD
- STANDARDStandard Access Entry Workflow. Allows users to input a username and kubernetesGroup, and to associate access policies.
- FARGATE_LINUX
- FARGATE_LINUXFor IAM roles used with AWS Fargate profiles.
- EC2_LINUX
- EC2_LINUXFor IAM roles associated with self-managed Linux node groups. Allows the nodes to join the cluster.
- EC2_WINDOWS
- EC2_WINDOWSFor IAM roles associated with self-managed Windows node groups. Allows the nodes to join the cluster.
- EC2
- EC2For IAM roles associated with EC2 instances that need access policies. Allows the nodes to join the cluster.
- "STANDARD"
- STANDARDStandard Access Entry Workflow. Allows users to input a username and kubernetesGroup, and to associate access policies.
- "FARGATE_LINUX"
- FARGATE_LINUXFor IAM roles used with AWS Fargate profiles.
- "EC2_LINUX"
- EC2_LINUXFor IAM roles associated with self-managed Linux node groups. Allows the nodes to join the cluster.
- "EC2_WINDOWS"
- EC2_WINDOWSFor IAM roles associated with self-managed Windows node groups. Allows the nodes to join the cluster.
- "EC2"
- EC2For IAM roles associated with EC2 instances that need access policies. Allows the nodes to join the cluster.
AccessPolicyAssociation, AccessPolicyAssociationArgs      
- AccessScope Pulumi.Aws. Eks. Inputs. Access Policy Association Access Scope 
- The scope of the access policy association. This controls whether the access policy is scoped to the cluster or to a particular namespace. This type is defined in the AWS Classic package.
- PolicyArn string
- The ARN of the access policy to associate with the principal
- AccessScope AccessPolicy Association Access Scope 
- The scope of the access policy association. This controls whether the access policy is scoped to the cluster or to a particular namespace. This type is defined in the AWS Classic package.
- PolicyArn string
- The ARN of the access policy to associate with the principal
- accessScope AccessPolicy Association Access Scope 
- The scope of the access policy association. This controls whether the access policy is scoped to the cluster or to a particular namespace. This type is defined in the AWS Classic package.
- policyArn String
- The ARN of the access policy to associate with the principal
- accessScope pulumiAwstypesinputeks Access Policy Association Access Scope 
- The scope of the access policy association. This controls whether the access policy is scoped to the cluster or to a particular namespace. This type is defined in the AWS Classic package.
- policyArn string
- The ARN of the access policy to associate with the principal
- access_scope pulumi_aws.eks. Access Policy Association Access Scope Args 
- The scope of the access policy association. This controls whether the access policy is scoped to the cluster or to a particular namespace. This type is defined in the AWS Classic package.
- policy_arn str
- The ARN of the access policy to associate with the principal
- accessScope Property Map
- The scope of the access policy association. This controls whether the access policy is scoped to the cluster or to a particular namespace. This type is defined in the AWS Classic package.
- policyArn String
- The ARN of the access policy to associate with the principal
ClusterNodeGroupOptions, ClusterNodeGroupOptionsArgs        
- AmiId string
- The AMI ID to use for the worker nodes. - Defaults to the latest recommended EKS Optimized Linux AMI from the AWS Systems Manager Parameter Store. - Note: - amiIdand- gpuare mutually exclusive.- See for more details: - https://docs.aws.amazon.com/eks/latest/userguide/eks-optimized-ami.html.
 
- AmiType string
- The AMI Type to use for the worker nodes. - Only applicable when setting an AMI ID that is of type - arm64.- Note: - amiTypeand- gpuare mutually exclusive.
- Dictionary<string, string>
- The tags to apply to the NodeGroup's AutoScalingGroup in the CloudFormation Stack. - Per AWS, all stack-level tags, including automatically created tags, and the - cloudFormationTagsoption are propagated to resources that AWS CloudFormation supports, including the AutoScalingGroup. See https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-resource-tags.html- Note: Given the inheritance of auto-generated CF tags and - cloudFormationTags, you should either supply the tag in- autoScalingGroupTagsor- cloudFormationTags, but not both.
- BootstrapExtra stringArgs 
- Additional args to pass directly to /etc/eks/bootstrap.sh. For details on available options, see: https://github.com/awslabs/amazon-eks-ami/blob/master/files/bootstrap.sh. Note that the--apiserver-endpoint,--b64-cluster-caand--kubelet-extra-argsflags are included automatically based on other configuration parameters.
- BottlerocketSettings Dictionary<string, object>
- The configuration settings for Bottlerocket OS. The settings will get merged with the base settings the provider uses to configure Bottlerocket. - This includes: - settings.kubernetes.api-server
- settings.kubernetes.cluster-certificate
- settings.kubernetes.cluster-name
- settings.kubernetes.cluster-dns-ip
 - For an overview of the available settings, see https://bottlerocket.dev/en/os/1.20.x/api/settings/. 
- Dictionary<string, string>
- The tags to apply to the CloudFormation Stack of the Worker NodeGroup. - Note: Given the inheritance of auto-generated CF tags and - cloudFormationTags, you should either supply the tag in- autoScalingGroupTagsor- cloudFormationTags, but not both.
- ClusterIngress Pulumi.Rule Aws. Ec2. Security Group Rule 
- The ingress rule that gives node group access. This type is defined in the AWS Classic package.
- ClusterIngress stringRule Id 
- The ID of the ingress rule that gives node group access.
- DesiredCapacity int
- The number of worker nodes that should be running in the cluster. Defaults to 2.
- EnableDetailed boolMonitoring 
- Enables/disables detailed monitoring of the EC2 instances. - With detailed monitoring, all metrics, including status check metrics, are available in 1-minute intervals. When enabled, you can also get aggregated data across groups of similar instances. - Note: You are charged per metric that is sent to CloudWatch. You are not charged for data storage. For more information, see "Paid tier" and "Example 1 - EC2 Detailed Monitoring" here https://aws.amazon.com/cloudwatch/pricing/. 
- EncryptRoot boolBlock Device 
- Encrypt the root block device of the nodes in the node group.
- ExtraNode List<Pulumi.Security Groups Aws. Ec2. Security Group> 
- Extra security groups to attach on all nodes in this worker node group. - This additional set of security groups captures any user application rules that will be needed for the nodes. 
- Gpu bool
- Use the latest recommended EKS Optimized Linux AMI with GPU support for the worker nodes from the AWS Systems Manager Parameter Store. - Defaults to false. - Note: - gpuand- amiIdare mutually exclusive.- See for more details: - https://docs.aws.amazon.com/eks/latest/userguide/eks-optimized-ami.html
- https://docs.aws.amazon.com/eks/latest/userguide/retrieve-ami-id.html
 
- IgnoreScaling boolChanges 
- Whether to ignore changes to the desired size of the Auto Scaling Group. This is useful when using Cluster Autoscaler. - See EKS best practices for more details. 
- InstanceProfile Pulumi.Aws. Iam. Instance Profile 
- The IAM InstanceProfile to use on the NodeGroup. Properties instanceProfile and instanceProfileName are mutually exclusive. This type is defined in the AWS Classic package.
- InstanceProfile stringName 
- The name of the IAM InstanceProfile to use on the NodeGroup. Properties instanceProfile and instanceProfileName are mutually exclusive.
- InstanceType string
- The instance type to use for the cluster's nodes. Defaults to "t3.medium".
- KeyName string
- Name of the key pair to use for SSH access to worker nodes.
- KubeletExtra stringArgs 
- Extra args to pass to the Kubelet. Corresponds to the options passed in the --kubeletExtraArgsflag to/etc/eks/bootstrap.sh. For example, '--port=10251 --address=0.0.0.0'. Note that thelabelsandtaintsproperties will be applied to this list (using--node-labelsand--register-with-taintsrespectively) after to the explicitkubeletExtraArgs.
- Labels Dictionary<string, string>
- Custom k8s node labels to be attached to each worker node. Adds the given key/value pairs to the --node-labelskubelet argument.
- 
List<Pulumi.Aws. Ec2. Inputs. Launch Template Tag Specification> 
- The tag specifications to apply to the launch template.
- MaxSize int
- The maximum number of worker nodes running in the cluster. Defaults to 2.
- MinRefresh intPercentage 
- The minimum amount of instances that should remain available during an instance refresh, expressed as a percentage. Defaults to 50.
- MinSize int
- The minimum number of worker nodes running in the cluster. Defaults to 1.
- NodeAssociate boolPublic Ip Address 
- Whether or not to auto-assign public IP addresses on the EKS worker nodes. If this toggle is set to true, the EKS workers will be auto-assigned public IPs. If false, they will not be auto-assigned public IPs.
- NodePublic stringKey 
- Public key material for SSH access to worker nodes. See allowed formats at: https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-key-pairs.html If not provided, no SSH access is enabled on VMs.
- NodeRoot boolVolume Delete On Termination 
- Whether the root block device should be deleted on termination of the instance. Defaults to true.
- NodeRoot boolVolume Encrypted 
- Whether to encrypt a cluster node's root volume. Defaults to false.
- NodeRoot intVolume Iops 
- The amount of provisioned IOPS. This is only valid with a volumeType of 'io1'.
- NodeRoot intVolume Size 
- The size in GiB of a cluster node's root volume. Defaults to 20.
- NodeRoot intVolume Throughput 
- Provisioned throughput performance in integer MiB/s for a cluster node's root volume. This is only valid with a volumeType of 'gp3'.
- NodeRoot stringVolume Type 
- Configured EBS type for a cluster node's root volume. Default is 'gp2'. Supported values are 'standard', 'gp2', 'gp3', 'st1', 'sc1', 'io1'.
- NodeSecurity Pulumi.Group Aws. Ec2. Security Group 
- The security group for the worker node group to communicate with the cluster. - This security group requires specific inbound and outbound rules. - See for more details: https://docs.aws.amazon.com/eks/latest/userguide/sec-group-reqs.html - Note: The - nodeSecurityGroupoption and the cluster option- nodeSecurityGroupTagsare mutually exclusive. This type is defined in the AWS Classic package.
- NodeSecurity stringGroup Id 
- The ID of the security group for the worker node group to communicate with the cluster. - This security group requires specific inbound and outbound rules. - See for more details: https://docs.aws.amazon.com/eks/latest/userguide/sec-group-reqs.html - Note: The - nodeSecurityGroupIdoption and the cluster option- nodeSecurityGroupTagsare mutually exclusive.
- NodeSubnet List<string>Ids 
- The set of subnets to override and use for the worker node group. - Setting this option overrides which subnets to use for the worker node group, regardless if the cluster's - subnetIdsis set, or if- publicSubnetIdsand/or- privateSubnetIdswere set.
- NodeUser stringData 
- Extra code to run on node startup. This code will run after the AWS EKS bootstrapping code and before the node signals its readiness to the managing CloudFormation stack. This code must be a typical user data script: critically it must begin with an interpreter directive (i.e. a #!).
- NodeUser stringData Override 
- User specified code to run on node startup. This code is expected to handle the full AWS EKS bootstrapping code and signal node readiness to the managing CloudFormation stack. This code must be a complete and executable user data script in bash (Linux) or powershell (Windows). - See for more details: https://docs.aws.amazon.com/eks/latest/userguide/worker.html 
- NodeadmExtra List<NodeadmOptions Options> 
- Extra nodeadm configuration sections to be added to the nodeadm user data. This can be shell scripts, nodeadm NodeConfig or any other user data compatible script. When configuring additional nodeadm NodeConfig sections, they'll be merged with the base settings the provider sets. You can overwrite base settings or provide additional settings this way. The base settings the provider sets are: - cluster.name
- cluster.apiServerEndpoint
- cluster.certificateAuthority
- cluster.cidr
 - Note: This is only applicable when using AL2023. See for more details: - https://awslabs.github.io/amazon-eks-ami/nodeadm/
- https://awslabs.github.io/amazon-eks-ami/nodeadm/doc/api/
 
- OperatingSystem Pulumi.Eks. Operating System 
- The type of OS to use for the node group. Will be used to determine the right EKS optimized AMI to use based on the instance types and gpu configuration. Valid values are - RECOMMENDED,- AL2,- AL2023and- Bottlerocket.- Defaults to the current recommended OS. 
- SpotPrice string
- Bidding price for spot instance. If set, only spot instances will be added as worker node.
- Taints Dictionary<string, Taint>
- Custom k8s node taints to be attached to each worker node. Adds the given taints to the --register-with-taintskubelet argument
- Version string
- Desired Kubernetes master / control plane version. If you do not specify a value, the latest available version is used.
- AmiId string
- The AMI ID to use for the worker nodes. - Defaults to the latest recommended EKS Optimized Linux AMI from the AWS Systems Manager Parameter Store. - Note: - amiIdand- gpuare mutually exclusive.- See for more details: - https://docs.aws.amazon.com/eks/latest/userguide/eks-optimized-ami.html.
 
- AmiType string
- The AMI Type to use for the worker nodes. - Only applicable when setting an AMI ID that is of type - arm64.- Note: - amiTypeand- gpuare mutually exclusive.
- map[string]string
- The tags to apply to the NodeGroup's AutoScalingGroup in the CloudFormation Stack. - Per AWS, all stack-level tags, including automatically created tags, and the - cloudFormationTagsoption are propagated to resources that AWS CloudFormation supports, including the AutoScalingGroup. See https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-resource-tags.html- Note: Given the inheritance of auto-generated CF tags and - cloudFormationTags, you should either supply the tag in- autoScalingGroupTagsor- cloudFormationTags, but not both.
- BootstrapExtra stringArgs 
- Additional args to pass directly to /etc/eks/bootstrap.sh. For details on available options, see: https://github.com/awslabs/amazon-eks-ami/blob/master/files/bootstrap.sh. Note that the--apiserver-endpoint,--b64-cluster-caand--kubelet-extra-argsflags are included automatically based on other configuration parameters.
- BottlerocketSettings map[string]interface{}
- The configuration settings for Bottlerocket OS. The settings will get merged with the base settings the provider uses to configure Bottlerocket. - This includes: - settings.kubernetes.api-server
- settings.kubernetes.cluster-certificate
- settings.kubernetes.cluster-name
- settings.kubernetes.cluster-dns-ip
 - For an overview of the available settings, see https://bottlerocket.dev/en/os/1.20.x/api/settings/. 
- map[string]string
- The tags to apply to the CloudFormation Stack of the Worker NodeGroup. - Note: Given the inheritance of auto-generated CF tags and - cloudFormationTags, you should either supply the tag in- autoScalingGroupTagsor- cloudFormationTags, but not both.
- ClusterIngress SecurityRule Group Rule 
- The ingress rule that gives node group access. This type is defined in the AWS Classic package.
- ClusterIngress stringRule Id 
- The ID of the ingress rule that gives node group access.
- DesiredCapacity int
- The number of worker nodes that should be running in the cluster. Defaults to 2.
- EnableDetailed boolMonitoring 
- Enables/disables detailed monitoring of the EC2 instances. - With detailed monitoring, all metrics, including status check metrics, are available in 1-minute intervals. When enabled, you can also get aggregated data across groups of similar instances. - Note: You are charged per metric that is sent to CloudWatch. You are not charged for data storage. For more information, see "Paid tier" and "Example 1 - EC2 Detailed Monitoring" here https://aws.amazon.com/cloudwatch/pricing/. 
- EncryptRoot boolBlock Device 
- Encrypt the root block device of the nodes in the node group.
- ExtraNode SecuritySecurity Groups Group 
- Extra security groups to attach on all nodes in this worker node group. - This additional set of security groups captures any user application rules that will be needed for the nodes. 
- Gpu bool
- Use the latest recommended EKS Optimized Linux AMI with GPU support for the worker nodes from the AWS Systems Manager Parameter Store. - Defaults to false. - Note: - gpuand- amiIdare mutually exclusive.- See for more details: - https://docs.aws.amazon.com/eks/latest/userguide/eks-optimized-ami.html
- https://docs.aws.amazon.com/eks/latest/userguide/retrieve-ami-id.html
 
- IgnoreScaling boolChanges 
- Whether to ignore changes to the desired size of the Auto Scaling Group. This is useful when using Cluster Autoscaler. - See EKS best practices for more details. 
- InstanceProfile InstanceProfile 
- The IAM InstanceProfile to use on the NodeGroup. Properties instanceProfile and instanceProfileName are mutually exclusive. This type is defined in the AWS Classic package.
- InstanceProfile stringName 
- The name of the IAM InstanceProfile to use on the NodeGroup. Properties instanceProfile and instanceProfileName are mutually exclusive.
- InstanceType string
- The instance type to use for the cluster's nodes. Defaults to "t3.medium".
- KeyName string
- Name of the key pair to use for SSH access to worker nodes.
- KubeletExtra stringArgs 
- Extra args to pass to the Kubelet. Corresponds to the options passed in the --kubeletExtraArgsflag to/etc/eks/bootstrap.sh. For example, '--port=10251 --address=0.0.0.0'. Note that thelabelsandtaintsproperties will be applied to this list (using--node-labelsand--register-with-taintsrespectively) after to the explicitkubeletExtraArgs.
- Labels map[string]string
- Custom k8s node labels to be attached to each worker node. Adds the given key/value pairs to the --node-labelskubelet argument.
- 
LaunchTemplate Tag Specification 
- The tag specifications to apply to the launch template.
- MaxSize int
- The maximum number of worker nodes running in the cluster. Defaults to 2.
- MinRefresh intPercentage 
- The minimum amount of instances that should remain available during an instance refresh, expressed as a percentage. Defaults to 50.
- MinSize int
- The minimum number of worker nodes running in the cluster. Defaults to 1.
- NodeAssociate boolPublic Ip Address 
- Whether or not to auto-assign public IP addresses on the EKS worker nodes. If this toggle is set to true, the EKS workers will be auto-assigned public IPs. If false, they will not be auto-assigned public IPs.
- NodePublic stringKey 
- Public key material for SSH access to worker nodes. See allowed formats at: https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-key-pairs.html If not provided, no SSH access is enabled on VMs.
- NodeRoot boolVolume Delete On Termination 
- Whether the root block device should be deleted on termination of the instance. Defaults to true.
- NodeRoot boolVolume Encrypted 
- Whether to encrypt a cluster node's root volume. Defaults to false.
- NodeRoot intVolume Iops 
- The amount of provisioned IOPS. This is only valid with a volumeType of 'io1'.
- NodeRoot intVolume Size 
- The size in GiB of a cluster node's root volume. Defaults to 20.
- NodeRoot intVolume Throughput 
- Provisioned throughput performance in integer MiB/s for a cluster node's root volume. This is only valid with a volumeType of 'gp3'.
- NodeRoot stringVolume Type 
- Configured EBS type for a cluster node's root volume. Default is 'gp2'. Supported values are 'standard', 'gp2', 'gp3', 'st1', 'sc1', 'io1'.
- NodeSecurity SecurityGroup Group 
- The security group for the worker node group to communicate with the cluster. - This security group requires specific inbound and outbound rules. - See for more details: https://docs.aws.amazon.com/eks/latest/userguide/sec-group-reqs.html - Note: The - nodeSecurityGroupoption and the cluster option- nodeSecurityGroupTagsare mutually exclusive. This type is defined in the AWS Classic package.
- NodeSecurity stringGroup Id 
- The ID of the security group for the worker node group to communicate with the cluster. - This security group requires specific inbound and outbound rules. - See for more details: https://docs.aws.amazon.com/eks/latest/userguide/sec-group-reqs.html - Note: The - nodeSecurityGroupIdoption and the cluster option- nodeSecurityGroupTagsare mutually exclusive.
- NodeSubnet []stringIds 
- The set of subnets to override and use for the worker node group. - Setting this option overrides which subnets to use for the worker node group, regardless if the cluster's - subnetIdsis set, or if- publicSubnetIdsand/or- privateSubnetIdswere set.
- NodeUser stringData 
- Extra code to run on node startup. This code will run after the AWS EKS bootstrapping code and before the node signals its readiness to the managing CloudFormation stack. This code must be a typical user data script: critically it must begin with an interpreter directive (i.e. a #!).
- NodeUser stringData Override 
- User specified code to run on node startup. This code is expected to handle the full AWS EKS bootstrapping code and signal node readiness to the managing CloudFormation stack. This code must be a complete and executable user data script in bash (Linux) or powershell (Windows). - See for more details: https://docs.aws.amazon.com/eks/latest/userguide/worker.html 
- NodeadmExtra []NodeadmOptions Options 
- Extra nodeadm configuration sections to be added to the nodeadm user data. This can be shell scripts, nodeadm NodeConfig or any other user data compatible script. When configuring additional nodeadm NodeConfig sections, they'll be merged with the base settings the provider sets. You can overwrite base settings or provide additional settings this way. The base settings the provider sets are: - cluster.name
- cluster.apiServerEndpoint
- cluster.certificateAuthority
- cluster.cidr
 - Note: This is only applicable when using AL2023. See for more details: - https://awslabs.github.io/amazon-eks-ami/nodeadm/
- https://awslabs.github.io/amazon-eks-ami/nodeadm/doc/api/
 
- OperatingSystem OperatingSystem 
- The type of OS to use for the node group. Will be used to determine the right EKS optimized AMI to use based on the instance types and gpu configuration. Valid values are - RECOMMENDED,- AL2,- AL2023and- Bottlerocket.- Defaults to the current recommended OS. 
- SpotPrice string
- Bidding price for spot instance. If set, only spot instances will be added as worker node.
- Taints map[string]Taint
- Custom k8s node taints to be attached to each worker node. Adds the given taints to the --register-with-taintskubelet argument
- Version string
- Desired Kubernetes master / control plane version. If you do not specify a value, the latest available version is used.
- amiId String
- The AMI ID to use for the worker nodes. - Defaults to the latest recommended EKS Optimized Linux AMI from the AWS Systems Manager Parameter Store. - Note: - amiIdand- gpuare mutually exclusive.- See for more details: - https://docs.aws.amazon.com/eks/latest/userguide/eks-optimized-ami.html.
 
- amiType String
- The AMI Type to use for the worker nodes. - Only applicable when setting an AMI ID that is of type - arm64.- Note: - amiTypeand- gpuare mutually exclusive.
- Map<String,String>
- The tags to apply to the NodeGroup's AutoScalingGroup in the CloudFormation Stack. - Per AWS, all stack-level tags, including automatically created tags, and the - cloudFormationTagsoption are propagated to resources that AWS CloudFormation supports, including the AutoScalingGroup. See https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-resource-tags.html- Note: Given the inheritance of auto-generated CF tags and - cloudFormationTags, you should either supply the tag in- autoScalingGroupTagsor- cloudFormationTags, but not both.
- bootstrapExtra StringArgs 
- Additional args to pass directly to /etc/eks/bootstrap.sh. For details on available options, see: https://github.com/awslabs/amazon-eks-ami/blob/master/files/bootstrap.sh. Note that the--apiserver-endpoint,--b64-cluster-caand--kubelet-extra-argsflags are included automatically based on other configuration parameters.
- bottlerocketSettings Map<String,Object>
- The configuration settings for Bottlerocket OS. The settings will get merged with the base settings the provider uses to configure Bottlerocket. - This includes: - settings.kubernetes.api-server
- settings.kubernetes.cluster-certificate
- settings.kubernetes.cluster-name
- settings.kubernetes.cluster-dns-ip
 - For an overview of the available settings, see https://bottlerocket.dev/en/os/1.20.x/api/settings/. 
- Map<String,String>
- The tags to apply to the CloudFormation Stack of the Worker NodeGroup. - Note: Given the inheritance of auto-generated CF tags and - cloudFormationTags, you should either supply the tag in- autoScalingGroupTagsor- cloudFormationTags, but not both.
- clusterIngress SecurityRule Group Rule 
- The ingress rule that gives node group access. This type is defined in the AWS Classic package.
- clusterIngress StringRule Id 
- The ID of the ingress rule that gives node group access.
- desiredCapacity Integer
- The number of worker nodes that should be running in the cluster. Defaults to 2.
- enableDetailed BooleanMonitoring 
- Enables/disables detailed monitoring of the EC2 instances. - With detailed monitoring, all metrics, including status check metrics, are available in 1-minute intervals. When enabled, you can also get aggregated data across groups of similar instances. - Note: You are charged per metric that is sent to CloudWatch. You are not charged for data storage. For more information, see "Paid tier" and "Example 1 - EC2 Detailed Monitoring" here https://aws.amazon.com/cloudwatch/pricing/. 
- encryptRoot BooleanBlock Device 
- Encrypt the root block device of the nodes in the node group.
- extraNode List<SecuritySecurity Groups Group> 
- Extra security groups to attach on all nodes in this worker node group. - This additional set of security groups captures any user application rules that will be needed for the nodes. 
- gpu Boolean
- Use the latest recommended EKS Optimized Linux AMI with GPU support for the worker nodes from the AWS Systems Manager Parameter Store. - Defaults to false. - Note: - gpuand- amiIdare mutually exclusive.- See for more details: - https://docs.aws.amazon.com/eks/latest/userguide/eks-optimized-ami.html
- https://docs.aws.amazon.com/eks/latest/userguide/retrieve-ami-id.html
 
- ignoreScaling BooleanChanges 
- Whether to ignore changes to the desired size of the Auto Scaling Group. This is useful when using Cluster Autoscaler. - See EKS best practices for more details. 
- instanceProfile InstanceProfile 
- The IAM InstanceProfile to use on the NodeGroup. Properties instanceProfile and instanceProfileName are mutually exclusive. This type is defined in the AWS Classic package.
- instanceProfile StringName 
- The name of the IAM InstanceProfile to use on the NodeGroup. Properties instanceProfile and instanceProfileName are mutually exclusive.
- instanceType String
- The instance type to use for the cluster's nodes. Defaults to "t3.medium".
- keyName String
- Name of the key pair to use for SSH access to worker nodes.
- kubeletExtra StringArgs 
- Extra args to pass to the Kubelet. Corresponds to the options passed in the --kubeletExtraArgsflag to/etc/eks/bootstrap.sh. For example, '--port=10251 --address=0.0.0.0'. Note that thelabelsandtaintsproperties will be applied to this list (using--node-labelsand--register-with-taintsrespectively) after to the explicitkubeletExtraArgs.
- labels Map<String,String>
- Custom k8s node labels to be attached to each worker node. Adds the given key/value pairs to the --node-labelskubelet argument.
- 
List<LaunchTemplate Tag Specification> 
- The tag specifications to apply to the launch template.
- maxSize Integer
- The maximum number of worker nodes running in the cluster. Defaults to 2.
- minRefresh IntegerPercentage 
- The minimum amount of instances that should remain available during an instance refresh, expressed as a percentage. Defaults to 50.
- minSize Integer
- The minimum number of worker nodes running in the cluster. Defaults to 1.
- nodeAssociate BooleanPublic Ip Address 
- Whether or not to auto-assign public IP addresses on the EKS worker nodes. If this toggle is set to true, the EKS workers will be auto-assigned public IPs. If false, they will not be auto-assigned public IPs.
- nodePublic StringKey 
- Public key material for SSH access to worker nodes. See allowed formats at: https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-key-pairs.html If not provided, no SSH access is enabled on VMs.
- nodeRoot BooleanVolume Delete On Termination 
- Whether the root block device should be deleted on termination of the instance. Defaults to true.
- nodeRoot BooleanVolume Encrypted 
- Whether to encrypt a cluster node's root volume. Defaults to false.
- nodeRoot IntegerVolume Iops 
- The amount of provisioned IOPS. This is only valid with a volumeType of 'io1'.
- nodeRoot IntegerVolume Size 
- The size in GiB of a cluster node's root volume. Defaults to 20.
- nodeRoot IntegerVolume Throughput 
- Provisioned throughput performance in integer MiB/s for a cluster node's root volume. This is only valid with a volumeType of 'gp3'.
- nodeRoot StringVolume Type 
- Configured EBS type for a cluster node's root volume. Default is 'gp2'. Supported values are 'standard', 'gp2', 'gp3', 'st1', 'sc1', 'io1'.
- nodeSecurity SecurityGroup Group 
- The security group for the worker node group to communicate with the cluster. - This security group requires specific inbound and outbound rules. - See for more details: https://docs.aws.amazon.com/eks/latest/userguide/sec-group-reqs.html - Note: The - nodeSecurityGroupoption and the cluster option- nodeSecurityGroupTagsare mutually exclusive. This type is defined in the AWS Classic package.
- nodeSecurity StringGroup Id 
- The ID of the security group for the worker node group to communicate with the cluster. - This security group requires specific inbound and outbound rules. - See for more details: https://docs.aws.amazon.com/eks/latest/userguide/sec-group-reqs.html - Note: The - nodeSecurityGroupIdoption and the cluster option- nodeSecurityGroupTagsare mutually exclusive.
- nodeSubnet List<String>Ids 
- The set of subnets to override and use for the worker node group. - Setting this option overrides which subnets to use for the worker node group, regardless if the cluster's - subnetIdsis set, or if- publicSubnetIdsand/or- privateSubnetIdswere set.
- nodeUser StringData 
- Extra code to run on node startup. This code will run after the AWS EKS bootstrapping code and before the node signals its readiness to the managing CloudFormation stack. This code must be a typical user data script: critically it must begin with an interpreter directive (i.e. a #!).
- nodeUser StringData Override 
- User specified code to run on node startup. This code is expected to handle the full AWS EKS bootstrapping code and signal node readiness to the managing CloudFormation stack. This code must be a complete and executable user data script in bash (Linux) or powershell (Windows). - See for more details: https://docs.aws.amazon.com/eks/latest/userguide/worker.html 
- nodeadmExtra List<NodeadmOptions Options> 
- Extra nodeadm configuration sections to be added to the nodeadm user data. This can be shell scripts, nodeadm NodeConfig or any other user data compatible script. When configuring additional nodeadm NodeConfig sections, they'll be merged with the base settings the provider sets. You can overwrite base settings or provide additional settings this way. The base settings the provider sets are: - cluster.name
- cluster.apiServerEndpoint
- cluster.certificateAuthority
- cluster.cidr
 - Note: This is only applicable when using AL2023. See for more details: - https://awslabs.github.io/amazon-eks-ami/nodeadm/
- https://awslabs.github.io/amazon-eks-ami/nodeadm/doc/api/
 
- operatingSystem OperatingSystem 
- The type of OS to use for the node group. Will be used to determine the right EKS optimized AMI to use based on the instance types and gpu configuration. Valid values are - RECOMMENDED,- AL2,- AL2023and- Bottlerocket.- Defaults to the current recommended OS. 
- spotPrice String
- Bidding price for spot instance. If set, only spot instances will be added as worker node.
- taints Map<String,Taint>
- Custom k8s node taints to be attached to each worker node. Adds the given taints to the --register-with-taintskubelet argument
- version String
- Desired Kubernetes master / control plane version. If you do not specify a value, the latest available version is used.
- amiId string
- The AMI ID to use for the worker nodes. - Defaults to the latest recommended EKS Optimized Linux AMI from the AWS Systems Manager Parameter Store. - Note: - amiIdand- gpuare mutually exclusive.- See for more details: - https://docs.aws.amazon.com/eks/latest/userguide/eks-optimized-ami.html.
 
- amiType string
- The AMI Type to use for the worker nodes. - Only applicable when setting an AMI ID that is of type - arm64.- Note: - amiTypeand- gpuare mutually exclusive.
- {[key: string]: string}
- The tags to apply to the NodeGroup's AutoScalingGroup in the CloudFormation Stack. - Per AWS, all stack-level tags, including automatically created tags, and the - cloudFormationTagsoption are propagated to resources that AWS CloudFormation supports, including the AutoScalingGroup. See https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-resource-tags.html- Note: Given the inheritance of auto-generated CF tags and - cloudFormationTags, you should either supply the tag in- autoScalingGroupTagsor- cloudFormationTags, but not both.
- bootstrapExtra stringArgs 
- Additional args to pass directly to /etc/eks/bootstrap.sh. For details on available options, see: https://github.com/awslabs/amazon-eks-ami/blob/master/files/bootstrap.sh. Note that the--apiserver-endpoint,--b64-cluster-caand--kubelet-extra-argsflags are included automatically based on other configuration parameters.
- bottlerocketSettings {[key: string]: any}
- The configuration settings for Bottlerocket OS. The settings will get merged with the base settings the provider uses to configure Bottlerocket. - This includes: - settings.kubernetes.api-server
- settings.kubernetes.cluster-certificate
- settings.kubernetes.cluster-name
- settings.kubernetes.cluster-dns-ip
 - For an overview of the available settings, see https://bottlerocket.dev/en/os/1.20.x/api/settings/. 
- {[key: string]: string}
- The tags to apply to the CloudFormation Stack of the Worker NodeGroup. - Note: Given the inheritance of auto-generated CF tags and - cloudFormationTags, you should either supply the tag in- autoScalingGroupTagsor- cloudFormationTags, but not both.
- clusterIngress pulumiRule Awsec2Security Group Rule 
- The ingress rule that gives node group access. This type is defined in the AWS Classic package.
- clusterIngress stringRule Id 
- The ID of the ingress rule that gives node group access.
- desiredCapacity number
- The number of worker nodes that should be running in the cluster. Defaults to 2.
- enableDetailed booleanMonitoring 
- Enables/disables detailed monitoring of the EC2 instances. - With detailed monitoring, all metrics, including status check metrics, are available in 1-minute intervals. When enabled, you can also get aggregated data across groups of similar instances. - Note: You are charged per metric that is sent to CloudWatch. You are not charged for data storage. For more information, see "Paid tier" and "Example 1 - EC2 Detailed Monitoring" here https://aws.amazon.com/cloudwatch/pricing/. 
- encryptRoot booleanBlock Device 
- Encrypt the root block device of the nodes in the node group.
- extraNode pulumiSecurity Groups Awsec2Security Group[] 
- Extra security groups to attach on all nodes in this worker node group. - This additional set of security groups captures any user application rules that will be needed for the nodes. 
- gpu boolean
- Use the latest recommended EKS Optimized Linux AMI with GPU support for the worker nodes from the AWS Systems Manager Parameter Store. - Defaults to false. - Note: - gpuand- amiIdare mutually exclusive.- See for more details: - https://docs.aws.amazon.com/eks/latest/userguide/eks-optimized-ami.html
- https://docs.aws.amazon.com/eks/latest/userguide/retrieve-ami-id.html
 
- ignoreScaling booleanChanges 
- Whether to ignore changes to the desired size of the Auto Scaling Group. This is useful when using Cluster Autoscaler. - See EKS best practices for more details. 
- instanceProfile pulumiAwsiam Instance Profile 
- The IAM InstanceProfile to use on the NodeGroup. Properties instanceProfile and instanceProfileName are mutually exclusive. This type is defined in the AWS Classic package.
- instanceProfile stringName 
- The name of the IAM InstanceProfile to use on the NodeGroup. Properties instanceProfile and instanceProfileName are mutually exclusive.
- instanceType string
- The instance type to use for the cluster's nodes. Defaults to "t3.medium".
- keyName string
- Name of the key pair to use for SSH access to worker nodes.
- kubeletExtra stringArgs 
- Extra args to pass to the Kubelet. Corresponds to the options passed in the --kubeletExtraArgsflag to/etc/eks/bootstrap.sh. For example, '--port=10251 --address=0.0.0.0'. Note that thelabelsandtaintsproperties will be applied to this list (using--node-labelsand--register-with-taintsrespectively) after to the explicitkubeletExtraArgs.
- labels {[key: string]: string}
- Custom k8s node labels to be attached to each worker node. Adds the given key/value pairs to the --node-labelskubelet argument.
- 
pulumiAwstypesinputec2Launch Template Tag Specification[] 
- The tag specifications to apply to the launch template.
- maxSize number
- The maximum number of worker nodes running in the cluster. Defaults to 2.
- minRefresh numberPercentage 
- The minimum amount of instances that should remain available during an instance refresh, expressed as a percentage. Defaults to 50.
- minSize number
- The minimum number of worker nodes running in the cluster. Defaults to 1.
- nodeAssociate booleanPublic Ip Address 
- Whether or not to auto-assign public IP addresses on the EKS worker nodes. If this toggle is set to true, the EKS workers will be auto-assigned public IPs. If false, they will not be auto-assigned public IPs.
- nodePublic stringKey 
- Public key material for SSH access to worker nodes. See allowed formats at: https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-key-pairs.html If not provided, no SSH access is enabled on VMs.
- nodeRoot booleanVolume Delete On Termination 
- Whether the root block device should be deleted on termination of the instance. Defaults to true.
- nodeRoot booleanVolume Encrypted 
- Whether to encrypt a cluster node's root volume. Defaults to false.
- nodeRoot numberVolume Iops 
- The amount of provisioned IOPS. This is only valid with a volumeType of 'io1'.
- nodeRoot numberVolume Size 
- The size in GiB of a cluster node's root volume. Defaults to 20.
- nodeRoot numberVolume Throughput 
- Provisioned throughput performance in integer MiB/s for a cluster node's root volume. This is only valid with a volumeType of 'gp3'.
- nodeRoot stringVolume Type 
- Configured EBS type for a cluster node's root volume. Default is 'gp2'. Supported values are 'standard', 'gp2', 'gp3', 'st1', 'sc1', 'io1'.
- nodeSecurity pulumiGroup Awsec2Security Group 
- The security group for the worker node group to communicate with the cluster. - This security group requires specific inbound and outbound rules. - See for more details: https://docs.aws.amazon.com/eks/latest/userguide/sec-group-reqs.html - Note: The - nodeSecurityGroupoption and the cluster option- nodeSecurityGroupTagsare mutually exclusive. This type is defined in the AWS Classic package.
- nodeSecurity stringGroup Id 
- The ID of the security group for the worker node group to communicate with the cluster. - This security group requires specific inbound and outbound rules. - See for more details: https://docs.aws.amazon.com/eks/latest/userguide/sec-group-reqs.html - Note: The - nodeSecurityGroupIdoption and the cluster option- nodeSecurityGroupTagsare mutually exclusive.
- nodeSubnet string[]Ids 
- The set of subnets to override and use for the worker node group. - Setting this option overrides which subnets to use for the worker node group, regardless if the cluster's - subnetIdsis set, or if- publicSubnetIdsand/or- privateSubnetIdswere set.
- nodeUser stringData 
- Extra code to run on node startup. This code will run after the AWS EKS bootstrapping code and before the node signals its readiness to the managing CloudFormation stack. This code must be a typical user data script: critically it must begin with an interpreter directive (i.e. a #!).
- nodeUser stringData Override 
- User specified code to run on node startup. This code is expected to handle the full AWS EKS bootstrapping code and signal node readiness to the managing CloudFormation stack. This code must be a complete and executable user data script in bash (Linux) or powershell (Windows). - See for more details: https://docs.aws.amazon.com/eks/latest/userguide/worker.html 
- nodeadmExtra NodeadmOptions Options[] 
- Extra nodeadm configuration sections to be added to the nodeadm user data. This can be shell scripts, nodeadm NodeConfig or any other user data compatible script. When configuring additional nodeadm NodeConfig sections, they'll be merged with the base settings the provider sets. You can overwrite base settings or provide additional settings this way. The base settings the provider sets are: - cluster.name
- cluster.apiServerEndpoint
- cluster.certificateAuthority
- cluster.cidr
 - Note: This is only applicable when using AL2023. See for more details: - https://awslabs.github.io/amazon-eks-ami/nodeadm/
- https://awslabs.github.io/amazon-eks-ami/nodeadm/doc/api/
 
- operatingSystem OperatingSystem 
- The type of OS to use for the node group. Will be used to determine the right EKS optimized AMI to use based on the instance types and gpu configuration. Valid values are - RECOMMENDED,- AL2,- AL2023and- Bottlerocket.- Defaults to the current recommended OS. 
- spotPrice string
- Bidding price for spot instance. If set, only spot instances will be added as worker node.
- taints {[key: string]: Taint}
- Custom k8s node taints to be attached to each worker node. Adds the given taints to the --register-with-taintskubelet argument
- version string
- Desired Kubernetes master / control plane version. If you do not specify a value, the latest available version is used.
- ami_id str
- The AMI ID to use for the worker nodes. - Defaults to the latest recommended EKS Optimized Linux AMI from the AWS Systems Manager Parameter Store. - Note: - amiIdand- gpuare mutually exclusive.- See for more details: - https://docs.aws.amazon.com/eks/latest/userguide/eks-optimized-ami.html.
 
- ami_type str
- The AMI Type to use for the worker nodes. - Only applicable when setting an AMI ID that is of type - arm64.- Note: - amiTypeand- gpuare mutually exclusive.
- Mapping[str, str]
- The tags to apply to the NodeGroup's AutoScalingGroup in the CloudFormation Stack. - Per AWS, all stack-level tags, including automatically created tags, and the - cloudFormationTagsoption are propagated to resources that AWS CloudFormation supports, including the AutoScalingGroup. See https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-resource-tags.html- Note: Given the inheritance of auto-generated CF tags and - cloudFormationTags, you should either supply the tag in- autoScalingGroupTagsor- cloudFormationTags, but not both.
- bootstrap_extra_ strargs 
- Additional args to pass directly to /etc/eks/bootstrap.sh. For details on available options, see: https://github.com/awslabs/amazon-eks-ami/blob/master/files/bootstrap.sh. Note that the--apiserver-endpoint,--b64-cluster-caand--kubelet-extra-argsflags are included automatically based on other configuration parameters.
- bottlerocket_settings Mapping[str, Any]
- The configuration settings for Bottlerocket OS. The settings will get merged with the base settings the provider uses to configure Bottlerocket. - This includes: - settings.kubernetes.api-server
- settings.kubernetes.cluster-certificate
- settings.kubernetes.cluster-name
- settings.kubernetes.cluster-dns-ip
 - For an overview of the available settings, see https://bottlerocket.dev/en/os/1.20.x/api/settings/. 
- Mapping[str, str]
- The tags to apply to the CloudFormation Stack of the Worker NodeGroup. - Note: Given the inheritance of auto-generated CF tags and - cloudFormationTags, you should either supply the tag in- autoScalingGroupTagsor- cloudFormationTags, but not both.
- cluster_ingress_ pulumi_rule aws.ec2. Security Group Rule 
- The ingress rule that gives node group access. This type is defined in the AWS Classic package.
- cluster_ingress_ strrule_ id 
- The ID of the ingress rule that gives node group access.
- desired_capacity int
- The number of worker nodes that should be running in the cluster. Defaults to 2.
- enable_detailed_ boolmonitoring 
- Enables/disables detailed monitoring of the EC2 instances. - With detailed monitoring, all metrics, including status check metrics, are available in 1-minute intervals. When enabled, you can also get aggregated data across groups of similar instances. - Note: You are charged per metric that is sent to CloudWatch. You are not charged for data storage. For more information, see "Paid tier" and "Example 1 - EC2 Detailed Monitoring" here https://aws.amazon.com/cloudwatch/pricing/. 
- encrypt_root_ boolblock_ device 
- Encrypt the root block device of the nodes in the node group.
- extra_node_ Sequence[pulumi_security_ groups aws.ec2. Security Group] 
- Extra security groups to attach on all nodes in this worker node group. - This additional set of security groups captures any user application rules that will be needed for the nodes. 
- gpu bool
- Use the latest recommended EKS Optimized Linux AMI with GPU support for the worker nodes from the AWS Systems Manager Parameter Store. - Defaults to false. - Note: - gpuand- amiIdare mutually exclusive.- See for more details: - https://docs.aws.amazon.com/eks/latest/userguide/eks-optimized-ami.html
- https://docs.aws.amazon.com/eks/latest/userguide/retrieve-ami-id.html
 
- ignore_scaling_ boolchanges 
- Whether to ignore changes to the desired size of the Auto Scaling Group. This is useful when using Cluster Autoscaler. - See EKS best practices for more details. 
- instance_profile pulumi_aws.iam. Instance Profile 
- The IAM InstanceProfile to use on the NodeGroup. Properties instanceProfile and instanceProfileName are mutually exclusive. This type is defined in the AWS Classic package.
- instance_profile_ strname 
- The name of the IAM InstanceProfile to use on the NodeGroup. Properties instanceProfile and instanceProfileName are mutually exclusive.
- instance_type str
- The instance type to use for the cluster's nodes. Defaults to "t3.medium".
- key_name str
- Name of the key pair to use for SSH access to worker nodes.
- kubelet_extra_ strargs 
- Extra args to pass to the Kubelet. Corresponds to the options passed in the --kubeletExtraArgsflag to/etc/eks/bootstrap.sh. For example, '--port=10251 --address=0.0.0.0'. Note that thelabelsandtaintsproperties will be applied to this list (using--node-labelsand--register-with-taintsrespectively) after to the explicitkubeletExtraArgs.
- labels Mapping[str, str]
- Custom k8s node labels to be attached to each worker node. Adds the given key/value pairs to the --node-labelskubelet argument.
- launch_template_ Sequence[pulumi_tag_ specifications aws.ec2. Launch Template Tag Specification Args] 
- The tag specifications to apply to the launch template.
- max_size int
- The maximum number of worker nodes running in the cluster. Defaults to 2.
- min_refresh_ intpercentage 
- The minimum amount of instances that should remain available during an instance refresh, expressed as a percentage. Defaults to 50.
- min_size int
- The minimum number of worker nodes running in the cluster. Defaults to 1.
- node_associate_ boolpublic_ ip_ address 
- Whether or not to auto-assign public IP addresses on the EKS worker nodes. If this toggle is set to true, the EKS workers will be auto-assigned public IPs. If false, they will not be auto-assigned public IPs.
- node_public_ strkey 
- Public key material for SSH access to worker nodes. See allowed formats at: https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-key-pairs.html If not provided, no SSH access is enabled on VMs.
- node_root_ boolvolume_ delete_ on_ termination 
- Whether the root block device should be deleted on termination of the instance. Defaults to true.
- node_root_ boolvolume_ encrypted 
- Whether to encrypt a cluster node's root volume. Defaults to false.
- node_root_ intvolume_ iops 
- The amount of provisioned IOPS. This is only valid with a volumeType of 'io1'.
- node_root_ intvolume_ size 
- The size in GiB of a cluster node's root volume. Defaults to 20.
- node_root_ intvolume_ throughput 
- Provisioned throughput performance in integer MiB/s for a cluster node's root volume. This is only valid with a volumeType of 'gp3'.
- node_root_ strvolume_ type 
- Configured EBS type for a cluster node's root volume. Default is 'gp2'. Supported values are 'standard', 'gp2', 'gp3', 'st1', 'sc1', 'io1'.
- node_security_ pulumi_group aws.ec2. Security Group 
- The security group for the worker node group to communicate with the cluster. - This security group requires specific inbound and outbound rules. - See for more details: https://docs.aws.amazon.com/eks/latest/userguide/sec-group-reqs.html - Note: The - nodeSecurityGroupoption and the cluster option- nodeSecurityGroupTagsare mutually exclusive. This type is defined in the AWS Classic package.
- node_security_ strgroup_ id 
- The ID of the security group for the worker node group to communicate with the cluster. - This security group requires specific inbound and outbound rules. - See for more details: https://docs.aws.amazon.com/eks/latest/userguide/sec-group-reqs.html - Note: The - nodeSecurityGroupIdoption and the cluster option- nodeSecurityGroupTagsare mutually exclusive.
- node_subnet_ Sequence[str]ids 
- The set of subnets to override and use for the worker node group. - Setting this option overrides which subnets to use for the worker node group, regardless if the cluster's - subnetIdsis set, or if- publicSubnetIdsand/or- privateSubnetIdswere set.
- node_user_ strdata 
- Extra code to run on node startup. This code will run after the AWS EKS bootstrapping code and before the node signals its readiness to the managing CloudFormation stack. This code must be a typical user data script: critically it must begin with an interpreter directive (i.e. a #!).
- node_user_ strdata_ override 
- User specified code to run on node startup. This code is expected to handle the full AWS EKS bootstrapping code and signal node readiness to the managing CloudFormation stack. This code must be a complete and executable user data script in bash (Linux) or powershell (Windows). - See for more details: https://docs.aws.amazon.com/eks/latest/userguide/worker.html 
- nodeadm_extra_ Sequence[Nodeadmoptions Options] 
- Extra nodeadm configuration sections to be added to the nodeadm user data. This can be shell scripts, nodeadm NodeConfig or any other user data compatible script. When configuring additional nodeadm NodeConfig sections, they'll be merged with the base settings the provider sets. You can overwrite base settings or provide additional settings this way. The base settings the provider sets are: - cluster.name
- cluster.apiServerEndpoint
- cluster.certificateAuthority
- cluster.cidr
 - Note: This is only applicable when using AL2023. See for more details: - https://awslabs.github.io/amazon-eks-ami/nodeadm/
- https://awslabs.github.io/amazon-eks-ami/nodeadm/doc/api/
 
- operating_system OperatingSystem 
- The type of OS to use for the node group. Will be used to determine the right EKS optimized AMI to use based on the instance types and gpu configuration. Valid values are - RECOMMENDED,- AL2,- AL2023and- Bottlerocket.- Defaults to the current recommended OS. 
- spot_price str
- Bidding price for spot instance. If set, only spot instances will be added as worker node.
- taints Mapping[str, Taint]
- Custom k8s node taints to be attached to each worker node. Adds the given taints to the --register-with-taintskubelet argument
- version str
- Desired Kubernetes master / control plane version. If you do not specify a value, the latest available version is used.
- amiId String
- The AMI ID to use for the worker nodes. - Defaults to the latest recommended EKS Optimized Linux AMI from the AWS Systems Manager Parameter Store. - Note: - amiIdand- gpuare mutually exclusive.- See for more details: - https://docs.aws.amazon.com/eks/latest/userguide/eks-optimized-ami.html.
 
- amiType String
- The AMI Type to use for the worker nodes. - Only applicable when setting an AMI ID that is of type - arm64.- Note: - amiTypeand- gpuare mutually exclusive.
- Map<String>
- The tags to apply to the NodeGroup's AutoScalingGroup in the CloudFormation Stack. - Per AWS, all stack-level tags, including automatically created tags, and the - cloudFormationTagsoption are propagated to resources that AWS CloudFormation supports, including the AutoScalingGroup. See https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-resource-tags.html- Note: Given the inheritance of auto-generated CF tags and - cloudFormationTags, you should either supply the tag in- autoScalingGroupTagsor- cloudFormationTags, but not both.
- bootstrapExtra StringArgs 
- Additional args to pass directly to /etc/eks/bootstrap.sh. For details on available options, see: https://github.com/awslabs/amazon-eks-ami/blob/master/files/bootstrap.sh. Note that the--apiserver-endpoint,--b64-cluster-caand--kubelet-extra-argsflags are included automatically based on other configuration parameters.
- bottlerocketSettings Map<Any>
- The configuration settings for Bottlerocket OS. The settings will get merged with the base settings the provider uses to configure Bottlerocket. - This includes: - settings.kubernetes.api-server
- settings.kubernetes.cluster-certificate
- settings.kubernetes.cluster-name
- settings.kubernetes.cluster-dns-ip
 - For an overview of the available settings, see https://bottlerocket.dev/en/os/1.20.x/api/settings/. 
- Map<String>
- The tags to apply to the CloudFormation Stack of the Worker NodeGroup. - Note: Given the inheritance of auto-generated CF tags and - cloudFormationTags, you should either supply the tag in- autoScalingGroupTagsor- cloudFormationTags, but not both.
- clusterIngress aws:ec2:SecurityRule Group Rule 
- The ingress rule that gives node group access. This type is defined in the AWS Classic package.
- clusterIngress StringRule Id 
- The ID of the ingress rule that gives node group access.
- desiredCapacity Number
- The number of worker nodes that should be running in the cluster. Defaults to 2.
- enableDetailed BooleanMonitoring 
- Enables/disables detailed monitoring of the EC2 instances. - With detailed monitoring, all metrics, including status check metrics, are available in 1-minute intervals. When enabled, you can also get aggregated data across groups of similar instances. - Note: You are charged per metric that is sent to CloudWatch. You are not charged for data storage. For more information, see "Paid tier" and "Example 1 - EC2 Detailed Monitoring" here https://aws.amazon.com/cloudwatch/pricing/. 
- encryptRoot BooleanBlock Device 
- Encrypt the root block device of the nodes in the node group.
- extraNode List<aws:ec2:SecuritySecurity Groups Group> 
- Extra security groups to attach on all nodes in this worker node group. - This additional set of security groups captures any user application rules that will be needed for the nodes. 
- gpu Boolean
- Use the latest recommended EKS Optimized Linux AMI with GPU support for the worker nodes from the AWS Systems Manager Parameter Store. - Defaults to false. - Note: - gpuand- amiIdare mutually exclusive.- See for more details: - https://docs.aws.amazon.com/eks/latest/userguide/eks-optimized-ami.html
- https://docs.aws.amazon.com/eks/latest/userguide/retrieve-ami-id.html
 
- ignoreScaling BooleanChanges 
- Whether to ignore changes to the desired size of the Auto Scaling Group. This is useful when using Cluster Autoscaler. - See EKS best practices for more details. 
- instanceProfile aws:iam:InstanceProfile 
- The IAM InstanceProfile to use on the NodeGroup. Properties instanceProfile and instanceProfileName are mutually exclusive. This type is defined in the AWS Classic package.
- instanceProfile StringName 
- The name of the IAM InstanceProfile to use on the NodeGroup. Properties instanceProfile and instanceProfileName are mutually exclusive.
- instanceType String
- The instance type to use for the cluster's nodes. Defaults to "t3.medium".
- keyName String
- Name of the key pair to use for SSH access to worker nodes.
- kubeletExtra StringArgs 
- Extra args to pass to the Kubelet. Corresponds to the options passed in the --kubeletExtraArgsflag to/etc/eks/bootstrap.sh. For example, '--port=10251 --address=0.0.0.0'. Note that thelabelsandtaintsproperties will be applied to this list (using--node-labelsand--register-with-taintsrespectively) after to the explicitkubeletExtraArgs.
- labels Map<String>
- Custom k8s node labels to be attached to each worker node. Adds the given key/value pairs to the --node-labelskubelet argument.
- List<Property Map>
- The tag specifications to apply to the launch template.
- maxSize Number
- The maximum number of worker nodes running in the cluster. Defaults to 2.
- minRefresh NumberPercentage 
- The minimum amount of instances that should remain available during an instance refresh, expressed as a percentage. Defaults to 50.
- minSize Number
- The minimum number of worker nodes running in the cluster. Defaults to 1.
- nodeAssociate BooleanPublic Ip Address 
- Whether or not to auto-assign public IP addresses on the EKS worker nodes. If this toggle is set to true, the EKS workers will be auto-assigned public IPs. If false, they will not be auto-assigned public IPs.
- nodePublic StringKey 
- Public key material for SSH access to worker nodes. See allowed formats at: https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-key-pairs.html If not provided, no SSH access is enabled on VMs.
- nodeRoot BooleanVolume Delete On Termination 
- Whether the root block device should be deleted on termination of the instance. Defaults to true.
- nodeRoot BooleanVolume Encrypted 
- Whether to encrypt a cluster node's root volume. Defaults to false.
- nodeRoot NumberVolume Iops 
- The amount of provisioned IOPS. This is only valid with a volumeType of 'io1'.
- nodeRoot NumberVolume Size 
- The size in GiB of a cluster node's root volume. Defaults to 20.
- nodeRoot NumberVolume Throughput 
- Provisioned throughput performance in integer MiB/s for a cluster node's root volume. This is only valid with a volumeType of 'gp3'.
- nodeRoot StringVolume Type 
- Configured EBS type for a cluster node's root volume. Default is 'gp2'. Supported values are 'standard', 'gp2', 'gp3', 'st1', 'sc1', 'io1'.
- nodeSecurity aws:ec2:SecurityGroup Group 
- The security group for the worker node group to communicate with the cluster. - This security group requires specific inbound and outbound rules. - See for more details: https://docs.aws.amazon.com/eks/latest/userguide/sec-group-reqs.html - Note: The - nodeSecurityGroupoption and the cluster option- nodeSecurityGroupTagsare mutually exclusive. This type is defined in the AWS Classic package.
- nodeSecurity StringGroup Id 
- The ID of the security group for the worker node group to communicate with the cluster. - This security group requires specific inbound and outbound rules. - See for more details: https://docs.aws.amazon.com/eks/latest/userguide/sec-group-reqs.html - Note: The - nodeSecurityGroupIdoption and the cluster option- nodeSecurityGroupTagsare mutually exclusive.
- nodeSubnet List<String>Ids 
- The set of subnets to override and use for the worker node group. - Setting this option overrides which subnets to use for the worker node group, regardless if the cluster's - subnetIdsis set, or if- publicSubnetIdsand/or- privateSubnetIdswere set.
- nodeUser StringData 
- Extra code to run on node startup. This code will run after the AWS EKS bootstrapping code and before the node signals its readiness to the managing CloudFormation stack. This code must be a typical user data script: critically it must begin with an interpreter directive (i.e. a #!).
- nodeUser StringData Override 
- User specified code to run on node startup. This code is expected to handle the full AWS EKS bootstrapping code and signal node readiness to the managing CloudFormation stack. This code must be a complete and executable user data script in bash (Linux) or powershell (Windows). - See for more details: https://docs.aws.amazon.com/eks/latest/userguide/worker.html 
- nodeadmExtra List<Property Map>Options 
- Extra nodeadm configuration sections to be added to the nodeadm user data. This can be shell scripts, nodeadm NodeConfig or any other user data compatible script. When configuring additional nodeadm NodeConfig sections, they'll be merged with the base settings the provider sets. You can overwrite base settings or provide additional settings this way. The base settings the provider sets are: - cluster.name
- cluster.apiServerEndpoint
- cluster.certificateAuthority
- cluster.cidr
 - Note: This is only applicable when using AL2023. See for more details: - https://awslabs.github.io/amazon-eks-ami/nodeadm/
- https://awslabs.github.io/amazon-eks-ami/nodeadm/doc/api/
 
- operatingSystem "AL2" | "AL2023" | "Bottlerocket" | "AL2023"
- The type of OS to use for the node group. Will be used to determine the right EKS optimized AMI to use based on the instance types and gpu configuration. Valid values are - RECOMMENDED,- AL2,- AL2023and- Bottlerocket.- Defaults to the current recommended OS. 
- spotPrice String
- Bidding price for spot instance. If set, only spot instances will be added as worker node.
- taints Map<Property Map>
- Custom k8s node taints to be attached to each worker node. Adds the given taints to the --register-with-taintskubelet argument
- version String
- Desired Kubernetes master / control plane version. If you do not specify a value, the latest available version is used.
CoreData, CoreDataArgs    
- Cluster
Pulumi.Aws. Eks. Cluster 
- This type is defined in the AWS Classic package.
- ClusterIam Pulumi.Role Aws. Iam. Role 
- The IAM Role attached to the EKS Cluster This type is defined in the AWS Classic package.
- Endpoint string
- The EKS cluster's Kubernetes API server endpoint.
- InstanceRoles List<Pulumi.Aws. Iam. Role> 
- The IAM instance roles for the cluster's nodes.
- NodeGroup ClusterOptions Node Group Options 
- The cluster's node group options.
- Provider
Pulumi.Kubernetes. Provider 
- This type is defined in the pulumi package.
- SubnetIds List<string>
- List of subnet IDs for the EKS cluster.
- VpcId string
- ID of the cluster's VPC.
- AccessEntries List<AccessEntry> 
- The access entries added to the cluster.
- AwsProvider Pulumi.Aws. Provider 
- This type is defined in the pulumi package.
- ClusterSecurity Pulumi.Group Aws. Ec2. Security Group 
- This type is defined in the AWS Classic package.
- EksNode Pulumi.Access Kubernetes. Core. V1. Config Map 
- This type is defined in the Kubernetes package.
- EncryptionConfig Pulumi.Aws. Eks. Inputs. Cluster Encryption Config 
- This type is defined in the AWS Classic package.
- FargateProfile Pulumi.Aws. Eks. Fargate Profile 
- The Fargate profile used to manage which pods run on Fargate. This type is defined in the AWS Classic package.
- Kubeconfig object
- The kubeconfig file for the cluster.
- Dictionary<string, string>
- Tags attached to the security groups associated with the cluster's worker nodes.
- OidcProvider Pulumi.Aws. Iam. Open Id Connect Provider 
- This type is defined in the AWS Classic package.
- PrivateSubnet List<string>Ids 
- List of subnet IDs for the private subnets.
- PublicSubnet List<string>Ids 
- List of subnet IDs for the public subnets.
- StorageClasses Dictionary<string, Pulumi.Kubernetes. Storage. V1. Storage Class> 
- The storage class used for persistent storage by the cluster.
- Dictionary<string, string>
- A map of tags assigned to the EKS cluster.
- VpcCni Pulumi.Eks. Vpc Cni Addon 
- The VPC CNI for the cluster.
- Cluster Cluster
- This type is defined in the AWS Classic package.
- ClusterIam RoleRole 
- The IAM Role attached to the EKS Cluster This type is defined in the AWS Classic package.
- Endpoint string
- The EKS cluster's Kubernetes API server endpoint.
- InstanceRoles Role
- The IAM instance roles for the cluster's nodes.
- NodeGroup ClusterOptions Node Group Options 
- The cluster's node group options.
- Provider Provider
- This type is defined in the pulumi package.
- SubnetIds []string
- List of subnet IDs for the EKS cluster.
- VpcId string
- ID of the cluster's VPC.
- AccessEntries []AccessEntry 
- The access entries added to the cluster.
- AwsProvider Provider
- This type is defined in the pulumi package.
- ClusterSecurity SecurityGroup Group 
- This type is defined in the AWS Classic package.
- EksNode ConfigAccess Map 
- This type is defined in the Kubernetes package.
- EncryptionConfig ClusterEncryption Config 
- This type is defined in the AWS Classic package.
- FargateProfile FargateProfile 
- The Fargate profile used to manage which pods run on Fargate. This type is defined in the AWS Classic package.
- Kubeconfig interface{}
- The kubeconfig file for the cluster.
- map[string]string
- Tags attached to the security groups associated with the cluster's worker nodes.
- OidcProvider OpenId Connect Provider 
- This type is defined in the AWS Classic package.
- PrivateSubnet []stringIds 
- List of subnet IDs for the private subnets.
- PublicSubnet []stringIds 
- List of subnet IDs for the public subnets.
- StorageClasses StorageClass 
- The storage class used for persistent storage by the cluster.
- map[string]string
- A map of tags assigned to the EKS cluster.
- VpcCni VpcCni Addon 
- The VPC CNI for the cluster.
- cluster Cluster
- This type is defined in the AWS Classic package.
- clusterIam RoleRole 
- The IAM Role attached to the EKS Cluster This type is defined in the AWS Classic package.
- endpoint String
- The EKS cluster's Kubernetes API server endpoint.
- instanceRoles List<Role>
- The IAM instance roles for the cluster's nodes.
- nodeGroup ClusterOptions Node Group Options 
- The cluster's node group options.
- provider Provider
- This type is defined in the pulumi package.
- subnetIds List<String>
- List of subnet IDs for the EKS cluster.
- vpcId String
- ID of the cluster's VPC.
- accessEntries List<AccessEntry> 
- The access entries added to the cluster.
- awsProvider Provider
- This type is defined in the pulumi package.
- clusterSecurity SecurityGroup Group 
- This type is defined in the AWS Classic package.
- eksNode ConfigAccess Map 
- This type is defined in the Kubernetes package.
- encryptionConfig ClusterEncryption Config 
- This type is defined in the AWS Classic package.
- fargateProfile FargateProfile 
- The Fargate profile used to manage which pods run on Fargate. This type is defined in the AWS Classic package.
- kubeconfig Object
- The kubeconfig file for the cluster.
- Map<String,String>
- Tags attached to the security groups associated with the cluster's worker nodes.
- oidcProvider OpenId Connect Provider 
- This type is defined in the AWS Classic package.
- privateSubnet List<String>Ids 
- List of subnet IDs for the private subnets.
- publicSubnet List<String>Ids 
- List of subnet IDs for the public subnets.
- storageClasses Map<String,StorageClass> 
- The storage class used for persistent storage by the cluster.
- Map<String,String>
- A map of tags assigned to the EKS cluster.
- vpcCni VpcCni Addon 
- The VPC CNI for the cluster.
- cluster
pulumiAwseks Cluster 
- This type is defined in the AWS Classic package.
- clusterIam pulumiRole Awsiam Role 
- The IAM Role attached to the EKS Cluster This type is defined in the AWS Classic package.
- endpoint string
- The EKS cluster's Kubernetes API server endpoint.
- instanceRoles pulumiAwsiam Role[] 
- The IAM instance roles for the cluster's nodes.
- nodeGroup ClusterOptions Node Group Options 
- The cluster's node group options.
- provider
pulumiKubernetes Provider 
- This type is defined in the pulumi package.
- subnetIds string[]
- List of subnet IDs for the EKS cluster.
- vpcId string
- ID of the cluster's VPC.
- accessEntries AccessEntry[] 
- The access entries added to the cluster.
- awsProvider pulumiAws Provider 
- This type is defined in the pulumi package.
- clusterSecurity pulumiGroup Awsec2Security Group 
- This type is defined in the AWS Classic package.
- eksNode pulumiAccess Kubernetescorev1Config Map 
- This type is defined in the Kubernetes package.
- encryptionConfig pulumiAwstypesinputeks Cluster Encryption Config 
- This type is defined in the AWS Classic package.
- fargateProfile pulumiAwseks Fargate Profile 
- The Fargate profile used to manage which pods run on Fargate. This type is defined in the AWS Classic package.
- kubeconfig any
- The kubeconfig file for the cluster.
- {[key: string]: string}
- Tags attached to the security groups associated with the cluster's worker nodes.
- oidcProvider pulumiAwsiam Open Id Connect Provider 
- This type is defined in the AWS Classic package.
- privateSubnet string[]Ids 
- List of subnet IDs for the private subnets.
- publicSubnet string[]Ids 
- List of subnet IDs for the public subnets.
- storageClasses {[key: string]: pulumiKubernetesstoragev1Storage Class} 
- The storage class used for persistent storage by the cluster.
- {[key: string]: string}
- A map of tags assigned to the EKS cluster.
- vpcCni VpcCni Addon 
- The VPC CNI for the cluster.
- cluster
pulumi_aws.eks. Cluster 
- This type is defined in the AWS Classic package.
- cluster_iam_ pulumi_role aws.iam. Role 
- The IAM Role attached to the EKS Cluster This type is defined in the AWS Classic package.
- endpoint str
- The EKS cluster's Kubernetes API server endpoint.
- instance_roles Sequence[pulumi_aws.iam. Role] 
- The IAM instance roles for the cluster's nodes.
- node_group_ Clusteroptions Node Group Options 
- The cluster's node group options.
- provider
pulumi_kubernetes. Provider 
- This type is defined in the pulumi package.
- subnet_ids Sequence[str]
- List of subnet IDs for the EKS cluster.
- vpc_id str
- ID of the cluster's VPC.
- access_entries Sequence[AccessEntry] 
- The access entries added to the cluster.
- aws_provider pulumi_aws. Provider 
- This type is defined in the pulumi package.
- cluster_security_ pulumi_group aws.ec2. Security Group 
- This type is defined in the AWS Classic package.
- eks_node_ pulumi_access kubernetes.core.v1. Config Map 
- This type is defined in the Kubernetes package.
- encryption_config pulumi_aws.eks. Cluster Encryption Config Args 
- This type is defined in the AWS Classic package.
- fargate_profile pulumi_aws.eks. Fargate Profile 
- The Fargate profile used to manage which pods run on Fargate. This type is defined in the AWS Classic package.
- kubeconfig Any
- The kubeconfig file for the cluster.
- Mapping[str, str]
- Tags attached to the security groups associated with the cluster's worker nodes.
- oidc_provider pulumi_aws.iam. Open Id Connect Provider 
- This type is defined in the AWS Classic package.
- private_subnet_ Sequence[str]ids 
- List of subnet IDs for the private subnets.
- public_subnet_ Sequence[str]ids 
- List of subnet IDs for the public subnets.
- storage_classes Mapping[str, pulumi_kubernetes.storage.v1. Storage Class] 
- The storage class used for persistent storage by the cluster.
- Mapping[str, str]
- A map of tags assigned to the EKS cluster.
- vpc_cni VpcCni Addon 
- The VPC CNI for the cluster.
- cluster aws:eks:Cluster
- This type is defined in the AWS Classic package.
- clusterIam aws:iam:RoleRole 
- The IAM Role attached to the EKS Cluster This type is defined in the AWS Classic package.
- endpoint String
- The EKS cluster's Kubernetes API server endpoint.
- instanceRoles List<aws:iam:Role>
- The IAM instance roles for the cluster's nodes.
- nodeGroup Property MapOptions 
- The cluster's node group options.
- provider pulumi:providers:kubernetes
- This type is defined in the pulumi package.
- subnetIds List<String>
- List of subnet IDs for the EKS cluster.
- vpcId String
- ID of the cluster's VPC.
- accessEntries List<Property Map>
- The access entries added to the cluster.
- awsProvider pulumi:providers:aws
- This type is defined in the pulumi package.
- clusterSecurity aws:ec2:SecurityGroup Group 
- This type is defined in the AWS Classic package.
- eksNode kubernetes:core/v1:ConfigAccess Map 
- This type is defined in the Kubernetes package.
- encryptionConfig Property Map
- This type is defined in the AWS Classic package.
- fargateProfile aws:eks:FargateProfile 
- The Fargate profile used to manage which pods run on Fargate. This type is defined in the AWS Classic package.
- kubeconfig Any
- The kubeconfig file for the cluster.
- Map<String>
- Tags attached to the security groups associated with the cluster's worker nodes.
- oidcProvider aws:iam:OpenId Connect Provider 
- This type is defined in the AWS Classic package.
- privateSubnet List<String>Ids 
- List of subnet IDs for the private subnets.
- publicSubnet List<String>Ids 
- List of subnet IDs for the public subnets.
- storageClasses Map<kubernetes:storage.k8s.io/v1:StorageClass> 
- The storage class used for persistent storage by the cluster.
- Map<String>
- A map of tags assigned to the EKS cluster.
- vpcCni eks:VpcCni Addon 
- The VPC CNI for the cluster.
NodeadmOptions, NodeadmOptionsArgs    
- Content string
- The actual content of the MIME document part, such as shell script code or nodeadm configuration. Must be compatible with the specified contentType.
- ContentType string
- The MIME type of the content. Examples are text/x-shellscript; charset="us-ascii"for shell scripts, andapplication/node.eks.awsnodeadm configuration.
- Content string
- The actual content of the MIME document part, such as shell script code or nodeadm configuration. Must be compatible with the specified contentType.
- ContentType string
- The MIME type of the content. Examples are text/x-shellscript; charset="us-ascii"for shell scripts, andapplication/node.eks.awsnodeadm configuration.
- content String
- The actual content of the MIME document part, such as shell script code or nodeadm configuration. Must be compatible with the specified contentType.
- contentType String
- The MIME type of the content. Examples are text/x-shellscript; charset="us-ascii"for shell scripts, andapplication/node.eks.awsnodeadm configuration.
- content string
- The actual content of the MIME document part, such as shell script code or nodeadm configuration. Must be compatible with the specified contentType.
- contentType string
- The MIME type of the content. Examples are text/x-shellscript; charset="us-ascii"for shell scripts, andapplication/node.eks.awsnodeadm configuration.
- content str
- The actual content of the MIME document part, such as shell script code or nodeadm configuration. Must be compatible with the specified contentType.
- content_type str
- The MIME type of the content. Examples are text/x-shellscript; charset="us-ascii"for shell scripts, andapplication/node.eks.awsnodeadm configuration.
- content String
- The actual content of the MIME document part, such as shell script code or nodeadm configuration. Must be compatible with the specified contentType.
- contentType String
- The MIME type of the content. Examples are text/x-shellscript; charset="us-ascii"for shell scripts, andapplication/node.eks.awsnodeadm configuration.
OperatingSystem, OperatingSystemArgs    
- AL2
- AL2EKS optimized OS based on Amazon Linux 2 (AL2).
- AL2023
- AL2023EKS optimized OS based on Amazon Linux 2023 (AL2023). See for more details: https://docs.aws.amazon.com/eks/latest/userguide/eks-optimized-ami.html
- Bottlerocket
- BottlerocketEKS optimized Container OS based on Bottlerocket. See for more details: https://docs.aws.amazon.com/eks/latest/userguide/eks-optimized-ami-bottlerocket.html
- RECOMMENDED
- AL2023The recommended EKS optimized OS. Currently Amazon Linux 2023 (AL2023). This will be kept up to date with AWS' recommendations for EKS optimized operating systems. See for more details: https://docs.aws.amazon.com/eks/latest/userguide/eks-optimized-ami.html 
- OperatingSystem AL2 
- AL2EKS optimized OS based on Amazon Linux 2 (AL2).
- OperatingSystem AL2023 
- AL2023EKS optimized OS based on Amazon Linux 2023 (AL2023). See for more details: https://docs.aws.amazon.com/eks/latest/userguide/eks-optimized-ami.html
- OperatingSystem Bottlerocket 
- BottlerocketEKS optimized Container OS based on Bottlerocket. See for more details: https://docs.aws.amazon.com/eks/latest/userguide/eks-optimized-ami-bottlerocket.html
- OperatingSystem RECOMMENDED 
- AL2023The recommended EKS optimized OS. Currently Amazon Linux 2023 (AL2023). This will be kept up to date with AWS' recommendations for EKS optimized operating systems. See for more details: https://docs.aws.amazon.com/eks/latest/userguide/eks-optimized-ami.html 
- AL2
- AL2EKS optimized OS based on Amazon Linux 2 (AL2).
- AL2023
- AL2023EKS optimized OS based on Amazon Linux 2023 (AL2023). See for more details: https://docs.aws.amazon.com/eks/latest/userguide/eks-optimized-ami.html
- Bottlerocket
- BottlerocketEKS optimized Container OS based on Bottlerocket. See for more details: https://docs.aws.amazon.com/eks/latest/userguide/eks-optimized-ami-bottlerocket.html
- RECOMMENDED
- AL2023The recommended EKS optimized OS. Currently Amazon Linux 2023 (AL2023). This will be kept up to date with AWS' recommendations for EKS optimized operating systems. See for more details: https://docs.aws.amazon.com/eks/latest/userguide/eks-optimized-ami.html 
- AL2
- AL2EKS optimized OS based on Amazon Linux 2 (AL2).
- AL2023
- AL2023EKS optimized OS based on Amazon Linux 2023 (AL2023). See for more details: https://docs.aws.amazon.com/eks/latest/userguide/eks-optimized-ami.html
- Bottlerocket
- BottlerocketEKS optimized Container OS based on Bottlerocket. See for more details: https://docs.aws.amazon.com/eks/latest/userguide/eks-optimized-ami-bottlerocket.html
- RECOMMENDED
- AL2023The recommended EKS optimized OS. Currently Amazon Linux 2023 (AL2023). This will be kept up to date with AWS' recommendations for EKS optimized operating systems. See for more details: https://docs.aws.amazon.com/eks/latest/userguide/eks-optimized-ami.html 
- AL2
- AL2EKS optimized OS based on Amazon Linux 2 (AL2).
- AL2023
- AL2023EKS optimized OS based on Amazon Linux 2023 (AL2023). See for more details: https://docs.aws.amazon.com/eks/latest/userguide/eks-optimized-ami.html
- BOTTLEROCKET
- BottlerocketEKS optimized Container OS based on Bottlerocket. See for more details: https://docs.aws.amazon.com/eks/latest/userguide/eks-optimized-ami-bottlerocket.html
- RECOMMENDED
- AL2023The recommended EKS optimized OS. Currently Amazon Linux 2023 (AL2023). This will be kept up to date with AWS' recommendations for EKS optimized operating systems. See for more details: https://docs.aws.amazon.com/eks/latest/userguide/eks-optimized-ami.html 
- "AL2"
- AL2EKS optimized OS based on Amazon Linux 2 (AL2).
- "AL2023"
- AL2023EKS optimized OS based on Amazon Linux 2023 (AL2023). See for more details: https://docs.aws.amazon.com/eks/latest/userguide/eks-optimized-ami.html
- "Bottlerocket"
- BottlerocketEKS optimized Container OS based on Bottlerocket. See for more details: https://docs.aws.amazon.com/eks/latest/userguide/eks-optimized-ami-bottlerocket.html
- "AL2023"
- AL2023The recommended EKS optimized OS. Currently Amazon Linux 2023 (AL2023). This will be kept up to date with AWS' recommendations for EKS optimized operating systems. See for more details: https://docs.aws.amazon.com/eks/latest/userguide/eks-optimized-ami.html 
Taint, TaintArgs  
Package Details
- Repository
- Amazon EKS pulumi/pulumi-eks
- License
- Apache-2.0