aws-cdk.aws-eks-v2-alpha 2.180.0a0__py3-none-any.whl → 2.181.1a0__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of aws-cdk.aws-eks-v2-alpha might be problematic. Click here for more details.

@@ -101,6 +101,121 @@ eks.Cluster(self, "hello-eks",
101
101
  )
102
102
  ```
103
103
 
104
+ ## EKS Auto Mode
105
+
106
+ [Amazon EKS Auto Mode](https://aws.amazon.com/eks/auto-mode/) extends AWS management of Kubernetes clusters beyond the cluster itself, allowing AWS to set up and manage the infrastructure that enables the smooth operation of your workloads.
107
+
108
+ ### Using Auto Mode
109
+
110
+ While `aws-eks` uses `DefaultCapacityType.NODEGROUP` by default, `aws-eks-v2` uses `DefaultCapacityType.AUTOMODE` as the default capacity type.
111
+
112
+ Auto Mode is enabled by default when creating a new cluster without specifying any capacity-related properties:
113
+
114
+ ```python
115
+ # Create EKS cluster with Auto Mode implicitly enabled
116
+ cluster = eks.Cluster(self, "EksAutoCluster",
117
+ version=eks.KubernetesVersion.V1_32
118
+ )
119
+ ```
120
+
121
+ You can also explicitly enable Auto Mode using `defaultCapacityType`:
122
+
123
+ ```python
124
+ # Create EKS cluster with Auto Mode explicitly enabled
125
+ cluster = eks.Cluster(self, "EksAutoCluster",
126
+ version=eks.KubernetesVersion.V1_32,
127
+ default_capacity_type=eks.DefaultCapacityType.AUTOMODE
128
+ )
129
+ ```
130
+
131
+ ### Node Pools
132
+
133
+ When Auto Mode is enabled, the cluster comes with two default node pools:
134
+
135
+ * `system`: For running system components and add-ons
136
+ * `general-purpose`: For running your application workloads
137
+
138
+ These node pools are managed automatically by EKS. You can configure which node pools to enable through the `compute` property:
139
+
140
+ ```python
141
+ cluster = eks.Cluster(self, "EksAutoCluster",
142
+ version=eks.KubernetesVersion.V1_32,
143
+ default_capacity_type=eks.DefaultCapacityType.AUTOMODE,
144
+ compute=eks.ComputeConfig(
145
+ node_pools=["system", "general-purpose"]
146
+ )
147
+ )
148
+ ```
149
+
150
+ For more information, see [Create a Node Pool for EKS Auto Mode](https://docs.aws.amazon.com/eks/latest/userguide/create-node-pool.html).
151
+
152
+ ### Node Groups as the default capacity type
153
+
154
+ If you prefer to manage your own node groups instead of using Auto Mode, you can use the traditional node group approach by specifying `defaultCapacityType` as `NODEGROUP`:
155
+
156
+ ```python
157
+ # Create EKS cluster with traditional managed node group
158
+ cluster = eks.Cluster(self, "EksCluster",
159
+ version=eks.KubernetesVersion.V1_32,
160
+ default_capacity_type=eks.DefaultCapacityType.NODEGROUP,
161
+ default_capacity=3, # Number of instances
162
+ default_capacity_instance=ec2.InstanceType.of(ec2.InstanceClass.T3, ec2.InstanceSize.LARGE)
163
+ )
164
+ ```
165
+
166
+ You can also create a cluster with no initial capacity and add node groups later:
167
+
168
+ ```python
169
+ cluster = eks.Cluster(self, "EksCluster",
170
+ version=eks.KubernetesVersion.V1_32,
171
+ default_capacity_type=eks.DefaultCapacityType.NODEGROUP,
172
+ default_capacity=0
173
+ )
174
+
175
+ # Add node groups as needed
176
+ cluster.add_nodegroup_capacity("custom-node-group",
177
+ min_size=1,
178
+ max_size=3,
179
+ instance_types=[ec2.InstanceType.of(ec2.InstanceClass.T3, ec2.InstanceSize.LARGE)]
180
+ )
181
+ ```
182
+
183
+ Read [Managed node groups](#managed-node-groups) for more information on how to add node groups to the cluster.
184
+
185
+ ### Mixed with Auto Mode and Node Groups
186
+
187
+ You can combine Auto Mode with traditional node groups for specific workload requirements:
188
+
189
+ ```python
190
+ cluster = eks.Cluster(self, "Cluster",
191
+ version=eks.KubernetesVersion.V1_32,
192
+ default_capacity_type=eks.DefaultCapacityType.AUTOMODE,
193
+ compute=eks.ComputeConfig(
194
+ node_pools=["system", "general-purpose"]
195
+ )
196
+ )
197
+
198
+ # Add specialized node group for specific workloads
199
+ cluster.add_nodegroup_capacity("specialized-workload",
200
+ min_size=1,
201
+ max_size=3,
202
+ instance_types=[ec2.InstanceType.of(ec2.InstanceClass.C5, ec2.InstanceSize.XLARGE)],
203
+ labels={
204
+ "workload": "specialized"
205
+ }
206
+ )
207
+ ```
208
+
209
+ ### Important Notes
210
+
211
+ 1. Auto Mode and traditional capacity management are mutually exclusive at the default capacity level. You cannot opt in to Auto Mode and specify `defaultCapacity` or `defaultCapacityInstance`.
212
+ 2. When Auto Mode is enabled:
213
+
214
+ * The cluster will automatically manage compute resources
215
+ * Node pools cannot be modified, only enabled or disabled
216
+ * EKS will handle scaling and management of the node pools
217
+ 3. Auto Mode requires specific IAM permissions. The construct will automatically attach the required managed policies.
218
+
104
219
  ### Managed node groups
105
220
 
106
221
  Amazon EKS managed node groups automate the provisioning and lifecycle management of nodes (Amazon EC2 instances) for Amazon EKS Kubernetes clusters.
@@ -108,15 +223,21 @@ With Amazon EKS managed node groups, you don't need to separately provision or r
108
223
 
109
224
  > For more details visit [Amazon EKS Managed Node Groups](https://docs.aws.amazon.com/eks/latest/userguide/managed-node-groups.html).
110
225
 
111
- **Managed Node Groups are the recommended way to allocate cluster capacity.**
226
+ By default, when using `DefaultCapacityType.NODEGROUP`, this library will allocate a managed node group with 2 *m5.large* instances (this instance type suits most common use-cases, and is good value for money).
112
227
 
113
- By default, this library will allocate a managed node group with 2 *m5.large* instances (this instance type suits most common use-cases, and is good value for money).
228
+ ```python
229
+ eks.Cluster(self, "HelloEKS",
230
+ version=eks.KubernetesVersion.V1_32,
231
+ default_capacity_type=eks.DefaultCapacityType.NODEGROUP
232
+ )
233
+ ```
114
234
 
115
235
  At cluster instantiation time, you can customize the number of instances and their type:
116
236
 
117
237
  ```python
