aws-cdk-lib 2.178.2__py3-none-any.whl → 2.180.0__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-lib might be problematic. Click here for more details.

Files changed (70) hide show
  1. aws_cdk/__init__.py +83 -41
  2. aws_cdk/_jsii/__init__.py +1 -2
  3. aws_cdk/_jsii/{aws-cdk-lib@2.178.2.jsii.tgz → aws-cdk-lib@2.180.0.jsii.tgz} +0 -0
  4. aws_cdk/aws_acmpca/__init__.py +47 -0
  5. aws_cdk/aws_apigateway/__init__.py +176 -35
  6. aws_cdk/aws_apigatewayv2/__init__.py +151 -32
  7. aws_cdk/aws_apigatewayv2_integrations/__init__.py +348 -0
  8. aws_cdk/aws_applicationautoscaling/__init__.py +8 -8
  9. aws_cdk/aws_appsync/__init__.py +10 -7
  10. aws_cdk/aws_backup/__init__.py +89 -0
  11. aws_cdk/aws_batch/__init__.py +89 -50
  12. aws_cdk/aws_bedrock/__init__.py +506 -62
  13. aws_cdk/aws_cloudfront/__init__.py +1037 -146
  14. aws_cdk/aws_cloudfront_origins/__init__.py +1338 -144
  15. aws_cdk/aws_cloudtrail/__init__.py +4 -8
  16. aws_cdk/aws_cloudwatch/__init__.py +1 -1
  17. aws_cdk/aws_codebuild/__init__.py +218 -2
  18. aws_cdk/aws_codepipeline/__init__.py +113 -28
  19. aws_cdk/aws_codepipeline_actions/__init__.py +554 -63
  20. aws_cdk/aws_codestar/__init__.py +2 -1
  21. aws_cdk/aws_cognito/__init__.py +676 -29
  22. aws_cdk/aws_connect/__init__.py +257 -0
  23. aws_cdk/aws_datasync/__init__.py +279 -50
  24. aws_cdk/aws_deadline/__init__.py +683 -6
  25. aws_cdk/aws_directoryservice/__init__.py +9 -4
  26. aws_cdk/aws_dlm/__init__.py +2 -2
  27. aws_cdk/aws_dms/__init__.py +3 -3
  28. aws_cdk/aws_dynamodb/__init__.py +0 -54
  29. aws_cdk/aws_ec2/__init__.py +402 -130
  30. aws_cdk/aws_ecs/__init__.py +28 -43
  31. aws_cdk/aws_efs/__init__.py +1 -1
  32. aws_cdk/aws_eks/__init__.py +560 -182
  33. aws_cdk/aws_elasticloadbalancingv2/__init__.py +112 -27
  34. aws_cdk/aws_emrcontainers/__init__.py +44 -1
  35. aws_cdk/aws_events/__init__.py +17 -26
  36. aws_cdk/aws_events_targets/__init__.py +303 -16
  37. aws_cdk/aws_fms/__init__.py +5 -5
  38. aws_cdk/aws_fsx/__init__.py +5 -4
  39. aws_cdk/aws_glue/__init__.py +161 -0
  40. aws_cdk/aws_groundstation/__init__.py +23 -1
  41. aws_cdk/aws_iam/__init__.py +15 -15
  42. aws_cdk/aws_iot/__init__.py +7 -0
  43. aws_cdk/aws_ivs/__init__.py +254 -77
  44. aws_cdk/aws_kinesis/__init__.py +689 -35
  45. aws_cdk/aws_lambda/__init__.py +10 -15
  46. aws_cdk/aws_lambda_event_sources/__init__.py +175 -2
  47. aws_cdk/aws_logs/__init__.py +62 -13
  48. aws_cdk/aws_medialive/__init__.py +314 -4
  49. aws_cdk/aws_opensearchserverless/__init__.py +19 -0
  50. aws_cdk/aws_pinpoint/__init__.py +14 -9
  51. aws_cdk/aws_rds/__init__.py +246 -82
  52. aws_cdk/aws_s3/__init__.py +287 -9
  53. aws_cdk/aws_s3objectlambda/__init__.py +2 -2
  54. aws_cdk/aws_ses/__init__.py +228 -8
  55. aws_cdk/aws_ssm/__init__.py +4 -5
  56. aws_cdk/aws_stepfunctions/__init__.py +301 -70
  57. aws_cdk/aws_stepfunctions_tasks/__init__.py +269 -163
  58. aws_cdk/aws_supportapp/__init__.py +7 -7
  59. aws_cdk/aws_transfer/__init__.py +820 -2
  60. aws_cdk/aws_wafv2/__init__.py +17 -9
  61. aws_cdk/custom_resources/__init__.py +23 -26
  62. aws_cdk/cx_api/__init__.py +16 -0
  63. aws_cdk/pipelines/__init__.py +2 -2
  64. {aws_cdk_lib-2.178.2.dist-info → aws_cdk_lib-2.180.0.dist-info}/METADATA +1 -2
  65. {aws_cdk_lib-2.178.2.dist-info → aws_cdk_lib-2.180.0.dist-info}/RECORD +69 -70
  66. aws_cdk/lambda_layer_kubectl/__init__.py +0 -107
  67. {aws_cdk_lib-2.178.2.dist-info → aws_cdk_lib-2.180.0.dist-info}/LICENSE +0 -0
  68. {aws_cdk_lib-2.178.2.dist-info → aws_cdk_lib-2.180.0.dist-info}/NOTICE +0 -0
  69. {aws_cdk_lib-2.178.2.dist-info → aws_cdk_lib-2.180.0.dist-info}/WHEEL +0 -0
  70. {aws_cdk_lib-2.178.2.dist-info → aws_cdk_lib-2.180.0.dist-info}/top_level.txt +0 -0
