Skip to content

Commit 1f66975

Browse files
authored
chore(typescript/eks): refresh sample code and set Amazon EKS version as 1.31 (#1128)
1 parent cbbbd80 commit 1f66975

File tree

2 files changed

+52
-44
lines changed

2 files changed

+52
-44
lines changed

typescript/eks/cluster/index.ts

Lines changed: 44 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,24 @@
1-
import { KubectlV29Layer } from "@aws-cdk/lambda-layer-kubectl-v29";
1+
import { KubectlV31Layer as KubectlLayer } from "@aws-cdk/lambda-layer-kubectl-v31";
22
import * as cdk from "aws-cdk-lib";
33
import * as ec2 from "aws-cdk-lib/aws-ec2";
44
import * as eks from "aws-cdk-lib/aws-eks";
55
import * as iam from "aws-cdk-lib/aws-iam";
66

7+
const kubernetesVersion = eks.KubernetesVersion.V1_31;
8+
9+
const clusterLogging = [
10+
// eks.ClusterLoggingTypes.API,
11+
// eks.ClusterLoggingTypes.AUTHENTICATOR,
12+
// eks.ClusterLoggingTypes.SCHEDULER,
13+
eks.ClusterLoggingTypes.AUDIT,
14+
// eks.ClusterLoggingTypes.CONTROLLER_MANAGER,
15+
];
16+
17+
const instanceTypes = [
18+
new ec2.InstanceType("m5.large"),
19+
new ec2.InstanceType("m5a.large"),
20+
];
21+
722
class EKSCluster extends cdk.Stack {
823
constructor(scope: cdk.App, id: string, props?: cdk.StackProps) {
924
super(scope, id, props);
@@ -15,59 +30,52 @@ class EKSCluster extends cdk.Stack {
1530
const eksCluster = new eks.Cluster(this, "EKSCluster", {
1631
vpc: vpc,
1732
defaultCapacity: 0,
18-
version: eks.KubernetesVersion.V1_29,
19-
kubectlLayer: new KubectlV29Layer(this, "kubectl"),
33+
version: kubernetesVersion,
34+
kubectlLayer: new KubectlLayer(this, "kubectl"),
2035
ipFamily: eks.IpFamily.IP_V4,
21-
clusterLogging: [
22-
// eks.ClusterLoggingTypes.API,
23-
// eks.ClusterLoggingTypes.AUTHENTICATOR,
24-
// eks.ClusterLoggingTypes.SCHEDULER,
25-
eks.ClusterLoggingTypes.AUDIT,
26-
// eks.ClusterLoggingTypes.CONTROLLER_MANAGER,
27-
],
28-
outputClusterName: true,
29-
outputConfigCommand: true,
36+
clusterLogging: clusterLogging,
3037
});
3138

39+
// HINT: required cdk v2.135.0 or higher version to support instanceTypes assignment when working with AL2023
40+
// - https://github.com/aws/aws-cdk/pull/29505
41+
// - https://github.com/aws/aws-cdk/releases/tag/v2.135.0
3242
eksCluster.addNodegroupCapacity("custom-node-group", {
33-
amiType: eks.NodegroupAmiType.AL2_X86_64,
34-
instanceTypes: [new ec2.InstanceType("m5.large")],
43+
amiType: eks.NodegroupAmiType.AL2023_X86_64_STANDARD,
44+
instanceTypes: instanceTypes,
3545
desiredSize: 2,
46+
minSize: 2,
47+
maxSize: 5,
3648
diskSize: 20,
3749
nodeRole: new iam.Role(this, "eksClusterNodeGroupRole", {
3850
roleName: "eksClusterNodeGroupRole",
3951
assumedBy: new iam.ServicePrincipal("ec2.amazonaws.com"),
4052
managedPolicies: [
41-
iam.ManagedPolicy.fromAwsManagedPolicyName("AmazonEKSWorkerNodePolicy"),
42-
iam.ManagedPolicy.fromAwsManagedPolicyName("AmazonEC2ContainerRegistryReadOnly"),
43-
iam.ManagedPolicy.fromAwsManagedPolicyName("AmazonEKS_CNI_Policy"),
44-
],
53+
"AmazonEKSWorkerNodePolicy",
54+
"AmazonEC2ContainerRegistryReadOnly",
55+
"AmazonEKS_CNI_Policy",
56+
].map((policy) => iam.ManagedPolicy.fromAwsManagedPolicyName(policy)),
4557
}),
4658
});
4759

4860
// Fargate
49-
const myProfile = new eks.FargateProfile(this, 'myProfile', {
61+
new eks.FargateProfile(this, "myProfile", {
5062
cluster: eksCluster,
51-
selectors: [ { namespace: 'default' } ],
63+
selectors: [{ namespace: "default" }],
5264
});
5365

54-
// Managed Addon: kube-proxy
55-
const kubeProxy = new eks.CfnAddon(this, "addonKubeProxy", {
56-
addonName: "kube-proxy",
57-
clusterName: eksCluster.clusterName,
58-
});
66+
// Managed Addons
67+
const addManagedAddon = (id: string, addonName: string) => {
68+
new eks.CfnAddon(this, id, {
69+
addonName,
70+
clusterName: eksCluster.clusterName,
71+
});
72+
};
5973

60-
// Managed Addon: coredns
61-
const coreDns = new eks.CfnAddon(this, "addonCoreDns", {
62-
addonName: "coredns",
63-
clusterName: eksCluster.clusterName,
64-
});
65-
66-
// Managed Addon: vpc-cni
67-
const vpcCni = new eks.CfnAddon(this, "addonVpcCni", {
68-
addonName: "vpc-cni",
69-
clusterName: eksCluster.clusterName,
70-
});
74+
addManagedAddon("addonKubeProxy", "kube-proxy");
75+
addManagedAddon("addonCoreDns", "coredns");
76+
addManagedAddon("addonVpcCni", "vpc-cni");
77+
addManagedAddon("addonEksPodIdentityAgent", "eks-pod-identity-agent");
78+
addManagedAddon("addonMetricsServer", "metrics-server");
7179
}
7280
}
7381

typescript/eks/cluster/package.json

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -15,18 +15,18 @@
1515
},
1616
"license": "Apache-2.0",
1717
"devDependencies": {
18-
"@types/jest": "^29.5.12",
19-
"@types/node": "20.11.20",
20-
"aws-cdk": "^2.130.0",
18+
"@types/jest": "^29.5.14",
19+
"@types/node": "22.10.5",
20+
"aws-cdk": "^2.175.1",
2121
"jest": "^29.7.0",
22-
"ts-jest": "^29.1.2",
22+
"ts-jest": "^29.2.5",
2323
"ts-node": "^10.9.2",
24-
"typescript": "~5.3.3"
24+
"typescript": "~5.7.3"
2525
},
2626
"dependencies": {
27-
"@aws-cdk/lambda-layer-kubectl-v29": "^2.0.0",
28-
"aws-cdk-lib": "^2.130.0",
29-
"constructs": "^10.3.0",
27+
"@aws-cdk/lambda-layer-kubectl-v31": "^2.0.0",
28+
"aws-cdk-lib": "^2.175.1",
29+
"constructs": "^10.4.2",
3030
"source-map-support": "^0.5.21"
3131
}
3232
}

0 commit comments

Comments
 (0)