118
238
  eks.Cluster(self, "HelloEKS",
119
239
  version=eks.KubernetesVersion.V1_32,
240
+ default_capacity_type=eks.DefaultCapacityType.NODEGROUP,
120
241
  default_capacity=5,
121
242
  default_capacity_instance=ec2.InstanceType.of(ec2.InstanceClass.M5, ec2.InstanceSize.SMALL)
122
243
  )
@@ -129,6 +250,7 @@ Additional customizations are available post instantiation. To apply them, set t
129
250
  ```python
130
251
  cluster = eks.Cluster(self, "HelloEKS",
131
252
  version=eks.KubernetesVersion.V1_32,
253
+ default_capacity_type=eks.DefaultCapacityType.NODEGROUP,
132
254
  default_capacity=0
133
255
  )
134
256
 
@@ -4372,9 +4494,11 @@ class ClusterLoggingTypes(enum.Enum):
4372
4494
  "vpc": "vpc",
4373
4495
  "vpc_subnets": "vpcSubnets",
4374
4496
  "bootstrap_cluster_creator_admin_permissions": "bootstrapClusterCreatorAdminPermissions",
4497
+ "compute": "compute",
4375
4498
  "default_capacity": "defaultCapacity",
4376
4499
  "default_capacity_instance": "defaultCapacityInstance",
4377
4500
  "default_capacity_type": "defaultCapacityType",
4501
+ "output_config_command": "outputConfigCommand",
4378
4502
  },
4379
4503
  )
4380
4504
  class ClusterProps(ClusterCommonOptions):
@@ -4399,9 +4523,11 @@ class ClusterProps(ClusterCommonOptions):
4399
4523
  vpc: typing.Optional[_aws_cdk_aws_ec2_ceddda9d.IVpc] = None,
4400
4524
  vpc_subnets: typing.Optional[typing.Sequence[typing.Union[_aws_cdk_aws_ec2_ceddda9d.SubnetSelection, typing.Dict[builtins.str, typing.Any]]]] = None,
4401
4525
  bootstrap_cluster_creator_admin_permissions: typing.Optional[builtins.bool] = None,
4526
+ compute: typing.Optional[typing.Union["ComputeConfig", typing.Dict[builtins.str, typing.Any]]] = None,
4402
4527
  default_capacity: typing.Optional[jsii.Number] = None,
4403
4528
  default_capacity_instance: typing.Optional[_aws_cdk_aws_ec2_ceddda9d.InstanceType] = None,
4404
4529
  default_capacity_type: typing.Optional["DefaultCapacityType"] = None,
4530
+ output_config_command: typing.Optional[builtins.bool] = None,
4405
4531
  ) -> None:
4406
4532
  '''(experimental) Properties for configuring a standard EKS cluster (non-Fargate).
4407
4533
 
@@ -4423,30 +4549,31 @@ class ClusterProps(ClusterCommonOptions):
4423
4549
  :param vpc: (experimental) The VPC in which to create the Cluster. Default: - a VPC with default configuration will be created and can be accessed through ``cluster.vpc``.
4424
4550
  :param vpc_subnets: (experimental) Where to place EKS Control Plane ENIs. For example, to only select private subnets, supply the following: ``vpcSubnets: [{ subnetType: ec2.SubnetType.PRIVATE_WITH_EGRESS }]`` Default: - All public and private subnets
4425
4551
  :param bootstrap_cluster_creator_admin_permissions: (experimental) Whether or not IAM principal of the cluster creator was set as a cluster admin access entry during cluster creation time. Changing this value after the cluster has been created will result in the cluster being replaced. Default: true
4552
+ :param compute: (experimental) Configuration for compute settings in Auto Mode. When enabled, EKS will automatically manage compute resources. Default: - Auto Mode compute disabled
4426
4553
  :param default_capacity: (experimental) Number of instances to allocate as an initial capacity for this cluster. 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. Default: 2
4427
4554
  :param default_capacity_instance: (experimental) The instance type to use for the default capacity. This will only be taken into account if ``defaultCapacity`` is > 0. Default: m5.large
4428
4555
  :param default_capacity_type: (experimental) The default capacity type for the cluster. Default: NODEGROUP
4556
+ :param output_config_command: (experimental) Determines whether a CloudFormation output with the ``aws eks update-kubeconfig`` command will be synthesized. This command will include the cluster name and, if applicable, the ARN of the masters IAM role. Default: true
4429
4557
 
4430
4558
  :stability: experimental
4431
4559
  :exampleMetadata: infused
4432
4560
 
4433
4561
  Example::
4434
4562
 
4435
- cluster = eks.Cluster(self, "HelloEKS",
4563
+ cluster = eks.Cluster(self, "EksAutoCluster",
4436
4564
  version=eks.KubernetesVersion.V1_32,
4437
- default_capacity=0
4438
- )
4439
-
4440
- cluster.add_nodegroup_capacity("custom-node-group",
4441
- instance_types=[ec2.InstanceType("m5.large")],
4442
- min_size=4,
4443
- disk_size=100
4565
+ default_capacity_type=eks.DefaultCapacityType.AUTOMODE,
4566
+ compute=eks.ComputeConfig(
4567
+ node_pools=["system", "general-purpose"]
4568
+ )
4444
4569
  )
4445
4570
  '''
4446
4571
  if isinstance(alb_controller, dict):
4447
4572
  alb_controller = AlbControllerOptions(**alb_controller)
4448
4573
  if isinstance(kubectl_provider_options, dict):
4449
4574
  kubectl_provider_options = KubectlProviderOptions(**kubectl_provider_options)
4575
+ if isinstance(compute, dict):
4576
+ compute = ComputeConfig(**compute)
4450
4577
  if __debug__:
4451
4578
  type_hints = typing.get_type_hints(_typecheckingstub__cdebba88d00ede95b7f48fc97c266609fdb0fc0ef3bb709493d319c84ab460db)
4452
4579
  check_type(argname="argument version", value=version, expected_type=type_hints["version"])
@@ -4467,9 +4594,11 @@ class ClusterProps(ClusterCommonOptions):
4467
4594
  check_type(argname="argument vpc", value=vpc, expected_type=type_hints["vpc"])
4468
4595
  check_type(argname="argument vpc_subnets", value=vpc_subnets, expected_type=type_hints["vpc_subnets"])
4469
4596
  check_type(argname="argument bootstrap_cluster_creator_admin_permissions", value=bootstrap_cluster_creator_admin_permissions, expected_type=type_hints["bootstrap_cluster_creator_admin_permissions"])
4597
+ check_type(argname="argument compute", value=compute, expected_type=type_hints["compute"])
4470
4598
  check_type(argname="argument default_capacity", value=default_capacity, expected_type=type_hints["default_capacity"])
4471
4599
  check_type(argname="argument default_capacity_instance", value=default_capacity_instance, expected_type=type_hints["default_capacity_instance"])
4472
4600
  check_type(argname="argument default_capacity_type", value=default_capacity_type, expected_type=type_hints["default_capacity_type"])
4601
+ check_type(argname="argument output_config_command", value=output_config_command, expected_type=type_hints["output_config_command"])
4473
4602
  self._values: typing.Dict[builtins.str, typing.Any] = {
4474
4603
  "version": version,
4475
4604
  }
@@ -4507,12 +4636,16 @@ class ClusterProps(ClusterCommonOptions):
4507
4636
  self._values["vpc_subnets"] = vpc_subnets
4508
4637
  if bootstrap_cluster_creator_admin_permissions is not None:
4509
4638
  self._values["bootstrap_cluster_creator_admin_permissions"] = bootstrap_cluster_creator_admin_permissions
4639
+ if compute is not None:
4640
+ self._values["compute"] = compute
4510
4641
  if default_capacity is not None:
4511
4642
  self._values["default_capacity"] = default_capacity
4512
4643
  if default_capacity_instance is not None:
4513
4644
  self._values["default_capacity_instance"] = default_capacity_instance
4514
4645
  if default_capacity_type is not None:
4515
4646
  self._values["default_capacity_type"] = default_capacity_type
4647
+ if output_config_command is not None:
4648
+ self._values["output_config_command"] = output_config_command
4516
4649
 
4517
4650
  @builtins.property
4518
4651
  def version(self) -> "KubernetesVersion":
@@ -4741,6 +4874,19 @@ class ClusterProps(ClusterCommonOptions):
4741
4874
  result = self._values.get("bootstrap_cluster_creator_admin_permissions")
4742
4875
  return typing.cast(typing.Optional[builtins.bool], result)
4743
4876
 
4877
+ @builtins.property
4878
+ def compute(self) -> typing.Optional["ComputeConfig"]:
4879
+ '''(experimental) Configuration for compute settings in Auto Mode.
4880
+
4881
+ When enabled, EKS will automatically manage compute resources.
4882
+
4883
+ :default: - Auto Mode compute disabled
4884
+
4885
+ :stability: experimental
4886
+ '''
4887
+ result = self._values.get("compute")
4888
+ return typing.cast(typing.Optional["ComputeConfig"], result)
4889
+
4744
4890
  @builtins.property
4745
4891
  def default_capacity(self) -> typing.Optional[jsii.Number]:
4746
4892
  '''(experimental) Number of instances to allocate as an initial capacity for this cluster.
@@ -4785,6 +4931,20 @@ class ClusterProps(ClusterCommonOptions):
4785
4931
  result = self._values.get("default_capacity_type")
4786
4932
  return typing.cast(typing.Optional["DefaultCapacityType"], result)
4787
4933
 
4934
+ @builtins.property
4935
+ def output_config_command(self) -> typing.Optional[builtins.bool]:
4936
+ '''(experimental) Determines whether a CloudFormation output with the ``aws eks update-kubeconfig`` command will be synthesized.
4937
+
4938
+ This command will include
4939
+ the cluster name and, if applicable, the ARN of the masters IAM role.
4940
+
4941
+ :default: true
4942
+
4943
+ :stability: experimental
4944
+ '''
4945
+ result = self._values.get("output_config_command")
4946
+ return typing.cast(typing.Optional[builtins.bool], result)
4947
+
4788
4948
  def __eq__(self, rhs: typing.Any) -> builtins.bool:
4789
4949
  return isinstance(rhs, self.__class__) and rhs._values == self._values
4790
4950
 
@@ -4797,6 +4957,87 @@ class ClusterProps(ClusterCommonOptions):
4797
4957
  )
4798
4958
 
4799
4959
 
4960
+ @jsii.data_type(
4961
+ jsii_type="@aws-cdk/aws-eks-v2-alpha.ComputeConfig",
4962
+ jsii_struct_bases=[],
4963
+ name_mapping={"node_pools": "nodePools", "node_role": "nodeRole"},
4964
+ )
4965
+ class ComputeConfig:
4966
+ def __init__(
4967
+ self,
4968
+ *,
4969
+ node_pools: typing.Optional[typing.Sequence[builtins.str]] = None,
4970
+ node_role: typing.Optional[_aws_cdk_aws_iam_ceddda9d.IRole] = None,
4971
+ ) -> None:
4972
+ '''(experimental) Options for configuring EKS Auto Mode compute settings.
4973
+
4974
+ When enabled, EKS will automatically manage compute resources like node groups and Fargate profiles.
4975
+
4976
+ :param node_pools: (experimental) Names of nodePools to include in Auto Mode. You cannot modify the built in system and general-purpose node pools. You can only enable or disable them. Node pool values are case-sensitive and must be ``general-purpose`` and/or ``system``. Default: - ['system', 'general-purpose']
4977
+ :param node_role: (experimental) IAM role for the nodePools. Default: - generated by the CDK
4978
+
4979
+ :stability: experimental
4980
+ :exampleMetadata: infused
4981
+
4982
+ Example::
4983
+
4984
+ cluster = eks.Cluster(self, "EksAutoCluster",
4985
+ version=eks.KubernetesVersion.V1_32,
4986
+ default_capacity_type=eks.DefaultCapacityType.AUTOMODE,
4987
+ compute=eks.ComputeConfig(
4988
+ node_pools=["system", "general-purpose"]
4989
+ )
4990
+ )
4991
+ '''
4992
+ if __debug__:
4993
+ type_hints = typing.get_type_hints(_typecheckingstub__ecd4e0b2b1c23fafd1f01982b69fda08d5f3b0615f7bf8fe543ae2d8e6784f6e)
4994
+ check_type(argname="argument node_pools", value=node_pools, expected_type=type_hints["node_pools"])
4995
+ check_type(argname="argument node_role", value=node_role, expected_type=type_hints["node_role"])
4996
+ self._values: typing.Dict[builtins.str, typing.Any] = {}
4997
+ if node_pools is not None:
4998
+ self._values["node_pools"] = node_pools
4999
+ if node_role is not None:
5000
+ self._values["node_role"] = node_role
5001
+
5002
+ @builtins.property
5003
+ def node_pools(self) -> typing.Optional[typing.List[builtins.str]]:
5004
+ '''(experimental) Names of nodePools to include in Auto Mode.
5005
+
5006
+ You cannot modify the built in system and general-purpose node pools. You can only enable or disable them.
5007
+ Node pool values are case-sensitive and must be ``general-purpose`` and/or ``system``.
5008
+
5009
+ :default: - ['system', 'general-purpose']
5010
+
5011
+ :see: - https://docs.aws.amazon.com/eks/latest/userguide/create-node-pool.html
5012
+ :stability: experimental
5013
+ '''
5014
+ result = self._values.get("node_pools")
5015
+ return typing.cast(typing.Optional[typing.List[builtins.str]], result)
5016
+
5017
+ @builtins.property
5018
+ def node_role(self) -> typing.Optional[_aws_cdk_aws_iam_ceddda9d.IRole]:
5019
+ '''(experimental) IAM role for the nodePools.
5020
+
5021
+ :default: - generated by the CDK
5022
+
5023
+ :see: - https://docs.aws.amazon.com/eks/latest/userguide/create-node-role.html
5024
+ :stability: experimental
5025
+ '''
5026
+ result = self._values.get("node_role")
5027
+ return typing.cast(typing.Optional[_aws_cdk_aws_iam_ceddda9d.IRole], result)
5028
+
5029
+ def __eq__(self, rhs: typing.Any) -> builtins.bool:
5030
+ return isinstance(rhs, self.__class__) and rhs._values == self._values
5031
+
5032
+ def __ne__(self, rhs: typing.Any) -> builtins.bool:
5033
+ return not (rhs == self)
5034
+
5035
+ def __repr__(self) -> str:
5036
+ return "ComputeConfig(%s)" % ", ".join(
5037
+ k + "=" + repr(v) for k, v in self._values.items()
5038
+ )
5039
+
5040
+
4800
5041
  @jsii.enum(jsii_type="@aws-cdk/aws-eks-v2-alpha.CoreDnsComputeType")
4801
5042
  class CoreDnsComputeType(enum.Enum):
4802
5043
  '''(experimental) The type of compute resources to use for CoreDNS.
@@ -4840,6 +5081,21 @@ class DefaultCapacityType(enum.Enum):
4840
5081
  '''(experimental) The default capacity type for the cluster.
4841
5082
 
4842
5083
  :stability: experimental
5084
+ :exampleMetadata: infused
5085
+
5086
+ Example::
5087
+
5088
+ cluster = eks.Cluster(self, "HelloEKS",
5089
+ version=eks.KubernetesVersion.V1_32,
5090
+ default_capacity_type=eks.DefaultCapacityType.NODEGROUP,
5091
+ default_capacity=0
5092
+ )
5093
+
5094
+ cluster.add_nodegroup_capacity("custom-node-group",
5095
+ instance_types=[ec2.InstanceType("m5.large")],
5096
+ min_size=4,
5097
+ disk_size=100
5098
+ )
4843
5099
  '''
4844
5100
 
4845
5101
  NODEGROUP = "NODEGROUP"
@@ -4852,6 +5108,11 @@ class DefaultCapacityType(enum.Enum):
4852
5108
 
4853
5109
  :stability: experimental
4854
5110
  '''
5111
+ AUTOMODE = "AUTOMODE"
5112
+ '''(experimental) Auto Mode.
5113
+
5114
+ :stability: experimental
5115
+ '''
4855
5116
 
4856
5117
 
4857
5118
  @jsii.implements(_aws_cdk_aws_ec2_ceddda9d.IMachineImage)
@@ -9167,9 +9428,12 @@ class KubernetesVersion(
9167
9428
 
9168
9429
  Example::
9169
9430
 
9170
- cluster = eks.Cluster(self, "hello-eks",
9431
+ cluster = eks.Cluster(self, "EksAutoCluster",
9171
9432
  version=eks.KubernetesVersion.V1_32,
9172
- endpoint_access=eks.EndpointAccess.PRIVATE
9433
+ default_capacity_type=eks.DefaultCapacityType.AUTOMODE,
9434
+ compute=eks.ComputeConfig(
9435
+ node_pools=["system", "general-purpose"]
9436
+ )
9173
9437
  )
9174
9438
  '''
9175
9439
 
@@ -9822,6 +10086,7 @@ class NodegroupOptions:
9822
10086
 
9823
10087
  cluster = eks.Cluster(self, "HelloEKS",
9824
10088
  version=eks.KubernetesVersion.V1_32,
10089
+ default_capacity_type=eks.DefaultCapacityType.NODEGROUP,
9825
10090
  default_capacity=0
9826
10091
  )
9827
10092
 
@@ -12049,15 +12314,12 @@ class Cluster(
12049
12314
 
12050
12315
  Example::
12051
12316
 
12052
- cluster = eks.Cluster(self, "HelloEKS",
12317
+ cluster = eks.Cluster(self, "EksAutoCluster",
12053
12318
  version=eks.KubernetesVersion.V1_32,
12054
- default_capacity=0
12055
- )
12056
-
12057
- cluster.add_nodegroup_capacity("custom-node-group",
12058
- instance_types=[ec2.InstanceType("m5.large")],
12059
- min_size=4,
12060
- disk_size=100
12319
+ default_capacity_type=eks.DefaultCapacityType.AUTOMODE,
12320
+ compute=eks.ComputeConfig(
12321
+ node_pools=["system", "general-purpose"]
12322
+ )
12061
12323
  )
12062
12324
  '''
12063
12325
 
@@ -12067,9 +12329,11 @@ class Cluster(
12067
12329
  id: builtins.str,
12068
12330
  *,
12069
12331
  bootstrap_cluster_creator_admin_permissions: typing.Optional[builtins.bool] = None,
12332
+ compute: typing.Optional[typing.Union[ComputeConfig, typing.Dict[builtins.str, typing.Any]]] = None,
12070
12333
  default_capacity: typing.Optional[jsii.Number] = None,
12071
12334
  default_capacity_instance: typing.Optional[_aws_cdk_aws_ec2_ceddda9d.InstanceType] = None,
12072
12335
  default_capacity_type: typing.Optional[DefaultCapacityType] = None,
12336
+ output_config_command: typing.Optional[builtins.bool] = None,
12073
12337
  version: KubernetesVersion,
12074
12338
  alb_controller: typing.Optional[typing.Union[AlbControllerOptions, typing.Dict[builtins.str, typing.Any]]] = None,
12075
12339
  cluster_logging: typing.Optional[typing.Sequence[ClusterLoggingTypes]] = None,
@@ -12093,9 +12357,11 @@ class Cluster(
12093
12357
  :param scope: a Construct, most likely a cdk.Stack created.
12094
12358
  :param id: the id of the Construct to create.
12095
12359
  :param bootstrap_cluster_creator_admin_permissions: (experimental) Whether or not IAM principal of the cluster creator was set as a cluster admin access entry during cluster creation time. Changing this value after the cluster has been created will result in the cluster being replaced. Default: true
12360
+ :param compute: (experimental) Configuration for compute settings in Auto Mode. When enabled, EKS will automatically manage compute resources. Default: - Auto Mode compute disabled
12096
12361
  :param default_capacity: (experimental) Number of instances to allocate as an initial capacity for this cluster. 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. Default: 2
12097
12362
  :param default_capacity_instance: (experimental) The instance type to use for the default capacity. This will only be taken into account if ``defaultCapacity`` is > 0. Default: m5.large
12098
12363
  :param default_capacity_type: (experimental) The default capacity type for the cluster. Default: NODEGROUP
12364
+ :param output_config_command: (experimental) Determines whether a CloudFormation output with the ``aws eks update-kubeconfig`` command will be synthesized. This command will include the cluster name and, if applicable, the ARN of the masters IAM role. Default: true
12099
12365
  :param version: (experimental) The Kubernetes version to run in the cluster.
12100
12366
  :param alb_controller: (experimental) Install the AWS Load Balancer Controller onto the cluster. Default: - The controller is not installed.
12101
12367
  :param cluster_logging: (experimental) The cluster log types which you want to enable. Default: - none
@@ -12122,9 +12388,11 @@ class Cluster(
12122
12388
  check_type(argname="argument id", value=id, expected_type=type_hints["id"])
12123
12389
  props = ClusterProps(
12124
12390
  bootstrap_cluster_creator_admin_permissions=bootstrap_cluster_creator_admin_permissions,
12391
+ compute=compute,
12125
12392
  default_capacity=default_capacity,
12126
12393
  default_capacity_instance=default_capacity_instance,
12127
12394
  default_capacity_type=default_capacity_type,
12395
+ output_config_command=output_config_command,
12128
12396
  version=version,
12129
12397
  alb_controller=alb_controller,
12130
12398
  cluster_logging=cluster_logging,
@@ -13137,6 +13405,7 @@ __all__ = [
13137
13405
  "ClusterCommonOptions",
13138
13406
  "ClusterLoggingTypes",
13139
13407
  "ClusterProps",
13408
+ "ComputeConfig",
13140
13409
  "CoreDnsComputeType",
13141
13410
  "CpuArch",
13142
13411
  "DefaultCapacityType",
@@ -13436,9 +13705,19 @@ def _typecheckingstub__cdebba88d00ede95b7f48fc97c266609fdb0fc0ef3bb709493d319c84
13436
13705
  vpc: typing.Optional[_aws_cdk_aws_ec2_ceddda9d.IVpc] = None,
13437
13706
  vpc_subnets: typing.Optional[typing.Sequence[typing.Union[_aws_cdk_aws_ec2_ceddda9d.SubnetSelection, typing.Dict[builtins.str, typing.Any]]]] = None,
13438
13707
  bootstrap_cluster_creator_admin_permissions: typing.Optional[builtins.bool] = None,
13708
+ compute: typing.Optional[typing.Union[ComputeConfig, typing.Dict[builtins.str, typing.Any]]] = None,
13439
13709
  default_capacity: typing.Optional[jsii.Number] = None,
13440
13710
  default_capacity_instance: typing.Optional[_aws_cdk_aws_ec2_ceddda9d.InstanceType] = None,
13441
13711
  default_capacity_type: typing.Optional[DefaultCapacityType] = None,
13712
+ output_config_command: typing.Optional[builtins.bool] = None,
13713
+ ) -> None:
13714
+ """Type checking stubs"""
13715
+ pass
13716
+
13717
+ def _typecheckingstub__ecd4e0b2b1c23fafd1f01982b69fda08d5f3b0615f7bf8fe543ae2d8e6784f6e(
13718
+ *,
13719
+ node_pools: typing.Optional[typing.Sequence[builtins.str]] = None,
13720
+ node_role: typing.Optional[_aws_cdk_aws_iam_ceddda9d.IRole] = None,
13442
13721
  ) -> None:
13443
13722
  """Type checking stubs"""
13444
13723
  pass
@@ -14076,9 +14355,11 @@ def _typecheckingstub__f953a3ebdf317cd4c17c2caf66c079973022b58e6c5cf124f9d5f0089
14076
14355
  id: builtins.str,
14077
14356
  *,
14078
14357
  bootstrap_cluster_creator_admin_permissions: typing.Optional[builtins.bool] = None,
14358
+ compute: typing.Optional[typing.Union[ComputeConfig, typing.Dict[builtins.str, typing.Any]]] = None,
14079
14359
  default_capacity: typing.Optional[jsii.Number] = None,
14080
14360
  default_capacity_instance: typing.Optional[_aws_cdk_aws_ec2_ceddda9d.InstanceType] = None,
14081
14361
  default_capacity_type: typing.Optional[DefaultCapacityType] = None,
14362
+ output_config_command: typing.Optional[builtins.bool] = None,
14082
14363
  version: KubernetesVersion,
14083
14364
  alb_controller: typing.Optional[typing.Union[AlbControllerOptions, typing.Dict[builtins.str, typing.Any]]] = None,
14084
14365
  cluster_logging: typing.Optional[typing.Sequence[ClusterLoggingTypes]] = None,
@@ -33,9 +33,9 @@ import constructs._jsii
33
33
 
34
34
  __jsii_assembly__ = jsii.JSIIAssembly.load(
35
35
  "@aws-cdk/aws-eks-v2-alpha",
36
- "2.180.0-alpha.0",
36
+ "2.181.1-alpha.0",
37
37
  __name__[0:-6],
38
- "aws-eks-v2-alpha@2.180.0-alpha.0.jsii.tgz",
38
+ "aws-eks-v2-alpha@2.181.1-alpha.0.jsii.tgz",
39
39
  )
40
40
 
41
41
  __all__ = [
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: aws-cdk.aws-eks-v2-alpha
3
- Version: 2.180.0a0
3
+ Version: 2.181.1a0
4
4
  Summary: The CDK Construct Library for AWS::EKS
5
5
  Home-page: https://github.com/aws/aws-cdk
6
6
  Author: Amazon Web Services
@@ -23,7 +23,7 @@ Requires-Python: ~=3.8
23
23
  Description-Content-Type: text/markdown
24
24
  License-File: LICENSE
25
25
  License-File: NOTICE
26
- Requires-Dist: aws-cdk-lib<3.0.0,>=2.180.0
26
+ Requires-Dist: aws-cdk-lib<3.0.0,>=2.181.1
27
27
  Requires-Dist: constructs<11.0.0,>=10.0.0
28
28
  Requires-Dist: jsii<2.0.0,>=1.106.0
29
29
  Requires-Dist: publication>=0.0.3
@@ -131,6 +131,121 @@ eks.Cluster(self, "hello-eks",
131
131
  )
132
132
  ```
