@@ -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
0 commit comments