Skip to content

Commit ccf5b29

Browse files
committedMar 6, 2023
chore: bump karpenter to 0.26.1
1 parent ce36230 commit ccf5b29

File tree

9 files changed

+476
-371
lines changed

9 files changed

+476
-371
lines changed
 

‎.projen/deps.json

+1-1
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

‎.projenrc.js

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
const { awscdk, TaskRuntime } = require('projen');
1+
const { awscdk } = require('projen');
22
const project = new awscdk.AwsCdkConstructLibrary({
33
name: 'cdk-karpenter',
44
description: 'Karpenter simplifies Kubernetes infrastructure with the right nodes at the right time.\
@@ -16,7 +16,7 @@ const project = new awscdk.AwsCdkConstructLibrary({
1616
},
1717
compat: true,
1818
stability: 'experimental',
19-
cdkVersion: '2.60.0',
19+
cdkVersion: '2.67.0',
2020
workflowNodeVersion: '^18.13.0',
2121
autoApproveOptions: {
2222
allowedUsernames: ['cdk-karpenter-automation'],

‎API.md

+4-1
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

‎README.md

+2-2
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ More info about Karpenter at: https://karpenter.sh
88

99
Karpenter Best Practices: https://aws.github.io/aws-eks-best-practices/karpenter/
1010

11-
Karpenter version: v0.23.0
11+
Karpenter version: v0.26.1
1212

1313
Notes:
1414
- Karpenter no longer supports Kubernetes v1.20, but now supports Kubernetes v1.25. This change is due to the v1 PDB API, which was introduced in K8s v1.20 and subsequent removal of the v1beta1 API in K8s v1.25.
@@ -43,7 +43,7 @@ const karpenter = new Karpenter(stack, 'karpenter', {
4343
// default provisioner
4444
karpenter.addProvisioner('default');
4545
//Note: Default provisioner has no cpu/mem limits, nor will cleanup provisioned resources. Use with caution.
46-
// see: https://karpenter.sh/v0.23.0/concepts/deprovisioning/
46+
// see: https://karpenter.sh/v0.26.1/concepts/deprovisioning/
4747

4848
// custom provisoner - kitchen sink
4949
karpenter.addProvisioner('custom', {

‎package.json

+11-11
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

‎src/karpenter.ts

+29-22
Original file line numberDiff line numberDiff line change
@@ -114,7 +114,8 @@ export interface ProviderProps {
114114
readonly amiFamily?: AMIFamily;
115115

116116
/**
117-
* Tags will be added to every EC2 instance launched by the provisioner.
117+
* Provisioner level tags. Tags will be added to every EC2 instance launched by the provisioner.
118+
* Provisioner level tags override global Karpenter tags.
118119
*/
119120
readonly tags?: {[key: string]: string};
120121

@@ -424,6 +425,14 @@ export class Karpenter extends Construct {
424425
this.karpenterNodeRole.roleArn,
425426
],
426427
}),
428+
new PolicyStatement({
429+
actions: [
430+
'eks:DescribeCluster',
431+
],
432+
resources: [
433+
this.cluster.clusterArn,
434+
],
435+
}),
427436
],
428437
});
429438

@@ -472,7 +481,7 @@ export class Karpenter extends Construct {
472481
this.karpenterHelmChart = new HelmChart(this, 'KarpenterHelmChart', {
473482
chart: 'karpenter',
474483
createNamespace: true,
475-
version: 'v0.23.0',
484+
version: 'v0.26.1',
476485
cluster: this.cluster,
477486
namespace: 'karpenter',
478487
release: 'karpenter',
@@ -485,10 +494,10 @@ export class Karpenter extends Construct {
485494
'eks.amazonaws.com/role-arn': this.karpenterControllerRole.roleArn,
486495
},
487496
},
497+
// see: https://karpenter.sh/v0.26.1/concepts/settings/
488498
settings: {
489499
aws: {
490500
clusterName: this.cluster.clusterName,
491-
clusterEndpoint: this.cluster.clusterEndpoint,
492501
interruptionQueueName: this.karpenterInterruptionQueue.queueName,
493502
// instanceProfile is created using L1 construct (CfnInstanceProfile), thus we're referencing ref directly
494503
// TODO: revisit this when L2 InstanceProfile construct is released
@@ -512,8 +521,8 @@ export class Karpenter extends Construct {
512521
throw new Error('Parameters consolidation and ttlSecondsAfterEmpty are mutually exclusive.');
513522
}
514523

515-
// see: https://karpenter.sh/v0.23.0/concepts/provisioners/
516-
// see: https://karpenter.sh/v0.23.0/concepts/node-templates/
524+
// see: https://karpenter.sh/v0.26.1/concepts/provisioners/
525+
// see: https://karpenter.sh/v0.26.1/concepts/node-templates/
517526
const awsNodeTemplateId = `${id}-awsNodeTemplate`.toLowerCase();
518527
const awsNodeTemplate = this.cluster.addManifest(awsNodeTemplateId, {
519528
apiVersion: 'karpenter.k8s.aws/v1alpha1',
@@ -522,43 +531,43 @@ export class Karpenter extends Construct {
522531
name: awsNodeTemplateId,
523532
},
524533
spec: {
525-
// see: https://karpenter.sh/v0.23.0/concepts/node-templates/#specsubnetselector
534+
// see: https://karpenter.sh/v0.26.1/concepts/node-templates/#specsubnetselector
526535
subnetSelector: {
527536
[`karpenter.sh/discovery/${this.cluster.clusterName}`]: '*',
528537
},
529-
// see: https://karpenter.sh/v0.23.0/concepts/node-templates/#specsecuritygroupselector
538+
// see: https://karpenter.sh/v0.26.1/concepts/node-templates/#specsecuritygroupselector
530539
securityGroupSelector: {
531540
[`kubernetes.io/cluster/${this.cluster.clusterName}`]: 'owned',
532541
},
533-
// see: https://karpenter.sh/v0.23.0/concepts/node-templates/#specsecuritygroupselector
542+
// see: https://karpenter.sh/v0.26.1/concepts/node-templates/#specsecuritygroupselector
534543
// instanceProfile is created using L1 construct (CfnInstanceProfile), thus we're referencing ref directly
535544
// TODO: revisit this when L2 InstanceProfile construct is released
536545
instanceProfile: this.instanceProfile.ref,
537-
// see: https://karpenter.sh/v0.23.0/concepts/node-templates/#specamifamily
546+
// see: https://karpenter.sh/v0.26.1/concepts/node-templates/#specamifamily
538547
...(provisionerSpecs?.provider?.amiFamily && { amiFamily: provisionerSpecs!.provider!.amiFamily! }),
539-
// see https://karpenter.sh/v0.23.0/concepts/node-templates/#specamiselector
548+
// see https://karpenter.sh/v0.26.1/concepts/node-templates/#specamiselector
540549
...(provisionerSpecs?.provider?.amiSelector && { amiSelector: { ...provisionerSpecs!.provider!.amiSelector! } }),
541-
// see: https://karpenter.sh/v0.23.0/aws/provisioning/#tags
550+
// see: https://karpenter.sh/v0.26.1/concepts/node-templates/#spectags
542551
...(provisionerSpecs?.provider?.tags && { tags: { ...provisionerSpecs!.provider!.tags! } }),
543-
// see: https://karpenter.sh/v0.23.0/aws/provisioning/#block-device-mappings
552+
// see: https://karpenter.sh/v0.26.1/concepts/node-templates/#specblockdevicemappings
544553
...(provisionerSpecs?.provider?.blockDeviceMappings && { blockDeviceMappings: provisionerSpecs!.provider!.blockDeviceMappings! }),
545-
// TODO: add userData https://karpenter.sh/v0.23.0/aws/provisioning/#userdata
546-
// TODO: add metadataOptions https://karpenter.sh/v0.23.0/aws/provisioning/#metadata-options
554+
// TODO: add userData https://karpenter.sh/v0.26.1/concepts/node-templates/#specuserdata
555+
// TODO: add metadataOptions https://karpenter.sh/v0.26.1/concepts/node-templates/#specmetadataoptions
547556
},
548557
});
549558

550-
// see: https://karpenter.sh/v0.23.0/concepts/provisioners/#specrequirements
559+
// see: https://karpenter.sh/v0.26.1/concepts/provisioners/#specrequirements
551560
const requirements = this.setRequirements(provisionerSpecs?.requirements);
552561

553-
// see: https://karpenter.sh/v0.23.0/concepts/provisioners/
562+
// see: https://karpenter.sh/v0.26.1/concepts/provisioners/
554563
const provisioner = this.cluster.addManifest(id, {
555564
apiVersion: 'karpenter.sh/v1alpha5',
556565
kind: 'Provisioner',
557566
metadata: {
558567
name: id.toLowerCase(),
559568
},
560569
spec: {
561-
// see: https://karpenter.sh/v0.23.0/concepts/provisioners/#speclimitsresources
570+
// see: https://karpenter.sh/v0.26.1/concepts/provisioners/#speclimitsresources
562571
...(provisionerSpecs?.limits && {
563572
limits: {
564573
resources: {
@@ -567,15 +576,15 @@ export class Karpenter extends Construct {
567576
},
568577
},
569578
}),
570-
// see: https://karpenter.sh/v0.23.0/concepts/provisioners/#specconsolidation
579+
// see: https://karpenter.sh/v0.26.1/concepts/provisioners/#specconsolidation
571580
...provisionerSpecs?.consolidation && {
572581
consolidation: {
573582
enabled: provisionerSpecs!.consolidation,
574583
},
575584
},
576585
...(provisionerSpecs?.ttlSecondsAfterEmpty && { ttlSecondsAfterEmpty: provisionerSpecs!.ttlSecondsAfterEmpty!.toSeconds() }),
577586
...(provisionerSpecs?.ttlSecondsUntilExpired && { ttlSecondsUntilExpired: provisionerSpecs!.ttlSecondsUntilExpired!.toSeconds() }),
578-
// see: https://karpenter.sh/v0.23.0/provisioner/#specrequirements
587+
// see: https://karpenter.sh/v0.26.1/concepts/provisioners/#specrequirements
579588
requirements: [
580589
...requirements,
581590
],
@@ -585,12 +594,10 @@ export class Karpenter extends Construct {
585594
},
586595
...(provisionerSpecs?.taints && { taints: provisionerSpecs!.taints! }),
587596
...(provisionerSpecs?.startupTaints && { startupTaints: provisionerSpecs!.startupTaints! }),
588-
// see: https://karpenter.sh/v0.23.0/concepts/provisioners/#specproviderref
597+
// see: https://karpenter.sh/v0.26.1/concepts/provisioners/#specproviderref
589598
providerRef: {
590599
name: awsNodeTemplateId,
591600
},
592-
// see: https://karpenter.sh/v0.23.0/concepts/provisioners/#specproviderref
593-
594601
},
595602
});
596603

‎test/__snapshots__/snapshot.test.ts.snap

+13-10
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

‎test/karpenter.test.ts

+10
Original file line numberDiff line numberDiff line change
@@ -120,6 +120,16 @@ test('has karpenter controller policy', () => {
120120
],
121121
},
122122
},
123+
{
124+
Action: 'eks:DescribeCluster',
125+
Effect: 'Allow',
126+
Resource: {
127+
'Fn::GetAtt': [
128+
'Cluster9EE0221C',
129+
'Arn',
130+
],
131+
},
132+
},
123133
],
124134
Version: '2012-10-17',
125135
},

‎yarn.lock

+404-322
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)
Please sign in to comment.