Cluster L2 construct
A Cluster represents a managed Kubernetes Service (EKS).
This is a fully managed cluster of API Servers (control-plane) The user is still required to create the worker nodes.
Example
import { KubectlV36Layer } from '@aws-cdk/lambda-layer-kubectl-v36';
const cluster = new eks.Cluster(this, 'HelloEKS', {
version: eks.KubernetesVersion.V1_36,
defaultCapacity: 0,
kubectlLayer: new KubectlV36Layer(this, 'kubectl'),
});
cluster.addNodegroupCapacity('custom-node-group', {
instanceTypes: [new ec2.InstanceType('m5.large')],
minSize: 4,
diskSize: 100,
});
from aws_cdk.lambda_layer_kubectl_v36 import KubectlV36Layer
cluster = eks.Cluster(self, "HelloEKS",
version=eks.KubernetesVersion.V1_36,
default_capacity=0,
kubectl_layer=KubectlV36Layer(self, "kubectl")
)
cluster.add_nodegroup_capacity("custom-node-group",
instance_types=[ec2.InstanceType("m5.large")],
min_size=4,
disk_size=100
)
import software.amazon.awscdk.cdk.lambdalayer.kubectl.v36.KubectlV36Layer;
Cluster cluster = Cluster.Builder.create(this, "HelloEKS")
.version(KubernetesVersion.V1_36)
.defaultCapacity(0)
.kubectlLayer(new KubectlV36Layer(this, "kubectl"))
.build();
cluster.addNodegroupCapacity("custom-node-group", NodegroupOptions.builder()
.instanceTypes(List.of(new InstanceType("m5.large")))
.minSize(4)
.diskSize(100)
.build());
// Install: dotnet add package Amazon.CDK.Lib
using Amazon.CDK.LambdaLayer.KubectlV36;
var cluster = new Cluster(this, "HelloEKS", new ClusterProps {
Version = KubernetesVersion.V1_36,
DefaultCapacity = 0,
KubectlLayer = new KubectlV36Layer(this, "kubectl")
});
cluster.AddNodegroupCapacity("custom-node-group", new NodegroupOptions {
InstanceTypes = new [] { new InstanceType("m5.large") },
MinSize = 4,
DiskSize = 100
});
// Install: go get github.com/aws/aws-cdk-go/awscdk/v2
import "github.com/cdklabs/awscdk-kubectl-go/kubectlv36"
cluster := eks.NewCluster(this, jsii.String("HelloEKS"), &ClusterProps{
Version: eks.KubernetesVersion_V1_36(),
DefaultCapacity: jsii.Number(0),
KubectlLayer: kubectlv36.NewKubectlV36Layer(this, jsii.String("kubectl")),
})
cluster.AddNodegroupCapacity(jsii.String("custom-node-group"), &NodegroupOptions{
InstanceTypes: []InstanceType{
ec2.NewInstanceType(jsii.String("m5.large")),
},
MinSize: jsii.Number(4),
DiskSize: jsii.Number(100),
})
Initializer
new Cluster(scope: Construct, id: string, props: ClusterProps)
Cluster(scope: Construct, id: str, props: ClusterProps)
new Cluster(Construct scope, String id, ClusterProps props)
new Cluster(Construct scope, string id, ClusterProps props)
NewCluster(Scope Construct, Id *string, Props ClusterProps)
Construct Props
albControllerAlbControllerOptionsalb_controllerAlbControllerOptionsalbControllerAlbControllerOptionsAlbControllerAlbControllerOptionsAlbControllerAlbControllerOptions= The controller is not installed.#authenticationModeAuthenticationModeauthentication_modeAuthenticationModeauthenticationModeAuthenticationModeAuthenticationModeAuthenticationModeAuthenticationModeAuthenticationMode= AuthenticationMode.CONFIG_MAP#awscliLayerILayerVersionawscli_layerILayerVersionawscliLayerILayerVersionAwscliLayerILayerVersionAwscliLayerILayerVersion= a default layer with the AWS CLI…#The handler expects the layer to include the following executables:
/opt/awscli/aws
default
Default: a default layer with the AWS CLI 1.x
bootstrapClusterCreatorAdminPermissionsbooleanbootstrap_cluster_creator_admin_permissionsboolbootstrapClusterCreatorAdminPermissionsBooleanBootstrapClusterCreatorAdminPermissionsboolBootstrapClusterCreatorAdminPermissions*bool= true#Changing this value after the cluster has been created will result in the cluster being replaced.
bootstrapSelfManagedAddonsbooleanbootstrap_self_managed_addonsboolbootstrapSelfManagedAddonsBooleanBootstrapSelfManagedAddonsboolBootstrapSelfManagedAddons*bool= true#notes
The default networking addons include vpc-cni, coredns, and kube-proxy. Use this option when you plan to install third-party alternative add-ons or self-manage the default networking add-ons.
Changing this value after the cluster has been created will result in the cluster being replaced.
clusterHandlerEnvironment{ [key: string]: string }cluster_handler_environmenttyping.Mapping[str, str]clusterHandlerEnvironmentMap<String, String>ClusterHandlerEnvironmentIDictionary<string, string>ClusterHandlerEnvironment*map[string]*string= No environment variables.#clusterHandlerSecurityGroupISecurityGroupcluster_handler_security_groupISecurityGroupclusterHandlerSecurityGroupISecurityGroupClusterHandlerSecurityGroupISecurityGroupClusterHandlerSecurityGroupISecurityGroup= No security group.#The Cluster Handler's Lambdas are responsible for calling AWS's EKS API.
Requires placeClusterHandlerInVpc to be set to true.
clusterLoggingClusterLoggingTypes[]cluster_loggingtyping.List[ClusterLoggingTypes]clusterLoggingList<ClusterLoggingTypes>ClusterLoggingClusterLoggingTypes[]ClusterLogging*[]ClusterLoggingTypes= none#clusterNamestringcluster_namestrclusterNameStringClusterNamestringClusterName*string= Automatically generated name#controlPlaneScalingTierControlPlaneScalingTiercontrol_plane_scaling_tierControlPlaneScalingTiercontrolPlaneScalingTierControlPlaneScalingTierControlPlaneScalingTierControlPlaneScalingTierControlPlaneScalingTierControlPlaneScalingTier= Standard control plane (no provi…#Provisioned Control Plane allows you to select a scaling tier to ensure high and predictable performance for demanding workloads such as AI training/inference, high-performance computing, or large-scale data processing.
default
Default: Standard control plane (no provisioned tier)
coreDnsComputeTypeCoreDnsComputeTypecore_dns_compute_typeCoreDnsComputeTypecoreDnsComputeTypeCoreDnsComputeTypeCoreDnsComputeTypeCoreDnsComputeTypeCoreDnsComputeTypeCoreDnsComputeType= CoreDnsComputeType.EC2 (for `Far…#default
Default: CoreDnsComputeType.EC2 (for FargateCluster the default is FARGATE)
defaultCapacitynumberdefault_capacityint | floatdefaultCapacityNumberDefaultCapacitydoubleDefaultCapacity*float64= 2#notes
Instance type can be configured through defaultCapacityInstanceType, which defaults to m5.large.
Use cluster.addAutoScalingGroupCapacity to add additional customized capacity. Set this to 0 is you wish to avoid the initial capacity allocation.
defaultCapacityInstanceInstanceTypedefault_capacity_instanceInstanceTypedefaultCapacityInstanceInstanceTypeDefaultCapacityInstanceInstanceTypeDefaultCapacityInstanceInstanceType= m5.large#This will only be taken into account if defaultCapacity is > 0.
defaultCapacityTypeDefaultCapacityTypedefault_capacity_typeDefaultCapacityTypedefaultCapacityTypeDefaultCapacityTypeDefaultCapacityTypeDefaultCapacityTypeDefaultCapacityTypeDefaultCapacityType= NODEGROUP#deletionProtectionbooleandeletion_protectionbooldeletionProtectionBooleanDeletionProtectionboolDeletionProtection*bool= deletion protection is disabled#When true, deletion protection is enabled and the cluster cannot be deleted until protection is disabled. When false, the cluster can be deleted normally. This setting only applies to clusters in an active state.
endpointAccessEndpointAccessendpoint_accessEndpointAccessendpointAccessEndpointAccessEndpointAccessEndpointAccessEndpointAccessEndpointAccess= EndpointAccess.PUBLIC_AND_PRIVAT…#default
Default: EndpointAccess.PUBLIC_AND_PRIVATE
kubectlEnvironment{ [key: string]: string }kubectl_environmenttyping.Mapping[str, str]kubectlEnvironmentMap<String, String>KubectlEnvironmentIDictionary<string, string>KubectlEnvironment*map[string]*string= No environment variables.#Only relevant for kubectl enabled clusters.
kubectlLambdaRoleIRolekubectl_lambda_roleIRolekubectlLambdaRoleIRoleKubectlLambdaRoleIRoleKubectlLambdaRoleIRole= Default Lambda IAM Execution Rol…#default
Default: Default Lambda IAM Execution Role
kubectlLayerILayerVersionkubectl_layerILayerVersionkubectlLayerILayerVersionKubectlLayerILayerVersionKubectlLayerILayerVersionrequired#notes
This layer is used by the kubectl handler to apply manifests and install helm charts. You must pick an appropriate releases of one of the @aws-cdk/layer-kubectl-vXX packages, that works with the version of Kubernetes you have chosen.
The handler expects the layer to include the following executables:
/opt/helm/helm
/opt/kubectl/kubectl
kubectlMemorySizekubectl_memorySizekubectlMemorySizeKubectlMemorySizeKubectlMemorySize= Size.gibibytes(1)#mastersRoleIRolemasters_roleIRolemastersRoleIRoleMastersRoleIRoleMastersRoleIRole= no masters role.#onEventLayerILayerVersionon_event_layerILayerVersiononEventLayerILayerVersionOnEventLayerILayerVersionOnEventLayerILayerVersion= a layer bundled with this module…#notes · default
This layer is used by the onEvent handler to route AWS SDK requests through a proxy.
By default, the provider will use the layer included in the "aws-lambda-layer-node-proxy-agent" SAR application which is available in all commercial regions.
To deploy the layer locally define it in your app as follows:
const layer = new lambda.LayerVersion(this, 'proxy-agent-layer', {
code: lambda.Code.fromAsset(`${__dirname}/layer.zip`),
compatibleRuntimes: [lambda.Runtime.NODEJS_LATEST],
});
Default: a layer bundled with this module.
outputClusterNamebooleanoutput_cluster_namebooloutputClusterNameBooleanOutputClusterNameboolOutputClusterName*bool= false#outputConfigCommandbooleanoutput_config_commandbooloutputConfigCommandBooleanOutputConfigCommandboolOutputConfigCommand*bool= true#This command will include the cluster name and the ARN of the masters IAM role.
Note: If mastersRole is not specified, this property will be ignored and no config command will be emitted.
outputMastersRoleArnbooleanoutput_masters_role_arnbooloutputMastersRoleArnBooleanOutputMastersRoleArnboolOutputMastersRoleArn*bool= false#placeClusterHandlerInVpcbooleanplace_cluster_handler_in_vpcboolplaceClusterHandlerInVpcBooleanPlaceClusterHandlerInVpcboolPlaceClusterHandlerInVpc*bool= false#When this is enabled (default), prune labels will be allocated and injected to each resource. These labels will then be used when issuing the kubectl apply operation with the --prune switch.
remoteNodeNetworksRemoteNodeNetwork[]remote_node_networkstyping.List[RemoteNodeNetwork]remoteNodeNetworksList<RemoteNodeNetwork>RemoteNodeNetworksRemoteNodeNetwork[]RemoteNodeNetworks*[]RemoteNodeNetwork= none#remotePodNetworksRemotePodNetwork[]remote_pod_networkstyping.List[RemotePodNetwork]remotePodNetworksList<RemotePodNetwork>RemotePodNetworksRemotePodNetwork[]RemotePodNetworks*[]RemotePodNetwork= none#removalPolicyRemovalPolicyremoval_policyRemovalPolicyremovalPolicyRemovalPolicyRemovalPolicyRemovalPolicyRemovalPolicyRemovalPolicy= Resources will be deleted.#notes
This can happen in one of three situations:
- The resource is removed from the template, so CloudFormation stops managing it;
- A change to the resource is made that requires it to be replaced, so CloudFormation stops managing it;
- The stack is deleted, so CloudFormation stops managing all resources in it.
This affects the EKS cluster itself, associated IAM roles, node groups, security groups, VPC and any other CloudFormation resources managed by this construct.
default
Default: A role is automatically created for you
secretsEncryptionKeyIKeyRefsecrets_encryption_keyIKeyRefsecretsEncryptionKeyIKeyRefSecretsEncryptionKeyIKeyRefSecretsEncryptionKeyIKeyRef= By default, Kubernetes stores al…#default
Default: By default, Kubernetes stores all secret object data within etcd and all etcd volumes used by Amazon EKS are encrypted at the disk-level using AWS-Managed encryption keys.
securityGroupISecurityGroupsecurity_groupISecurityGroupsecurityGroupISecurityGroupSecurityGroupISecurityGroupSecurityGroupISecurityGroup= A security group is automaticall…#default
Default: A security group is automatically created
serviceIpv4Cidrstringservice_ipv4_cidrstrserviceIpv4CidrStringServiceIpv4CidrstringServiceIpv4Cidr*string= Kubernetes assigns addresses fro…#default
Default: Kubernetes assigns addresses from either the 10.100.0.0/16 or 172.20.0.0/16 CIDR blocks
tags{ [key: string]: string }tagstyping.Mapping[str, str]tagsMap<String, String>TagsIDictionary<string, string>Tags*map[string]*string= none#versionKubernetesVersionversionKubernetesVersionversionKubernetesVersionVersionKubernetesVersionVersionKubernetesVersionrequired#default
Default: a VPC with default configuration will be created and can be accessed through cluster.vpc.
vpcSubnetsSubnetSelection[]vpc_subnetstyping.List[SubnetSelection]vpcSubnetsList<SubnetSelection>VpcSubnetsSubnetSelection[]VpcSubnets*[]SubnetSelection= All public and private subnets#For example, to only select private subnets, supply the following:
vpcSubnets: [{ subnetType: ec2.SubnetType.PRIVATE_WITH_EGRESS }]
Properties
This role also has systems:master permissions.
albControllerAlbControlleralb_controllerAlbControlleralbControllerAlbControllerAlbControllerAlbControllerAlbControllerAlbController#Will be undefined if albController wasn't configured.
authenticationModeAuthenticationModeauthentication_modeAuthenticationModeauthenticationModeAuthenticationModeAuthenticationModeAuthenticationModeAuthenticationModeAuthenticationMode= CONFIG_MAP.#The authentication mode determines how users and applications authenticate to the Kubernetes API server.
awscliLayerILayerVersionawscli_layerILayerVersionawscliLayerILayerVersionAwscliLayerILayerVersionAwscliLayerILayerVersion#If not defined, a default layer will be used containing the AWS CLI 1.x.
clusterCertificateAuthorityDatastringcluster_certificate_authority_datastrclusterCertificateAuthorityDataStringClusterCertificateAuthorityDatastringClusterCertificateAuthorityData*stringrequired#clusterEncryptionConfigKeyArnstringcluster_encryption_config_key_arnstrclusterEncryptionConfigKeyArnStringClusterEncryptionConfigKeyArnstringClusterEncryptionConfigKeyArn*stringrequired#clusterEndpointstringcluster_endpointstrclusterEndpointStringClusterEndpointstringClusterEndpoint*stringrequired#This is the URL inside the kubeconfig file to use with kubectl
For example, https://5E1D0CEXAMPLEA591B746AFC5AB30262.yl4.us-west-2.eks.amazonaws.com
clusterHandlerSecurityGroupISecurityGroupcluster_handler_security_groupISecurityGroupclusterHandlerSecurityGroupISecurityGroupClusterHandlerSecurityGroupISecurityGroupClusterHandlerSecurityGroupISecurityGroup= No security group.#The Cluster Handler's Lambdas are responsible for calling AWS's EKS API.
Requires placeClusterHandlerInVpc to be set to true.
clusterOpenIdConnectIssuerstringcluster_open_id_connect_issuerstrclusterOpenIdConnectIssuerStringClusterOpenIdConnectIssuerstringClusterOpenIdConnectIssuer*stringrequired#This is because the values is only be retrieved by the API and not exposed by CloudFormation. If this cluster is not kubectl-enabled (i.e. uses the stock CfnCluster), this is undefined.
clusterOpenIdConnectIssuerUrlstringcluster_open_id_connect_issuer_urlstrclusterOpenIdConnectIssuerUrlStringClusterOpenIdConnectIssuerUrlstringClusterOpenIdConnectIssuerUrl*stringrequired#This is because the values is only be retrieved by the API and not exposed by CloudFormation. If this cluster is not kubectl-enabled (i.e. uses the stock CfnCluster), this is undefined.
clusterRefClusterReferencecluster_refClusterReferenceclusterRefClusterReferenceClusterRefClusterReferenceClusterRefClusterReferencerequired#clusterSecurityGroupISecurityGroupcluster_security_groupISecurityGroupclusterSecurityGroupISecurityGroupClusterSecurityGroupISecurityGroupClusterSecurityGroupISecurityGrouprequired#clusterSecurityGroupIdstringcluster_security_group_idstrclusterSecurityGroupIdStringClusterSecurityGroupIdstringClusterSecurityGroupId*stringrequired#connectionsConnectionsconnectionsConnectionsconnectionsConnectionsConnectionsConnectionsConnectionsConnectionsrequired#defaultCapacityAutoScalingGroupdefault_capacityAutoScalingGroupdefaultCapacityAutoScalingGroupDefaultCapacityAutoScalingGroupDefaultCapacityAutoScalingGroup#This will be undefined if the defaultCapacityType is not EC2 or defaultCapacityType is EC2 but default capacity is set to 0.
defaultNodegroupNodegroupdefault_nodegroupNodegroupdefaultNodegroupNodegroupDefaultNodegroupNodegroupDefaultNodegroupNodegroup#This will be undefined if the defaultCapacityType is EC2 or defaultCapacityType is NODEGROUP but default capacity is set to 0.
eksPodIdentityAgentIAddoneks_pod_identity_agentIAddoneksPodIdentityAgentIAddonEksPodIdentityAgentIAddonEksPodIdentityAgentIAddon#notes
The EKS Pod Identity Agent is responsible for managing the temporary credentials used by pods in the cluster to access AWS resources. It runs as a DaemonSet on each node and provides the necessary credentials to the pods based on their associated service account.
envResourceEnvironmentenvResourceEnvironmentenvResourceEnvironmentEnvResourceEnvironmentEnvResourceEnvironmentrequired#notes
For resources that are created and managed in a Stack (those created by creating new class instances like new Role(), new Bucket(), etc.), this is always the same as the environment of the stack they belong to.
For referenced resources (those obtained from referencing methods like Role.fromRoleArn(), Bucket.fromBucketName(), etc.), they might be different than the stack they were imported into.
kubectlEnvironment{ [key: string]: string }kubectl_environmenttyping.Mapping[str, str]kubectlEnvironmentMap<String, String>KubectlEnvironmentIDictionary<string, string>KubectlEnvironment*map[string]*string#kubectlLambdaRoleIRolekubectl_lambda_roleIRolekubectlLambdaRoleIRoleKubectlLambdaRoleIRoleKubectlLambdaRoleIRole= if not specified, the default ro…#The role should be mapped to the system:masters Kubernetes RBAC role.
This role is directly passed to the lambda handler that sends Kube Ctl commands to the cluster.
default
Default: if not specified, the default role created by a lambda function will be used.
kubectlLayerILayerVersionkubectl_layerILayerVersionkubectlLayerILayerVersionKubectlLayerILayerVersionKubectlLayerILayerVersion#kubectlPrivateSubnetsISubnet[]kubectl_private_subnetstyping.List[ISubnet]kubectlPrivateSubnetsList<ISubnet>KubectlPrivateSubnetsISubnet[]KubectlPrivateSubnets*[]ISubnet= If not specified, the k8s endpoi…#default
Default: If not specified, the k8s endpoint is expected to be accessible publicly.
The role should be mapped to the system:masters Kubernetes RBAC role.
kubectlSecurityGroupISecurityGroupkubectl_security_groupISecurityGroupkubectlSecurityGroupISecurityGroupKubectlSecurityGroupISecurityGroupKubectlSecurityGroupISecurityGroup= If not specified, the k8s endpoi…#default
Default: If not specified, the k8s endpoint is expected to be accessible publicly.
onEventLayerILayerVersionon_event_layerILayerVersiononEventLayerILayerVersionOnEventLayerILayerVersionOnEventLayerILayerVersion#If undefined, a SAR app that contains this layer will be used.
openIdConnectProviderIOpenIdConnectProvideropen_id_connect_providerIOpenIdConnectProvideropenIdConnectProviderIOpenIdConnectProviderOpenIdConnectProviderIOpenIdConnectProviderOpenIdConnectProviderIOpenIdConnectProviderrequired#A provider will only be defined if this property is accessed (lazy initialization).
PROPERTY_INJECTION_IDstringproperty_injection_idstrPROPERTY_INJECTION_IDStringPROPERTY_INJECTION_IDstringPROPERTY_INJECTION_ID*stringrequiredstatic#Methods
addAutoScalingGroupCapacity(id: string, options: AutoScalingGroupCapacityOptions): AutoScalingGroupdef add_auto_scaling_group_capacity(self, id: str, options: AutoScalingGroupCapacityOptions) -> AutoScalingGrouppublic AutoScalingGroup addAutoScalingGroupCapacity(String id, AutoScalingGroupCapacityOptions options)public AutoScalingGroup AddAutoScalingGroupCapacity(string id, AutoScalingGroupCapacityOptions options)func AddAutoScalingGroupCapacity(Id *string, Options AutoScalingGroupCapacityOptions) AutoScalingGroup#notes
The nodes will automatically be configured with the right VPC and AMI for the instance type and Kubernetes version.
Note that if you specify updateType: RollingUpdate or updateType: ReplacingUpdate, your nodes might be replaced at deploy time without notice in case the recommended AMI for your machine image type has been updated by AWS. The default behavior for updateType is None, which means only new instances will be launched using the new AMI.
Spot instances will be labeled lifecycle=Ec2Spot and tainted with PreferNoSchedule. In addition, the spot interrupt handler daemon will be installed on all spot instances to handle EC2 Spot Instance Termination Notices.
addCdk8sChart(id: string, chart: Construct, options?: KubernetesManifestOptions): KubernetesManifestdef add_cdk8s_chart(self, id: str, chart: Construct, options: typing.Optional[KubernetesManifestOptions] = None) -> KubernetesManifestpublic KubernetesManifest addCdk8sChart(String id, Construct chart, KubernetesManifestOptions options)public KubernetesManifest AddCdk8sChart(string id, Construct chart, KubernetesManifestOptions? options = null)func AddCdk8sChart(Id *string, Chart Construct, Options KubernetesManifestOptions) KubernetesManifest#2 parameters · returns
Parameters
ididididId— logical id of this chart.chartchartchartchartChart— the cdk8s chart.
Returns: a KubernetesManifest construct representing the chart.
addFargateProfile(id: string, options: FargateProfileOptions): FargateProfiledef add_fargate_profile(self, id: str, options: FargateProfileOptions) -> FargateProfilepublic FargateProfile addFargateProfile(String id, FargateProfileOptions options)public FargateProfile AddFargateProfile(string id, FargateProfileOptions options)func AddFargateProfile(Id *string, Options FargateProfileOptions) FargateProfile#2 parameters
Parameters
ididididId— the id of this profile.optionsoptionsoptionsoptionsOptions— profile options.
addHelmChart(id: string, options: HelmChartOptions): HelmChartdef add_helm_chart(self, id: str, options: HelmChartOptions) -> HelmChartpublic HelmChart addHelmChart(String id, HelmChartOptions options)public HelmChart AddHelmChart(string id, HelmChartOptions options)func AddHelmChart(Id *string, Options HelmChartOptions) HelmChart#2 parameters · returns
Parameters
ididididId— logical id of this chart.optionsoptionsoptionsoptionsOptions— options of this chart.
Returns: a HelmChart construct
addManifest(id: string, ...manifest: { [key: string]: any }[]): KubernetesManifestdef add_manifest(self, id: str, manifest: typing.Mapping[str, Any]) -> KubernetesManifestpublic KubernetesManifest addManifest(String id, Map<String, Object> manifest)public KubernetesManifest AddManifest(string id, IDictionary<string, object> manifest)func AddManifest(Id *string, Manifest *map[string]interface{}) KubernetesManifest#The manifest will be applied/deleted using kubectl as needed.
2 parameters · returns
Parameters
ididididId— logical id of this manifest.manifestmanifestmanifestmanifestManifest— a list of Kubernetes resource specifications.
Returns: a KubernetesResource object.
addNodegroupCapacity(id: string, options?: NodegroupOptions): Nodegroupdef add_nodegroup_capacity(self, id: str, options: typing.Optional[NodegroupOptions] = None) -> Nodegrouppublic Nodegroup addNodegroupCapacity(String id, NodegroupOptions options)public Nodegroup AddNodegroupCapacity(string id, NodegroupOptions? options = null)func AddNodegroupCapacity(Id *string, Options NodegroupOptions) Nodegroup#This method will create a new managed nodegroup and add into the capacity.
2 parameters
Parameters
ididididId— The ID of the nodegroup.optionsoptionsoptionsoptionsOptions— options for creating a new nodegroup.
addServiceAccount(id: string, options?: ServiceAccountOptions): ServiceAccountdef add_service_account(self, id: str, options: typing.Optional[ServiceAccountOptions] = None) -> ServiceAccountpublic ServiceAccount addServiceAccount(String id, ServiceAccountOptions options)public ServiceAccount AddServiceAccount(string id, ServiceAccountOptions? options = null)func AddServiceAccount(Id *string, Options ServiceAccountOptions) ServiceAccount#applyCrossStackReferenceStrength(strength: ReferenceStrength): voiddef apply_cross_stack_reference_strength(self, strength: ReferenceStrength) -> Nonepublic void applyCrossStackReferenceStrength(ReferenceStrength strength)public void ApplyCrossStackReferenceStrength(ReferenceStrength strength)func ApplyCrossStackReferenceStrength(Strength ReferenceStrength)#notes · 1 parameter
When set, any cross-stack reference to this resource will use the specified mechanism instead of the global default determined by the @aws-cdk/core:defaultCrossStackReferences context key. This is useful for selectively weakening specific references to avoid the "deadly embrace" problem without changing the app-wide default.
Parameters
strengthstrengthstrengthstrengthStrength— - The reference strength to use for this resource.
applyRemovalPolicy(policy: RemovalPolicy): voiddef apply_removal_policy(self, policy: RemovalPolicy) -> Nonepublic void applyRemovalPolicy(RemovalPolicy policy)public void ApplyRemovalPolicy(RemovalPolicy policy)func ApplyRemovalPolicy(Policy RemovalPolicy)#notes
The Removal Policy controls what happens to this resource when it stops being managed by CloudFormation, either because you've removed it from the CDK application or because you've made a change that requires the resource to be replaced.
The resource can be deleted (RemovalPolicy.DESTROY), or left in your AWS account for data recovery and cleanup later (RemovalPolicy.RETAIN).
connectAutoScalingGroupCapacity(autoScalingGroup: AutoScalingGroup, options: AutoScalingGroupOptions): voiddef connect_auto_scaling_group_capacity(self, auto_scaling_group: AutoScalingGroup, options: AutoScalingGroupOptions) -> Nonepublic void connectAutoScalingGroupCapacity(AutoScalingGroup autoScalingGroup, AutoScalingGroupOptions options)public void ConnectAutoScalingGroupCapacity(AutoScalingGroup autoScalingGroup, AutoScalingGroupOptions options)func ConnectAutoScalingGroupCapacity(AutoScalingGroup AutoScalingGroup, Options AutoScalingGroupOptions)#notes · 2 parameters
The AutoScalingGroup must be running an EKS-optimized AMI containing the /etc/eks/bootstrap.sh script. This method will configure Security Groups, add the right policies to the instance role, apply the right tags, and add the required user data to the instance's launch configuration.
Spot instances will be labeled lifecycle=Ec2Spot and tainted with PreferNoSchedule. If kubectl is enabled, the spot interrupt handler daemon will be installed on all spot instances to handle EC2 Spot Instance Termination Notices.
Prefer to use addAutoScalingGroupCapacity if possible.
Parameters
autoScalingGroupauto_scaling_groupautoScalingGroupautoScalingGroupAutoScalingGroup— [disable-awslint:ref-via-interface].optionsoptionsoptionsoptionsOptions— options for adding auto scaling groups, like customizing the bootstrap script.
fromClusterAttributes(scope: Construct, id: string, attrs: ClusterAttributes): ICluster@staticmethod def from_cluster_attributes(scope: Construct, id: str, attrs: ClusterAttributes) -> IClusterpublic static ICluster fromClusterAttributes(Construct scope, String id, ClusterAttributes attrs)public static ICluster FromClusterAttributes(Construct scope, string id, ClusterAttributes attrs)func FromClusterAttributes(Scope Construct, Id *string, Attrs ClusterAttributes) IClusterstatic#3 parameters
Parameters
scopescopescopescopeScope— the construct scope, in most cases 'this'.ididididId— the id or name to import as.attrsattrsattrsattrsAttrs— the cluster properties to use for importing information.
getIngressLoadBalancerAddress(ingressName: string, options?: IngressLoadBalancerAddressOptions): stringdef get_ingress_load_balancer_address(self, ingress_name: str, options: typing.Optional[IngressLoadBalancerAddressOptions] = None) -> strpublic String getIngressLoadBalancerAddress(String ingressName, IngressLoadBalancerAddressOptions options)public string GetIngressLoadBalancerAddress(string ingressName, IngressLoadBalancerAddressOptions? options = null)func GetIngressLoadBalancerAddress(IngressName *string, Options IngressLoadBalancerAddressOptions) *string#2 parameters
Parameters
ingressNameingress_nameingressNameingressNameIngressName— The name of the ingress.optionsoptionsoptionsoptionsOptions— Additional operation options.
getServiceLoadBalancerAddress(serviceName: string, options?: ServiceLoadBalancerAddressOptions): stringdef get_service_load_balancer_address(self, service_name: str, options: typing.Optional[ServiceLoadBalancerAddressOptions] = None) -> strpublic String getServiceLoadBalancerAddress(String serviceName, ServiceLoadBalancerAddressOptions options)public string GetServiceLoadBalancerAddress(string serviceName, ServiceLoadBalancerAddressOptions? options = null)func GetServiceLoadBalancerAddress(ServiceName *string, Options ServiceLoadBalancerAddressOptions) *string#2 parameters
Parameters
serviceNameservice_nameserviceNameserviceNameServiceName— The name of the service.optionsoptionsoptionsoptionsOptions— Additional operation options.
grantAccess(id: string, principal: string, accessPolicies: IAccessPolicy[], options?: GrantAccessOptions): voiddef grant_access(self, id: str, principal: str, access_policies: typing.List[IAccessPolicy], options: typing.Optional[GrantAccessOptions] = None) -> Nonepublic void grantAccess(String id, String principal, List<IAccessPolicy> accessPolicies, GrantAccessOptions options)public void GrantAccess(string id, string principal, IAccessPolicy[] accessPolicies, GrantAccessOptions? options = null)func GrantAccess(Id *string, Principal *string, AccessPolicies *[]IAccessPolicy, Options GrantAccessOptions)#notes · 4 parameters
This method creates an AccessEntry construct that grants the specified IAM principal the access permissions defined by the provided IAccessPolicy array. This allows the IAM principal to perform the actions permitted by the access policies within the EKS cluster.
Parameters
ididididId— - The ID of theAccessEntryconstruct to be created.principalprincipalprincipalprincipalPrincipal— - The IAM principal (role or user) to be granted access to the EKS cluster.accessPoliciesaccess_policiesaccessPoliciesaccessPoliciesAccessPolicies— - An array ofIAccessPolicyobjects that define the access permissions to be granted to the IAM principal.optionsoptionsoptionsoptionsOptions— - Additional options for granting access.
isConstruct(x: any): boolean@staticmethod def is_construct(x: Any) -> boolpublic static Boolean isConstruct(Object x)public static bool IsConstruct(object x)func IsConstruct(X interface{}) *boolstatic#notes · 1 parameter · returns
Use this method instead of instanceof to properly detect Construct instances, even when the construct library is symlinked.
Explanation: in JavaScript, multiple copies of the constructs library on disk are seen as independent, completely different libraries. As a consequence, the class Construct in each copy of the constructs library is seen as a different class, and an instance of one class will not test as instanceof the other class. npm install will not create installations like this, but users may manually symlink construct libraries together or use a monorepo tool: in those cases, multiple copies of the constructs library can be accidentally installed, and instanceof will behave unpredictably. It is safest to avoid using instanceof, and using this type-testing method instead.
Parameters
xxxxX— Any object.
Returns: true if x is an object created from a class which extends Construct.
isOwnedResource(construct: IConstruct): boolean@staticmethod def is_owned_resource(construct: IConstruct) -> boolpublic static Boolean isOwnedResource(IConstruct construct)public static bool IsOwnedResource(IConstruct construct)func IsOwnedResource(Construct IConstruct) *boolstatic#isResource(construct: IConstruct): boolean@staticmethod def is_resource(construct: IConstruct) -> boolpublic static Boolean isResource(IConstruct construct)public static bool IsResource(IConstruct construct)func IsResource(Construct IConstruct) *boolstatic#toString(): stringdef to_string(self, ) -> strpublic String toString()public string ToString()func ToString() *string#with(...mixins: IMixin[]): IConstructdef with(self, mixins: IMixin) -> IConstructpublic IConstruct with(IMixin mixins)public IConstruct With(IMixin mixins)func With(Mixins IMixin) IConstruct#Mixins are applied in order. The list of constructs is captured at the start of the call, so constructs added by a mixin will not be visited. Use multiple with() calls if subsequent mixins should apply to added constructs.