133
133
 
134
+ ## EKS Auto Mode
135
+
136
+ [Amazon EKS Auto Mode](https://aws.amazon.com/eks/auto-mode/) extends AWS management of Kubernetes clusters beyond the cluster itself, allowing AWS to set up and manage the infrastructure that enables the smooth operation of your workloads.
137
+
138
+ ### Using Auto Mode
139
+
140
+ While `aws-eks` uses `DefaultCapacityType.NODEGROUP` by default, `aws-eks-v2` uses `DefaultCapacityType.AUTOMODE` as the default capacity type.
141
+
142
+ Auto Mode is enabled by default when creating a new cluster without specifying any capacity-related properties:
143
+
144
+ ```python
145
+ # Create EKS cluster with Auto Mode implicitly enabled
146
+ cluster = eks.Cluster(self, "EksAutoCluster",
147
+ version=eks.KubernetesVersion.V1_32
148
+ )
149
+ ```
150
+
151
+ You can also explicitly enable Auto Mode using `defaultCapacityType`:
152
+
153
+ ```python
154
+ # Create EKS cluster with Auto Mode explicitly enabled
155
+ cluster = eks.Cluster(self, "EksAutoCluster",
156
+ version=eks.KubernetesVersion.V1_32,
157
+ default_capacity_type=eks.DefaultCapacityType.AUTOMODE
158
+ )
159
+ ```
160
+
161
+ ### Node Pools
162
+
163
+ When Auto Mode is enabled, the cluster comes with two default node pools:
164
+
165
+ * `system`: For running system components and add-ons
166
+ * `general-purpose`: For running your application workloads
167
+
168
+ These node pools are managed automatically by EKS. You can configure which node pools to enable through the `compute` property:
169
+
170
+ ```python
171
+ cluster = eks.Cluster(self, "EksAutoCluster",
172
+ version=eks.KubernetesVersion.V1_32,
173
+ default_capacity_type=eks.DefaultCapacityType.AUTOMODE,
174
+ compute=eks.ComputeConfig(
175
+ node_pools=["system", "general-purpose"]
176
+ )
177
+ )
178
+ ```
179
+
180
+ For more information, see [Create a Node Pool for EKS Auto Mode](https://docs.aws.amazon.com/eks/latest/userguide/create-node-pool.html).
181
+
182
+ ### Node Groups as the default capacity type
183
+
184
+ If you prefer to manage your own node groups instead of using Auto Mode, you can use the traditional node group approach by specifying `defaultCapacityType` as `NODEGROUP`:
185
+
186
+ ```python
187
+ # Create EKS cluster with traditional managed node group
188
+ cluster = eks.Cluster(self, "EksCluster",
189
+ version=eks.KubernetesVersion.V1_32,
190
+ default_capacity_type=eks.DefaultCapacityType.NODEGROUP,
191
+ default_capacity=3, # Number of instances
192
+ default_capacity_instance=ec2.InstanceType.of(ec2.InstanceClass.T3, ec2.InstanceSize.LARGE)
193
+ )
194
+ ```
195
+
196
+ You can also create a cluster with no initial capacity and add node groups later:
197
+
198
+ ```python
199
+ cluster = eks.Cluster(self, "EksCluster",
200
+ version=eks.KubernetesVersion.V1_32,
201
+ default_capacity_type=eks.DefaultCapacityType.NODEGROUP,
202
+ default_capacity=0
203
+ )
204
+
205
+ # Add node groups as needed
206
+ cluster.add_nodegroup_capacity("custom-node-group",
207
+ min_size=1,
208
+ max_size=3,
209
+ instance_types=[ec2.InstanceType.of(ec2.InstanceClass.T3, ec2.InstanceSize.LARGE)]
210
+ )
211
+ ```
212
+
213
+ Read [Managed node groups](#managed-node-groups) for more information on how to add node groups to the cluster.
214
+
215
+ ### Mixed with Auto Mode and Node Groups
216
+
217
+ You can combine Auto Mode with traditional node groups for specific workload requirements:
218
+
219
+ ```python
220
+ cluster = eks.Cluster(self, "Cluster",
221
+ version=eks.KubernetesVersion.V1_32,
222
+ default_capacity_type=eks.DefaultCapacityType.AUTOMODE,
223
+ compute=eks.ComputeConfig(
224
+ node_pools=["system", "general-purpose"]
225
+ )
226
+ )
227
+
228
+ # Add specialized node group for specific workloads
229
+ cluster.add_nodegroup_capacity("specialized-workload",
230
+ min_size=1,
231
+ max_size=3,
232
+ instance_types=[ec2.InstanceType.of(ec2.InstanceClass.C5, ec2.InstanceSize.XLARGE)],
233
+ labels={
234
+ "workload": "specialized"
235
+ }
236
+ )
237
+ ```
238
+
239
+ ### Important Notes
240
+
241
+ 1. Auto Mode and traditional capacity management are mutually exclusive at the default capacity level. You cannot opt in to Auto Mode and specify `defaultCapacity` or `defaultCapacityInstance`.
242
+ 2. When Auto Mode is enabled:
243
+
244
+ * The cluster will automatically manage compute resources
245
+ * Node pools cannot be modified, only enabled or disabled
246
+ * EKS will handle scaling and management of the node pools
247
+ 3. Auto Mode requires specific IAM permissions. The construct will automatically attach the required managed policies.
248
+
134
249
  ### Managed node groups
135
250
 
136
251
  Amazon EKS managed node groups automate the provisioning and lifecycle management of nodes (Amazon EC2 instances) for Amazon EKS Kubernetes clusters.
@@ -138,15 +253,21 @@ With Amazon EKS managed node groups, you don't need to separately provision or r
138
253
 
139
254
  > For more details visit [Amazon EKS Managed Node Groups](https://docs.aws.amazon.com/eks/latest/userguide/managed-node-groups.html).
140
255
 
141
- **Managed Node Groups are the recommended way to allocate cluster capacity.**
256
+ By default, when using `DefaultCapacityType.NODEGROUP`, this library will allocate a managed node group with 2 *m5.large* instances (this instance type suits most common use-cases, and is good value for money).
142
257
 
143
- By default, this library will allocate a managed node group with 2 *m5.large* instances (this instance type suits most common use-cases, and is good value for money).
258
+ ```python
259
+ eks.Cluster(self, "HelloEKS",
260
+ version=eks.KubernetesVersion.V1_32,
261
+ default_capacity_type=eks.DefaultCapacityType.NODEGROUP
262
+ )
263
+ ```
144
264
 
145
265
  At cluster instantiation time, you can customize the number of instances and their type:
146
266
 
147
267
  ```python
148
268
  eks.Cluster(self, "HelloEKS",
149
269
  version=eks.KubernetesVersion.V1_32,
270
+ default_capacity_type=eks.DefaultCapacityType.NODEGROUP,
150
271
  default_capacity=5,
151
272
  default_capacity_instance=ec2.InstanceType.of(ec2.InstanceClass.M5, ec2.InstanceSize.SMALL)
152
273
  )
@@ -159,6 +280,7 @@ Additional customizations are available post instantiation. To apply them, set t
159
280
  ```python
160
281
  cluster = eks.Cluster(self, "HelloEKS",
161
282
  version=eks.KubernetesVersion.V1_32,
283
+ default_capacity_type=eks.DefaultCapacityType.NODEGROUP,
162
284
  default_capacity=0
163
285
  )
164
286
 
@@ -0,0 +1,10 @@
1
+ aws_cdk/aws_eks_v2_alpha/__init__.py,sha256=MwKKVmReLRKXvfKF5xM0Ts2x3T7bfChIK1eoSoquY0A,692823
2
+ aws_cdk/aws_eks_v2_alpha/py.typed,sha256=AbpHGcgLb-kRsJGnwFEktk7uzpZOCcBY74-YBdrKVGs,1
3
+ aws_cdk/aws_eks_v2_alpha/_jsii/__init__.py,sha256=yOVJjPOWiQSvzsBYRfecl9LKrwLVvZlCSOVTqz0wbTU,1485
4
+ aws_cdk/aws_eks_v2_alpha/_jsii/aws-eks-v2-alpha@2.181.1-alpha.0.jsii.tgz,sha256=BE8gQFGJExT6k0GwPnvWQWNbv6pvgFURUKp0ibhAnsc,397248
5
+ aws_cdk.aws_eks_v2_alpha-2.181.1a0.dist-info/LICENSE,sha256=y47tc38H0C4DpGljYUZDl8XxidQjNxxGLq-K4jwv6Xc,11391
6
+ aws_cdk.aws_eks_v2_alpha-2.181.1a0.dist-info/METADATA,sha256=qItpVFDY-rQ9JPbMe1J17VOpT4US9-7s7tE4BwaZ-Qc,41857
7
+ aws_cdk.aws_eks_v2_alpha-2.181.1a0.dist-info/NOTICE,sha256=6Jdq-MQvHIyOFx_9SdfwJrEmcxlScjONPAJru73PESY,919
8
+ aws_cdk.aws_eks_v2_alpha-2.181.1a0.dist-info/WHEEL,sha256=tZoeGjtWxWRfdplE7E3d45VPlLNQnvbKiYnx7gwAy8A,92
9
+ aws_cdk.aws_eks_v2_alpha-2.181.1a0.dist-info/top_level.txt,sha256=1TALAKbuUGsMSrfKWEf268lySCmcqSEO6cDYe_XlLHM,8
10
+ aws_cdk.aws_eks_v2_alpha-2.181.1a0.dist-info/RECORD,,
@@ -1,10 +0,0 @@
1
- aws_cdk/aws_eks_v2_alpha/__init__.py,sha256=CXXLcKx8eOEpC1kp2EeV0qWFDtOxDQUcZzVNaMRChx4,680647
2
- aws_cdk/aws_eks_v2_alpha/py.typed,sha256=AbpHGcgLb-kRsJGnwFEktk7uzpZOCcBY74-YBdrKVGs,1
3
- aws_cdk/aws_eks_v2_alpha/_jsii/__init__.py,sha256=UnyY9CziIdwyV1EvdIWAvwDC5pjzC-sLZcMu-Km0EbU,1485
4
- aws_cdk/aws_eks_v2_alpha/_jsii/aws-eks-v2-alpha@2.180.0-alpha.0.jsii.tgz,sha256=YusKcLCr8edUu74A57JwXGDW8gib6SXQW4od6iWRgqw,385103
5
- aws_cdk.aws_eks_v2_alpha-2.180.0a0.dist-info/LICENSE,sha256=y47tc38H0C4DpGljYUZDl8XxidQjNxxGLq-K4jwv6Xc,11391
6
- aws_cdk.aws_eks_v2_alpha-2.180.0a0.dist-info/METADATA,sha256=0_jZckbl4GKM52KBK-gLovuyhzW9XLHCrqEpZTSf2Bw,37538
7
- aws_cdk.aws_eks_v2_alpha-2.180.0a0.dist-info/NOTICE,sha256=6Jdq-MQvHIyOFx_9SdfwJrEmcxlScjONPAJru73PESY,919
8
- aws_cdk.aws_eks_v2_alpha-2.180.0a0.dist-info/WHEEL,sha256=tZoeGjtWxWRfdplE7E3d45VPlLNQnvbKiYnx7gwAy8A,92
9
- aws_cdk.aws_eks_v2_alpha-2.180.0a0.dist-info/top_level.txt,sha256=1TALAKbuUGsMSrfKWEf268lySCmcqSEO6cDYe_XlLHM,8
10
- aws_cdk.aws_eks_v2_alpha-2.180.0a0.dist-info/RECORD,,