Skip to content

Commit d70fff1

Browse files
authored
Disallow overrideBootstrapCommand and preBootstrapCommands for MNG AL2023 (#7990)
disallow overrideBootstrapCommand and preBootstrapCommands for MNG AL2023
1 parent 27ba59a commit d70fff1

File tree

2 files changed

+50
-24
lines changed

2 files changed

+50
-24
lines changed

pkg/apis/eksctl.io/v1alpha5/validation.go

Lines changed: 16 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -687,6 +687,22 @@ func validateNodeGroupBase(np NodePool, path string, controlPlaneOnOutposts bool
687687
}
688688
}
689689

690+
if ng.AMIFamily == NodeImageFamilyAmazonLinux2023 {
691+
fieldNotSupported := func(field string) error {
692+
return &unsupportedFieldError{
693+
ng: ng,
694+
path: path,
695+
field: field,
696+
}
697+
}
698+
if ng.PreBootstrapCommands != nil {
699+
return fieldNotSupported("preBootstrapCommands")
700+
}
701+
if ng.OverrideBootstrapCommand != nil {
702+
return fieldNotSupported("overrideBootstrapCommand")
703+
}
704+
}
705+
690706
if ng.CapacityReservation != nil {
691707
if ng.CapacityReservation.CapacityReservationPreference != nil {
692708
if ng.CapacityReservation.CapacityReservationTarget != nil {
@@ -871,13 +887,6 @@ func ValidateNodeGroup(i int, ng *NodeGroup, cfg *ClusterConfig) error {
871887
if ng.KubeletExtraConfig != nil {
872888
return fieldNotSupported("kubeletExtraConfig")
873889
}
874-
} else if ng.AMIFamily == NodeImageFamilyAmazonLinux2023 {
875-
if ng.PreBootstrapCommands != nil {
876-
return fieldNotSupported("preBootstrapCommands")
877-
}
878-
if ng.OverrideBootstrapCommand != nil {
879-
return fieldNotSupported("overrideBootstrapCommand")
880-
}
881890
} else if ng.AMIFamily == NodeImageFamilyBottlerocket {
882891
if ng.KubeletExtraConfig != nil {
883892
return fieldNotSupported("kubeletExtraConfig")

pkg/apis/eksctl.io/v1alpha5/validation_test.go

Lines changed: 34 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -171,14 +171,6 @@ var _ = Describe("ClusterConfig validation", func() {
171171
errMsg := fmt.Sprintf("overrideBootstrapCommand is required when using a custom AMI based on %s", ng0.AMIFamily)
172172
Expect(api.ValidateNodeGroup(0, ng0, cfg)).To(MatchError(ContainSubstring(errMsg)))
173173
})
174-
It("should not require overrideBootstrapCommand if ami is set and type is AmazonLinux2023", func() {
175-
cfg := api.NewClusterConfig()
176-
ng0 := cfg.NewNodeGroup()
177-
ng0.Name = "node-group"
178-
ng0.AMI = "ami-1234"
179-
ng0.AMIFamily = api.NodeImageFamilyAmazonLinux2023
180-
Expect(api.ValidateNodeGroup(0, ng0, cfg)).To(Succeed())
181-
})
182174
It("should not require overrideBootstrapCommand if ami is set and type is Bottlerocket", func() {
183175
cfg := api.NewClusterConfig()
184176
ng0 := cfg.NewNodeGroup()
@@ -204,15 +196,6 @@ var _ = Describe("ClusterConfig validation", func() {
204196
ng0.OverrideBootstrapCommand = aws.String("echo 'yo'")
205197
Expect(api.ValidateNodeGroup(0, ng0, cfg)).To(Succeed())
206198
})
207-
It("should throw an error if overrideBootstrapCommand is set and type is AmazonLinux2023", func() {
208-
cfg := api.NewClusterConfig()
209-
ng0 := cfg.NewNodeGroup()
210-
ng0.Name = "node-group"
211-
ng0.AMI = "ami-1234"
212-
ng0.AMIFamily = api.NodeImageFamilyAmazonLinux2023
213-
ng0.OverrideBootstrapCommand = aws.String("echo 'yo'")
214-
Expect(api.ValidateNodeGroup(0, ng0, cfg)).To(MatchError(ContainSubstring(fmt.Sprintf("overrideBootstrapCommand is not supported for %s nodegroups", api.NodeImageFamilyAmazonLinux2023))))
215-
})
216199
It("should throw an error if overrideBootstrapCommand is set and type is Bottlerocket", func() {
217200
cfg := api.NewClusterConfig()
218201
ng0 := cfg.NewNodeGroup()
@@ -2104,6 +2087,40 @@ var _ = Describe("ClusterConfig validation", func() {
21042087
err := api.ValidateManagedNodeGroup(0, ng)
21052088
Expect(err).To(MatchError(ContainSubstring("eksctl does not support configuring maxPodsPerNode EKS-managed nodes")))
21062089
})
2090+
It("returns an error when setting preBootstrapCommands for self-managed nodegroups", func() {
2091+
cfg := api.NewClusterConfig()
2092+
ng := cfg.NewNodeGroup()
2093+
ng.Name = "node-group"
2094+
ng.AMI = "ami-1234"
2095+
ng.AMIFamily = api.NodeImageFamilyAmazonLinux2023
2096+
ng.PreBootstrapCommands = []string{"echo 'rubarb'"}
2097+
Expect(api.ValidateNodeGroup(0, ng, cfg)).To(MatchError(ContainSubstring(fmt.Sprintf("preBootstrapCommands is not supported for %s nodegroups", api.NodeImageFamilyAmazonLinux2023))))
2098+
})
2099+
It("returns an error when setting overrideBootstrapCommand for self-managed nodegroups", func() {
2100+
cfg := api.NewClusterConfig()
2101+
ng := cfg.NewNodeGroup()
2102+
ng.Name = "node-group"
2103+
ng.AMI = "ami-1234"
2104+
ng.AMIFamily = api.NodeImageFamilyAmazonLinux2023
2105+
ng.OverrideBootstrapCommand = aws.String("echo 'rubarb'")
2106+
Expect(api.ValidateNodeGroup(0, ng, cfg)).To(MatchError(ContainSubstring(fmt.Sprintf("overrideBootstrapCommand is not supported for %s nodegroups", api.NodeImageFamilyAmazonLinux2023))))
2107+
})
2108+
It("returns an error when setting preBootstrapCommands for EKS-managed nodegroups", func() {
2109+
ng := api.NewManagedNodeGroup()
2110+
ng.Name = "node-group"
2111+
ng.AMI = "ami-1234"
2112+
ng.AMIFamily = api.NodeImageFamilyAmazonLinux2023
2113+
ng.PreBootstrapCommands = []string{"echo 'rubarb'"}
2114+
Expect(api.ValidateManagedNodeGroup(0, ng)).To(MatchError(ContainSubstring(fmt.Sprintf("preBootstrapCommands is not supported for %s nodegroups", api.NodeImageFamilyAmazonLinux2023))))
2115+
})
2116+
It("returns an error when setting overrideBootstrapCommand for EKS-managed nodegroups", func() {
2117+
ng := api.NewManagedNodeGroup()
2118+
ng.Name = "node-group"
2119+
ng.AMI = "ami-1234"
2120+
ng.AMIFamily = api.NodeImageFamilyAmazonLinux2023
2121+
ng.OverrideBootstrapCommand = aws.String("echo 'rubarb'")
2122+
Expect(api.ValidateManagedNodeGroup(0, ng)).To(MatchError(ContainSubstring(fmt.Sprintf("overrideBootstrapCommand is not supported for %s nodegroups", api.NodeImageFamilyAmazonLinux2023))))
2123+
})
21072124
})
21082125

21092126
Describe("Windows node groups", func() {

0 commit comments

Comments
 (0)