diff --git a/pkg/types/validation/installconfig.go b/pkg/types/validation/installconfig.go index 665e553f286..253e0d7d915 100644 --- a/pkg/types/validation/installconfig.go +++ b/pkg/types/validation/installconfig.go @@ -214,6 +214,10 @@ func ValidateInstallConfig(c *types.InstallConfig, usingAgentMethod bool) field. allErrs = append(allErrs, field.Invalid(field.NewPath("additionalEnabledCapabilities"), c.Capabilities.AdditionalEnabledCapabilities, "platform baremetal requires the baremetal capability")) } + if !enabledCaps.Has(configv1.ClusterVersionCapabilityIngress) { + allErrs = append(allErrs, field.Invalid(field.NewPath("additionalEnabledCapabilities"), c.Capabilities.AdditionalEnabledCapabilities, + "the Ingress capability is required")) + } } if !enabledCaps.Has(configv1.ClusterVersionCapabilityCloudCredential) { diff --git a/pkg/types/validation/installconfig_test.go b/pkg/types/validation/installconfig_test.go index debef63e71c..ff825d14bf4 100644 --- a/pkg/types/validation/installconfig_test.go +++ b/pkg/types/validation/installconfig_test.go @@ -2262,7 +2262,7 @@ func TestValidateInstallConfig(t *testing.T) { c.Capabilities = &types.Capabilities{ BaselineCapabilitySet: configv1.ClusterVersionCapabilitySetNone, } - c.Capabilities.AdditionalEnabledCapabilities = append(c.Capabilities.AdditionalEnabledCapabilities, configv1.ClusterVersionCapabilityCloudCredential, configv1.ClusterVersionCapabilityCloudControllerManager) + c.Capabilities.AdditionalEnabledCapabilities = append(c.Capabilities.AdditionalEnabledCapabilities, configv1.ClusterVersionCapabilityCloudCredential, configv1.ClusterVersionCapabilityCloudControllerManager, configv1.ClusterVersionCapabilityIngress) return c }(), }, @@ -2272,7 +2272,7 @@ func TestValidateInstallConfig(t *testing.T) { c := validInstallConfig() c.Capabilities = &types.Capabilities{ BaselineCapabilitySet: configv1.ClusterVersionCapabilitySetNone, - AdditionalEnabledCapabilities: []configv1.ClusterVersionCapability{configv1.ClusterVersionCapabilityBaremetal, configv1.ClusterVersionCapabilityMachineAPI, configv1.ClusterVersionCapabilityCloudCredential, configv1.ClusterVersionCapabilityCloudControllerManager}, + AdditionalEnabledCapabilities: []configv1.ClusterVersionCapability{configv1.ClusterVersionCapabilityBaremetal, configv1.ClusterVersionCapabilityMachineAPI, configv1.ClusterVersionCapabilityCloudCredential, configv1.ClusterVersionCapabilityCloudControllerManager, configv1.ClusterVersionCapabilityIngress}, } return c }(), @@ -2283,7 +2283,7 @@ func TestValidateInstallConfig(t *testing.T) { c := validInstallConfig() c.Capabilities = &types.Capabilities{ BaselineCapabilitySet: configv1.ClusterVersionCapabilitySetNone, - AdditionalEnabledCapabilities: []configv1.ClusterVersionCapability{configv1.ClusterVersionCapabilityMachineAPI, configv1.ClusterVersionCapabilityCloudCredential, configv1.ClusterVersionCapabilityCloudControllerManager}, + AdditionalEnabledCapabilities: []configv1.ClusterVersionCapability{configv1.ClusterVersionCapabilityMachineAPI, configv1.ClusterVersionCapabilityCloudCredential, configv1.ClusterVersionCapabilityCloudControllerManager, configv1.ClusterVersionCapabilityIngress}, } return c }(), @@ -2342,7 +2342,7 @@ func TestValidateInstallConfig(t *testing.T) { c.AWS = nil c.Capabilities = &types.Capabilities{ BaselineCapabilitySet: configv1.ClusterVersionCapabilitySetNone, - AdditionalEnabledCapabilities: []configv1.ClusterVersionCapability{configv1.ClusterVersionCapabilityBaremetal, configv1.ClusterVersionCapabilityMachineAPI}, + AdditionalEnabledCapabilities: []configv1.ClusterVersionCapability{configv1.ClusterVersionCapabilityBaremetal, configv1.ClusterVersionCapabilityMachineAPI, configv1.ClusterVersionCapabilityIngress}, } return c }(), @@ -2365,7 +2365,8 @@ func TestValidateInstallConfig(t *testing.T) { c.Platform.AWS = nil c.Platform.None = &none.Platform{} c.Capabilities = &types.Capabilities{ - BaselineCapabilitySet: configv1.ClusterVersionCapabilitySetNone, + BaselineCapabilitySet: configv1.ClusterVersionCapabilitySetNone, + AdditionalEnabledCapabilities: []configv1.ClusterVersionCapability{configv1.ClusterVersionCapabilityIngress}, } return c }(), @@ -2378,7 +2379,7 @@ func TestValidateInstallConfig(t *testing.T) { c.Platform.BareMetal = validBareMetalPlatform() c.Capabilities = &types.Capabilities{ BaselineCapabilitySet: configv1.ClusterVersionCapabilitySetNone, - AdditionalEnabledCapabilities: []configv1.ClusterVersionCapability{configv1.ClusterVersionCapabilityBaremetal, configv1.ClusterVersionCapabilityMachineAPI}, + AdditionalEnabledCapabilities: []configv1.ClusterVersionCapability{configv1.ClusterVersionCapabilityBaremetal, configv1.ClusterVersionCapabilityMachineAPI, configv1.ClusterVersionCapabilityIngress}, } return c }(), @@ -2391,7 +2392,7 @@ func TestValidateInstallConfig(t *testing.T) { c.Platform.External = &external.Platform{} c.Capabilities = &types.Capabilities{ BaselineCapabilitySet: configv1.ClusterVersionCapabilitySetNone, - AdditionalEnabledCapabilities: []configv1.ClusterVersionCapability{configv1.ClusterVersionCapabilityCloudCredential}, + AdditionalEnabledCapabilities: []configv1.ClusterVersionCapability{configv1.ClusterVersionCapabilityCloudCredential, configv1.ClusterVersionCapabilityIngress}, } return c }(), @@ -2406,7 +2407,7 @@ func TestValidateInstallConfig(t *testing.T) { } c.Capabilities = &types.Capabilities{ BaselineCapabilitySet: configv1.ClusterVersionCapabilitySetNone, - AdditionalEnabledCapabilities: []configv1.ClusterVersionCapability{configv1.ClusterVersionCapabilityCloudCredential}, + AdditionalEnabledCapabilities: []configv1.ClusterVersionCapability{configv1.ClusterVersionCapabilityCloudCredential, configv1.ClusterVersionCapabilityIngress}, } return c }(), @@ -2427,6 +2428,17 @@ func TestValidateInstallConfig(t *testing.T) { }(), expectedError: "disabling CloudControllerManager on External platform supported only with cloudControllerManager value none", }, + { + name: "Ingress can't be disabled", + installConfig: func() *types.InstallConfig { + c := validInstallConfig() + c.Capabilities = &types.Capabilities{ + BaselineCapabilitySet: configv1.ClusterVersionCapabilitySetNone, + } + return c + }(), + expectedError: "the Ingress capability is required", + }, } for _, tc := range cases { t.Run(tc.name, func(t *testing.T) {