@@ -114,7 +114,8 @@ export interface ProviderProps {
114
114
readonly amiFamily ?: AMIFamily ;
115
115
116
116
/**
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.
118
119
*/
119
120
readonly tags ?: { [ key : string ] : string } ;
120
121
@@ -424,6 +425,14 @@ export class Karpenter extends Construct {
424
425
this . karpenterNodeRole . roleArn ,
425
426
] ,
426
427
} ) ,
428
+ new PolicyStatement ( {
429
+ actions : [
430
+ 'eks:DescribeCluster' ,
431
+ ] ,
432
+ resources : [
433
+ this . cluster . clusterArn ,
434
+ ] ,
435
+ } ) ,
427
436
] ,
428
437
} ) ;
429
438
@@ -472,7 +481,7 @@ export class Karpenter extends Construct {
472
481
this . karpenterHelmChart = new HelmChart ( this , 'KarpenterHelmChart' , {
473
482
chart : 'karpenter' ,
474
483
createNamespace : true ,
475
- version : 'v0.23.0 ' ,
484
+ version : 'v0.26.1 ' ,
476
485
cluster : this . cluster ,
477
486
namespace : 'karpenter' ,
478
487
release : 'karpenter' ,
@@ -485,10 +494,10 @@ export class Karpenter extends Construct {
485
494
'eks.amazonaws.com/role-arn' : this . karpenterControllerRole . roleArn ,
486
495
} ,
487
496
} ,
497
+ // see: https://karpenter.sh/v0.26.1/concepts/settings/
488
498
settings : {
489
499
aws : {
490
500
clusterName : this . cluster . clusterName ,
491
- clusterEndpoint : this . cluster . clusterEndpoint ,
492
501
interruptionQueueName : this . karpenterInterruptionQueue . queueName ,
493
502
// instanceProfile is created using L1 construct (CfnInstanceProfile), thus we're referencing ref directly
494
503
// TODO: revisit this when L2 InstanceProfile construct is released
@@ -512,8 +521,8 @@ export class Karpenter extends Construct {
512
521
throw new Error ( 'Parameters consolidation and ttlSecondsAfterEmpty are mutually exclusive.' ) ;
513
522
}
514
523
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/
517
526
const awsNodeTemplateId = `${ id } -awsNodeTemplate` . toLowerCase ( ) ;
518
527
const awsNodeTemplate = this . cluster . addManifest ( awsNodeTemplateId , {
519
528
apiVersion : 'karpenter.k8s.aws/v1alpha1' ,
@@ -522,43 +531,43 @@ export class Karpenter extends Construct {
522
531
name : awsNodeTemplateId ,
523
532
} ,
524
533
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
526
535
subnetSelector : {
527
536
[ `karpenter.sh/discovery/${ this . cluster . clusterName } ` ] : '*' ,
528
537
} ,
529
- // see: https://karpenter.sh/v0.23.0 /concepts/node-templates/#specsecuritygroupselector
538
+ // see: https://karpenter.sh/v0.26.1 /concepts/node-templates/#specsecuritygroupselector
530
539
securityGroupSelector : {
531
540
[ `kubernetes.io/cluster/${ this . cluster . clusterName } ` ] : 'owned' ,
532
541
} ,
533
- // see: https://karpenter.sh/v0.23.0 /concepts/node-templates/#specsecuritygroupselector
542
+ // see: https://karpenter.sh/v0.26.1 /concepts/node-templates/#specsecuritygroupselector
534
543
// instanceProfile is created using L1 construct (CfnInstanceProfile), thus we're referencing ref directly
535
544
// TODO: revisit this when L2 InstanceProfile construct is released
536
545
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
538
547
...( 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
540
549
...( 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
542
551
...( 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
544
553
...( 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
547
556
} ,
548
557
} ) ;
549
558
550
- // see: https://karpenter.sh/v0.23.0 /concepts/provisioners/#specrequirements
559
+ // see: https://karpenter.sh/v0.26.1 /concepts/provisioners/#specrequirements
551
560
const requirements = this . setRequirements ( provisionerSpecs ?. requirements ) ;
552
561
553
- // see: https://karpenter.sh/v0.23.0 /concepts/provisioners/
562
+ // see: https://karpenter.sh/v0.26.1 /concepts/provisioners/
554
563
const provisioner = this . cluster . addManifest ( id , {
555
564
apiVersion : 'karpenter.sh/v1alpha5' ,
556
565
kind : 'Provisioner' ,
557
566
metadata : {
558
567
name : id . toLowerCase ( ) ,
559
568
} ,
560
569
spec : {
561
- // see: https://karpenter.sh/v0.23.0 /concepts/provisioners/#speclimitsresources
570
+ // see: https://karpenter.sh/v0.26.1 /concepts/provisioners/#speclimitsresources
562
571
...( provisionerSpecs ?. limits && {
563
572
limits : {
564
573
resources : {
@@ -567,15 +576,15 @@ export class Karpenter extends Construct {
567
576
} ,
568
577
} ,
569
578
} ) ,
570
- // see: https://karpenter.sh/v0.23.0 /concepts/provisioners/#specconsolidation
579
+ // see: https://karpenter.sh/v0.26.1 /concepts/provisioners/#specconsolidation
571
580
...provisionerSpecs ?. consolidation && {
572
581
consolidation : {
573
582
enabled : provisionerSpecs ! . consolidation ,
574
583
} ,
575
584
} ,
576
585
...( provisionerSpecs ?. ttlSecondsAfterEmpty && { ttlSecondsAfterEmpty : provisionerSpecs ! . ttlSecondsAfterEmpty ! . toSeconds ( ) } ) ,
577
586
...( 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
579
588
requirements : [
580
589
...requirements ,
581
590
] ,
@@ -585,12 +594,10 @@ export class Karpenter extends Construct {
585
594
} ,
586
595
...( provisionerSpecs ?. taints && { taints : provisionerSpecs ! . taints ! } ) ,
587
596
...( 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
589
598
providerRef : {
590
599
name : awsNodeTemplateId ,
591
600
} ,
592
- // see: https://karpenter.sh/v0.23.0/concepts/provisioners/#specproviderref
593
-
594
601
} ,
595
602
} ) ;
596
603
0 commit comments