Skip to content

Commit d38a9e4

Browse files
authored
fix(eks): remove incomplete support for k8s v1.22 (#20000)
Revert "feat(eks): add k8s v1.22 (#19756)" This commit reverts addition of the latest version of EKS (1.22) to CDK as there are some incompatibilities between the current lambda-layer-kubectl and v1.22 EKS cluster. Preferably we would have multiple versions fo kubectl lambda layer, but we are currently struggling with package size issues. kubectl is large, and our package is larger, and adding multiple kubectls to it will make it exceed size limits of package managers. So we can't do this right now, until we have invested significant engineering effort into lifting those limitations. In order to not break the backward compatibility with <=1.20 versions, it was decided to revert this addition PR until all the underlying issues around package size issues are resolved. cc @rix0rrr Close #19919 ---- ### All Submissions: * [ ] Have you followed the guidelines in our [Contributing guide?](https://github.com/aws/aws-cdk/blob/master/CONTRIBUTING.md) ### Adding new Unconventional Dependencies: * [ ] This PR adds new unconventional dependencies following the process described [here](https://github.com/aws/aws-cdk/blob/master/CONTRIBUTING.md/#adding-new-unconventional-dependencies) ### New Features * [ ] Have you added the new feature to an [integration test](https://github.com/aws/aws-cdk/blob/master/INTEGRATION_TESTS.md)? * [ ] Did you use `yarn integ` to deploy the infrastructure and generate the snapshot (i.e. `yarn integ` without `--dry-run`)? *By submitting this pull request, I confirm that my contribution is made under the terms of the Apache-2.0 license*
1 parent 5024021 commit d38a9e4

File tree

7 files changed

+62
-65
lines changed

7 files changed

+62
-65
lines changed

allowed-breaking-changes.txt

+4-1
Original file line numberDiff line numberDiff line change
@@ -135,4 +135,7 @@ changed-type:@aws-cdk/aws-rds.SnapshotCredentials.secret
135135
removed:@aws-cdk/aws-lambda-event-sources.BaseStreamEventSourceProps.onFailure
136136
removed:@aws-cdk/aws-lambda-event-sources.KafkaEventSourceProps.onFailure
137137
removed:@aws-cdk/aws-lambda-event-sources.ManagedKafkaEventSourceProps.onFailure
138-
removed:@aws-cdk/aws-lambda-event-sources.SelfManagedKafkaEventSourceProps.onFailure
138+
removed:@aws-cdk/aws-lambda-event-sources.SelfManagedKafkaEventSourceProps.onFailure
139+
140+
# removed kubernetes version from EKS
141+
removed:@aws-cdk/aws-eks.KubernetesVersion.V1_22

packages/@aws-cdk/aws-eks/README.md

+19-19
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ This example defines an Amazon EKS cluster with the following configuration:
5050
```ts
5151
// provisiong a cluster
5252
const cluster = new eks.Cluster(this, 'hello-eks', {
53-
version: eks.KubernetesVersion.V1_22,
53+
version: eks.KubernetesVersion.V1_21,
5454
});
5555

5656
// apply a kubernetes manifest to the cluster
@@ -143,15 +143,15 @@ Creating a new cluster is done using the `Cluster` or `FargateCluster` construct
143143

144144
```ts
145145
new eks.Cluster(this, 'HelloEKS', {
146-
version: eks.KubernetesVersion.V1_22,
146+
version: eks.KubernetesVersion.V1_21,
147147
});
148148
```
149149

150150
You can also use `FargateCluster` to provision a cluster that uses only fargate workers.
151151

152152
```ts
153153
new eks.FargateCluster(this, 'HelloEKS', {
154-
version: eks.KubernetesVersion.V1_22,
154+
version: eks.KubernetesVersion.V1_21,
155155
});
156156
```
157157

@@ -175,7 +175,7 @@ At cluster instantiation time, you can customize the number of instances and the
175175

176176
```ts
177177
new eks.Cluster(this, 'HelloEKS', {
178-
version: eks.KubernetesVersion.V1_22,
178+
version: eks.KubernetesVersion.V1_21,
179179
defaultCapacity: 5,
180180
defaultCapacityInstance: ec2.InstanceType.of(ec2.InstanceClass.M5, ec2.InstanceSize.SMALL),
181181
});
@@ -187,7 +187,7 @@ Additional customizations are available post instantiation. To apply them, set t
187187

188188
```ts
189189
const cluster = new eks.Cluster(this, 'HelloEKS', {
190-
version: eks.KubernetesVersion.V1_22,
190+
version: eks.KubernetesVersion.V1_21,
191191
defaultCapacity: 0,
192192
});
193193

@@ -345,7 +345,7 @@ The following code defines an Amazon EKS cluster with a default Fargate Profile
345345

346346
```ts
347347
const cluster = new eks.FargateCluster(this, 'MyCluster', {
348-
version: eks.KubernetesVersion.V1_22,
348+
version: eks.KubernetesVersion.V1_21,
349349
});
350350
```
351351

@@ -422,7 +422,7 @@ You can also configure the cluster to use an auto-scaling group as the default c
422422

423423
```ts
424424
const cluster = new eks.Cluster(this, 'HelloEKS', {
425-
version: eks.KubernetesVersion.V1_22,
425+
version: eks.KubernetesVersion.V1_21,
426426
defaultCapacityType: eks.DefaultCapacityType.EC2,
427427
});
428428
```
@@ -515,7 +515,7 @@ You can configure the [cluster endpoint access](https://docs.aws.amazon.com/eks/
515515

516516
```ts
517517
const cluster = new eks.Cluster(this, 'hello-eks', {
518-
version: eks.KubernetesVersion.V1_22,
518+
version: eks.KubernetesVersion.V1_21,
519519
endpointAccess: eks.EndpointAccess.PRIVATE, // No access outside of your VPC.
520520
});
521521
```
@@ -537,7 +537,7 @@ To deploy the controller on your EKS cluster, configure the `albController` prop
537537

538538
```ts
539539
new eks.Cluster(this, 'HelloEKS', {
540-
version: eks.KubernetesVersion.V1_22,
540+
version: eks.KubernetesVersion.V1_21,
541541
albController: {
542542
version: eks.AlbControllerVersion.V2_4_1,
543543
},
@@ -577,7 +577,7 @@ You can specify the VPC of the cluster using the `vpc` and `vpcSubnets` properti
577577
declare const vpc: ec2.Vpc;
578578

579579
new eks.Cluster(this, 'HelloEKS', {
580-
version: eks.KubernetesVersion.V1_22,
580+
version: eks.KubernetesVersion.V1_21,
581581
vpc,
582582
vpcSubnets: [{ subnetType: ec2.SubnetType.PRIVATE }],
583583
});
@@ -624,7 +624,7 @@ You can configure the environment of the Cluster Handler functions by specifying
624624
```ts
625625
declare const proxyInstanceSecurityGroup: ec2.SecurityGroup;
626626
const cluster = new eks.Cluster(this, 'hello-eks', {
627-
version: eks.KubernetesVersion.V1_22,
627+
version: eks.KubernetesVersion.V1_21,
628628
clusterHandlerEnvironment: {
629629
https_proxy: 'http://proxy.myproxy.com',
630630
},
@@ -662,7 +662,7 @@ You can configure the environment of this function by specifying it at cluster i
662662

663663
```ts
664664
const cluster = new eks.Cluster(this, 'hello-eks', {
665-
version: eks.KubernetesVersion.V1_22,
665+
version: eks.KubernetesVersion.V1_21,
666666
kubectlEnvironment: {
667667
'http_proxy': 'http://proxy.myproxy.com',
668668
},
@@ -706,7 +706,7 @@ const cluster1 = new eks.Cluster(this, 'MyCluster', {
706706
kubectlLayer: layer,
707707
vpc,
708708
clusterName: 'cluster-name',
709-
version: eks.KubernetesVersion.V1_22,
709+
version: eks.KubernetesVersion.V1_21,
710710
});
711711

712712
// or
@@ -724,7 +724,7 @@ By default, the kubectl provider is configured with 1024MiB of memory. You can u
724724
```ts
725725
new eks.Cluster(this, 'MyCluster', {
726726
kubectlMemory: Size.gibibytes(4),
727-
version: eks.KubernetesVersion.V1_22,
727+
version: eks.KubernetesVersion.V1_21,
728728
});
729729

730730
// or
@@ -763,7 +763,7 @@ When you create a cluster, you can specify a `mastersRole`. The `Cluster` constr
763763
```ts
764764
declare const role: iam.Role;
765765
new eks.Cluster(this, 'HelloEKS', {
766-
version: eks.KubernetesVersion.V1_22,
766+
version: eks.KubernetesVersion.V1_21,
767767
mastersRole: role,
768768
});
769769
```
@@ -791,7 +791,7 @@ You can use the `secretsEncryptionKey` to configure which key the cluster will u
791791
const secretsKey = new kms.Key(this, 'SecretsKey');
792792
const cluster = new eks.Cluster(this, 'MyCluster', {
793793
secretsEncryptionKey: secretsKey,
794-
version: eks.KubernetesVersion.V1_22,
794+
version: eks.KubernetesVersion.V1_21,
795795
});
796796
```
797797

@@ -801,7 +801,7 @@ You can also use a similar configuration for running a cluster built using the F
801801
const secretsKey = new kms.Key(this, 'SecretsKey');
802802
const cluster = new eks.FargateCluster(this, 'MyFargateCluster', {
803803
secretsEncryptionKey: secretsKey,
804-
version: eks.KubernetesVersion.V1_22,
804+
version: eks.KubernetesVersion.V1_21,
805805
});
806806
```
807807

@@ -1076,7 +1076,7 @@ when a cluster is defined:
10761076

10771077
```ts
10781078
new eks.Cluster(this, 'MyCluster', {
1079-
version: eks.KubernetesVersion.V1_22,
1079+
version: eks.KubernetesVersion.V1_21,
10801080
prune: false,
10811081
});
10821082
```
@@ -1431,7 +1431,7 @@ property. For example:
14311431
```ts
14321432
const cluster = new eks.Cluster(this, 'Cluster', {
14331433
// ...
1434-
version: eks.KubernetesVersion.V1_22,
1434+
version: eks.KubernetesVersion.V1_21,
14351435
clusterLogging: [
14361436
eks.ClusterLoggingTypes.API,
14371437
eks.ClusterLoggingTypes.AUTHENTICATOR,

packages/@aws-cdk/aws-eks/lib/cluster.ts

-6
Original file line numberDiff line numberDiff line change
@@ -796,7 +796,6 @@ export class KubernetesVersion {
796796

797797
/**
798798
* Kubernetes version 1.18
799-
* @deprecated Use newer version of EKS
800799
*/
801800
public static readonly V1_18 = KubernetesVersion.of('1.18');
802801

@@ -815,11 +814,6 @@ export class KubernetesVersion {
815814
*/
816815
public static readonly V1_21 = KubernetesVersion.of('1.21');
817816

818-
/**
819-
* Kubernetes version 1.22
820-
*/
821-
public static readonly V1_22 = KubernetesVersion.of('1.22');
822-
823817
/**
824818
* Custom cluster version
825819
* @param version custom version number

packages/@aws-cdk/aws-eks/test/cluster.test.ts

+13-13
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ import { testFixture, testFixtureNoVpc } from './util';
1717

1818
/* eslint-disable max-len */
1919

20-
const CLUSTER_VERSION = eks.KubernetesVersion.V1_22;
20+
const CLUSTER_VERSION = eks.KubernetesVersion.V1_21;
2121

2222
describe('cluster', () => {
2323

@@ -135,9 +135,9 @@ describe('cluster', () => {
135135
test('throws if selecting more than one subnet group', () => {
136136
expect(() => new eks.Cluster(stack, 'Cluster', {
137137
vpc: vpc,
138-
vpcSubnets: [{ subnetType: ec2.SubnetType.PUBLIC }, { subnetType: ec2.SubnetType.PRIVATE_WITH_NAT }],
138+
vpcSubnets: [{ subnetType: ec2.SubnetType.PUBLIC }, { subnetType: ec2.SubnetType.PRIVATE }],
139139
defaultCapacity: 0,
140-
version: CLUSTER_VERSION,
140+
version: eks.KubernetesVersion.V1_21,
141141
})).toThrow(/cannot select multiple subnet groups/);
142142

143143

@@ -149,7 +149,7 @@ describe('cluster', () => {
149149
vpc: vpc,
150150
vpcSubnets: [{ subnetType: ec2.SubnetType.PUBLIC }],
151151
defaultCapacity: 0,
152-
version: CLUSTER_VERSION,
152+
version: eks.KubernetesVersion.V1_21,
153153
});
154154

155155
// THEN
@@ -697,7 +697,7 @@ describe('cluster', () => {
697697
Template.fromStack(stack).hasResourceProperties('Custom::AWSCDK-EKS-Cluster', {
698698
Config: {
699699
roleArn: { 'Fn::GetAtt': ['ClusterRoleFA261979', 'Arn'] },
700-
version: '1.22',
700+
version: '1.21',
701701
resourcesVpcConfig: {
702702
securityGroupIds: [{ 'Fn::GetAtt': ['ClusterControlPlaneSecurityGroupD274242C', 'GroupId'] }],
703703
subnetIds: [
@@ -1657,7 +1657,7 @@ describe('cluster', () => {
16571657
const { app, stack } = testFixtureNoVpc();
16581658

16591659
// WHEN
1660-
new eks.EksOptimizedImage({ kubernetesVersion: '1.22' }).getImage(stack);
1660+
new eks.EksOptimizedImage({ kubernetesVersion: '1.21' }).getImage(stack);
16611661

16621662
// THEN
16631663
const assembly = app.synth();
@@ -1668,7 +1668,7 @@ describe('cluster', () => {
16681668
)).toEqual(true);
16691669
expect(Object.entries(parameters).some(
16701670
([k, v]) => k.startsWith('SsmParameterValueawsserviceeksoptimizedami') &&
1671-
(v as any).Default.includes('/1.22/'),
1671+
(v as any).Default.includes('/1.21/'),
16721672
)).toEqual(true);
16731673

16741674
});
@@ -1806,7 +1806,7 @@ describe('cluster', () => {
18061806
const { app, stack } = testFixtureNoVpc();
18071807

18081808
// WHEN
1809-
new BottleRocketImage({ kubernetesVersion: '1.22' }).getImage(stack);
1809+
new BottleRocketImage({ kubernetesVersion: '1.21' }).getImage(stack);
18101810

18111811
// THEN
18121812
const assembly = app.synth();
@@ -1817,7 +1817,7 @@ describe('cluster', () => {
18171817
)).toEqual(true);
18181818
expect(Object.entries(parameters).some(
18191819
([k, v]) => k.startsWith('SsmParameterValueawsservicebottlerocketaws') &&
1820-
(v as any).Default.includes('/aws-k8s-1.22/'),
1820+
(v as any).Default.includes('/aws-k8s-1.21/'),
18211821
)).toEqual(true);
18221822

18231823
});
@@ -1838,7 +1838,7 @@ describe('cluster', () => {
18381838
Config: {
18391839
name: 'my-cluster-name',
18401840
roleArn: { 'Fn::GetAtt': ['MyClusterRoleBA20FE72', 'Arn'] },
1841-
version: '1.22',
1841+
version: '1.21',
18421842
resourcesVpcConfig: {
18431843
securityGroupIds: [
18441844
{ 'Fn::GetAtt': ['MyClusterControlPlaneSecurityGroup6B658F79', 'GroupId'] },
@@ -2789,7 +2789,7 @@ describe('cluster', () => {
27892789
natGateways: 1,
27902790
subnetConfiguration: [
27912791
{
2792-
subnetType: ec2.SubnetType.PRIVATE_WITH_NAT,
2792+
subnetType: ec2.SubnetType.PRIVATE,
27932793
name: 'Private1',
27942794
},
27952795
{
@@ -2848,7 +2848,7 @@ describe('cluster', () => {
28482848

28492849
for (let i = 0; i < 20; i++) {
28502850
subnetConfiguration.push({
2851-
subnetType: ec2.SubnetType.PRIVATE_WITH_NAT,
2851+
subnetType: ec2.SubnetType.PRIVATE,
28522852
name: `Private${i}`,
28532853
},
28542854
);
@@ -2897,7 +2897,7 @@ describe('cluster', () => {
28972897

28982898
for (let i = 0; i < 20; i++) {
28992899
subnetConfiguration.push({
2900-
subnetType: ec2.SubnetType.PRIVATE_WITH_NAT,
2900+
subnetType: ec2.SubnetType.PRIVATE,
29012901
name: `Private${i}`,
29022902
},
29032903
);

packages/@aws-cdk/aws-eks/test/eks-cluster.integ.snapshot/aws-cdk-eks-cluster-test.template.json

+12-12
Original file line numberDiff line numberDiff line change
@@ -753,7 +753,7 @@
753753
]
754754
},
755755
"Config": {
756-
"version": "1.22",
756+
"version": "1.21",
757757
"roleArn": {
758758
"Fn::GetAtt": [
759759
"ClusterRoleFA261979",
@@ -1437,7 +1437,7 @@
14371437
"Type": "AWS::AutoScaling::LaunchConfiguration",
14381438
"Properties": {
14391439
"ImageId": {
1440-
"Ref": "SsmParameterValueawsserviceeksoptimizedami122amazonlinux2recommendedimageidC96584B6F00A464EAD1953AFF4B05118Parameter"
1440+
"Ref": "SsmParameterValueawsserviceeksoptimizedami121amazonlinux2recommendedimageidC96584B6F00A464EAD1953AFF4B05118Parameter"
14411441
},
14421442
"InstanceType": "t2.medium",
14431443
"IamInstanceProfile": {
@@ -1749,7 +1749,7 @@
17491749
"Type": "AWS::AutoScaling::LaunchConfiguration",
17501750
"Properties": {
17511751
"ImageId": {
1752-
"Ref": "SsmParameterValueawsserviceeksoptimizedami122amazonlinux2arm64recommendedimageidC96584B6F00A464EAD1953AFF4B05118Parameter"
1752+
"Ref": "SsmParameterValueawsserviceeksoptimizedami121amazonlinux2arm64recommendedimageidC96584B6F00A464EAD1953AFF4B05118Parameter"
17531753
},
17541754
"InstanceType": "m6g.medium",
17551755
"IamInstanceProfile": {
@@ -2061,7 +2061,7 @@
20612061
"Type": "AWS::AutoScaling::LaunchConfiguration",
20622062
"Properties": {
20632063
"ImageId": {
2064-
"Ref": "SsmParameterValueawsservicebottlerocketawsk8s122x8664latestimageidC96584B6F00A464EAD1953AFF4B05118Parameter"
2064+
"Ref": "SsmParameterValueawsservicebottlerocketawsk8s121x8664latestimageidC96584B6F00A464EAD1953AFF4B05118Parameter"
20652065
},
20662066
"InstanceType": "t3.small",
20672067
"IamInstanceProfile": {
@@ -2373,7 +2373,7 @@
23732373
"Type": "AWS::AutoScaling::LaunchConfiguration",
23742374
"Properties": {
23752375
"ImageId": {
2376-
"Ref": "SsmParameterValueawsserviceeksoptimizedami122amazonlinux2recommendedimageidC96584B6F00A464EAD1953AFF4B05118Parameter"
2376+
"Ref": "SsmParameterValueawsserviceeksoptimizedami121amazonlinux2recommendedimageidC96584B6F00A464EAD1953AFF4B05118Parameter"
23772377
},
23782378
"InstanceType": "t3.large",
23792379
"IamInstanceProfile": {
@@ -3351,7 +3351,7 @@
33513351
"Properties": {
33523352
"LaunchTemplateData": {
33533353
"ImageId": {
3354-
"Ref": "SsmParameterValueawsserviceeksoptimizedami122amazonlinux2recommendedimageidC96584B6F00A464EAD1953AFF4B05118Parameter"
3354+
"Ref": "SsmParameterValueawsserviceeksoptimizedami121amazonlinux2recommendedimageidC96584B6F00A464EAD1953AFF4B05118Parameter"
33553355
},
33563356
"InstanceType": "t3.small",
33573357
"UserData": {
@@ -3796,17 +3796,17 @@
37963796
"Type": "String",
37973797
"Description": "Artifact hash for asset \"bff088c569c330c279e54fe0e98fc4226648b5b86454bb2ad9491b2ca6befdd2\""
37983798
},
3799-
"SsmParameterValueawsserviceeksoptimizedami122amazonlinux2recommendedimageidC96584B6F00A464EAD1953AFF4B05118Parameter": {
3799+
"SsmParameterValueawsserviceeksoptimizedami121amazonlinux2recommendedimageidC96584B6F00A464EAD1953AFF4B05118Parameter": {
38003800
"Type": "AWS::SSM::Parameter::Value<String>",
3801-
"Default": "/aws/service/eks/optimized-ami/1.22/amazon-linux-2/recommended/image_id"
3801+
"Default": "/aws/service/eks/optimized-ami/1.21/amazon-linux-2/recommended/image_id"
38023802
},
3803-
"SsmParameterValueawsserviceeksoptimizedami122amazonlinux2arm64recommendedimageidC96584B6F00A464EAD1953AFF4B05118Parameter": {
3803+
"SsmParameterValueawsserviceeksoptimizedami121amazonlinux2arm64recommendedimageidC96584B6F00A464EAD1953AFF4B05118Parameter": {
38043804
"Type": "AWS::SSM::Parameter::Value<String>",
3805-
"Default": "/aws/service/eks/optimized-ami/1.22/amazon-linux-2-arm64/recommended/image_id"
3805+
"Default": "/aws/service/eks/optimized-ami/1.21/amazon-linux-2-arm64/recommended/image_id"
38063806
},
3807-
"SsmParameterValueawsservicebottlerocketawsk8s122x8664latestimageidC96584B6F00A464EAD1953AFF4B05118Parameter": {
3807+
"SsmParameterValueawsservicebottlerocketawsk8s121x8664latestimageidC96584B6F00A464EAD1953AFF4B05118Parameter": {
38083808
"Type": "AWS::SSM::Parameter::Value<String>",
3809-
"Default": "/aws/service/bottlerocket/aws-k8s-1.22/x86_64/latest/image_id"
3809+
"Default": "/aws/service/bottlerocket/aws-k8s-1.21/x86_64/latest/image_id"
38103810
}
38113811
}
38123812
}

0 commit comments

Comments
 (0)