diff --git a/pkg/apis/kops/validation/legacy.go b/pkg/apis/kops/validation/legacy.go index 840afe839e98..33842d097f09 100644 --- a/pkg/apis/kops/validation/legacy.go +++ b/pkg/apis/kops/validation/legacy.go @@ -470,6 +470,16 @@ func ValidateCluster(c *kops.Cluster, strict bool) *field.Error { } } + if kubernetesRelease.GTE(semver.MustParse("1.10.0")) { + // Flag removed in 1.10 + if c.Spec.Kubelet.RequireKubeconfig != nil { + return field.Invalid( + kubeletPath.Child("requireKubeconfig"), + *c.Spec.Kubelet.RequireKubeconfig, + "require-kubeconfig flag was removed in 1.10. (Please be sure you are not using a cluster config from `kops get cluster --full`)") + } + } + if c.Spec.Kubelet.BootstrapKubeconfig != "" { if c.Spec.KubeAPIServer == nil { return field.Required(fieldSpec.Child("KubeAPIServer"), "bootstrap token require the NodeRestriction admissions controller") @@ -499,6 +509,16 @@ func ValidateCluster(c *kops.Cluster, strict bool) *field.Error { } } + if kubernetesRelease.GTE(semver.MustParse("1.10.0")) { + // Flag removed in 1.10 + if c.Spec.MasterKubelet.RequireKubeconfig != nil { + return field.Invalid( + masterKubeletPath.Child("requireKubeconfig"), + *c.Spec.MasterKubelet.RequireKubeconfig, + "require-kubeconfig flag was removed in 1.10. (Please be sure you are not using a cluster config from `kops get cluster --full`)") + } + } + if c.Spec.MasterKubelet.APIServers != "" && !isValidAPIServersURL(c.Spec.MasterKubelet.APIServers) { return field.Invalid(masterKubeletPath.Child("APIServers"), c.Spec.MasterKubelet.APIServers, "Not a valid APIServer URL") }