mirror of https://github.com/kubernetes/kops.git
Allow KubeAPIServer.CloudProvider to be unset
This commit is contained in:
parent
1f6ea4fc75
commit
4e5563edda
|
@ -21,6 +21,7 @@ import (
|
||||||
"net"
|
"net"
|
||||||
"strings"
|
"strings"
|
||||||
|
|
||||||
|
"github.com/blang/semver/v4"
|
||||||
"k8s.io/apimachinery/pkg/util/validation/field"
|
"k8s.io/apimachinery/pkg/util/validation/field"
|
||||||
"k8s.io/kops/pkg/apis/kops"
|
"k8s.io/kops/pkg/apis/kops"
|
||||||
"k8s.io/kops/pkg/apis/kops/util"
|
"k8s.io/kops/pkg/apis/kops/util"
|
||||||
|
@ -40,13 +41,18 @@ func ValidateCluster(c *kops.Cluster, strict bool, vfsContext *vfs.VFSContext) f
|
||||||
// KubernetesVersion
|
// KubernetesVersion
|
||||||
// This is one case we return the error because a large part of the rest of the validation logic depends on a valid kubernetes version.
|
// This is one case we return the error because a large part of the rest of the validation logic depends on a valid kubernetes version.
|
||||||
|
|
||||||
|
var k8sVersion *semver.Version
|
||||||
|
var err error
|
||||||
if c.Spec.KubernetesVersion == "" {
|
if c.Spec.KubernetesVersion == "" {
|
||||||
allErrs = append(allErrs, field.Required(fieldSpec.Child("kubernetesVersion"), ""))
|
allErrs = append(allErrs, field.Required(fieldSpec.Child("kubernetesVersion"), ""))
|
||||||
return allErrs
|
return allErrs
|
||||||
} else if _, err := util.ParseKubernetesVersion(c.Spec.KubernetesVersion); err != nil {
|
} else {
|
||||||
|
k8sVersion, err = util.ParseKubernetesVersion(c.Spec.KubernetesVersion)
|
||||||
|
if err != nil {
|
||||||
allErrs = append(allErrs, field.Invalid(fieldSpec.Child("kubernetesVersion"), c.Spec.KubernetesVersion, "unable to determine kubernetes version"))
|
allErrs = append(allErrs, field.Invalid(fieldSpec.Child("kubernetesVersion"), c.Spec.KubernetesVersion, "unable to determine kubernetes version"))
|
||||||
return allErrs
|
return allErrs
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if strict && c.Spec.Kubelet == nil {
|
if strict && c.Spec.Kubelet == nil {
|
||||||
allErrs = append(allErrs, field.Required(fieldSpec.Child("kubelet"), "kubelet not configured"))
|
allErrs = append(allErrs, field.Required(fieldSpec.Child("kubelet"), "kubelet not configured"))
|
||||||
|
@ -72,7 +78,6 @@ func ValidateCluster(c *kops.Cluster, strict bool, vfsContext *vfs.VFSContext) f
|
||||||
|
|
||||||
var nonMasqueradeCIDR *net.IPNet
|
var nonMasqueradeCIDR *net.IPNet
|
||||||
var serviceClusterIPRange *net.IPNet
|
var serviceClusterIPRange *net.IPNet
|
||||||
var err error
|
|
||||||
|
|
||||||
if c.Spec.Networking.NonMasqueradeCIDR != "" {
|
if c.Spec.Networking.NonMasqueradeCIDR != "" {
|
||||||
_, nonMasqueradeCIDR, _ = net.ParseCIDR(c.Spec.Networking.NonMasqueradeCIDR)
|
_, nonMasqueradeCIDR, _ = net.ParseCIDR(c.Spec.Networking.NonMasqueradeCIDR)
|
||||||
|
@ -182,10 +187,12 @@ func ValidateCluster(c *kops.Cluster, strict bool, vfsContext *vfs.VFSContext) f
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if c.Spec.KubeAPIServer != nil && (strict || c.Spec.KubeAPIServer.CloudProvider != "") {
|
if c.Spec.KubeAPIServer != nil && (strict || c.Spec.KubeAPIServer.CloudProvider != "") {
|
||||||
|
if k8sVersion != nil && k8sVersion.LT(semver.MustParse("1.33.0")) {
|
||||||
if c.Spec.KubeAPIServer.CloudProvider != "external" && k8sCloudProvider != c.Spec.KubeAPIServer.CloudProvider {
|
if c.Spec.KubeAPIServer.CloudProvider != "external" && k8sCloudProvider != c.Spec.KubeAPIServer.CloudProvider {
|
||||||
allErrs = append(allErrs, field.Forbidden(fieldSpec.Child("kubeAPIServer", "cloudProvider"), "Did not match cluster cloudProvider"))
|
allErrs = append(allErrs, field.Forbidden(fieldSpec.Child("kubeAPIServer", "cloudProvider"), "Did not match cluster cloudProvider"))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
if c.Spec.KubeControllerManager != nil && (strict || c.Spec.KubeControllerManager.CloudProvider != "") {
|
if c.Spec.KubeControllerManager != nil && (strict || c.Spec.KubeControllerManager.CloudProvider != "") {
|
||||||
if c.Spec.KubeControllerManager.CloudProvider != "external" && k8sCloudProvider != c.Spec.KubeControllerManager.CloudProvider {
|
if c.Spec.KubeControllerManager.CloudProvider != "external" && k8sCloudProvider != c.Spec.KubeControllerManager.CloudProvider {
|
||||||
allErrs = append(allErrs, field.Forbidden(fieldSpec.Child("kubeControllerManager", "cloudProvider"), "Did not match cluster cloudProvider"))
|
allErrs = append(allErrs, field.Forbidden(fieldSpec.Child("kubeControllerManager", "cloudProvider"), "Did not match cluster cloudProvider"))
|
||||||
|
|
Loading…
Reference in New Issue