Skip to content

Commit 9a518c5

Browse files
authored
feat(eks): add k8s v1.22 (#19756)
EKS 1.22 just got released https://aws.amazon.com/blogs/containers/amazon-eks-now-supports-kubernetes-1-22/ https://aws.amazon.com/about-aws/whats-new/2022/04/amazon-eks-distro-eks-anywhere-kubernetes-1-22/ ---- ### All Submissions: * [x] 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 * [x] Have you added the new feature to an [integration test](https://github.com/aws/aws-cdk/blob/master/INTEGRATION_TESTS.md)? * [ ] Did you use `cdk-integ` to deploy the infrastructure and generate the snapshot (i.e. `cdk-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 f351e06 commit 9a518c5

File tree

5 files changed

+52
-46
lines changed

5 files changed

+52
-46
lines changed

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_21,
53+
version: eks.KubernetesVersion.V1_22,
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_21,
146+
version: eks.KubernetesVersion.V1_22,
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_21,
154+
version: eks.KubernetesVersion.V1_22,
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_21,
178+
version: eks.KubernetesVersion.V1_22,
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_21,
190+
version: eks.KubernetesVersion.V1_22,
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_21,
348+
version: eks.KubernetesVersion.V1_22,
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_21,
425+
version: eks.KubernetesVersion.V1_22,
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_21,
518+
version: eks.KubernetesVersion.V1_22,
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_21,
540+
version: eks.KubernetesVersion.V1_22,
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_21,
580+
version: eks.KubernetesVersion.V1_22,
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_21,
627+
version: eks.KubernetesVersion.V1_22,
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_21,
665+
version: eks.KubernetesVersion.V1_22,
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_21,
709+
version: eks.KubernetesVersion.V1_22,
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_21,
727+
version: eks.KubernetesVersion.V1_22,
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_21,
766+
version: eks.KubernetesVersion.V1_22,
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_21,
794+
version: eks.KubernetesVersion.V1_22,
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_21,
804+
version: eks.KubernetesVersion.V1_22,
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_21,
1079+
version: eks.KubernetesVersion.V1_22,
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_21,
1434+
version: eks.KubernetesVersion.V1_22,
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,6 +796,7 @@ export class KubernetesVersion {
796796

797797
/**
798798
* Kubernetes version 1.18
799+
* @deprecated Use newer version of EKS
799800
*/
800801
public static readonly V1_18 = KubernetesVersion.of('1.18');
801802

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

818+
/**
819+
* Kubernetes version 1.22
820+
*/
821+
public static readonly V1_22 = KubernetesVersion.of('1.22');
822+
817823
/**
818824
* Custom cluster version
819825
* @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_21;
20+
const CLUSTER_VERSION = eks.KubernetesVersion.V1_22;
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 }],
138+
vpcSubnets: [{ subnetType: ec2.SubnetType.PUBLIC }, { subnetType: ec2.SubnetType.PRIVATE_WITH_NAT }],
139139
defaultCapacity: 0,
140-
version: eks.KubernetesVersion.V1_21,
140+
version: CLUSTER_VERSION,
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: eks.KubernetesVersion.V1_21,
152+
version: CLUSTER_VERSION,
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.21',
700+
version: '1.22',
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.21' }).getImage(stack);
1660+
new eks.EksOptimizedImage({ kubernetesVersion: '1.22' }).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.21/'),
1671+
(v as any).Default.includes('/1.22/'),
16721672
)).toEqual(true);
16731673

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

18081808
// WHEN
1809-
new BottleRocketImage({ kubernetesVersion: '1.21' }).getImage(stack);
1809+
new BottleRocketImage({ kubernetesVersion: '1.22' }).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.21/'),
1820+
(v as any).Default.includes('/aws-k8s-1.22/'),
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.21',
1841+
version: '1.22',
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,
2792+
subnetType: ec2.SubnetType.PRIVATE_WITH_NAT,
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,
2851+
subnetType: ec2.SubnetType.PRIVATE_WITH_NAT,
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,
2900+
subnetType: ec2.SubnetType.PRIVATE_WITH_NAT,
29012901
name: `Private${i}`,
29022902
},
29032903
);

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

+12-12
Original file line numberDiff line numberDiff line change
@@ -872,7 +872,7 @@
872872
]
873873
},
874874
"Config": {
875-
"version": "1.21",
875+
"version": "1.22",
876876
"roleArn": {
877877
"Fn::GetAtt": [
878878
"ClusterRoleFA261979",
@@ -1593,7 +1593,7 @@
15931593
"Type": "AWS::AutoScaling::LaunchConfiguration",
15941594
"Properties": {
15951595
"ImageId": {
1596-
"Ref": "SsmParameterValueawsserviceeksoptimizedami121amazonlinux2recommendedimageidC96584B6F00A464EAD1953AFF4B05118Parameter"
1596+
"Ref": "SsmParameterValueawsserviceeksoptimizedami122amazonlinux2recommendedimageidC96584B6F00A464EAD1953AFF4B05118Parameter"
15971597
},
15981598
"InstanceType": "t2.medium",
15991599
"IamInstanceProfile": {
@@ -1918,7 +1918,7 @@
19181918
"Type": "AWS::AutoScaling::LaunchConfiguration",
19191919
"Properties": {
19201920
"ImageId": {
1921-
"Ref": "SsmParameterValueawsserviceeksoptimizedami121amazonlinux2arm64recommendedimageidC96584B6F00A464EAD1953AFF4B05118Parameter"
1921+
"Ref": "SsmParameterValueawsserviceeksoptimizedami122amazonlinux2arm64recommendedimageidC96584B6F00A464EAD1953AFF4B05118Parameter"
19221922
},
19231923
"InstanceType": "m6g.medium",
19241924
"IamInstanceProfile": {
@@ -2243,7 +2243,7 @@
22432243
"Type": "AWS::AutoScaling::LaunchConfiguration",
22442244
"Properties": {
22452245
"ImageId": {
2246-
"Ref": "SsmParameterValueawsservicebottlerocketawsk8s121x8664latestimageidC96584B6F00A464EAD1953AFF4B05118Parameter"
2246+
"Ref": "SsmParameterValueawsservicebottlerocketawsk8s122x8664latestimageidC96584B6F00A464EAD1953AFF4B05118Parameter"
22472247
},
22482248
"InstanceType": "t3.small",
22492249
"IamInstanceProfile": {
@@ -2568,7 +2568,7 @@
25682568
"Type": "AWS::AutoScaling::LaunchConfiguration",
25692569
"Properties": {
25702570
"ImageId": {
2571-
"Ref": "SsmParameterValueawsserviceeksoptimizedami121amazonlinux2recommendedimageidC96584B6F00A464EAD1953AFF4B05118Parameter"
2571+
"Ref": "SsmParameterValueawsserviceeksoptimizedami122amazonlinux2recommendedimageidC96584B6F00A464EAD1953AFF4B05118Parameter"
25722572
},
25732573
"InstanceType": "t3.large",
25742574
"IamInstanceProfile": {
@@ -3594,7 +3594,7 @@
35943594
"Properties": {
35953595
"LaunchTemplateData": {
35963596
"ImageId": {
3597-
"Ref": "SsmParameterValueawsserviceeksoptimizedami121amazonlinux2recommendedimageidC96584B6F00A464EAD1953AFF4B05118Parameter"
3597+
"Ref": "SsmParameterValueawsserviceeksoptimizedami122amazonlinux2recommendedimageidC96584B6F00A464EAD1953AFF4B05118Parameter"
35983598
},
35993599
"InstanceType": "t3.small",
36003600
"UserData": {
@@ -4039,17 +4039,17 @@
40394039
"Type": "String",
40404040
"Description": "Artifact hash for asset \"fedb0b025bbf74f4daee09934a81c34a6cf5b06a765baa86bf42234971244a09\""
40414041
},
4042-
"SsmParameterValueawsserviceeksoptimizedami121amazonlinux2recommendedimageidC96584B6F00A464EAD1953AFF4B05118Parameter": {
4042+
"SsmParameterValueawsserviceeksoptimizedami122amazonlinux2recommendedimageidC96584B6F00A464EAD1953AFF4B05118Parameter": {
40434043
"Type": "AWS::SSM::Parameter::Value<String>",
4044-
"Default": "/aws/service/eks/optimized-ami/1.21/amazon-linux-2/recommended/image_id"
4044+
"Default": "/aws/service/eks/optimized-ami/1.22/amazon-linux-2/recommended/image_id"
40454045
},
4046-
"SsmParameterValueawsserviceeksoptimizedami121amazonlinux2arm64recommendedimageidC96584B6F00A464EAD1953AFF4B05118Parameter": {
4046+
"SsmParameterValueawsserviceeksoptimizedami122amazonlinux2arm64recommendedimageidC96584B6F00A464EAD1953AFF4B05118Parameter": {
40474047
"Type": "AWS::SSM::Parameter::Value<String>",
4048-
"Default": "/aws/service/eks/optimized-ami/1.21/amazon-linux-2-arm64/recommended/image_id"
4048+
"Default": "/aws/service/eks/optimized-ami/1.22/amazon-linux-2-arm64/recommended/image_id"
40494049
},
4050-
"SsmParameterValueawsservicebottlerocketawsk8s121x8664latestimageidC96584B6F00A464EAD1953AFF4B05118Parameter": {
4050+
"SsmParameterValueawsservicebottlerocketawsk8s122x8664latestimageidC96584B6F00A464EAD1953AFF4B05118Parameter": {
40514051
"Type": "AWS::SSM::Parameter::Value<String>",
4052-
"Default": "/aws/service/bottlerocket/aws-k8s-1.21/x86_64/latest/image_id"
4052+
"Default": "/aws/service/bottlerocket/aws-k8s-1.22/x86_64/latest/image_id"
40534053
}
40544054
}
40554055
}

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

+2-2
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ class EksClusterStack extends TestStack {
3636
vpc: this.vpc,
3737
mastersRole,
3838
defaultCapacity: 2,
39-
version: eks.KubernetesVersion.V1_21,
39+
version: eks.KubernetesVersion.V1_22,
4040
secretsEncryptionKey,
4141
tags: {
4242
foo: 'bar',
@@ -206,7 +206,7 @@ class EksClusterStack extends TestStack {
206206
const lt = new ec2.CfnLaunchTemplate(this, 'LaunchTemplate', {
207207
launchTemplateData: {
208208
imageId: new eks.EksOptimizedImage({
209-
kubernetesVersion: eks.KubernetesVersion.V1_21.version,
209+
kubernetesVersion: eks.KubernetesVersion.V1_22.version,
210210
}).getImage(this).imageId,
211211
instanceType: new ec2.InstanceType('t3.small').toString(),
212212
userData: Fn.base64(userData.render()),

0 commit comments

Comments
 (0)