@@ -39,6 +39,7 @@ In addition, the library also supports defining Kubernetes resource manifests wi
39
39
  * [ARM64 Support](#arm64-support)
40
40
  * [Masters Role](#masters-role)
41
41
  * [Encryption](#encryption)
42
+ * [Hybrid nodes](#hybrid-nodes)
42
43
  * [Permissions and Security](#permissions-and-security)
43
44
 
44
45
  * [AWS IAM Mapping](#aws-iam-mapping)
@@ -78,13 +79,13 @@ This example defines an Amazon EKS cluster with the following configuration:
78
79
  * A Kubernetes pod with a container based on the [paulbouwer/hello-kubernetes](https://github.com/paulbouwer/hello-kubernetes) image.
79
80
 
80
81
  ```python
81
- from aws_cdk.lambda_layer_kubectl_v31 import KubectlV31Layer
82
+ from aws_cdk.lambda_layer_kubectl_v32 import KubectlV32Layer
82
83
 
83
84
 
84
85
  # provisioning a cluster
85
86
  cluster = eks.Cluster(self, "hello-eks",
86
- version=eks.KubernetesVersion.V1_31,
87
- kubectl_layer=KubectlV31Layer(self, "kubectl")
87
+ version=eks.KubernetesVersion.V1_32,
88
+ kubectl_layer=KubectlV32Layer(self, "kubectl")
88
89
  )
89
90
 
90
91
  # apply a kubernetes manifest to the cluster
@@ -145,19 +146,27 @@ A more detailed breakdown of each is provided further down this README.
145
146
 
146
147
  ## Provisioning clusters
147
148
 
148
- Creating a new cluster is done using the `Cluster` or `FargateCluster` constructs. The only required property is the kubernetes `version`.
149
+ Creating a new cluster is done using the `Cluster` or `FargateCluster` constructs. The only required properties are the kubernetes `version` and `kubectlLayer`.
149
150
 
150
151
  ```python
152
+ from aws_cdk.lambda_layer_kubectl_v32 import KubectlV32Layer
153
+
154
+
151
155
  eks.Cluster(self, "HelloEKS",
152
- version=eks.KubernetesVersion.V1_31
156
+ version=eks.KubernetesVersion.V1_32,
157
+ kubectl_layer=KubectlV32Layer(self, "kubectl")
153
158
  )
154
159
  ```
155
160
 
156
161
  You can also use `FargateCluster` to provision a cluster that uses only fargate workers.
157
162
 
158
163
  ```python
164
+ from aws_cdk.lambda_layer_kubectl_v32 import KubectlV32Layer
165
+
166
+
159
167
  eks.FargateCluster(self, "HelloEKS",
160
- version=eks.KubernetesVersion.V1_31
168
+ version=eks.KubernetesVersion.V1_32,
169
+ kubectl_layer=KubectlV32Layer(self, "kubectl")
161
170
  )
162
171
  ```
163
172
 
@@ -169,7 +178,7 @@ Capacity is the amount and the type of worker nodes that are available to the cl
169
178
  ### Managed node groups
170
179
 
171
180
  Amazon EKS managed node groups automate the provisioning and lifecycle management of nodes (Amazon EC2 instances) for Amazon EKS Kubernetes clusters.
172
- With Amazon EKS managed node groups, you dont need to separately provision or register the Amazon EC2 instances that provide compute capacity to run your Kubernetes applications. You can create, update, or terminate nodes for your cluster with a single operation. Nodes run using the latest Amazon EKS optimized AMIs in your AWS account while node updates and terminations gracefully drain nodes to ensure that your applications stay available.
181
+ With Amazon EKS managed node groups, you don't need to separately provision or register the Amazon EC2 instances that provide compute capacity to run your Kubernetes applications. You can create, update, or terminate nodes for your cluster with a single operation. Nodes run using the latest Amazon EKS optimized AMIs in your AWS account while node updates and terminations gracefully drain nodes to ensure that your applications stay available.
173
182
 
174
183
  > For more details visit [Amazon EKS Managed Node Groups](https://docs.aws.amazon.com/eks/latest/userguide/managed-node-groups.html).
175
184
 
@@ -180,10 +189,14 @@ By default, this library will allocate a managed node group with 2 *m5.large* in
180
189
  At cluster instantiation time, you can customize the number of instances and their type:
181
190
 
182
191
  ```python
192
+ from aws_cdk.lambda_layer_kubectl_v32 import KubectlV32Layer
193
+
194
+
183
195
  eks.Cluster(self, "HelloEKS",
184
- version=eks.KubernetesVersion.V1_31,
196
+ version=eks.KubernetesVersion.V1_32,
185
197
  default_capacity=5,
186
- default_capacity_instance=ec2.InstanceType.of(ec2.InstanceClass.M5, ec2.InstanceSize.SMALL)
198
+ default_capacity_instance=ec2.InstanceType.of(ec2.InstanceClass.M5, ec2.InstanceSize.SMALL),
199
+ kubectl_layer=KubectlV32Layer(self, "kubectl")
187
200
  )
188
201
  ```
189
202
 
@@ -192,9 +205,13 @@ To access the node group that was created on your behalf, you can use `cluster.d
192
205
  Additional customizations are available post instantiation. To apply them, set the default capacity to 0, and use the `cluster.addNodegroupCapacity` method:
193
206
 
194
207
  ```python
208
+ from aws_cdk.lambda_layer_kubectl_v32 import KubectlV32Layer
209
+
210
+
195
211
  cluster = eks.Cluster(self, "HelloEKS",
196
- version=eks.KubernetesVersion.V1_31,
197
- default_capacity=0
212
+ version=eks.KubernetesVersion.V1_32,
213
+ default_capacity=0,
214
+ kubectl_layer=KubectlV32Layer(self, "kubectl")
198
215
  )
199
216
 
200
217
  cluster.add_nodegroup_capacity("custom-node-group",
@@ -273,6 +290,9 @@ Node groups are available with IPv6 configured networks. For custom roles assig
273
290
  > For more details visit [Configuring the Amazon VPC CNI plugin for Kubernetes to use IAM roles for service accounts](https://docs.aws.amazon.com/eks/latest/userguide/cni-iam-role.html#cni-iam-role-create-role)
274
291
 
275
292
  ```python
293
+ from aws_cdk.lambda_layer_kubectl_v32 import KubectlV32Layer
294
+
295
+
276
296
  ipv6_management = iam.PolicyDocument(
277
297
  statements=[iam.PolicyStatement(
278
298
  resources=["arn:aws:ec2:*:*:network-interface/*"],
@@ -295,8 +315,9 @@ eks_cluster_node_group_role = iam.Role(self, "eksClusterNodeGroupRole",
295
315
  )
296
316
 
297
317
  cluster = eks.Cluster(self, "HelloEKS",
298
- version=eks.KubernetesVersion.V1_31,
299
- default_capacity=0
318
+ version=eks.KubernetesVersion.V1_32,
319
+ default_capacity=0,
320
+ kubectl_layer=KubectlV32Layer(self, "kubectl")
300
321
  )
301
322
 
302
323
  cluster.add_nodegroup_capacity("custom-node-group",
@@ -405,9 +426,13 @@ has been changed. As a workaround, you need to add a temporary policy to the clu
405
426
  successful replacement. Consider this example if you are renaming the cluster from `foo` to `bar`:
406
427
 
407
428
  ```python
429
+ from aws_cdk.lambda_layer_kubectl_v32 import KubectlV32Layer
430
+
431
+
408
432
  cluster = eks.Cluster(self, "cluster-to-rename",
409
433
  cluster_name="foo", # rename this to 'bar'
410
- version=eks.KubernetesVersion.V1_31
434
+ kubectl_layer=KubectlV32Layer(self, "kubectl"),
435
+ version=eks.KubernetesVersion.V1_32
411
436
  )
412
437
 
413
438
  # allow the cluster admin role to delete the cluster 'foo'
@@ -460,8 +485,12 @@ To create an EKS cluster that **only** uses Fargate capacity, you can use `Farga
460
485
  The following code defines an Amazon EKS cluster with a default Fargate Profile that matches all pods from the "kube-system" and "default" namespaces. It is also configured to [run CoreDNS on Fargate](https://docs.aws.amazon.com/eks/latest/userguide/fargate-getting-started.html#fargate-gs-coredns).
461
486
 
462
487
  ```python
488
+ from aws_cdk.lambda_layer_kubectl_v32 import KubectlV32Layer
489
+
490
+
463
491
  cluster = eks.FargateCluster(self, "MyCluster",
464
- version=eks.KubernetesVersion.V1_31
492
+ version=eks.KubernetesVersion.V1_32,
493
+ kubectl_layer=KubectlV32Layer(self, "kubectl")
465
494
  )
466
495
  ```
467
496
 
@@ -541,9 +570,13 @@ To disable bootstrapping altogether (i.e. to fully customize user-data), set `bo
541
570
  You can also configure the cluster to use an auto-scaling group as the default capacity:
542
571
 
543
572
  ```python
573
+ from aws_cdk.lambda_layer_kubectl_v32 import KubectlV32Layer
574
+
575
+
544
576
  cluster = eks.Cluster(self, "HelloEKS",
545
- version=eks.KubernetesVersion.V1_31,
546
- default_capacity_type=eks.DefaultCapacityType.EC2
577
+ version=eks.KubernetesVersion.V1_32,
578
+ default_capacity_type=eks.DefaultCapacityType.EC2,
579
+ kubectl_layer=KubectlV32Layer(self, "kubectl")
547
580
  )
548
581
  ```
549
582
 
@@ -650,9 +683,13 @@ AWS Identity and Access Management (IAM) and native Kubernetes [Role Based Acces
650
683
  You can configure the [cluster endpoint access](https://docs.aws.amazon.com/eks/latest/userguide/cluster-endpoint.html) by using the `endpointAccess` property:
651
684
 
652
685
  ```python
686
+ from aws_cdk.lambda_layer_kubectl_v32 import KubectlV32Layer
687
+
688
+
653
689
  cluster = eks.Cluster(self, "hello-eks",
654
- version=eks.KubernetesVersion.V1_31,
655
- endpoint_access=eks.EndpointAccess.PRIVATE
690
+ version=eks.KubernetesVersion.V1_32,
691
+ endpoint_access=eks.EndpointAccess.PRIVATE, # No access outside of your VPC.
692
+ kubectl_layer=KubectlV32Layer(self, "kubectl")
656
693
  )
657
694
  ```
658
695
 
@@ -672,11 +709,15 @@ From the docs:
672
709
  To deploy the controller on your EKS cluster, configure the `albController` property:
673
710
 
674
711
  ```python
712
+ from aws_cdk.lambda_layer_kubectl_v32 import KubectlV32Layer
713
+
714
+
675
715
  eks.Cluster(self, "HelloEKS",
676
- version=eks.KubernetesVersion.V1_31,
716
+ version=eks.KubernetesVersion.V1_32,
677
717
  alb_controller=eks.AlbControllerOptions(
678
718
  version=eks.AlbControllerVersion.V2_8_2
679
- )
719
+ ),
720
+ kubectl_layer=KubectlV32Layer(self, "kubectl")
680
721
  )
681
722
  ```
682
723
 
@@ -713,13 +754,16 @@ if cluster.alb_controller:
713
754
  You can specify the VPC of the cluster using the `vpc` and `vpcSubnets` properties:
714
755
 
715
756
  ```python
757
+ from aws_cdk.lambda_layer_kubectl_v32 import KubectlV32Layer
758
+
716
759
  # vpc: ec2.Vpc
717
760
 
718
761
 
719
762
  eks.Cluster(self, "HelloEKS",
720
- version=eks.KubernetesVersion.V1_31,
763
+ version=eks.KubernetesVersion.V1_32,
721
764
  vpc=vpc,
722
- vpc_subnets=[ec2.SubnetSelection(subnet_type=ec2.SubnetType.PRIVATE_WITH_EGRESS)]
765
+ vpc_subnets=[ec2.SubnetSelection(subnet_type=ec2.SubnetType.PRIVATE_WITH_EGRESS)],
766
+ kubectl_layer=KubectlV32Layer(self, "kubectl")
723
767
  )
724
768
  ```
725
769
 
@@ -763,10 +807,12 @@ The `ClusterHandler` is a set of Lambda functions (`onEventHandler`, `isComplete
763
807
  You can configure the environment of the Cluster Handler functions by specifying it at cluster instantiation. For example, this can be useful in order to configure an http proxy:
764
808
 
765
809
  ```python
810
+ from aws_cdk.lambda_layer_kubectl_v32 import KubectlV32Layer
811
+
766
812
  # proxy_instance_security_group: ec2.SecurityGroup
767
813
 
768
814
  cluster = eks.Cluster(self, "hello-eks",
769
- version=eks.KubernetesVersion.V1_31,
815
+ version=eks.KubernetesVersion.V1_32,
770
816
  cluster_handler_environment={
771
817
  "https_proxy": "http://proxy.myproxy.com"
772
818
  },
@@ -774,7 +820,8 @@ cluster = eks.Cluster(self, "hello-eks",
774
820
  # If the proxy is not open publicly, you can pass a security group to the
775
821
  # Cluster Handler Lambdas so that it can reach the proxy.
776
822
  #
777
- cluster_handler_security_group=proxy_instance_security_group
823
+ cluster_handler_security_group=proxy_instance_security_group,
824
+ kubectl_layer=KubectlV32Layer(self, "kubectl")
778
825
  )
779
826
  ```
780
827
 
@@ -783,6 +830,7 @@ cluster = eks.Cluster(self, "hello-eks",
783
830
  You can optionally choose to configure your cluster to use IPv6 using the [`ipFamily`](https://docs.aws.amazon.com/eks/latest/APIReference/API_KubernetesNetworkConfigRequest.html#AmazonEKS-Type-KubernetesNetworkConfigRequest-ipFamily) definition for your cluster. Note that this will require the underlying subnets to have an associated IPv6 CIDR.
784
831
 
785
832
  ```python
833
+ from aws_cdk.lambda_layer_kubectl_v32 import KubectlV32Layer
786
834
  # vpc: ec2.Vpc
787
835
 
788
836
 
@@ -807,10 +855,11 @@ for subnet in subnets:
807
855
  subnetcount = subnetcount + 1
808
856
 
809
857
  cluster = eks.Cluster(self, "hello-eks",
810
- version=eks.KubernetesVersion.V1_31,
858
+ version=eks.KubernetesVersion.V1_32,
811
859
  vpc=vpc,
812
860
  ip_family=eks.IpFamily.IP_V6,
813
- vpc_subnets=[ec2.SubnetSelection(subnets=vpc.public_subnets)]
861
+ vpc_subnets=[ec2.SubnetSelection(subnets=vpc.public_subnets)],
862
+ kubectl_layer=KubectlV32Layer(self, "kubectl")
814
863
  )
815
864
  ```
816
865
 
@@ -841,11 +890,15 @@ cluster = eks.Cluster.from_cluster_attributes(self, "Cluster",
841
890
  You can configure the environment of this function by specifying it at cluster instantiation. For example, this can be useful in order to configure an http proxy:
842
891
 
843
892
  ```python
893
+ from aws_cdk.lambda_layer_kubectl_v32 import KubectlV32Layer
894
+
895
+
844
896
  cluster = eks.Cluster(self, "hello-eks",
845
- version=eks.KubernetesVersion.V1_31,
897
+ version=eks.KubernetesVersion.V1_32,
846
898
  kubectl_environment={
847
899
  "http_proxy": "http://proxy.myproxy.com"
848
- }
900
+ },
901
+ kubectl_layer=KubectlV32Layer(self, "kubectl")
849
902
  )
850
903
  ```
851
904
 
@@ -862,12 +915,12 @@ Depending on which version of kubernetes you're targeting, you will need to use
862
915
  the `@aws-cdk/lambda-layer-kubectl-vXY` packages.
863
916
 
864
917
  ```python
865
- from aws_cdk.lambda_layer_kubectl_v31 import KubectlV31Layer
918
+ from aws_cdk.lambda_layer_kubectl_v32 import KubectlV32Layer
866
919
 
867
920
 
868
921
  cluster = eks.Cluster(self, "hello-eks",
869
- version=eks.KubernetesVersion.V1_31,
870
- kubectl_layer=KubectlV31Layer(self, "kubectl")
922
+ version=eks.KubernetesVersion.V1_32,
923
+ kubectl_layer=KubectlV32Layer(self, "kubectl")
871
924
  )
872
925
  ```
873
926
 
@@ -903,7 +956,7 @@ cluster1 = eks.Cluster(self, "MyCluster",
903
956
  kubectl_layer=layer,
904
957
  vpc=vpc,
905
958
  cluster_name="cluster-name",
906
- version=eks.KubernetesVersion.V1_31
959
+ version=eks.KubernetesVersion.V1_32
907
960
  )
908
961
 
909
962
  # or
@@ -919,11 +972,16 @@ cluster2 = eks.Cluster.from_cluster_attributes(self, "MyCluster",
919
972
  By default, the kubectl provider is configured with 1024MiB of memory. You can use the `kubectlMemory` option to specify the memory size for the AWS Lambda function:
920
973
 
921
974
  ```python
975
+ from aws_cdk.lambda_layer_kubectl_v32 import KubectlV32Layer
976
+
922
977
  # or
923
978
  # vpc: ec2.Vpc
979
+
980
+
924
981
  eks.Cluster(self, "MyCluster",
925
982
  kubectl_memory=Size.gibibytes(4),
926
- version=eks.KubernetesVersion.V1_31
983
+ version=eks.KubernetesVersion.V1_32,
984
+ kubectl_layer=KubectlV32Layer(self, "kubectl")
927
985
  )
928
986
  eks.Cluster.from_cluster_attributes(self, "MyCluster",
929
987
  kubectl_memory=Size.gibibytes(4),
@@ -958,11 +1016,14 @@ cluster.add_auto_scaling_group_capacity("self-ng-arm",
958
1016
  When you create a cluster, you can specify a `mastersRole`. The `Cluster` construct will associate this role with the `system:masters` [RBAC](https://kubernetes.io/docs/reference/access-authn-authz/rbac/) group, giving it super-user access to the cluster.
959
1017
 
960
1018
  ```python
1019
+ from aws_cdk.lambda_layer_kubectl_v32 import KubectlV32Layer
1020
+
961
1021
  # role: iam.Role
962
1022
 
963
1023
  eks.Cluster(self, "HelloEKS",
964
- version=eks.KubernetesVersion.V1_31,
965
- masters_role=role
1024
+ version=eks.KubernetesVersion.V1_32,
1025
+ masters_role=role,
1026
+ kubectl_layer=KubectlV32Layer(self, "kubectl")
966
1027
  )
967
1028
  ```
968
1029
 
@@ -1008,20 +1069,28 @@ You can use the `secretsEncryptionKey` to configure which key the cluster will u
1008
1069
  > This setting can only be specified when the cluster is created and cannot be updated.
1009
1070
 
1010
1071
  ```python
1072
+ from aws_cdk.lambda_layer_kubectl_v32 import KubectlV32Layer
1073
+
1074
+
1011
1075
  secrets_key = kms.Key(self, "SecretsKey")
1012
1076
  cluster = eks.Cluster(self, "MyCluster",
1013
1077
  secrets_encryption_key=secrets_key,
1014
- version=eks.KubernetesVersion.V1_31
1078
+ version=eks.KubernetesVersion.V1_32,
1079
+ kubectl_layer=KubectlV32Layer(self, "kubectl")
1015
1080
  )
1016
1081
  ```
1017
1082
 
1018
1083
  You can also use a similar configuration for running a cluster built using the FargateCluster construct.
1019
1084
 
1020
1085
  ```python
1086
+ from aws_cdk.lambda_layer_kubectl_v32 import KubectlV32Layer
1087
+
1088
+
1021
1089
  secrets_key = kms.Key(self, "SecretsKey")
1022
1090
  cluster = eks.FargateCluster(self, "MyFargateCluster",
1023
1091
  secrets_encryption_key=secrets_key,
1024
- version=eks.KubernetesVersion.V1_31
1092
+ version=eks.KubernetesVersion.V1_32,
1093
+ kubectl_layer=KubectlV32Layer(self, "kubectl")
1025
1094
  )
1026
1095
  ```
1027
1096
 
@@ -1033,6 +1102,30 @@ The Amazon Resource Name (ARN) for that CMK can be retrieved.
1033
1102
  cluster_encryption_config_key_arn = cluster.cluster_encryption_config_key_arn
1034
1103
  ```
1035
1104
 
1105
+ ### Hybrid Nodes
1106
+
1107
+ When you create an Amazon EKS cluster, you can configure it to leverage the [EKS Hybrid Nodes](https://aws.amazon.com/eks/hybrid-nodes/) feature, allowing you to use your on-premises and edge infrastructure as nodes in your EKS cluster. Refer to the Hyrid Nodes [networking documentation](https://docs.aws.amazon.com/eks/latest/userguide/hybrid-nodes-networking.html) to configure your on-premises network, node and pod CIDRs, access control, etc before creating your EKS Cluster.
1108
+
1109
+ Once you have identified the on-premises node and pod (optional) CIDRs you will use for your hybrid nodes and the workloads running on them, you can specify them during cluster creation using the `remoteNodeNetworks` and `remotePodNetworks` (optional) properties:
1110
+
1111
+ ```python
1112
+ from aws_cdk.lambda_layer_kubectl_v32 import KubectlV32Layer
1113
+
1114
+
1115
+ eks.Cluster(self, "Cluster",
1116
+ version=eks.KubernetesVersion.V1_32,
1117
+ kubectl_layer=KubectlV32Layer(self, "KubectlLayer"),
1118
+ remote_node_networks=[eks.RemoteNodeNetwork(
1119
+ cidrs=["10.0.0.0/16"]
1120
+ )
1121
+ ],
1122
+ remote_pod_networks=[eks.RemotePodNetwork(
1123
+ cidrs=["192.168.0.0/16"]
1124
+ )
1125
+ ]
1126
+ )
1127
+ ```
1128
+
1036
1129
  ## Permissions and Security
1037
1130
 
1038
1131
  Amazon EKS provides several mechanism of securing the cluster and granting permissions to specific IAM users and roles.
@@ -1068,7 +1161,7 @@ To access the Kubernetes resources from the console, make sure your viewing prin
1068
1161
  in the `aws-auth` ConfigMap. Some options to consider:
1069
1162
 
1070
1163
  ```python
1071
- from aws_cdk.lambda_layer_kubectl_v31 import KubectlV31Layer
1164
+ from aws_cdk.lambda_layer_kubectl_v32 import KubectlV32Layer
1072
1165
  # cluster: eks.Cluster
1073
1166
  # your_current_role: iam.Role
1074
1167
  # vpc: ec2.Vpc
@@ -1086,7 +1179,7 @@ your_current_role.add_to_policy(iam.PolicyStatement(
1086
1179
 
1087
1180
  ```python
1088
1181
  # Option 2: create your custom mastersRole with scoped assumeBy arn as the Cluster prop. Switch to this role from the AWS console.
1089
- from aws_cdk.lambda_layer_kubectl_v31 import KubectlV31Layer
1182
+ from aws_cdk.lambda_layer_kubectl_v32 import KubectlV32Layer
1090
1183
  # vpc: ec2.Vpc
1091
1184
 
1092
1185
 
@@ -1096,8 +1189,8 @@ masters_role = iam.Role(self, "MastersRole",
1096
1189
 
1097
1190
  cluster = eks.Cluster(self, "EksCluster",
1098
1191
  vpc=vpc,
1099
- version=eks.KubernetesVersion.V1_31,
1100
- kubectl_layer=KubectlV31Layer(self, "KubectlLayer"),
1192
+ version=eks.KubernetesVersion.V1_32,
1193
+ kubectl_layer=KubectlV32Layer(self, "KubectlLayer"),
1101
1194
  masters_role=masters_role
1102
1195
  )
1103
1196
 
@@ -1136,14 +1229,14 @@ AWS IAM principals from both Amazon EKS access entry APIs and the aws-auth confi
1136
1229
  To specify the `authenticationMode`:
1137
1230
 
1138
1231
  ```python
1139
- from aws_cdk.lambda_layer_kubectl_v31 import KubectlV31Layer
1232
+ from aws_cdk.lambda_layer_kubectl_v32 import KubectlV32Layer
1140
1233
  # vpc: ec2.Vpc
1141
1234
 
1142
1235
 
1143
1236
  eks.Cluster(self, "Cluster",
1144
1237
  vpc=vpc,
1145
- version=eks.KubernetesVersion.V1_31,
1146
- kubectl_layer=KubectlV31Layer(self, "KubectlLayer"),
1238
+ version=eks.KubernetesVersion.V1_32,
1239
+ kubectl_layer=KubectlV32Layer(self, "KubectlLayer"),
1147
1240
  authentication_mode=eks.AuthenticationMode.API_AND_CONFIG_MAP
1148
1241
  )
1149
1242
  ```
@@ -1188,7 +1281,7 @@ eks.AccessPolicy.from_access_policy_name("AmazonEKSAdminPolicy",
1188
1281
  Use `grantAccess()` to grant the AccessPolicy to an IAM principal:
1189
1282
 
1190
1283
  ```python
1191
- from aws_cdk.lambda_layer_kubectl_v31 import KubectlV31Layer
1284
+ from aws_cdk.lambda_layer_kubectl_v32 import KubectlV32Layer
1192
1285
  # vpc: ec2.Vpc
1193
1286
 
1194
1287
 
@@ -1207,8 +1300,8 @@ eks_admin_view_role = iam.Role(self, "EKSAdminViewRole",
1207
1300
  cluster = eks.Cluster(self, "Cluster",
1208
1301
  vpc=vpc,
1209
1302
  masters_role=cluster_admin_role,
1210
- version=eks.KubernetesVersion.V1_31,
1211
- kubectl_layer=KubectlV31Layer(self, "KubectlLayer"),
1303
+ version=eks.KubernetesVersion.V1_32,
1304
+ kubectl_layer=KubectlV32Layer(self, "KubectlLayer"),
1212
1305
  authentication_mode=eks.AuthenticationMode.API_AND_CONFIG_MAP
1213
1306
  )
1214
1307
 
@@ -1539,9 +1632,13 @@ Pruning is enabled by default but can be disabled through the `prune` option
1539
1632
  when a cluster is defined:
1540
1633
 
1541
1634
  ```python
1635
+ from aws_cdk.lambda_layer_kubectl_v32 import KubectlV32Layer
1636
+
1637
+
1542
1638
  eks.Cluster(self, "MyCluster",
1543
- version=eks.KubernetesVersion.V1_31,
1544
- prune=False
1639
+ version=eks.KubernetesVersion.V1_32,
1640
+ prune=False,
1641
+ kubectl_layer=KubectlV32Layer(self, "kubectl")
1545
1642
  )
1546
1643
  ```
1547
1644
 
@@ -1937,11 +2034,15 @@ You can enable logging for each one separately using the `clusterLogging`
1937
2034
  property. For example:
1938
2035
 
1939
2036
  ```python
2037
+ from aws_cdk.lambda_layer_kubectl_v32 import KubectlV32Layer
2038
+
2039
+
1940
2040
  cluster = eks.Cluster(self, "Cluster",
1941
2041
  # ...
1942
- version=eks.KubernetesVersion.V1_31,
2042
+ version=eks.KubernetesVersion.V1_32,
1943
2043
  cluster_logging=[eks.ClusterLoggingTypes.API, eks.ClusterLoggingTypes.AUTHENTICATOR, eks.ClusterLoggingTypes.SCHEDULER
1944
- ]
2044
+ ],
2045
+ kubectl_layer=KubectlV32Layer(self, "kubectl")
1945
2046
  )
1946
2047
  ```
1947
2048
 
@@ -2892,11 +2993,15 @@ class AlbControllerOptions:
2892
2993
 
2893
2994
  Example::
2894
2995
 
2996
+ from aws_cdk.lambda_layer_kubectl_v32 import KubectlV32Layer
2997
+
2998
+
2895
2999
  eks.Cluster(self, "HelloEKS",
2896
- version=eks.KubernetesVersion.V1_31,
3000
+ version=eks.KubernetesVersion.V1_32,
2897
3001
  alb_controller=eks.AlbControllerOptions(
2898
3002
  version=eks.AlbControllerVersion.V2_8_2
2899
- )
3003
+ ),
3004
+ kubectl_layer=KubectlV32Layer(self, "kubectl")
2900
3005
  )
2901
3006
  '''
2902
3007
  if __debug__:
@@ -3085,11 +3190,15 @@ class AlbControllerVersion(
3085
3190
 
3086
3191
  Example::
3087
3192
 
3193
+ from aws_cdk.lambda_layer_kubectl_v32 import KubectlV32Layer
3194
+
3195
+
3088
3196
  eks.Cluster(self, "HelloEKS",
3089
- version=eks.KubernetesVersion.V1_31,
3197
+ version=eks.KubernetesVersion.V1_32,
3090
3198
  alb_controller=eks.AlbControllerOptions(
3091
3199
  version=eks.AlbControllerVersion.V2_8_2
3092
- )
3200
+ ),
3201
+ kubectl_layer=KubectlV32Layer(self, "kubectl")
3093
3202
  )
3094
3203
  '''
3095
3204
 
@@ -3365,14 +3474,14 @@ class AuthenticationMode(enum.Enum):
3365
3474
 
3366
3475
  Example::
3367
3476
 
3368
- from aws_cdk.lambda_layer_kubectl_v31 import KubectlV31Layer
3477
+ from aws_cdk.lambda_layer_kubectl_v32 import KubectlV32Layer
3369
3478
  # vpc: ec2.Vpc
3370
3479
 
3371
3480
 
3372
3481
  eks.Cluster(self, "Cluster",
3373
3482
  vpc=vpc,
3374
- version=eks.KubernetesVersion.V1_31,
3375
- kubectl_layer=KubectlV31Layer(self, "KubectlLayer"),
3483
+ version=eks.KubernetesVersion.V1_32,
3484
+ kubectl_layer=KubectlV32Layer(self, "KubectlLayer"),
3376
3485
  authentication_mode=eks.AuthenticationMode.API_AND_CONFIG_MAP
3377
3486
  )
3378
3487
  '''
@@ -10309,7 +10418,7 @@ class CfnNodegroup(
10309
10418
 
10310
10419
  :param max_unavailable: The maximum number of nodes unavailable at once during a version update. Nodes are updated in parallel. This value or ``maxUnavailablePercentage`` is required to have a value.The maximum number is 100.
10311
10420
  :param max_unavailable_percentage: The maximum percentage of nodes unavailable during a version update. This percentage of nodes are updated in parallel, up to 100 nodes at once. This value or ``maxUnavailable`` is required to have a value.
10312
- :param update_strategy: The configuration for the behavior to follow during an node group version update of this managed node group. You choose between two possible strategies for replacing nodes during an UpdateNodegroupVersion action.
10421
+ :param update_strategy: The configuration for the behavior to follow during a node group version update of this managed node group. You choose between two possible strategies for replacing nodes during an ```UpdateNodegroupVersion`` <https://docs.aws.amazon.com/eks/latest/APIReference/API_UpdateNodegroupVersion.html>`_ action. An Amazon EKS managed node group updates by replacing nodes with new nodes of newer AMI versions in parallel. The *update strategy* changes the managed node update behavior of the managed node group for each quantity. The *default* strategy has guardrails to protect you from misconfiguration and launches the new instances first, before terminating the old instances. The *minimal* strategy removes the guardrails and terminates the old instances before launching the new instances. This minimal strategy is useful in scenarios where you are constrained to resources or costs (for example, with hardware accelerators such as GPUs).
10313
10422
 
10314
10423
  :see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-eks-nodegroup-updateconfig.html
10315
10424
  :exampleMetadata: fixture=_generated
@@ -10363,9 +10472,11 @@ class CfnNodegroup(
10363
10472
 
10364
10473
  @builtins.property
10365
10474
  def update_strategy(self) -> typing.Optional[builtins.str]:
10366
- '''The configuration for the behavior to follow during an node group version update of this managed node group.
10475
+ '''The configuration for the behavior to follow during a node group version update of this managed node group.
10476
+
10477
+ You choose between two possible strategies for replacing nodes during an ```UpdateNodegroupVersion`` <https://docs.aws.amazon.com/eks/latest/APIReference/API_UpdateNodegroupVersion.html>`_ action.
10367
10478
 
10368
- You choose between two possible strategies for replacing nodes during an UpdateNodegroupVersion action.
10479
+ An Amazon EKS managed node group updates by replacing nodes with new nodes of newer AMI versions in parallel. The *update strategy* changes the managed node update behavior of the managed node group for each quantity. The *default* strategy has guardrails to protect you from misconfiguration and launches the new instances first, before terminating the old instances. The *minimal* strategy removes the guardrails and terminates the old instances before launching the new instances. This minimal strategy is useful in scenarios where you are constrained to resources or costs (for example, with hardware accelerators such as GPUs).
10369
10480
 
10370
10481
  :see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-eks-nodegroup-updateconfig.html#cfn-eks-nodegroup-updateconfig-updatestrategy
10371
10482
  '''
@@ -11215,7 +11326,7 @@ class ClusterAttributes:
11215
11326
  :param ip_family: Specify which IP family is used to assign Kubernetes pod and service IP addresses. Default: - IpFamily.IP_V4
11216
11327
  :param kubectl_environment: Environment variables to use when running ``kubectl`` against this cluster. Default: - no additional variables
11217
11328
  :param kubectl_lambda_role: An IAM role that can perform kubectl operations against this cluster. 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: - if not specified, the default role created by a lambda function will be used.
11218
- :param kubectl_layer: An AWS Lambda Layer which includes ``kubectl`` and Helm. 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. If you don't supply this value ``kubectl`` 1.20 will be used, but that version is most likely too old. The handler expects the layer to include the following executables:: /opt/helm/helm /opt/kubectl/kubectl Default: - a default layer with Kubectl 1.20 and helm 3.8.
11329
+ :param kubectl_layer: An AWS Lambda Layer which includes ``kubectl`` and Helm. 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 Default: - No default layer will be provided
11219
11330
  :param kubectl_memory: Amount of memory to allocate to the provider's lambda function. Default: Size.gibibytes(1)
11220
11331
  :param kubectl_private_subnet_ids: Subnets to host the ``kubectl`` compute resources. If not specified, the k8s endpoint is expected to be accessible publicly. Default: - k8s endpoint is expected to be accessible publicly
11221
11332
  :param kubectl_provider: KubectlProvider for issuing kubectl commands. Default: - Default CDK provider
@@ -11430,15 +11541,14 @@ class ClusterAttributes:
11430
11541
  This layer is used by the kubectl handler to apply manifests and install
11431
11542
  helm charts. You must pick an appropriate releases of one of the
11432
11543
  ``@aws-cdk/layer-kubectl-vXX`` packages, that works with the version of
11433
- Kubernetes you have chosen. If you don't supply this value ``kubectl``
11434
- 1.20 will be used, but that version is most likely too old.
11544
+ Kubernetes you have chosen.
11435
11545
 
11436
11546
  The handler expects the layer to include the following executables::
11437
11547
 
11438
11548
  /opt/helm/helm
11439
11549
  /opt/kubectl/kubectl
11440
11550
 
11441
- :default: - a default layer with Kubectl 1.20 and helm 3.8.
11551
+ :default: - No default layer will be provided
11442
11552
  '''
11443
11553
  result = self._values.get("kubectl_layer")
11444
11554
  return typing.cast(typing.Optional[_ILayerVersion_5ac127c8], result)
@@ -11581,11 +11691,15 @@ class ClusterLoggingTypes(enum.Enum):
11581
11691
 
11582
11692
  Example::
11583
11693
 
11694
+ from aws_cdk.lambda_layer_kubectl_v32 import KubectlV32Layer
11695
+
11696
+
11584
11697
  cluster = eks.Cluster(self, "Cluster",
11585
11698
  # ...
11586
- version=eks.KubernetesVersion.V1_31,
11699
+ version=eks.KubernetesVersion.V1_32,
11587
11700
  cluster_logging=[eks.ClusterLoggingTypes.API, eks.ClusterLoggingTypes.AUTHENTICATOR, eks.ClusterLoggingTypes.SCHEDULER
11588
- ]
11701
+ ],
11702
+ kubectl_layer=KubectlV32Layer(self, "kubectl")
11589
11703
  )
11590
11704
  '''
11591
11705
 
@@ -11821,9 +11935,13 @@ class DefaultCapacityType(enum.Enum):
11821
11935
 
11822
11936
  Example::
11823
11937
 
11938
+ from aws_cdk.lambda_layer_kubectl_v32 import KubectlV32Layer
11939
+
11940
+
11824
11941
  cluster = eks.Cluster(self, "HelloEKS",
11825
- version=eks.KubernetesVersion.V1_31,
11826
- default_capacity_type=eks.DefaultCapacityType.EC2
11942
+ version=eks.KubernetesVersion.V1_32,
11943
+ default_capacity_type=eks.DefaultCapacityType.EC2,
11944
+ kubectl_layer=KubectlV32Layer(self, "kubectl")
11827
11945
  )
11828
11946
  '''
11829
11947
 
@@ -11990,9 +12108,13 @@ class EndpointAccess(
11990
12108
 
11991
12109
  Example::
11992
12110
 
12111
+ from aws_cdk.lambda_layer_kubectl_v32 import KubectlV32Layer
12112
+
12113
+
11993
12114
  cluster = eks.Cluster(self, "hello-eks",
11994
- version=eks.KubernetesVersion.V1_31,
11995
- endpoint_access=eks.EndpointAccess.PRIVATE
12115
+ version=eks.KubernetesVersion.V1_32,
12116
+ endpoint_access=eks.EndpointAccess.PRIVATE, # No access outside of your VPC.
12117
+ kubectl_layer=KubectlV32Layer(self, "kubectl")
11996
12118
  )
11997
12119
  '''
11998
12120
 
@@ -13399,10 +13521,7 @@ class ICluster(_IResource_c80c4260, _IConnectable_10015a05, typing_extensions.Pr
13399
13521
  @builtins.property
13400
13522
  @jsii.member(jsii_name="kubectlLayer")
13401
13523
  def kubectl_layer(self) -> typing.Optional[_ILayerVersion_5ac127c8]:
13402
- '''An AWS Lambda layer that includes ``kubectl`` and ``helm``.
13403
-
13404
- If not defined, a default layer will be used containing Kubectl 1.20 and Helm 3.8
13405
- '''
13524
+ '''An AWS Lambda layer that includes ``kubectl`` and ``helm``.'''
13406
13525
  ...
13407
13526
 
13408
13527
  @builtins.property
@@ -13777,10 +13896,7 @@ class _IClusterProxy(
13777
13896
  @builtins.property
13778
13897
  @jsii.member(jsii_name="kubectlLayer")
13779
13898
  def kubectl_layer(self) -> typing.Optional[_ILayerVersion_5ac127c8]:
13780
- '''An AWS Lambda layer that includes ``kubectl`` and ``helm``.
13781
-
13782
- If not defined, a default layer will be used containing Kubectl 1.20 and Helm 3.8
13783
- '''
13899
+ '''An AWS Lambda layer that includes ``kubectl`` and ``helm``.'''
13784
13900
  return typing.cast(typing.Optional[_ILayerVersion_5ac127c8], jsii.get(self, "kubectlLayer"))
13785
13901
 
13786
13902
  @builtins.property
@@ -14172,6 +14288,7 @@ class IpFamily(enum.Enum):
14172
14288
 
14173
14289
  Example::
14174
14290
 
14291
+ from aws_cdk.lambda_layer_kubectl_v32 import KubectlV32Layer
14175
14292
  # vpc: ec2.Vpc
14176
14293
 
14177
14294
 
@@ -14196,10 +14313,11 @@ class IpFamily(enum.Enum):
14196
14313
  subnetcount = subnetcount + 1
14197
14314
 
14198
14315
  cluster = eks.Cluster(self, "hello-eks",
14199
- version=eks.KubernetesVersion.V1_31,
14316
+ version=eks.KubernetesVersion.V1_32,
14200
14317
  vpc=vpc,
14201
14318
  ip_family=eks.IpFamily.IP_V6,
14202
- vpc_subnets=[ec2.SubnetSelection(subnets=vpc.public_subnets)]
14319
+ vpc_subnets=[ec2.SubnetSelection(subnets=vpc.public_subnets)],
14320
+ kubectl_layer=KubectlV32Layer(self, "kubectl")
14203
14321
  )
14204
14322
  '''
14205
14323
 
@@ -15320,11 +15438,16 @@ class KubernetesVersion(
15320
15438
 
15321
15439
  Example::
15322
15440
 
15441
+ from aws_cdk.lambda_layer_kubectl_v32 import KubectlV32Layer
15442
+
15323
15443
  # or
15324
15444
  # vpc: ec2.Vpc
15445
+
15446
+
15325
15447
  eks.Cluster(self, "MyCluster",
15326
15448
  kubectl_memory=Size.gibibytes(4),
15327
- version=eks.KubernetesVersion.V1_31
15449
+ version=eks.KubernetesVersion.V1_32,
15450
+ kubectl_layer=KubectlV32Layer(self, "kubectl")
15328
15451
  )
15329
15452
  eks.Cluster.from_cluster_attributes(self, "MyCluster",
15330
15453
  kubectl_memory=Size.gibibytes(4),
@@ -15543,6 +15666,17 @@ class KubernetesVersion(
15543
15666
  '''
15544
15667
  return typing.cast("KubernetesVersion", jsii.sget(cls, "V1_31"))
15545
15668
 
15669
+ @jsii.python.classproperty
15670
+ @jsii.member(jsii_name="V1_32")
15671
+ def V1_32(cls) -> "KubernetesVersion":
15672
+ '''Kubernetes version 1.32.
15673
+
15674
+ When creating a ``Cluster`` with this version, you need to also specify the
15675
+ ``kubectlLayer`` property with a ``KubectlV32Layer`` from
15676
+ ``@aws-cdk/lambda-layer-kubectl-v32``.
15677
+ '''
15678
+ return typing.cast("KubernetesVersion", jsii.sget(cls, "V1_32"))
15679
+
15546
15680
  @builtins.property
15547
15681
  @jsii.member(jsii_name="version")
15548
15682
  def version(self) -> builtins.str:
@@ -16999,6 +17133,110 @@ class PatchType(enum.Enum):
16999
17133
  '''Strategic merge patch.'''
17000
17134
 
17001
17135
 
17136
+ @jsii.data_type(
17137
+ jsii_type="aws-cdk-lib.aws_eks.RemoteNodeNetwork",
17138
+ jsii_struct_bases=[],
17139
+ name_mapping={"cidrs": "cidrs"},
17140
+ )
17141
+ class RemoteNodeNetwork:
17142
+ def __init__(self, *, cidrs: typing.Sequence[builtins.str]) -> None:
17143
+ '''Network configuration of nodes run on-premises with EKS Hybrid Nodes.
17144
+
17145
+ :param cidrs: Specifies the list of remote node CIDRs.
17146
+
17147
+ :exampleMetadata: fixture=_generated
17148
+
17149
+ Example::
17150
+
17151
+ # The code below shows an example of how to instantiate this type.
17152
+ # The values are placeholders you should change.
17153
+ from aws_cdk import aws_eks as eks
17154
+
17155
+ remote_node_network = eks.RemoteNodeNetwork(
17156
+ cidrs=["cidrs"]
17157
+ )
17158
+ '''
17159
+ if __debug__:
17160
+ type_hints = typing.get_type_hints(_typecheckingstub__600789f5d1adc105e950fc1e01201ea975b89bb797b63227b757a633425a0f09)
17161
+ check_type(argname="argument cidrs", value=cidrs, expected_type=type_hints["cidrs"])
17162
+ self._values: typing.Dict[builtins.str, typing.Any] = {
17163
+ "cidrs": cidrs,
17164
+ }
17165
+
17166
+ @builtins.property
17167
+ def cidrs(self) -> typing.List[builtins.str]:
17168
+ '''Specifies the list of remote node CIDRs.
17169
+
17170
+ :see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-eks-cluster-remotenodenetwork.html#cfn-eks-cluster-remotenodenetwork-cidrs
17171
+ '''
17172
+ result = self._values.get("cidrs")
17173
+ assert result is not None, "Required property 'cidrs' is missing"
17174
+ return typing.cast(typing.List[builtins.str], result)
17175
+
17176
+ def __eq__(self, rhs: typing.Any) -> builtins.bool:
17177
+ return isinstance(rhs, self.__class__) and rhs._values == self._values
17178
+
17179
+ def __ne__(self, rhs: typing.Any) -> builtins.bool:
17180
+ return not (rhs == self)
17181
+
17182
+ def __repr__(self) -> str:
17183
+ return "RemoteNodeNetwork(%s)" % ", ".join(
17184
+ k + "=" + repr(v) for k, v in self._values.items()
17185
+ )
17186
+
17187
+
17188
+ @jsii.data_type(
17189
+ jsii_type="aws-cdk-lib.aws_eks.RemotePodNetwork",
17190
+ jsii_struct_bases=[],
17191
+ name_mapping={"cidrs": "cidrs"},
17192
+ )
17193
+ class RemotePodNetwork:
17194
+ def __init__(self, *, cidrs: typing.Sequence[builtins.str]) -> None:
17195
+ '''Network configuration of pods run on-premises with EKS Hybrid Nodes.
17196
+
17197
+ :param cidrs: Specifies the list of remote pod CIDRs.
17198
+
17199
+ :exampleMetadata: fixture=_generated
17200
+
17201
+ Example::
17202
+
17203
+ # The code below shows an example of how to instantiate this type.
17204
+ # The values are placeholders you should change.
17205
+ from aws_cdk import aws_eks as eks
17206
+
17207
+ remote_pod_network = eks.RemotePodNetwork(
17208
+ cidrs=["cidrs"]
17209
+ )
17210
+ '''
17211
+ if __debug__:
17212
+ type_hints = typing.get_type_hints(_typecheckingstub__f9878a6e6680b6c2c6cb0db908c65c1de65fe68965909386c87176ba98e30705)
17213
+ check_type(argname="argument cidrs", value=cidrs, expected_type=type_hints["cidrs"])
17214
+ self._values: typing.Dict[builtins.str, typing.Any] = {
17215
+ "cidrs": cidrs,
17216
+ }
17217
+
17218
+ @builtins.property
17219
+ def cidrs(self) -> typing.List[builtins.str]:
17220
+ '''Specifies the list of remote pod CIDRs.
17221
+
17222
+ :see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-eks-cluster-remotepodnetwork.html#cfn-eks-cluster-remotepodnetwork-cidrs
17223
+ '''
17224
+ result = self._values.get("cidrs")
17225
+ assert result is not None, "Required property 'cidrs' is missing"
17226
+ return typing.cast(typing.List[builtins.str], result)
17227
+
17228
+ def __eq__(self, rhs: typing.Any) -> builtins.bool:
17229
+ return isinstance(rhs, self.__class__) and rhs._values == self._values
17230
+
17231
+ def __ne__(self, rhs: typing.Any) -> builtins.bool:
17232
+ return not (rhs == self)
17233
+
17234
+ def __repr__(self) -> str:
17235
+ return "RemotePodNetwork(%s)" % ", ".join(
17236
+ k + "=" + repr(v) for k, v in self._values.items()
17237
+ )
17238
+
17239
+
17002
17240
  @jsii.data_type(
17003
17241
  jsii_type="aws-cdk-lib.aws_eks.Selector",
17004
17242
  jsii_struct_bases=[],
@@ -17986,11 +18224,16 @@ class Cluster(
17986
18224
 
17987
18225
  Example::
17988
18226
 
18227
+ from aws_cdk.lambda_layer_kubectl_v32 import KubectlV32Layer
18228
+
17989
18229
  # or
17990
18230
  # vpc: ec2.Vpc
18231
+
18232
+
17991
18233
  eks.Cluster(self, "MyCluster",
17992
18234
  kubectl_memory=Size.gibibytes(4),
17993
- version=eks.KubernetesVersion.V1_31
18235
+ version=eks.KubernetesVersion.V1_32,
18236
+ kubectl_layer=KubectlV32Layer(self, "kubectl")
17994
18237
  )
17995
18238
  eks.Cluster.from_cluster_attributes(self, "MyCluster",
17996
18239
  kubectl_memory=Size.gibibytes(4),
@@ -18010,6 +18253,7 @@ class Cluster(
18010
18253
  default_capacity_type: typing.Optional[DefaultCapacityType] = None,
18011
18254
  kubectl_lambda_role: typing.Optional[_IRole_235f5d8e] = None,
18012
18255
  tags: typing.Optional[typing.Mapping[builtins.str, builtins.str]] = None,
18256
+ kubectl_layer: _ILayerVersion_5ac127c8,
18013
18257
  alb_controller: typing.Optional[typing.Union[AlbControllerOptions, typing.Dict[builtins.str, typing.Any]]] = None,
18014
18258
  authentication_mode: typing.Optional[AuthenticationMode] = None,
18015
18259
  awscli_layer: typing.Optional[_ILayerVersion_5ac127c8] = None,
@@ -18020,13 +18264,14 @@ class Cluster(
18020
18264
  endpoint_access: typing.Optional[EndpointAccess] = None,
18021
18265
  ip_family: typing.Optional[IpFamily] = None,
18022
18266
  kubectl_environment: typing.Optional[typing.Mapping[builtins.str, builtins.str]] = None,
18023
- kubectl_layer: typing.Optional[_ILayerVersion_5ac127c8] = None,
18024
18267
  kubectl_memory: typing.Optional[_Size_7b441c34] = None,
18025
18268
  masters_role: typing.Optional[_IRole_235f5d8e] = None,
18026
18269
  on_event_layer: typing.Optional[_ILayerVersion_5ac127c8] = None,
18027
18270
  output_masters_role_arn: typing.Optional[builtins.bool] = None,
18028
18271
  place_cluster_handler_in_vpc: typing.Optional[builtins.bool] = None,
18029
18272
  prune: typing.Optional[builtins.bool] = None,
18273
+ remote_node_networks: typing.Optional[typing.Sequence[typing.Union[RemoteNodeNetwork, typing.Dict[builtins.str, typing.Any]]]] = None,
18274
+ remote_pod_networks: typing.Optional[typing.Sequence[typing.Union[RemotePodNetwork, typing.Dict[builtins.str, typing.Any]]]] = None,
18030
18275
  secrets_encryption_key: typing.Optional[_IKey_5f11635f] = None,
18031
18276
  service_ipv4_cidr: typing.Optional[builtins.str] = None,
18032
18277
  version: KubernetesVersion,
@@ -18048,6 +18293,7 @@ class Cluster(
18048
18293
  :param default_capacity_type: The default capacity type for the cluster. Default: NODEGROUP
18049
18294
  :param kubectl_lambda_role: The IAM role to pass to the Kubectl Lambda Handler. Default: - Default Lambda IAM Execution Role
18050
18295
  :param tags: The tags assigned to the EKS cluster. Default: - none
18296
+ :param kubectl_layer: An AWS Lambda Layer which includes ``kubectl`` and Helm. 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
18051
18297
  :param alb_controller: Install the AWS Load Balancer Controller onto the cluster. Default: - The controller is not installed.
18052
18298
  :param authentication_mode: The desired authentication mode for the cluster. Default: AuthenticationMode.CONFIG_MAP
18053
18299
  :param awscli_layer: An AWS Lambda layer that contains the ``aws`` CLI. The handler expects the layer to include the following executables:: /opt/awscli/aws Default: - a default layer with the AWS CLI 1.x
@@ -18058,13 +18304,14 @@ class Cluster(
18058
18304
  :param endpoint_access: Configure access to the Kubernetes API server endpoint.. Default: EndpointAccess.PUBLIC_AND_PRIVATE
18059
18305
  :param ip_family: Specify which IP family is used to assign Kubernetes pod and service IP addresses. Default: - IpFamily.IP_V4
18060
18306
  :param kubectl_environment: Environment variables for the kubectl execution. Only relevant for kubectl enabled clusters. Default: - No environment variables.
18061
- :param kubectl_layer: An AWS Lambda Layer which includes ``kubectl`` and Helm. 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. If you don't supply this value ``kubectl`` 1.20 will be used, but that version is most likely too old. The handler expects the layer to include the following executables:: /opt/helm/helm /opt/kubectl/kubectl Default: - a default layer with Kubectl 1.20.
18062
18307
  :param kubectl_memory: Amount of memory to allocate to the provider's lambda function. Default: Size.gibibytes(1)
18063
18308
  :param masters_role: An IAM role that will be added to the ``system:masters`` Kubernetes RBAC group. Default: - no masters role.
18064
18309
  :param on_event_layer: An AWS Lambda Layer which includes the NPM dependency ``proxy-agent``. 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.
18065
18310
  :param output_masters_role_arn: Determines whether a CloudFormation output with the ARN of the "masters" IAM role will be synthesized (if ``mastersRole`` is specified). Default: false
18066
18311
  :param place_cluster_handler_in_vpc: If set to true, the cluster handler functions will be placed in the private subnets of the cluster vpc, subject to the ``vpcSubnets`` selection strategy. Default: false
18067
18312
  :param prune: Indicates whether Kubernetes resources added through ``addManifest()`` can be automatically pruned. 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. Default: true
18313
+ :param remote_node_networks: IPv4 CIDR blocks defining the expected address range of hybrid nodes that will join the cluster. Default: - none
18314
+ :param remote_pod_networks: IPv4 CIDR blocks for Pods running Kubernetes webhooks on hybrid nodes. Default: - none
18068
18315
  :param secrets_encryption_key: KMS secret for envelope encryption for Kubernetes secrets. 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.
18069
18316
  :param service_ipv4_cidr: The CIDR block to assign Kubernetes service IP addresses from. Default: - Kubernetes assigns addresses from either the 10.100.0.0/16 or 172.20.0.0/16 CIDR blocks
18070
18317
  :param version: The Kubernetes version to run in the cluster.
@@ -18087,6 +18334,7 @@ class Cluster(
18087
18334
  default_capacity_type=default_capacity_type,
18088
18335
  kubectl_lambda_role=kubectl_lambda_role,
18089
18336
  tags=tags,
18337
+ kubectl_layer=kubectl_layer,
18090
18338
  alb_controller=alb_controller,
18091
18339
  authentication_mode=authentication_mode,
18092
18340
  awscli_layer=awscli_layer,
@@ -18097,13 +18345,14 @@ class Cluster(
18097
18345
  endpoint_access=endpoint_access,
18098
18346
  ip_family=ip_family,
18099
18347
  kubectl_environment=kubectl_environment,
18100
- kubectl_layer=kubectl_layer,
18101
18348
  kubectl_memory=kubectl_memory,
18102
18349
  masters_role=masters_role,
18103
18350
  on_event_layer=on_event_layer,
18104
18351
  output_masters_role_arn=output_masters_role_arn,
18105
18352
  place_cluster_handler_in_vpc=place_cluster_handler_in_vpc,
18106
18353
  prune=prune,
18354
+ remote_node_networks=remote_node_networks,
18355
+ remote_pod_networks=remote_pod_networks,
18107
18356
  secrets_encryption_key=secrets_encryption_key,
18108
18357
  service_ipv4_cidr=service_ipv4_cidr,
18109
18358
  version=version,
@@ -18161,7 +18410,7 @@ class Cluster(
18161
18410
  :param ip_family: Specify which IP family is used to assign Kubernetes pod and service IP addresses. Default: - IpFamily.IP_V4
18162
18411
  :param kubectl_environment: Environment variables to use when running ``kubectl`` against this cluster. Default: - no additional variables
18163
18412
  :param kubectl_lambda_role: An IAM role that can perform kubectl operations against this cluster. 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: - if not specified, the default role created by a lambda function will be used.
18164
- :param kubectl_layer: An AWS Lambda Layer which includes ``kubectl`` and Helm. 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. If you don't supply this value ``kubectl`` 1.20 will be used, but that version is most likely too old. The handler expects the layer to include the following executables:: /opt/helm/helm /opt/kubectl/kubectl Default: - a default layer with Kubectl 1.20 and helm 3.8.
18413
+ :param kubectl_layer: An AWS Lambda Layer which includes ``kubectl`` and Helm. 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 Default: - No default layer will be provided
18165
18414
  :param kubectl_memory: Amount of memory to allocate to the provider's lambda function. Default: Size.gibibytes(1)
18166
18415
  :param kubectl_private_subnet_ids: Subnets to host the ``kubectl`` compute resources. If not specified, the k8s endpoint is expected to be accessible publicly. Default: - k8s endpoint is expected to be accessible publicly
18167
18416
  :param kubectl_provider: KubectlProvider for issuing kubectl commands. Default: - Default CDK provider
@@ -18953,10 +19202,7 @@ class Cluster(
18953
19202
  @builtins.property
18954
19203
  @jsii.member(jsii_name="kubectlLayer")
18955
19204
  def kubectl_layer(self) -> typing.Optional[_ILayerVersion_5ac127c8]:
18956
- '''An AWS Lambda layer that includes ``kubectl`` and ``helm``.
18957
-
18958
- If not defined, a default layer will be used containing Kubectl 1.20 and Helm 3.8
18959
- '''
19205
+ '''An AWS Lambda layer that includes ``kubectl`` and ``helm``.'''
18960
19206
  return typing.cast(typing.Optional[_ILayerVersion_5ac127c8], jsii.get(self, "kubectlLayer"))
18961
19207
 
18962
19208
  @builtins.property
@@ -19023,6 +19269,7 @@ class Cluster(
19023
19269
  "security_group": "securityGroup",
19024
19270
  "vpc": "vpc",
19025
19271
  "vpc_subnets": "vpcSubnets",
19272
+ "kubectl_layer": "kubectlLayer",
19026
19273
  "alb_controller": "albController",
19027
19274
  "authentication_mode": "authenticationMode",
19028
19275
  "awscli_layer": "awscliLayer",
@@ -19033,13 +19280,14 @@ class Cluster(
19033
19280
  "endpoint_access": "endpointAccess",
19034
19281
  "ip_family": "ipFamily",
19035
19282
  "kubectl_environment": "kubectlEnvironment",
19036
- "kubectl_layer": "kubectlLayer",
19037
19283
  "kubectl_memory": "kubectlMemory",
19038
19284
  "masters_role": "mastersRole",
19039
19285
  "on_event_layer": "onEventLayer",
19040
19286
  "output_masters_role_arn": "outputMastersRoleArn",
19041
19287
  "place_cluster_handler_in_vpc": "placeClusterHandlerInVpc",
19042
19288
  "prune": "prune",
19289
+ "remote_node_networks": "remoteNodeNetworks",
19290
+ "remote_pod_networks": "remotePodNetworks",
19043
19291
  "secrets_encryption_key": "secretsEncryptionKey",
19044
19292
  "service_ipv4_cidr": "serviceIpv4Cidr",
19045
19293
  },
@@ -19056,6 +19304,7 @@ class ClusterOptions(CommonClusterOptions):
19056
19304
  security_group: typing.Optional[_ISecurityGroup_acf8a799] = None,
19057
19305
  vpc: typing.Optional[_IVpc_f30d5663] = None,
19058
19306
  vpc_subnets: typing.Optional[typing.Sequence[typing.Union[_SubnetSelection_e57d76df, typing.Dict[builtins.str, typing.Any]]]] = None,
19307
+ kubectl_layer: _ILayerVersion_5ac127c8,
19059
19308
  alb_controller: typing.Optional[typing.Union[AlbControllerOptions, typing.Dict[builtins.str, typing.Any]]] = None,
19060
19309
  authentication_mode: typing.Optional[AuthenticationMode] = None,
19061
19310
  awscli_layer: typing.Optional[_ILayerVersion_5ac127c8] = None,
@@ -19066,13 +19315,14 @@ class ClusterOptions(CommonClusterOptions):
19066
19315
  endpoint_access: typing.Optional[EndpointAccess] = None,
19067
19316
  ip_family: typing.Optional[IpFamily] = None,
19068
19317
  kubectl_environment: typing.Optional[typing.Mapping[builtins.str, builtins.str]] = None,
19069
- kubectl_layer: typing.Optional[_ILayerVersion_5ac127c8] = None,
19070
19318
  kubectl_memory: typing.Optional[_Size_7b441c34] = None,
19071
19319
  masters_role: typing.Optional[_IRole_235f5d8e] = None,
19072
19320
  on_event_layer: typing.Optional[_ILayerVersion_5ac127c8] = None,
19073
19321
  output_masters_role_arn: typing.Optional[builtins.bool] = None,
19074
19322
  place_cluster_handler_in_vpc: typing.Optional[builtins.bool] = None,
19075
19323
  prune: typing.Optional[builtins.bool] = None,
19324
+ remote_node_networks: typing.Optional[typing.Sequence[typing.Union[RemoteNodeNetwork, typing.Dict[builtins.str, typing.Any]]]] = None,
19325
+ remote_pod_networks: typing.Optional[typing.Sequence[typing.Union[RemotePodNetwork, typing.Dict[builtins.str, typing.Any]]]] = None,
19076
19326
  secrets_encryption_key: typing.Optional[_IKey_5f11635f] = None,
19077
19327
  service_ipv4_cidr: typing.Optional[builtins.str] = None,
19078
19328
  ) -> None:
@@ -19086,6 +19336,7 @@ class ClusterOptions(CommonClusterOptions):
19086
19336
  :param security_group: Security Group to use for Control Plane ENIs. Default: - A security group is automatically created
19087
19337
  :param vpc: The VPC in which to create the Cluster. Default: - a VPC with default configuration will be created and can be accessed through ``cluster.vpc``.
19088
19338
  :param vpc_subnets: 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
19339
+ :param kubectl_layer: An AWS Lambda Layer which includes ``kubectl`` and Helm. 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
19089
19340
  :param alb_controller: Install the AWS Load Balancer Controller onto the cluster. Default: - The controller is not installed.
19090
19341
  :param authentication_mode: The desired authentication mode for the cluster. Default: AuthenticationMode.CONFIG_MAP
19091
19342
  :param awscli_layer: An AWS Lambda layer that contains the ``aws`` CLI. The handler expects the layer to include the following executables:: /opt/awscli/aws Default: - a default layer with the AWS CLI 1.x
@@ -19096,13 +19347,14 @@ class ClusterOptions(CommonClusterOptions):
19096
19347
  :param endpoint_access: Configure access to the Kubernetes API server endpoint.. Default: EndpointAccess.PUBLIC_AND_PRIVATE
19097
19348
  :param ip_family: Specify which IP family is used to assign Kubernetes pod and service IP addresses. Default: - IpFamily.IP_V4
19098
19349
  :param kubectl_environment: Environment variables for the kubectl execution. Only relevant for kubectl enabled clusters. Default: - No environment variables.
19099
- :param kubectl_layer: An AWS Lambda Layer which includes ``kubectl`` and Helm. 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. If you don't supply this value ``kubectl`` 1.20 will be used, but that version is most likely too old. The handler expects the layer to include the following executables:: /opt/helm/helm /opt/kubectl/kubectl Default: - a default layer with Kubectl 1.20.
19100
19350
  :param kubectl_memory: Amount of memory to allocate to the provider's lambda function. Default: Size.gibibytes(1)
19101
19351
  :param masters_role: An IAM role that will be added to the ``system:masters`` Kubernetes RBAC group. Default: - no masters role.
19102
19352
  :param on_event_layer: An AWS Lambda Layer which includes the NPM dependency ``proxy-agent``. 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.
19103
19353
  :param output_masters_role_arn: Determines whether a CloudFormation output with the ARN of the "masters" IAM role will be synthesized (if ``mastersRole`` is specified). Default: false
19104
19354
  :param place_cluster_handler_in_vpc: If set to true, the cluster handler functions will be placed in the private subnets of the cluster vpc, subject to the ``vpcSubnets`` selection strategy. Default: false
19105
19355
  :param prune: Indicates whether Kubernetes resources added through ``addManifest()`` can be automatically pruned. 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. Default: true
19356
+ :param remote_node_networks: IPv4 CIDR blocks defining the expected address range of hybrid nodes that will join the cluster. Default: - none
19357
+ :param remote_pod_networks: IPv4 CIDR blocks for Pods running Kubernetes webhooks on hybrid nodes. Default: - none
19106
19358
  :param secrets_encryption_key: KMS secret for envelope encryption for Kubernetes secrets. 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.
19107
19359
  :param service_ipv4_cidr: The CIDR block to assign Kubernetes service IP addresses from. Default: - Kubernetes assigns addresses from either the 10.100.0.0/16 or 172.20.0.0/16 CIDR blocks
19108
19360
 
@@ -19133,6 +19385,7 @@ class ClusterOptions(CommonClusterOptions):
19133
19385
  # vpc: ec2.Vpc
19134
19386
 
19135
19387
  cluster_options = eks.ClusterOptions(
19388
+ kubectl_layer=layer_version,
19136
19389
  version=kubernetes_version,
19137
19390
 
19138
19391
  # the properties below are optional
@@ -19157,7 +19410,6 @@ class ClusterOptions(CommonClusterOptions):
19157
19410
  kubectl_environment={
19158
19411
  "kubectl_environment_key": "kubectlEnvironment"
19159
19412
  },
19160
- kubectl_layer=layer_version,
19161
19413
  kubectl_memory=size,
19162
19414
  masters_role=role,
19163
19415
  on_event_layer=layer_version,
@@ -19166,6 +19418,12 @@ class ClusterOptions(CommonClusterOptions):
19166
19418
  output_masters_role_arn=False,
19167
19419
  place_cluster_handler_in_vpc=False,
19168
19420
  prune=False,
19421
+ remote_node_networks=[eks.RemoteNodeNetwork(
19422
+ cidrs=["cidrs"]
19423
+ )],
19424
+ remote_pod_networks=[eks.RemotePodNetwork(
19425
+ cidrs=["cidrs"]
19426
+ )],
19169
19427
  role=role,
19170
19428
  secrets_encryption_key=key,
19171
19429
  security_group=security_group,
@@ -19193,6 +19451,7 @@ class ClusterOptions(CommonClusterOptions):
19193
19451
  check_type(argname="argument security_group", value=security_group, expected_type=type_hints["security_group"])
19194
19452
  check_type(argname="argument vpc", value=vpc, expected_type=type_hints["vpc"])
19195
19453
  check_type(argname="argument vpc_subnets", value=vpc_subnets, expected_type=type_hints["vpc_subnets"])
19454
+ check_type(argname="argument kubectl_layer", value=kubectl_layer, expected_type=type_hints["kubectl_layer"])
19196
19455
  check_type(argname="argument alb_controller", value=alb_controller, expected_type=type_hints["alb_controller"])
19197
19456
  check_type(argname="argument authentication_mode", value=authentication_mode, expected_type=type_hints["authentication_mode"])
19198
19457
  check_type(argname="argument awscli_layer", value=awscli_layer, expected_type=type_hints["awscli_layer"])
@@ -19203,17 +19462,19 @@ class ClusterOptions(CommonClusterOptions):
19203
19462
  check_type(argname="argument endpoint_access", value=endpoint_access, expected_type=type_hints["endpoint_access"])
19204
19463
  check_type(argname="argument ip_family", value=ip_family, expected_type=type_hints["ip_family"])
19205
19464
  check_type(argname="argument kubectl_environment", value=kubectl_environment, expected_type=type_hints["kubectl_environment"])
19206
- check_type(argname="argument kubectl_layer", value=kubectl_layer, expected_type=type_hints["kubectl_layer"])
19207
19465
  check_type(argname="argument kubectl_memory", value=kubectl_memory, expected_type=type_hints["kubectl_memory"])
19208
19466
  check_type(argname="argument masters_role", value=masters_role, expected_type=type_hints["masters_role"])
19209
19467
  check_type(argname="argument on_event_layer", value=on_event_layer, expected_type=type_hints["on_event_layer"])
19210
19468
  check_type(argname="argument output_masters_role_arn", value=output_masters_role_arn, expected_type=type_hints["output_masters_role_arn"])
19211
19469
  check_type(argname="argument place_cluster_handler_in_vpc", value=place_cluster_handler_in_vpc, expected_type=type_hints["place_cluster_handler_in_vpc"])
19212
19470
  check_type(argname="argument prune", value=prune, expected_type=type_hints["prune"])
19471
+ check_type(argname="argument remote_node_networks", value=remote_node_networks, expected_type=type_hints["remote_node_networks"])
19472
+ check_type(argname="argument remote_pod_networks", value=remote_pod_networks, expected_type=type_hints["remote_pod_networks"])
19213
19473
  check_type(argname="argument secrets_encryption_key", value=secrets_encryption_key, expected_type=type_hints["secrets_encryption_key"])
19214
19474
  check_type(argname="argument service_ipv4_cidr", value=service_ipv4_cidr, expected_type=type_hints["service_ipv4_cidr"])
19215
19475
  self._values: typing.Dict[builtins.str, typing.Any] = {
19216
19476
  "version": version,
19477
+ "kubectl_layer": kubectl_layer,
19217
19478
  }
19218
19479
  if cluster_name is not None:
19219
19480
  self._values["cluster_name"] = cluster_name
@@ -19249,8 +19510,6 @@ class ClusterOptions(CommonClusterOptions):
19249
19510
  self._values["ip_family"] = ip_family
19250
19511
  if kubectl_environment is not None:
19251
19512
  self._values["kubectl_environment"] = kubectl_environment
19252
- if kubectl_layer is not None:
19253
- self._values["kubectl_layer"] = kubectl_layer
19254
19513
  if kubectl_memory is not None:
19255
19514
  self._values["kubectl_memory"] = kubectl_memory
19256
19515
  if masters_role is not None:
@@ -19263,6 +19522,10 @@ class ClusterOptions(CommonClusterOptions):
19263
19522
  self._values["place_cluster_handler_in_vpc"] = place_cluster_handler_in_vpc
19264
19523
  if prune is not None:
19265
19524
  self._values["prune"] = prune
19525
+ if remote_node_networks is not None:
19526
+ self._values["remote_node_networks"] = remote_node_networks
19527
+ if remote_pod_networks is not None:
19528
+ self._values["remote_pod_networks"] = remote_pod_networks
19266
19529
  if secrets_encryption_key is not None:
19267
19530
  self._values["secrets_encryption_key"] = secrets_encryption_key
19268
19531
  if service_ipv4_cidr is not None:
@@ -19345,6 +19608,24 @@ class ClusterOptions(CommonClusterOptions):
19345
19608
  result = self._values.get("vpc_subnets")
19346
19609
  return typing.cast(typing.Optional[typing.List[_SubnetSelection_e57d76df]], result)
19347
19610
 
19611
+ @builtins.property
19612
+ def kubectl_layer(self) -> _ILayerVersion_5ac127c8:
19613
+ '''An AWS Lambda Layer which includes ``kubectl`` and Helm.
19614
+
19615
+ This layer is used by the kubectl handler to apply manifests and install
19616
+ helm charts. You must pick an appropriate releases of one of the
19617
+ ``@aws-cdk/layer-kubectl-vXX`` packages, that works with the version of
19618
+ Kubernetes you have chosen.
19619
+
19620
+ The handler expects the layer to include the following executables::
19621
+
19622
+ /opt/helm/helm
19623
+ /opt/kubectl/kubectl
19624
+ '''
19625
+ result = self._values.get("kubectl_layer")
19626
+ assert result is not None, "Required property 'kubectl_layer' is missing"
19627
+ return typing.cast(_ILayerVersion_5ac127c8, result)
19628
+
19348
19629
  @builtins.property
19349
19630
  def alb_controller(self) -> typing.Optional[AlbControllerOptions]:
19350
19631
  '''Install the AWS Load Balancer Controller onto the cluster.
@@ -19457,26 +19738,6 @@ class ClusterOptions(CommonClusterOptions):
19457
19738
  result = self._values.get("kubectl_environment")
19458
19739
  return typing.cast(typing.Optional[typing.Mapping[builtins.str, builtins.str]], result)
19459
19740
 
19460
- @builtins.property
19461
- def kubectl_layer(self) -> typing.Optional[_ILayerVersion_5ac127c8]:
19462
- '''An AWS Lambda Layer which includes ``kubectl`` and Helm.
19463
-
19464
- This layer is used by the kubectl handler to apply manifests and install
19465
- helm charts. You must pick an appropriate releases of one of the
19466
- ``@aws-cdk/layer-kubectl-vXX`` packages, that works with the version of
19467
- Kubernetes you have chosen. If you don't supply this value ``kubectl``
19468
- 1.20 will be used, but that version is most likely too old.
19469
-
19470
- The handler expects the layer to include the following executables::
19471
-
19472
- /opt/helm/helm
19473
- /opt/kubectl/kubectl
19474
-
19475
- :default: - a default layer with Kubectl 1.20.
19476
- '''
19477
- result = self._values.get("kubectl_layer")
19478
- return typing.cast(typing.Optional[_ILayerVersion_5ac127c8], result)
19479
-
19480
19741
  @builtins.property
19481
19742
  def kubectl_memory(self) -> typing.Optional[_Size_7b441c34]:
19482
19743
  '''Amount of memory to allocate to the provider's lambda function.
@@ -19551,6 +19812,24 @@ class ClusterOptions(CommonClusterOptions):
19551
19812
  result = self._values.get("prune")
19552
19813
  return typing.cast(typing.Optional[builtins.bool], result)
19553
19814
 
19815
+ @builtins.property
19816
+ def remote_node_networks(self) -> typing.Optional[typing.List[RemoteNodeNetwork]]:
19817
+ '''IPv4 CIDR blocks defining the expected address range of hybrid nodes that will join the cluster.
19818
+
19819
+ :default: - none
19820
+ '''
19821
+ result = self._values.get("remote_node_networks")
19822
+ return typing.cast(typing.Optional[typing.List[RemoteNodeNetwork]], result)
19823
+
19824
+ @builtins.property
19825
+ def remote_pod_networks(self) -> typing.Optional[typing.List[RemotePodNetwork]]:
19826
+ '''IPv4 CIDR blocks for Pods running Kubernetes webhooks on hybrid nodes.
19827
+
19828
+ :default: - none
19829
+ '''
19830
+ result = self._values.get("remote_pod_networks")
19831
+ return typing.cast(typing.Optional[typing.List[RemotePodNetwork]], result)
19832
+
19554
19833
  @builtins.property
19555
19834
  def secrets_encryption_key(self) -> typing.Optional[_IKey_5f11635f]:
19556
19835
  '''KMS secret for envelope encryption for Kubernetes secrets.
@@ -19602,6 +19881,7 @@ class ClusterOptions(CommonClusterOptions):
19602
19881
  "security_group": "securityGroup",
19603
19882
  "vpc": "vpc",
19604
19883
  "vpc_subnets": "vpcSubnets",
19884
+ "kubectl_layer": "kubectlLayer",
19605
19885
  "alb_controller": "albController",
19606
19886
  "authentication_mode": "authenticationMode",
19607
19887
  "awscli_layer": "awscliLayer",
@@ -19612,13 +19892,14 @@ class ClusterOptions(CommonClusterOptions):
19612
19892
  "endpoint_access": "endpointAccess",
19613
19893
  "ip_family": "ipFamily",
19614
19894
  "kubectl_environment": "kubectlEnvironment",
19615
- "kubectl_layer": "kubectlLayer",
19616
19895
  "kubectl_memory": "kubectlMemory",
19617
19896
  "masters_role": "mastersRole",
19618
19897
  "on_event_layer": "onEventLayer",
19619
19898
  "output_masters_role_arn": "outputMastersRoleArn",
19620
19899
  "place_cluster_handler_in_vpc": "placeClusterHandlerInVpc",
19621
19900
  "prune": "prune",
19901
+ "remote_node_networks": "remoteNodeNetworks",
19902
+ "remote_pod_networks": "remotePodNetworks",
19622
19903
  "secrets_encryption_key": "secretsEncryptionKey",
19623
19904
  "service_ipv4_cidr": "serviceIpv4Cidr",
19624
19905
  "bootstrap_cluster_creator_admin_permissions": "bootstrapClusterCreatorAdminPermissions",
@@ -19641,6 +19922,7 @@ class ClusterProps(ClusterOptions):
19641
19922
  security_group: typing.Optional[_ISecurityGroup_acf8a799] = None,
19642
19923
  vpc: typing.Optional[_IVpc_f30d5663] = None,
19643
19924
  vpc_subnets: typing.Optional[typing.Sequence[typing.Union[_SubnetSelection_e57d76df, typing.Dict[builtins.str, typing.Any]]]] = None,
19925
+ kubectl_layer: _ILayerVersion_5ac127c8,
19644
19926
  alb_controller: typing.Optional[typing.Union[AlbControllerOptions, typing.Dict[builtins.str, typing.Any]]] = None,
19645
19927
  authentication_mode: typing.Optional[AuthenticationMode] = None,
19646
19928
  awscli_layer: typing.Optional[_ILayerVersion_5ac127c8] = None,
@@ -19651,13 +19933,14 @@ class ClusterProps(ClusterOptions):
19651
19933
  endpoint_access: typing.Optional[EndpointAccess] = None,
19652
19934
  ip_family: typing.Optional[IpFamily] = None,
19653
19935
  kubectl_environment: typing.Optional[typing.Mapping[builtins.str, builtins.str]] = None,
19654
- kubectl_layer: typing.Optional[_ILayerVersion_5ac127c8] = None,
19655
19936
  kubectl_memory: typing.Optional[_Size_7b441c34] = None,
19656
19937
  masters_role: typing.Optional[_IRole_235f5d8e] = None,
19657
19938
  on_event_layer: typing.Optional[_ILayerVersion_5ac127c8] = None,
19658
19939
  output_masters_role_arn: typing.Optional[builtins.bool] = None,
19659
19940
  place_cluster_handler_in_vpc: typing.Optional[builtins.bool] = None,
19660
19941
  prune: typing.Optional[builtins.bool] = None,
19942
+ remote_node_networks: typing.Optional[typing.Sequence[typing.Union[RemoteNodeNetwork, typing.Dict[builtins.str, typing.Any]]]] = None,
19943
+ remote_pod_networks: typing.Optional[typing.Sequence[typing.Union[RemotePodNetwork, typing.Dict[builtins.str, typing.Any]]]] = None,
19661
19944
  secrets_encryption_key: typing.Optional[_IKey_5f11635f] = None,
19662
19945
  service_ipv4_cidr: typing.Optional[builtins.str] = None,
19663
19946
  bootstrap_cluster_creator_admin_permissions: typing.Optional[builtins.bool] = None,
@@ -19677,6 +19960,7 @@ class ClusterProps(ClusterOptions):
19677
19960
  :param security_group: Security Group to use for Control Plane ENIs. Default: - A security group is automatically created
19678
19961
  :param vpc: The VPC in which to create the Cluster. Default: - a VPC with default configuration will be created and can be accessed through ``cluster.vpc``.
19679
19962
  :param vpc_subnets: 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
19963
+ :param kubectl_layer: An AWS Lambda Layer which includes ``kubectl`` and Helm. 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
19680
19964
  :param alb_controller: Install the AWS Load Balancer Controller onto the cluster. Default: - The controller is not installed.
19681
19965
  :param authentication_mode: The desired authentication mode for the cluster. Default: AuthenticationMode.CONFIG_MAP
19682
19966
  :param awscli_layer: An AWS Lambda layer that contains the ``aws`` CLI. The handler expects the layer to include the following executables:: /opt/awscli/aws Default: - a default layer with the AWS CLI 1.x
@@ -19687,13 +19971,14 @@ class ClusterProps(ClusterOptions):
19687
19971
  :param endpoint_access: Configure access to the Kubernetes API server endpoint.. Default: EndpointAccess.PUBLIC_AND_PRIVATE
19688
19972
  :param ip_family: Specify which IP family is used to assign Kubernetes pod and service IP addresses. Default: - IpFamily.IP_V4
19689
19973
  :param kubectl_environment: Environment variables for the kubectl execution. Only relevant for kubectl enabled clusters. Default: - No environment variables.
19690
- :param kubectl_layer: An AWS Lambda Layer which includes ``kubectl`` and Helm. 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. If you don't supply this value ``kubectl`` 1.20 will be used, but that version is most likely too old. The handler expects the layer to include the following executables:: /opt/helm/helm /opt/kubectl/kubectl Default: - a default layer with Kubectl 1.20.
19691
19974
  :param kubectl_memory: Amount of memory to allocate to the provider's lambda function. Default: Size.gibibytes(1)
19692
19975
  :param masters_role: An IAM role that will be added to the ``system:masters`` Kubernetes RBAC group. Default: - no masters role.
19693
19976
  :param on_event_layer: An AWS Lambda Layer which includes the NPM dependency ``proxy-agent``. 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.
19694
19977
  :param output_masters_role_arn: Determines whether a CloudFormation output with the ARN of the "masters" IAM role will be synthesized (if ``mastersRole`` is specified). Default: false
19695
19978
  :param place_cluster_handler_in_vpc: If set to true, the cluster handler functions will be placed in the private subnets of the cluster vpc, subject to the ``vpcSubnets`` selection strategy. Default: false
19696
19979
  :param prune: Indicates whether Kubernetes resources added through ``addManifest()`` can be automatically pruned. 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. Default: true
19980
+ :param remote_node_networks: IPv4 CIDR blocks defining the expected address range of hybrid nodes that will join the cluster. Default: - none
19981
+ :param remote_pod_networks: IPv4 CIDR blocks for Pods running Kubernetes webhooks on hybrid nodes. Default: - none
19697
19982
  :param secrets_encryption_key: KMS secret for envelope encryption for Kubernetes secrets. 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.
19698
19983
  :param service_ipv4_cidr: The CIDR block to assign Kubernetes service IP addresses from. Default: - Kubernetes assigns addresses from either the 10.100.0.0/16 or 172.20.0.0/16 CIDR blocks
19699
19984
  :param bootstrap_cluster_creator_admin_permissions: 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
@@ -19707,11 +19992,16 @@ class ClusterProps(ClusterOptions):
19707
19992
 
19708
19993
  Example::
19709
19994
 
19995
+ from aws_cdk.lambda_layer_kubectl_v32 import KubectlV32Layer
19996
+
19710
19997
  # or
19711
19998
  # vpc: ec2.Vpc
19999
+
20000
+
19712
20001
  eks.Cluster(self, "MyCluster",
19713
20002
  kubectl_memory=Size.gibibytes(4),
19714
- version=eks.KubernetesVersion.V1_31
20003
+ version=eks.KubernetesVersion.V1_32,
20004
+ kubectl_layer=KubectlV32Layer(self, "kubectl")
19715
20005
  )
19716
20006
  eks.Cluster.from_cluster_attributes(self, "MyCluster",
19717
20007
  kubectl_memory=Size.gibibytes(4),
@@ -19731,6 +20021,7 @@ class ClusterProps(ClusterOptions):
19731
20021
  check_type(argname="argument security_group", value=security_group, expected_type=type_hints["security_group"])
19732
20022
  check_type(argname="argument vpc", value=vpc, expected_type=type_hints["vpc"])
19733
20023
  check_type(argname="argument vpc_subnets", value=vpc_subnets, expected_type=type_hints["vpc_subnets"])
20024
+ check_type(argname="argument kubectl_layer", value=kubectl_layer, expected_type=type_hints["kubectl_layer"])
19734
20025
  check_type(argname="argument alb_controller", value=alb_controller, expected_type=type_hints["alb_controller"])
19735
20026
  check_type(argname="argument authentication_mode", value=authentication_mode, expected_type=type_hints["authentication_mode"])
19736
20027
  check_type(argname="argument awscli_layer", value=awscli_layer, expected_type=type_hints["awscli_layer"])
@@ -19741,13 +20032,14 @@ class ClusterProps(ClusterOptions):
19741
20032
  check_type(argname="argument endpoint_access", value=endpoint_access, expected_type=type_hints["endpoint_access"])
19742
20033
  check_type(argname="argument ip_family", value=ip_family, expected_type=type_hints["ip_family"])
19743
20034
  check_type(argname="argument kubectl_environment", value=kubectl_environment, expected_type=type_hints["kubectl_environment"])
19744
- check_type(argname="argument kubectl_layer", value=kubectl_layer, expected_type=type_hints["kubectl_layer"])
19745
20035
  check_type(argname="argument kubectl_memory", value=kubectl_memory, expected_type=type_hints["kubectl_memory"])
19746
20036
  check_type(argname="argument masters_role", value=masters_role, expected_type=type_hints["masters_role"])
19747
20037
  check_type(argname="argument on_event_layer", value=on_event_layer, expected_type=type_hints["on_event_layer"])
19748
20038
  check_type(argname="argument output_masters_role_arn", value=output_masters_role_arn, expected_type=type_hints["output_masters_role_arn"])
19749
20039
  check_type(argname="argument place_cluster_handler_in_vpc", value=place_cluster_handler_in_vpc, expected_type=type_hints["place_cluster_handler_in_vpc"])
19750
20040
  check_type(argname="argument prune", value=prune, expected_type=type_hints["prune"])
20041
+ check_type(argname="argument remote_node_networks", value=remote_node_networks, expected_type=type_hints["remote_node_networks"])
20042
+ check_type(argname="argument remote_pod_networks", value=remote_pod_networks, expected_type=type_hints["remote_pod_networks"])
19751
20043
  check_type(argname="argument secrets_encryption_key", value=secrets_encryption_key, expected_type=type_hints["secrets_encryption_key"])
19752
20044
  check_type(argname="argument service_ipv4_cidr", value=service_ipv4_cidr, expected_type=type_hints["service_ipv4_cidr"])
19753
20045
  check_type(argname="argument bootstrap_cluster_creator_admin_permissions", value=bootstrap_cluster_creator_admin_permissions, expected_type=type_hints["bootstrap_cluster_creator_admin_permissions"])
@@ -19758,6 +20050,7 @@ class ClusterProps(ClusterOptions):
19758
20050
  check_type(argname="argument tags", value=tags, expected_type=type_hints["tags"])
19759
20051
  self._values: typing.Dict[builtins.str, typing.Any] = {
19760
20052
  "version": version,
20053
+ "kubectl_layer": kubectl_layer,
19761
20054
  }
19762
20055
  if cluster_name is not None:
19763
20056
  self._values["cluster_name"] = cluster_name
@@ -19793,8 +20086,6 @@ class ClusterProps(ClusterOptions):
19793
20086
  self._values["ip_family"] = ip_family
19794
20087
  if kubectl_environment is not None:
19795
20088
  self._values["kubectl_environment"] = kubectl_environment
19796
- if kubectl_layer is not None:
19797
- self._values["kubectl_layer"] = kubectl_layer
19798
20089
  if kubectl_memory is not None:
19799
20090
  self._values["kubectl_memory"] = kubectl_memory
19800
20091
  if masters_role is not None:
@@ -19807,6 +20098,10 @@ class ClusterProps(ClusterOptions):
19807
20098
  self._values["place_cluster_handler_in_vpc"] = place_cluster_handler_in_vpc
19808
20099
  if prune is not None:
19809
20100
  self._values["prune"] = prune
20101
+ if remote_node_networks is not None:
20102
+ self._values["remote_node_networks"] = remote_node_networks
20103
+ if remote_pod_networks is not None:
20104
+ self._values["remote_pod_networks"] = remote_pod_networks
19810
20105
  if secrets_encryption_key is not None:
19811
20106
  self._values["secrets_encryption_key"] = secrets_encryption_key
19812
20107
  if service_ipv4_cidr is not None:
@@ -19901,6 +20196,24 @@ class ClusterProps(ClusterOptions):
19901
20196
  result = self._values.get("vpc_subnets")
19902
20197
  return typing.cast(typing.Optional[typing.List[_SubnetSelection_e57d76df]], result)
19903
20198
 
20199
+ @builtins.property
20200
+ def kubectl_layer(self) -> _ILayerVersion_5ac127c8:
20201
+ '''An AWS Lambda Layer which includes ``kubectl`` and Helm.
20202
+
20203
+ This layer is used by the kubectl handler to apply manifests and install
20204
+ helm charts. You must pick an appropriate releases of one of the
20205
+ ``@aws-cdk/layer-kubectl-vXX`` packages, that works with the version of
20206
+ Kubernetes you have chosen.
20207
+
20208
+ The handler expects the layer to include the following executables::
20209
+
20210
+ /opt/helm/helm
20211
+ /opt/kubectl/kubectl
20212
+ '''
20213
+ result = self._values.get("kubectl_layer")
20214
+ assert result is not None, "Required property 'kubectl_layer' is missing"
20215
+ return typing.cast(_ILayerVersion_5ac127c8, result)
20216
+
19904
20217
  @builtins.property
19905
20218
  def alb_controller(self) -> typing.Optional[AlbControllerOptions]:
19906
20219
  '''Install the AWS Load Balancer Controller onto the cluster.
@@ -20013,26 +20326,6 @@ class ClusterProps(ClusterOptions):
20013
20326
  result = self._values.get("kubectl_environment")
20014
20327
  return typing.cast(typing.Optional[typing.Mapping[builtins.str, builtins.str]], result)
20015
20328
 
20016
- @builtins.property
20017
- def kubectl_layer(self) -> typing.Optional[_ILayerVersion_5ac127c8]:
20018
- '''An AWS Lambda Layer which includes ``kubectl`` and Helm.
20019
-
20020
- This layer is used by the kubectl handler to apply manifests and install
20021
- helm charts. You must pick an appropriate releases of one of the
20022
- ``@aws-cdk/layer-kubectl-vXX`` packages, that works with the version of
20023
- Kubernetes you have chosen. If you don't supply this value ``kubectl``
20024
- 1.20 will be used, but that version is most likely too old.
20025
-
20026
- The handler expects the layer to include the following executables::
20027
-
20028
- /opt/helm/helm
20029
- /opt/kubectl/kubectl
20030
-
20031
- :default: - a default layer with Kubectl 1.20.
20032
- '''
20033
- result = self._values.get("kubectl_layer")
20034
- return typing.cast(typing.Optional[_ILayerVersion_5ac127c8], result)
20035
-
20036
20329
  @builtins.property
20037
20330
  def kubectl_memory(self) -> typing.Optional[_Size_7b441c34]:
20038
20331
  '''Amount of memory to allocate to the provider's lambda function.
@@ -20107,6 +20400,24 @@ class ClusterProps(ClusterOptions):
20107
20400
  result = self._values.get("prune")
20108
20401
  return typing.cast(typing.Optional[builtins.bool], result)
20109
20402
 
20403
+ @builtins.property
20404
+ def remote_node_networks(self) -> typing.Optional[typing.List[RemoteNodeNetwork]]:
20405
+ '''IPv4 CIDR blocks defining the expected address range of hybrid nodes that will join the cluster.
20406
+
20407
+ :default: - none
20408
+ '''
20409
+ result = self._values.get("remote_node_networks")
20410
+ return typing.cast(typing.Optional[typing.List[RemoteNodeNetwork]], result)
20411
+
20412
+ @builtins.property
20413
+ def remote_pod_networks(self) -> typing.Optional[typing.List[RemotePodNetwork]]:
20414
+ '''IPv4 CIDR blocks for Pods running Kubernetes webhooks on hybrid nodes.
20415
+
20416
+ :default: - none
20417
+ '''
20418
+ result = self._values.get("remote_pod_networks")
20419
+ return typing.cast(typing.Optional[typing.List[RemotePodNetwork]], result)
20420
+
20110
20421
  @builtins.property
20111
20422
  def secrets_encryption_key(self) -> typing.Optional[_IKey_5f11635f]:
20112
20423
  '''KMS secret for envelope encryption for Kubernetes secrets.
@@ -20228,8 +20539,12 @@ class FargateCluster(
20228
20539
 
20229
20540
  Example::
20230
20541
 
20542
+ from aws_cdk.lambda_layer_kubectl_v32 import KubectlV32Layer
20543
+
20544
+
20231
20545
  cluster = eks.FargateCluster(self, "MyCluster",
20232
- version=eks.KubernetesVersion.V1_31
20546
+ version=eks.KubernetesVersion.V1_32,
20547
+ kubectl_layer=KubectlV32Layer(self, "kubectl")
20233
20548
  )
20234
20549
  '''
20235
20550
 
@@ -20239,6 +20554,7 @@ class FargateCluster(
20239
20554
  id: builtins.str,
20240
20555
  *,
20241
20556
  default_profile: typing.Optional[typing.Union[FargateProfileOptions, typing.Dict[builtins.str, typing.Any]]] = None,
20557
+ kubectl_layer: _ILayerVersion_5ac127c8,
20242
20558
  alb_controller: typing.Optional[typing.Union[AlbControllerOptions, typing.Dict[builtins.str, typing.Any]]] = None,
20243
20559
  authentication_mode: typing.Optional[AuthenticationMode] = None,
20244
20560
  awscli_layer: typing.Optional[_ILayerVersion_5ac127c8] = None,
@@ -20249,13 +20565,14 @@ class FargateCluster(
20249
20565
  endpoint_access: typing.Optional[EndpointAccess] = None,
20250
20566
  ip_family: typing.Optional[IpFamily] = None,
20251
20567
  kubectl_environment: typing.Optional[typing.Mapping[builtins.str, builtins.str]] = None,
20252
- kubectl_layer: typing.Optional[_ILayerVersion_5ac127c8] = None,
20253
20568
  kubectl_memory: typing.Optional[_Size_7b441c34] = None,
20254
20569
  masters_role: typing.Optional[_IRole_235f5d8e] = None,
20255
20570
  on_event_layer: typing.Optional[_ILayerVersion_5ac127c8] = None,
20256
20571
  output_masters_role_arn: typing.Optional[builtins.bool] = None,
20257
20572
  place_cluster_handler_in_vpc: typing.Optional[builtins.bool] = None,
20258
20573
  prune: typing.Optional[builtins.bool] = None,
20574
+ remote_node_networks: typing.Optional[typing.Sequence[typing.Union[RemoteNodeNetwork, typing.Dict[builtins.str, typing.Any]]]] = None,
20575
+ remote_pod_networks: typing.Optional[typing.Sequence[typing.Union[RemotePodNetwork, typing.Dict[builtins.str, typing.Any]]]] = None,
20259
20576
  secrets_encryption_key: typing.Optional[_IKey_5f11635f] = None,
20260
20577
  service_ipv4_cidr: typing.Optional[builtins.str] = None,
20261
20578
  version: KubernetesVersion,
@@ -20271,6 +20588,7 @@ class FargateCluster(
20271
20588
  :param scope: -
20272
20589
  :param id: -
20273
20590
  :param default_profile: Fargate Profile to create along with the cluster. Default: - A profile called "default" with 'default' and 'kube-system' selectors will be created if this is left undefined.
20591
+ :param kubectl_layer: An AWS Lambda Layer which includes ``kubectl`` and Helm. 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
20274
20592
  :param alb_controller: Install the AWS Load Balancer Controller onto the cluster. Default: - The controller is not installed.
20275
20593
  :param authentication_mode: The desired authentication mode for the cluster. Default: AuthenticationMode.CONFIG_MAP
20276
20594
  :param awscli_layer: An AWS Lambda layer that contains the ``aws`` CLI. The handler expects the layer to include the following executables:: /opt/awscli/aws Default: - a default layer with the AWS CLI 1.x
@@ -20281,13 +20599,14 @@ class FargateCluster(
20281
20599
  :param endpoint_access: Configure access to the Kubernetes API server endpoint.. Default: EndpointAccess.PUBLIC_AND_PRIVATE
20282
20600
  :param ip_family: Specify which IP family is used to assign Kubernetes pod and service IP addresses. Default: - IpFamily.IP_V4
20283
20601
  :param kubectl_environment: Environment variables for the kubectl execution. Only relevant for kubectl enabled clusters. Default: - No environment variables.
20284
- :param kubectl_layer: An AWS Lambda Layer which includes ``kubectl`` and Helm. 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. If you don't supply this value ``kubectl`` 1.20 will be used, but that version is most likely too old. The handler expects the layer to include the following executables:: /opt/helm/helm /opt/kubectl/kubectl Default: - a default layer with Kubectl 1.20.
20285
20602
  :param kubectl_memory: Amount of memory to allocate to the provider's lambda function. Default: Size.gibibytes(1)
20286
20603
  :param masters_role: An IAM role that will be added to the ``system:masters`` Kubernetes RBAC group. Default: - no masters role.
20287
20604
  :param on_event_layer: An AWS Lambda Layer which includes the NPM dependency ``proxy-agent``. 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.
20288
20605
  :param output_masters_role_arn: Determines whether a CloudFormation output with the ARN of the "masters" IAM role will be synthesized (if ``mastersRole`` is specified). Default: false
20289
20606
  :param place_cluster_handler_in_vpc: If set to true, the cluster handler functions will be placed in the private subnets of the cluster vpc, subject to the ``vpcSubnets`` selection strategy. Default: false
20290
20607
  :param prune: Indicates whether Kubernetes resources added through ``addManifest()`` can be automatically pruned. 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. Default: true
20608
+ :param remote_node_networks: IPv4 CIDR blocks defining the expected address range of hybrid nodes that will join the cluster. Default: - none
20609
+ :param remote_pod_networks: IPv4 CIDR blocks for Pods running Kubernetes webhooks on hybrid nodes. Default: - none
20291
20610
  :param secrets_encryption_key: KMS secret for envelope encryption for Kubernetes secrets. 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.
20292
20611
  :param service_ipv4_cidr: The CIDR block to assign Kubernetes service IP addresses from. Default: - Kubernetes assigns addresses from either the 10.100.0.0/16 or 172.20.0.0/16 CIDR blocks
20293
20612
  :param version: The Kubernetes version to run in the cluster.
@@ -20305,6 +20624,7 @@ class FargateCluster(
20305
20624
  check_type(argname="argument id", value=id, expected_type=type_hints["id"])
20306
20625
  props = FargateClusterProps(
20307
20626
  default_profile=default_profile,
20627
+ kubectl_layer=kubectl_layer,
20308
20628
  alb_controller=alb_controller,
20309
20629
  authentication_mode=authentication_mode,
20310
20630
  awscli_layer=awscli_layer,
@@ -20315,13 +20635,14 @@ class FargateCluster(
20315
20635
  endpoint_access=endpoint_access,
20316
20636
  ip_family=ip_family,
20317
20637
  kubectl_environment=kubectl_environment,
20318
- kubectl_layer=kubectl_layer,
20319
20638
  kubectl_memory=kubectl_memory,
20320
20639
  masters_role=masters_role,
20321
20640
  on_event_layer=on_event_layer,
20322
20641
  output_masters_role_arn=output_masters_role_arn,
20323
20642
  place_cluster_handler_in_vpc=place_cluster_handler_in_vpc,
20324
20643
  prune=prune,
20644
+ remote_node_networks=remote_node_networks,
20645
+ remote_pod_networks=remote_pod_networks,
20325
20646
  secrets_encryption_key=secrets_encryption_key,
20326
20647
  service_ipv4_cidr=service_ipv4_cidr,
20327
20648
  version=version,
@@ -20355,6 +20676,7 @@ class FargateCluster(
20355
20676
  "security_group": "securityGroup",
20356
20677
  "vpc": "vpc",
20357
20678
  "vpc_subnets": "vpcSubnets",
20679
+ "kubectl_layer": "kubectlLayer",
20358
20680
  "alb_controller": "albController",
20359
20681
  "authentication_mode": "authenticationMode",
20360
20682
  "awscli_layer": "awscliLayer",
@@ -20365,13 +20687,14 @@ class FargateCluster(
20365
20687
  "endpoint_access": "endpointAccess",
20366
20688
  "ip_family": "ipFamily",
20367
20689
  "kubectl_environment": "kubectlEnvironment",
20368
- "kubectl_layer": "kubectlLayer",
20369
20690
  "kubectl_memory": "kubectlMemory",
20370
20691
  "masters_role": "mastersRole",
20371
20692
  "on_event_layer": "onEventLayer",
20372
20693
  "output_masters_role_arn": "outputMastersRoleArn",
20373
20694
  "place_cluster_handler_in_vpc": "placeClusterHandlerInVpc",
20374
20695
  "prune": "prune",
20696
+ "remote_node_networks": "remoteNodeNetworks",
20697
+ "remote_pod_networks": "remotePodNetworks",
20375
20698
  "secrets_encryption_key": "secretsEncryptionKey",
20376
20699
  "service_ipv4_cidr": "serviceIpv4Cidr",
20377
20700
  "default_profile": "defaultProfile",
@@ -20389,6 +20712,7 @@ class FargateClusterProps(ClusterOptions):
20389
20712
  security_group: typing.Optional[_ISecurityGroup_acf8a799] = None,
20390
20713
  vpc: typing.Optional[_IVpc_f30d5663] = None,
20391
20714
  vpc_subnets: typing.Optional[typing.Sequence[typing.Union[_SubnetSelection_e57d76df, typing.Dict[builtins.str, typing.Any]]]] = None,
20715
+ kubectl_layer: _ILayerVersion_5ac127c8,
20392
20716
  alb_controller: typing.Optional[typing.Union[AlbControllerOptions, typing.Dict[builtins.str, typing.Any]]] = None,
20393
20717
  authentication_mode: typing.Optional[AuthenticationMode] = None,
20394
20718
  awscli_layer: typing.Optional[_ILayerVersion_5ac127c8] = None,
@@ -20399,13 +20723,14 @@ class FargateClusterProps(ClusterOptions):
20399
20723
  endpoint_access: typing.Optional[EndpointAccess] = None,
20400
20724
  ip_family: typing.Optional[IpFamily] = None,
20401
20725
  kubectl_environment: typing.Optional[typing.Mapping[builtins.str, builtins.str]] = None,
20402
- kubectl_layer: typing.Optional[_ILayerVersion_5ac127c8] = None,
20403
20726
  kubectl_memory: typing.Optional[_Size_7b441c34] = None,
20404
20727
  masters_role: typing.Optional[_IRole_235f5d8e] = None,
20405
20728
  on_event_layer: typing.Optional[_ILayerVersion_5ac127c8] = None,
20406
20729
  output_masters_role_arn: typing.Optional[builtins.bool] = None,
20407
20730
  place_cluster_handler_in_vpc: typing.Optional[builtins.bool] = None,
20408
20731
  prune: typing.Optional[builtins.bool] = None,
20732
+ remote_node_networks: typing.Optional[typing.Sequence[typing.Union[RemoteNodeNetwork, typing.Dict[builtins.str, typing.Any]]]] = None,
20733
+ remote_pod_networks: typing.Optional[typing.Sequence[typing.Union[RemotePodNetwork, typing.Dict[builtins.str, typing.Any]]]] = None,
20409
20734
  secrets_encryption_key: typing.Optional[_IKey_5f11635f] = None,
20410
20735
  service_ipv4_cidr: typing.Optional[builtins.str] = None,
20411
20736
  default_profile: typing.Optional[typing.Union[FargateProfileOptions, typing.Dict[builtins.str, typing.Any]]] = None,
@@ -20420,6 +20745,7 @@ class FargateClusterProps(ClusterOptions):
20420
20745
  :param security_group: Security Group to use for Control Plane ENIs. Default: - A security group is automatically created
20421
20746
  :param vpc: The VPC in which to create the Cluster. Default: - a VPC with default configuration will be created and can be accessed through ``cluster.vpc``.
20422
20747
  :param vpc_subnets: 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
20748
+ :param kubectl_layer: An AWS Lambda Layer which includes ``kubectl`` and Helm. 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
20423
20749
  :param alb_controller: Install the AWS Load Balancer Controller onto the cluster. Default: - The controller is not installed.
20424
20750
  :param authentication_mode: The desired authentication mode for the cluster. Default: AuthenticationMode.CONFIG_MAP
20425
20751
  :param awscli_layer: An AWS Lambda layer that contains the ``aws`` CLI. The handler expects the layer to include the following executables:: /opt/awscli/aws Default: - a default layer with the AWS CLI 1.x
@@ -20430,13 +20756,14 @@ class FargateClusterProps(ClusterOptions):
20430
20756
  :param endpoint_access: Configure access to the Kubernetes API server endpoint.. Default: EndpointAccess.PUBLIC_AND_PRIVATE
20431
20757
  :param ip_family: Specify which IP family is used to assign Kubernetes pod and service IP addresses. Default: - IpFamily.IP_V4
20432
20758
  :param kubectl_environment: Environment variables for the kubectl execution. Only relevant for kubectl enabled clusters. Default: - No environment variables.
20433
- :param kubectl_layer: An AWS Lambda Layer which includes ``kubectl`` and Helm. 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. If you don't supply this value ``kubectl`` 1.20 will be used, but that version is most likely too old. The handler expects the layer to include the following executables:: /opt/helm/helm /opt/kubectl/kubectl Default: - a default layer with Kubectl 1.20.
20434
20759
  :param kubectl_memory: Amount of memory to allocate to the provider's lambda function. Default: Size.gibibytes(1)
20435
20760
  :param masters_role: An IAM role that will be added to the ``system:masters`` Kubernetes RBAC group. Default: - no masters role.
20436
20761
  :param on_event_layer: An AWS Lambda Layer which includes the NPM dependency ``proxy-agent``. 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.
20437
20762
  :param output_masters_role_arn: Determines whether a CloudFormation output with the ARN of the "masters" IAM role will be synthesized (if ``mastersRole`` is specified). Default: false
20438
20763
  :param place_cluster_handler_in_vpc: If set to true, the cluster handler functions will be placed in the private subnets of the cluster vpc, subject to the ``vpcSubnets`` selection strategy. Default: false
20439
20764
  :param prune: Indicates whether Kubernetes resources added through ``addManifest()`` can be automatically pruned. 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. Default: true
20765
+ :param remote_node_networks: IPv4 CIDR blocks defining the expected address range of hybrid nodes that will join the cluster. Default: - none
20766
+ :param remote_pod_networks: IPv4 CIDR blocks for Pods running Kubernetes webhooks on hybrid nodes. Default: - none
20440
20767
  :param secrets_encryption_key: KMS secret for envelope encryption for Kubernetes secrets. 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.
20441
20768
  :param service_ipv4_cidr: The CIDR block to assign Kubernetes service IP addresses from. Default: - Kubernetes assigns addresses from either the 10.100.0.0/16 or 172.20.0.0/16 CIDR blocks
20442
20769
  :param default_profile: Fargate Profile to create along with the cluster. Default: - A profile called "default" with 'default' and 'kube-system' selectors will be created if this is left undefined.
@@ -20445,8 +20772,12 @@ class FargateClusterProps(ClusterOptions):
20445
20772
 
20446
20773
  Example::
20447
20774
 
20775
+ from aws_cdk.lambda_layer_kubectl_v32 import KubectlV32Layer
20776
+
20777
+
20448
20778
  cluster = eks.FargateCluster(self, "MyCluster",
20449
- version=eks.KubernetesVersion.V1_31
20779
+ version=eks.KubernetesVersion.V1_32,
20780
+ kubectl_layer=KubectlV32Layer(self, "kubectl")
20450
20781
  )
20451
20782
  '''
20452
20783
  if isinstance(alb_controller, dict):
@@ -20463,6 +20794,7 @@ class FargateClusterProps(ClusterOptions):
20463
20794
  check_type(argname="argument security_group", value=security_group, expected_type=type_hints["security_group"])
20464
20795
  check_type(argname="argument vpc", value=vpc, expected_type=type_hints["vpc"])
20465
20796
  check_type(argname="argument vpc_subnets", value=vpc_subnets, expected_type=type_hints["vpc_subnets"])
20797
+ check_type(argname="argument kubectl_layer", value=kubectl_layer, expected_type=type_hints["kubectl_layer"])
20466
20798
  check_type(argname="argument alb_controller", value=alb_controller, expected_type=type_hints["alb_controller"])
20467
20799
  check_type(argname="argument authentication_mode", value=authentication_mode, expected_type=type_hints["authentication_mode"])
20468
20800
  check_type(argname="argument awscli_layer", value=awscli_layer, expected_type=type_hints["awscli_layer"])
@@ -20473,18 +20805,20 @@ class FargateClusterProps(ClusterOptions):
20473
20805
  check_type(argname="argument endpoint_access", value=endpoint_access, expected_type=type_hints["endpoint_access"])
20474
20806
  check_type(argname="argument ip_family", value=ip_family, expected_type=type_hints["ip_family"])
20475
20807
  check_type(argname="argument kubectl_environment", value=kubectl_environment, expected_type=type_hints["kubectl_environment"])
20476
- check_type(argname="argument kubectl_layer", value=kubectl_layer, expected_type=type_hints["kubectl_layer"])
20477
20808
  check_type(argname="argument kubectl_memory", value=kubectl_memory, expected_type=type_hints["kubectl_memory"])
20478
20809
  check_type(argname="argument masters_role", value=masters_role, expected_type=type_hints["masters_role"])
20479
20810
  check_type(argname="argument on_event_layer", value=on_event_layer, expected_type=type_hints["on_event_layer"])
20480
20811
  check_type(argname="argument output_masters_role_arn", value=output_masters_role_arn, expected_type=type_hints["output_masters_role_arn"])
20481
20812
  check_type(argname="argument place_cluster_handler_in_vpc", value=place_cluster_handler_in_vpc, expected_type=type_hints["place_cluster_handler_in_vpc"])
20482
20813
  check_type(argname="argument prune", value=prune, expected_type=type_hints["prune"])
20814
+ check_type(argname="argument remote_node_networks", value=remote_node_networks, expected_type=type_hints["remote_node_networks"])
20815
+ check_type(argname="argument remote_pod_networks", value=remote_pod_networks, expected_type=type_hints["remote_pod_networks"])
20483
20816
  check_type(argname="argument secrets_encryption_key", value=secrets_encryption_key, expected_type=type_hints["secrets_encryption_key"])
20484
20817
  check_type(argname="argument service_ipv4_cidr", value=service_ipv4_cidr, expected_type=type_hints["service_ipv4_cidr"])
20485
20818
  check_type(argname="argument default_profile", value=default_profile, expected_type=type_hints["default_profile"])
20486
20819
  self._values: typing.Dict[builtins.str, typing.Any] = {
20487
20820
  "version": version,
20821
+ "kubectl_layer": kubectl_layer,
20488
20822
  }
20489
20823
  if cluster_name is not None:
20490
20824
  self._values["cluster_name"] = cluster_name
@@ -20520,8 +20854,6 @@ class FargateClusterProps(ClusterOptions):
20520
20854
  self._values["ip_family"] = ip_family
20521
20855
  if kubectl_environment is not None:
20522
20856
  self._values["kubectl_environment"] = kubectl_environment
20523
- if kubectl_layer is not None:
20524
- self._values["kubectl_layer"] = kubectl_layer
20525
20857
  if kubectl_memory is not None:
20526
20858
  self._values["kubectl_memory"] = kubectl_memory
20527
20859
  if masters_role is not None:
@@ -20534,6 +20866,10 @@ class FargateClusterProps(ClusterOptions):
20534
20866
  self._values["place_cluster_handler_in_vpc"] = place_cluster_handler_in_vpc
20535
20867
  if prune is not None:
20536
20868
  self._values["prune"] = prune
20869
+ if remote_node_networks is not None:
20870
+ self._values["remote_node_networks"] = remote_node_networks
20871
+ if remote_pod_networks is not None:
20872
+ self._values["remote_pod_networks"] = remote_pod_networks
20537
20873
  if secrets_encryption_key is not None:
20538
20874
  self._values["secrets_encryption_key"] = secrets_encryption_key
20539
20875
  if service_ipv4_cidr is not None:
@@ -20618,6 +20954,24 @@ class FargateClusterProps(ClusterOptions):
20618
20954
  result = self._values.get("vpc_subnets")
20619
20955
  return typing.cast(typing.Optional[typing.List[_SubnetSelection_e57d76df]], result)
20620
20956
 
20957
+ @builtins.property
20958
+ def kubectl_layer(self) -> _ILayerVersion_5ac127c8:
20959
+ '''An AWS Lambda Layer which includes ``kubectl`` and Helm.
20960
+
20961
+ This layer is used by the kubectl handler to apply manifests and install
20962
+ helm charts. You must pick an appropriate releases of one of the
20963
+ ``@aws-cdk/layer-kubectl-vXX`` packages, that works with the version of
20964
+ Kubernetes you have chosen.
20965
+
20966
+ The handler expects the layer to include the following executables::
20967
+
20968
+ /opt/helm/helm
20969
+ /opt/kubectl/kubectl
20970
+ '''
20971
+ result = self._values.get("kubectl_layer")
20972
+ assert result is not None, "Required property 'kubectl_layer' is missing"
20973
+ return typing.cast(_ILayerVersion_5ac127c8, result)
20974
+
20621
20975
  @builtins.property
20622
20976
  def alb_controller(self) -> typing.Optional[AlbControllerOptions]:
20623
20977
  '''Install the AWS Load Balancer Controller onto the cluster.
@@ -20730,26 +21084,6 @@ class FargateClusterProps(ClusterOptions):
20730
21084
  result = self._values.get("kubectl_environment")
20731
21085
  return typing.cast(typing.Optional[typing.Mapping[builtins.str, builtins.str]], result)
20732
21086
 
20733
- @builtins.property
20734
- def kubectl_layer(self) -> typing.Optional[_ILayerVersion_5ac127c8]:
20735
- '''An AWS Lambda Layer which includes ``kubectl`` and Helm.
20736
-
20737
- This layer is used by the kubectl handler to apply manifests and install
20738
- helm charts. You must pick an appropriate releases of one of the
20739
- ``@aws-cdk/layer-kubectl-vXX`` packages, that works with the version of
20740
- Kubernetes you have chosen. If you don't supply this value ``kubectl``
20741
- 1.20 will be used, but that version is most likely too old.
20742
-
20743
- The handler expects the layer to include the following executables::
20744
-
20745
- /opt/helm/helm
20746
- /opt/kubectl/kubectl
20747
-
20748
- :default: - a default layer with Kubectl 1.20.
20749
- '''
20750
- result = self._values.get("kubectl_layer")
20751
- return typing.cast(typing.Optional[_ILayerVersion_5ac127c8], result)
20752
-
20753
21087
  @builtins.property
20754
21088
  def kubectl_memory(self) -> typing.Optional[_Size_7b441c34]:
20755
21089
  '''Amount of memory to allocate to the provider's lambda function.
@@ -20824,6 +21158,24 @@ class FargateClusterProps(ClusterOptions):
20824
21158
  result = self._values.get("prune")
20825
21159
  return typing.cast(typing.Optional[builtins.bool], result)
20826
21160
 
21161
+ @builtins.property
21162
+ def remote_node_networks(self) -> typing.Optional[typing.List[RemoteNodeNetwork]]:
21163
+ '''IPv4 CIDR blocks defining the expected address range of hybrid nodes that will join the cluster.
21164
+
21165
+ :default: - none
21166
+ '''
21167
+ result = self._values.get("remote_node_networks")
21168
+ return typing.cast(typing.Optional[typing.List[RemoteNodeNetwork]], result)
21169
+
21170
+ @builtins.property
21171
+ def remote_pod_networks(self) -> typing.Optional[typing.List[RemotePodNetwork]]:
21172
+ '''IPv4 CIDR blocks for Pods running Kubernetes webhooks on hybrid nodes.
21173
+
21174
+ :default: - none
21175
+ '''
21176
+ result = self._values.get("remote_pod_networks")
21177
+ return typing.cast(typing.Optional[typing.List[RemotePodNetwork]], result)
21178
+
20827
21179
  @builtins.property
20828
21180
  def secrets_encryption_key(self) -> typing.Optional[_IKey_5f11635f]:
20829
21181
  '''KMS secret for envelope encryption for Kubernetes secrets.
@@ -21038,6 +21390,8 @@ __all__ = [
21038
21390
  "OpenIdConnectProvider",
21039
21391
  "OpenIdConnectProviderProps",
21040
21392
  "PatchType",
21393
+ "RemoteNodeNetwork",
21394
+ "RemotePodNetwork",
21041
21395
  "Selector",
21042
21396
  "ServiceAccount",
21043
21397
  "ServiceAccountOptions",
@@ -22743,6 +23097,20 @@ def _typecheckingstub__c02764139ca6306efb78e2db6695149f8ddc6b3e8adb63a11131864ce
22743
23097
  """Type checking stubs"""
22744
23098
  pass
22745
23099
 
23100
+ def _typecheckingstub__600789f5d1adc105e950fc1e01201ea975b89bb797b63227b757a633425a0f09(
23101
+ *,
23102
+ cidrs: typing.Sequence[builtins.str],
23103
+ ) -> None:
23104
+ """Type checking stubs"""
23105
+ pass
23106
+
23107
+ def _typecheckingstub__f9878a6e6680b6c2c6cb0db908c65c1de65fe68965909386c87176ba98e30705(
23108
+ *,
23109
+ cidrs: typing.Sequence[builtins.str],
23110
+ ) -> None:
23111
+ """Type checking stubs"""
23112
+ pass
23113
+
22746
23114
  def _typecheckingstub__594b3f5a610588bf33bb1a98e98b19b5ddfb0609f59e93022c2cec8d2a17f411(
22747
23115
  *,
22748
23116
  namespace: builtins.str,
@@ -22889,6 +23257,7 @@ def _typecheckingstub__786576ad54eacdb9ab8e92277c0fd07f813bc56d4243937f3b5a85c0c
22889
23257
  default_capacity_type: typing.Optional[DefaultCapacityType] = None,
22890
23258
  kubectl_lambda_role: typing.Optional[_IRole_235f5d8e] = None,
22891
23259
  tags: typing.Optional[typing.Mapping[builtins.str, builtins.str]] = None,
23260
+ kubectl_layer: _ILayerVersion_5ac127c8,
22892
23261
  alb_controller: typing.Optional[typing.Union[AlbControllerOptions, typing.Dict[builtins.str, typing.Any]]] = None,
22893
23262
  authentication_mode: typing.Optional[AuthenticationMode] = None,
22894
23263
  awscli_layer: typing.Optional[_ILayerVersion_5ac127c8] = None,
@@ -22899,13 +23268,14 @@ def _typecheckingstub__786576ad54eacdb9ab8e92277c0fd07f813bc56d4243937f3b5a85c0c
22899
23268
  endpoint_access: typing.Optional[EndpointAccess] = None,
22900
23269
  ip_family: typing.Optional[IpFamily] = None,
22901
23270
  kubectl_environment: typing.Optional[typing.Mapping[builtins.str, builtins.str]] = None,
22902
- kubectl_layer: typing.Optional[_ILayerVersion_5ac127c8] = None,
22903
23271
  kubectl_memory: typing.Optional[_Size_7b441c34] = None,
22904
23272
  masters_role: typing.Optional[_IRole_235f5d8e] = None,
22905
23273
  on_event_layer: typing.Optional[_ILayerVersion_5ac127c8] = None,
22906
23274
  output_masters_role_arn: typing.Optional[builtins.bool] = None,
22907
23275
  place_cluster_handler_in_vpc: typing.Optional[builtins.bool] = None,
22908
23276
  prune: typing.Optional[builtins.bool] = None,
23277
+ remote_node_networks: typing.Optional[typing.Sequence[typing.Union[RemoteNodeNetwork, typing.Dict[builtins.str, typing.Any]]]] = None,
23278
+ remote_pod_networks: typing.Optional[typing.Sequence[typing.Union[RemotePodNetwork, typing.Dict[builtins.str, typing.Any]]]] = None,
22909
23279
  secrets_encryption_key: typing.Optional[_IKey_5f11635f] = None,
22910
23280
  service_ipv4_cidr: typing.Optional[builtins.str] = None,
22911
23281
  version: KubernetesVersion,
@@ -23125,6 +23495,7 @@ def _typecheckingstub__0b45b97fda36b43e872f90f9fe4cde65de855b50b3acfd236c1f400ef
23125
23495
  security_group: typing.Optional[_ISecurityGroup_acf8a799] = None,
23126
23496
  vpc: typing.Optional[_IVpc_f30d5663] = None,
23127
23497
  vpc_subnets: typing.Optional[typing.Sequence[typing.Union[_SubnetSelection_e57d76df, typing.Dict[builtins.str, typing.Any]]]] = None,
23498
+ kubectl_layer: _ILayerVersion_5ac127c8,
23128
23499
  alb_controller: typing.Optional[typing.Union[AlbControllerOptions, typing.Dict[builtins.str, typing.Any]]] = None,
23129
23500
  authentication_mode: typing.Optional[AuthenticationMode] = None,
23130
23501
  awscli_layer: typing.Optional[_ILayerVersion_5ac127c8] = None,
@@ -23135,13 +23506,14 @@ def _typecheckingstub__0b45b97fda36b43e872f90f9fe4cde65de855b50b3acfd236c1f400ef
23135
23506
  endpoint_access: typing.Optional[EndpointAccess] = None,
23136
23507
  ip_family: typing.Optional[IpFamily] = None,
23137
23508
  kubectl_environment: typing.Optional[typing.Mapping[builtins.str, builtins.str]] = None,
23138
- kubectl_layer: typing.Optional[_ILayerVersion_5ac127c8] = None,
23139
23509
  kubectl_memory: typing.Optional[_Size_7b441c34] = None,
23140
23510
  masters_role: typing.Optional[_IRole_235f5d8e] = None,
23141
23511
  on_event_layer: typing.Optional[_ILayerVersion_5ac127c8] = None,
23142
23512
  output_masters_role_arn: typing.Optional[builtins.bool] = None,
23143
23513
  place_cluster_handler_in_vpc: typing.Optional[builtins.bool] = None,
23144
23514
  prune: typing.Optional[builtins.bool] = None,
23515
+ remote_node_networks: typing.Optional[typing.Sequence[typing.Union[RemoteNodeNetwork, typing.Dict[builtins.str, typing.Any]]]] = None,
23516
+ remote_pod_networks: typing.Optional[typing.Sequence[typing.Union[RemotePodNetwork, typing.Dict[builtins.str, typing.Any]]]] = None,
23145
23517
  secrets_encryption_key: typing.Optional[_IKey_5f11635f] = None,
23146
23518
  service_ipv4_cidr: typing.Optional[builtins.str] = None,
23147
23519
  ) -> None:
@@ -23158,6 +23530,7 @@ def _typecheckingstub__ce7a73a63de29ba5e5b5cd5cabde7aca1c4bc7d119de52fc4c0f11d99
23158
23530
  security_group: typing.Optional[_ISecurityGroup_acf8a799] = None,
23159
23531
  vpc: typing.Optional[_IVpc_f30d5663] = None,
23160
23532
  vpc_subnets: typing.Optional[typing.Sequence[typing.Union[_SubnetSelection_e57d76df, typing.Dict[builtins.str, typing.Any]]]] = None,
23533
+ kubectl_layer: _ILayerVersion_5ac127c8,
23161
23534
  alb_controller: typing.Optional[typing.Union[AlbControllerOptions, typing.Dict[builtins.str, typing.Any]]] = None,
23162
23535
  authentication_mode: typing.Optional[AuthenticationMode] = None,
23163
23536
  awscli_layer: typing.Optional[_ILayerVersion_5ac127c8] = None,
@@ -23168,13 +23541,14 @@ def _typecheckingstub__ce7a73a63de29ba5e5b5cd5cabde7aca1c4bc7d119de52fc4c0f11d99
23168
23541
  endpoint_access: typing.Optional[EndpointAccess] = None,
23169
23542
  ip_family: typing.Optional[IpFamily] = None,
23170
23543
  kubectl_environment: typing.Optional[typing.Mapping[builtins.str, builtins.str]] = None,
23171
- kubectl_layer: typing.Optional[_ILayerVersion_5ac127c8] = None,
23172
23544
  kubectl_memory: typing.Optional[_Size_7b441c34] = None,
23173
23545
  masters_role: typing.Optional[_IRole_235f5d8e] = None,
23174
23546
  on_event_layer: typing.Optional[_ILayerVersion_5ac127c8] = None,
23175
23547
  output_masters_role_arn: typing.Optional[builtins.bool] = None,
23176
23548
  place_cluster_handler_in_vpc: typing.Optional[builtins.bool] = None,
23177
23549
  prune: typing.Optional[builtins.bool] = None,
23550
+ remote_node_networks: typing.Optional[typing.Sequence[typing.Union[RemoteNodeNetwork, typing.Dict[builtins.str, typing.Any]]]] = None,
23551
+ remote_pod_networks: typing.Optional[typing.Sequence[typing.Union[RemotePodNetwork, typing.Dict[builtins.str, typing.Any]]]] = None,
23178
23552
  secrets_encryption_key: typing.Optional[_IKey_5f11635f] = None,
23179
23553
  service_ipv4_cidr: typing.Optional[builtins.str] = None,
23180
23554
  bootstrap_cluster_creator_admin_permissions: typing.Optional[builtins.bool] = None,
@@ -23192,6 +23566,7 @@ def _typecheckingstub__ae166d791f5d5176f3386726c22bc44afedf5d336437a3513e3740387
23192
23566
  id: builtins.str,
23193
23567
  *,
23194
23568
  default_profile: typing.Optional[typing.Union[FargateProfileOptions, typing.Dict[builtins.str, typing.Any]]] = None,
23569
+ kubectl_layer: _ILayerVersion_5ac127c8,
23195
23570
  alb_controller: typing.Optional[typing.Union[AlbControllerOptions, typing.Dict[builtins.str, typing.Any]]] = None,
23196
23571
  authentication_mode: typing.Optional[AuthenticationMode] = None,
23197
23572
  awscli_layer: typing.Optional[_ILayerVersion_5ac127c8] = None,
@@ -23202,13 +23577,14 @@ def _typecheckingstub__ae166d791f5d5176f3386726c22bc44afedf5d336437a3513e3740387
23202
23577
  endpoint_access: typing.Optional[EndpointAccess] = None,
23203
23578
  ip_family: typing.Optional[IpFamily] = None,
23204
23579
  kubectl_environment: typing.Optional[typing.Mapping[builtins.str, builtins.str]] = None,
23205
- kubectl_layer: typing.Optional[_ILayerVersion_5ac127c8] = None,
23206
23580
  kubectl_memory: typing.Optional[_Size_7b441c34] = None,
23207
23581
  masters_role: typing.Optional[_IRole_235f5d8e] = None,
23208
23582
  on_event_layer: typing.Optional[_ILayerVersion_5ac127c8] = None,
23209
23583
  output_masters_role_arn: typing.Optional[builtins.bool] = None,
23210
23584
  place_cluster_handler_in_vpc: typing.Optional[builtins.bool] = None,
23211
23585
  prune: typing.Optional[builtins.bool] = None,
23586
+ remote_node_networks: typing.Optional[typing.Sequence[typing.Union[RemoteNodeNetwork, typing.Dict[builtins.str, typing.Any]]]] = None,
23587
+ remote_pod_networks: typing.Optional[typing.Sequence[typing.Union[RemotePodNetwork, typing.Dict[builtins.str, typing.Any]]]] = None,
23212
23588
  secrets_encryption_key: typing.Optional[_IKey_5f11635f] = None,
23213
23589
  service_ipv4_cidr: typing.Optional[builtins.str] = None,
23214
23590
  version: KubernetesVersion,
@@ -23233,6 +23609,7 @@ def _typecheckingstub__f11c7f989209f6213cb855d2846bb0b2b79a6a2b85eb0d65939e981df
23233
23609
  security_group: typing.Optional[_ISecurityGroup_acf8a799] = None,
23234
23610
  vpc: typing.Optional[_IVpc_f30d5663] = None,
23235
23611
  vpc_subnets: typing.Optional[typing.Sequence[typing.Union[_SubnetSelection_e57d76df, typing.Dict[builtins.str, typing.Any]]]] = None,
23612
+ kubectl_layer: _ILayerVersion_5ac127c8,
23236
23613
  alb_controller: typing.Optional[typing.Union[AlbControllerOptions, typing.Dict[builtins.str, typing.Any]]] = None,
23237
23614
  authentication_mode: typing.Optional[AuthenticationMode] = None,
23238
23615
  awscli_layer: typing.Optional[_ILayerVersion_5ac127c8] = None,
@@ -23243,13 +23620,14 @@ def _typecheckingstub__f11c7f989209f6213cb855d2846bb0b2b79a6a2b85eb0d65939e981df
23243
23620
  endpoint_access: typing.Optional[EndpointAccess] = None,
23244
23621
  ip_family: typing.Optional[IpFamily] = None,
23245
23622
  kubectl_environment: typing.Optional[typing.Mapping[builtins.str, builtins.str]] = None,
23246
- kubectl_layer: typing.Optional[_ILayerVersion_5ac127c8] = None,
23247
23623
  kubectl_memory: typing.Optional[_Size_7b441c34] = None,
23248
23624
  masters_role: typing.Optional[_IRole_235f5d8e] = None,
23249
23625
  on_event_layer: typing.Optional[_ILayerVersion_5ac127c8] = None,
23250
23626
  output_masters_role_arn: typing.Optional[builtins.bool] = None,
23251
23627
  place_cluster_handler_in_vpc: typing.Optional[builtins.bool] = None,
23252
23628
  prune: typing.Optional[builtins.bool] = None,
23629
+ remote_node_networks: typing.Optional[typing.Sequence[typing.Union[RemoteNodeNetwork, typing.Dict[builtins.str, typing.Any]]]] = None,
23630
+ remote_pod_networks: typing.Optional[typing.Sequence[typing.Union[RemotePodNetwork, typing.Dict[builtins.str, typing.Any]]]] = None,
23253
23631
  secrets_encryption_key: typing.Optional[_IKey_5f11635f] = None,
23254
23632
  service_ipv4_cidr: typing.Optional[builtins.str] = None,
23255
23633
  default_profile: typing.Optional[typing.Union[FargateProfileOptions, typing.Dict[builtins.str, typing.Any]]] = None,