mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-08-04 01:40:07 +00:00
Merge pull request #63673 from chuckha/remove-extra-args-check
Automatic merge from submit-queue (batch tested with PRs 63673, 63712). If you want to cherry-pick this change to another branch, please follow the instructions <a href="https://github.com/kubernetes/community/blob/master/contributors/devel/cherry-picks.md">here</a>. Remove ExtraArgs kubeadm preflight check This check pulled in a number of dependencies that bloated the dep graph. The feature itself was not worth an extra 500 dependencies so we decided to remove the feature. Closes kubernetes/kubeadm#497 Signed-off-by: Chuck Ha <ha.chuck@gmail.com> **What this PR does / why we need it**: This PR removes a check that was pulling in a lot of external dependencies. We decided the check was not worth the extra dependencies. **Special notes for your reviewer**: We might want to keep the first part of the check and only delete the second part, but it was easier to delete the whole thing. **Release note**: ```release-note Removes a preflight check for kubeadm that validated custom kube-apiserver, kube-controller-manager and kube-scheduler arguments. ```
This commit is contained in:
commit
6f182a1ccc
@ -49,9 +49,6 @@ go_library(
|
|||||||
}),
|
}),
|
||||||
importpath = "k8s.io/kubernetes/cmd/kubeadm/app/preflight",
|
importpath = "k8s.io/kubernetes/cmd/kubeadm/app/preflight",
|
||||||
deps = [
|
deps = [
|
||||||
"//cmd/kube-apiserver/app/options:go_default_library",
|
|
||||||
"//cmd/kube-controller-manager/app/options:go_default_library",
|
|
||||||
"//cmd/kube-scheduler/app:go_default_library",
|
|
||||||
"//cmd/kubeadm/app/apis/kubeadm:go_default_library",
|
"//cmd/kubeadm/app/apis/kubeadm:go_default_library",
|
||||||
"//cmd/kubeadm/app/apis/kubeadm/v1alpha1:go_default_library",
|
"//cmd/kubeadm/app/apis/kubeadm/v1alpha1:go_default_library",
|
||||||
"//cmd/kubeadm/app/constants:go_default_library",
|
"//cmd/kubeadm/app/constants:go_default_library",
|
||||||
@ -65,7 +62,6 @@ go_library(
|
|||||||
"//vendor/github.com/PuerkitoBio/purell:go_default_library",
|
"//vendor/github.com/PuerkitoBio/purell:go_default_library",
|
||||||
"//vendor/github.com/blang/semver:go_default_library",
|
"//vendor/github.com/blang/semver:go_default_library",
|
||||||
"//vendor/github.com/golang/glog:go_default_library",
|
"//vendor/github.com/golang/glog:go_default_library",
|
||||||
"//vendor/github.com/spf13/pflag:go_default_library",
|
|
||||||
"//vendor/k8s.io/apimachinery/pkg/util/net:go_default_library",
|
"//vendor/k8s.io/apimachinery/pkg/util/net:go_default_library",
|
||||||
"//vendor/k8s.io/apimachinery/pkg/util/sets:go_default_library",
|
"//vendor/k8s.io/apimachinery/pkg/util/sets:go_default_library",
|
||||||
"//vendor/k8s.io/utils/exec:go_default_library",
|
"//vendor/k8s.io/utils/exec:go_default_library",
|
||||||
|
@ -38,15 +38,11 @@ import (
|
|||||||
"github.com/PuerkitoBio/purell"
|
"github.com/PuerkitoBio/purell"
|
||||||
"github.com/blang/semver"
|
"github.com/blang/semver"
|
||||||
"github.com/golang/glog"
|
"github.com/golang/glog"
|
||||||
"github.com/spf13/pflag"
|
|
||||||
|
|
||||||
"net/url"
|
"net/url"
|
||||||
|
|
||||||
netutil "k8s.io/apimachinery/pkg/util/net"
|
netutil "k8s.io/apimachinery/pkg/util/net"
|
||||||
"k8s.io/apimachinery/pkg/util/sets"
|
"k8s.io/apimachinery/pkg/util/sets"
|
||||||
apiservoptions "k8s.io/kubernetes/cmd/kube-apiserver/app/options"
|
|
||||||
cmoptions "k8s.io/kubernetes/cmd/kube-controller-manager/app/options"
|
|
||||||
schedulerapp "k8s.io/kubernetes/cmd/kube-scheduler/app"
|
|
||||||
kubeadmapi "k8s.io/kubernetes/cmd/kubeadm/app/apis/kubeadm"
|
kubeadmapi "k8s.io/kubernetes/cmd/kubeadm/app/apis/kubeadm"
|
||||||
kubeadmdefaults "k8s.io/kubernetes/cmd/kubeadm/app/apis/kubeadm/v1alpha1"
|
kubeadmdefaults "k8s.io/kubernetes/cmd/kubeadm/app/apis/kubeadm/v1alpha1"
|
||||||
kubeadmconstants "k8s.io/kubernetes/cmd/kubeadm/app/constants"
|
kubeadmconstants "k8s.io/kubernetes/cmd/kubeadm/app/constants"
|
||||||
@ -509,56 +505,6 @@ func (subnet HTTPProxyCIDRCheck) Check() (warnings, errors []error) {
|
|||||||
return nil, nil
|
return nil, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// ExtraArgsCheck checks if arguments are valid.
|
|
||||||
type ExtraArgsCheck struct {
|
|
||||||
APIServerExtraArgs map[string]string
|
|
||||||
ControllerManagerExtraArgs map[string]string
|
|
||||||
SchedulerExtraArgs map[string]string
|
|
||||||
}
|
|
||||||
|
|
||||||
// Name will return ExtraArgs as name for ExtraArgsCheck
|
|
||||||
func (ExtraArgsCheck) Name() string {
|
|
||||||
return "ExtraArgs"
|
|
||||||
}
|
|
||||||
|
|
||||||
// Check validates additional arguments of the control plane components.
|
|
||||||
func (eac ExtraArgsCheck) Check() (warnings, errors []error) {
|
|
||||||
glog.V(1).Infoln("validating additional arguments of the control plane components")
|
|
||||||
argsCheck := func(name string, args map[string]string, f *pflag.FlagSet) []error {
|
|
||||||
errs := []error{}
|
|
||||||
for k, v := range args {
|
|
||||||
if err := f.Set(k, v); err != nil {
|
|
||||||
errs = append(errs, fmt.Errorf("%s: failed to parse extra argument --%s=%s", name, k, v))
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return errs
|
|
||||||
}
|
|
||||||
|
|
||||||
warnings = []error{}
|
|
||||||
if len(eac.APIServerExtraArgs) > 0 {
|
|
||||||
flags := pflag.NewFlagSet("", pflag.ContinueOnError)
|
|
||||||
s := apiservoptions.NewServerRunOptions()
|
|
||||||
s.AddFlags(flags)
|
|
||||||
warnings = append(warnings, argsCheck("kube-apiserver", eac.APIServerExtraArgs, flags)...)
|
|
||||||
}
|
|
||||||
if len(eac.ControllerManagerExtraArgs) > 0 {
|
|
||||||
flags := pflag.NewFlagSet("", pflag.ContinueOnError)
|
|
||||||
s := cmoptions.NewKubeControllerManagerOptions()
|
|
||||||
s.AddFlags(flags, []string{}, []string{})
|
|
||||||
warnings = append(warnings, argsCheck("kube-controller-manager", eac.ControllerManagerExtraArgs, flags)...)
|
|
||||||
}
|
|
||||||
if len(eac.SchedulerExtraArgs) > 0 {
|
|
||||||
opts, err := schedulerapp.NewOptions()
|
|
||||||
if err != nil {
|
|
||||||
warnings = append(warnings, err)
|
|
||||||
}
|
|
||||||
flags := pflag.NewFlagSet("", pflag.ContinueOnError)
|
|
||||||
opts.AddFlags(flags)
|
|
||||||
warnings = append(warnings, argsCheck("kube-scheduler", eac.SchedulerExtraArgs, flags)...)
|
|
||||||
}
|
|
||||||
return warnings, nil
|
|
||||||
}
|
|
||||||
|
|
||||||
// SystemVerificationCheck defines struct used for for running the system verification node check in test/e2e_node/system
|
// SystemVerificationCheck defines struct used for for running the system verification node check in test/e2e_node/system
|
||||||
type SystemVerificationCheck struct {
|
type SystemVerificationCheck struct {
|
||||||
CRISocket string
|
CRISocket string
|
||||||
@ -885,11 +831,6 @@ func RunInitMasterChecks(execer utilsexec.Interface, cfg *kubeadmapi.MasterConfi
|
|||||||
FileAvailableCheck{Path: kubeadmconstants.GetStaticPodFilepath(kubeadmconstants.KubeControllerManager, manifestsDir)},
|
FileAvailableCheck{Path: kubeadmconstants.GetStaticPodFilepath(kubeadmconstants.KubeControllerManager, manifestsDir)},
|
||||||
FileAvailableCheck{Path: kubeadmconstants.GetStaticPodFilepath(kubeadmconstants.KubeScheduler, manifestsDir)},
|
FileAvailableCheck{Path: kubeadmconstants.GetStaticPodFilepath(kubeadmconstants.KubeScheduler, manifestsDir)},
|
||||||
FileAvailableCheck{Path: kubeadmconstants.GetStaticPodFilepath(kubeadmconstants.Etcd, manifestsDir)},
|
FileAvailableCheck{Path: kubeadmconstants.GetStaticPodFilepath(kubeadmconstants.Etcd, manifestsDir)},
|
||||||
ExtraArgsCheck{
|
|
||||||
APIServerExtraArgs: cfg.APIServerExtraArgs,
|
|
||||||
ControllerManagerExtraArgs: cfg.ControllerManagerExtraArgs,
|
|
||||||
SchedulerExtraArgs: cfg.SchedulerExtraArgs,
|
|
||||||
},
|
|
||||||
HTTPProxyCheck{Proto: "https", Host: cfg.API.AdvertiseAddress},
|
HTTPProxyCheck{Proto: "https", Host: cfg.API.AdvertiseAddress},
|
||||||
HTTPProxyCIDRCheck{Proto: "https", CIDR: cfg.Networking.ServiceSubnet},
|
HTTPProxyCIDRCheck{Proto: "https", CIDR: cfg.Networking.ServiceSubnet},
|
||||||
HTTPProxyCIDRCheck{Proto: "https", CIDR: cfg.Networking.PodSubnet},
|
HTTPProxyCIDRCheck{Proto: "https", CIDR: cfg.Networking.PodSubnet},
|
||||||
|
@ -288,17 +288,6 @@ func TestRunChecks(t *testing.T) {
|
|||||||
{[]Checker{FileContentCheck{Path: "/", Content: []byte("does not exist")}}, false, ""},
|
{[]Checker{FileContentCheck{Path: "/", Content: []byte("does not exist")}}, false, ""},
|
||||||
{[]Checker{InPathCheck{executable: "foobarbaz", exec: exec.New()}}, true, "\t[WARNING FileExisting-foobarbaz]: foobarbaz not found in system path\n"},
|
{[]Checker{InPathCheck{executable: "foobarbaz", exec: exec.New()}}, true, "\t[WARNING FileExisting-foobarbaz]: foobarbaz not found in system path\n"},
|
||||||
{[]Checker{InPathCheck{executable: "foobarbaz", mandatory: true, exec: exec.New()}}, false, ""},
|
{[]Checker{InPathCheck{executable: "foobarbaz", mandatory: true, exec: exec.New()}}, false, ""},
|
||||||
{[]Checker{ExtraArgsCheck{
|
|
||||||
APIServerExtraArgs: map[string]string{"secure-port": "1234"},
|
|
||||||
ControllerManagerExtraArgs: map[string]string{"use-service-account-credentials": "true"},
|
|
||||||
SchedulerExtraArgs: map[string]string{"leader-elect": "true"},
|
|
||||||
}}, true, ""},
|
|
||||||
{[]Checker{ExtraArgsCheck{
|
|
||||||
APIServerExtraArgs: map[string]string{"secure-port": "foo"},
|
|
||||||
}}, true, "\t[WARNING ExtraArgs]: kube-apiserver: failed to parse extra argument --secure-port=foo\n"},
|
|
||||||
{[]Checker{ExtraArgsCheck{
|
|
||||||
APIServerExtraArgs: map[string]string{"invalid-argument": "foo"},
|
|
||||||
}}, true, "\t[WARNING ExtraArgs]: kube-apiserver: failed to parse extra argument --invalid-argument=foo\n"},
|
|
||||||
{[]Checker{InPathCheck{executable: "foobar", mandatory: false, exec: exec.New(), suggestion: "install foobar"}}, true, "\t[WARNING FileExisting-foobar]: foobar not found in system path\nSuggestion: install foobar\n"},
|
{[]Checker{InPathCheck{executable: "foobar", mandatory: false, exec: exec.New(), suggestion: "install foobar"}}, true, "\t[WARNING FileExisting-foobar]: foobar not found in system path\nSuggestion: install foobar\n"},
|
||||||
}
|
}
|
||||||
for _, rt := range tokenTest {
|
for _, rt := range tokenTest {
|
||||||
|
Loading…
Reference in New Issue
Block a user