mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-07-23 19:56:01 +00:00
Merge pull request #41710 from luxas/kubeadm_remove_cloudprovider_arg
Automatic merge from submit-queue (batch tested with PRs 41540, 41808, 41710, 41838, 41840) kubeadm: Remove the --cloud-provider flag for beta init UX **What this PR does / why we need it**: We decided the `--cloud-provider` flag promises way too much compared to what it really does. There is a lot you have to do as an user in order to make the current cloud provider integrations to work. And since we're promising to support the `kubeadm init` UX on a beta level in v1.6, we can't have this flag in the UX. A lot is gonna change here... see proposal: https://github.com/kubernetes/community/pull/128 Once we find a cloudprovider solution we can support (probably using the new flow), we'll just add it. For now, we'll just document how to do cloudprovider integrations by hand instead. **Which issue this PR fixes** *(optional, in `fixes #<issue number>(, fixes #<issue_number>, ...)` format, will close that issue when PR gets merged)*: fixes # **Special notes for your reviewer**: **Release note**: ```release-note kubeadm: Remove the --cloud-provider flag for beta init UX ``` @jbeda @dmmcquay @mikedanese @roberthbailey @pires @errordeveloper
This commit is contained in:
commit
d81ba2c66f
@ -25,10 +25,26 @@ import (
|
||||
"k8s.io/kubernetes/pkg/registry/core/service/ipallocator"
|
||||
)
|
||||
|
||||
// TODO: Break out the cloudprovider functionality out of core and only support the new flow
|
||||
// described in https://github.com/kubernetes/community/pull/128
|
||||
var cloudproviders = []string{
|
||||
"aws",
|
||||
"azure",
|
||||
"cloudstack",
|
||||
"gce",
|
||||
"mesos",
|
||||
"openstack",
|
||||
"ovirt",
|
||||
"photon",
|
||||
"rackspace",
|
||||
"vsphere",
|
||||
}
|
||||
|
||||
func ValidateMasterConfiguration(c *kubeadm.MasterConfiguration) field.ErrorList {
|
||||
allErrs := field.ErrorList{}
|
||||
allErrs = append(allErrs, ValidateDiscovery(&c.Discovery, field.NewPath("discovery"))...)
|
||||
allErrs = append(allErrs, ValidateDiscovery(&c.Discovery, field.NewPath("service subnet"))...)
|
||||
allErrs = append(allErrs, ValidateCloudProvider(c.CloudProvider, field.NewPath("cloudprovider"))...)
|
||||
return allErrs
|
||||
}
|
||||
|
||||
@ -91,3 +107,15 @@ func ValidateServiceSubnet(subnet string, fldPath *field.Path) field.ErrorList {
|
||||
}
|
||||
return field.ErrorList{}
|
||||
}
|
||||
|
||||
func ValidateCloudProvider(provider string, fldPath *field.Path) field.ErrorList {
|
||||
if len(provider) == 0 {
|
||||
return field.ErrorList{}
|
||||
}
|
||||
for _, supported := range cloudproviders {
|
||||
if provider == supported {
|
||||
return field.ErrorList{}
|
||||
}
|
||||
}
|
||||
return field.ErrorList{field.Invalid(fldPath, nil, "cloudprovider not supported")}
|
||||
}
|
||||
|
@ -71,6 +71,30 @@ func TestValidateServiceSubnet(t *testing.T) {
|
||||
}
|
||||
}
|
||||
|
||||
func TestValidateCloudProvider(t *testing.T) {
|
||||
var tests = []struct {
|
||||
s string
|
||||
f *field.Path
|
||||
expected bool
|
||||
}{
|
||||
{"", nil, true}, // if not provided, ok, it's optional
|
||||
{"1234", nil, false}, // not supported
|
||||
{"awws", nil, false}, // not supported
|
||||
{"aws", nil, true}, // supported
|
||||
{"gce", nil, true}, // supported
|
||||
}
|
||||
for _, rt := range tests {
|
||||
actual := ValidateCloudProvider(rt.s, rt.f)
|
||||
if (len(actual) == 0) != rt.expected {
|
||||
t.Errorf(
|
||||
"failed ValidateCloudProvider:\n\texpected: %t\n\t actual: %t",
|
||||
rt.expected,
|
||||
(len(actual) == 0),
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func TestValidateMasterConfiguration(t *testing.T) {
|
||||
var tests = []struct {
|
||||
s *kubeadm.MasterConfiguration
|
||||
|
@ -24,7 +24,6 @@ go_library(
|
||||
"//cmd/kubeadm/app/apis/kubeadm:go_default_library",
|
||||
"//cmd/kubeadm/app/apis/kubeadm/v1alpha1:go_default_library",
|
||||
"//cmd/kubeadm/app/apis/kubeadm/validation:go_default_library",
|
||||
"//cmd/kubeadm/app/cmd/flags:go_default_library",
|
||||
"//cmd/kubeadm/app/constants:go_default_library",
|
||||
"//cmd/kubeadm/app/discovery:go_default_library",
|
||||
"//cmd/kubeadm/app/master:go_default_library",
|
||||
@ -79,9 +78,6 @@ filegroup(
|
||||
|
||||
filegroup(
|
||||
name = "all-srcs",
|
||||
srcs = [
|
||||
":package-srcs",
|
||||
"//cmd/kubeadm/app/cmd/flags:all-srcs",
|
||||
],
|
||||
srcs = [":package-srcs"],
|
||||
tags = ["automanaged"],
|
||||
)
|
||||
|
@ -1,28 +0,0 @@
|
||||
package(default_visibility = ["//visibility:public"])
|
||||
|
||||
licenses(["notice"])
|
||||
|
||||
load(
|
||||
"@io_bazel_rules_go//go:def.bzl",
|
||||
"go_library",
|
||||
)
|
||||
|
||||
go_library(
|
||||
name = "go_default_library",
|
||||
srcs = ["cloudprovider.go"],
|
||||
tags = ["automanaged"],
|
||||
deps = ["//vendor:github.com/spf13/pflag"],
|
||||
)
|
||||
|
||||
filegroup(
|
||||
name = "package-srcs",
|
||||
srcs = glob(["**"]),
|
||||
tags = ["automanaged"],
|
||||
visibility = ["//visibility:private"],
|
||||
)
|
||||
|
||||
filegroup(
|
||||
name = "all-srcs",
|
||||
srcs = [":package-srcs"],
|
||||
tags = ["automanaged"],
|
||||
)
|
@ -1,70 +0,0 @@
|
||||
/*
|
||||
Copyright 2016 The Kubernetes Authors.
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
*/
|
||||
|
||||
package flags
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
|
||||
"github.com/spf13/pflag"
|
||||
)
|
||||
|
||||
var cloudproviders = []string{
|
||||
"aws",
|
||||
"azure",
|
||||
"cloudstack",
|
||||
"gce",
|
||||
"mesos",
|
||||
"openstack",
|
||||
"ovirt",
|
||||
"photon",
|
||||
"rackspace",
|
||||
"vsphere",
|
||||
}
|
||||
|
||||
func NewCloudProviderFlag(provider *string) pflag.Value {
|
||||
return &cloudProviderValue{provider: provider}
|
||||
}
|
||||
|
||||
type cloudProviderValue struct {
|
||||
provider *string
|
||||
}
|
||||
|
||||
func (c *cloudProviderValue) String() string {
|
||||
return *c.provider
|
||||
}
|
||||
|
||||
func (c *cloudProviderValue) Set(s string) error {
|
||||
if ValidateCloudProvider(s) {
|
||||
*c.provider = s
|
||||
return nil
|
||||
}
|
||||
|
||||
return fmt.Errorf("cloud provider %q is not supported, you can use any of %v", s, cloudproviders)
|
||||
}
|
||||
|
||||
func (c *cloudProviderValue) Type() string {
|
||||
return "cloudprovider"
|
||||
}
|
||||
|
||||
func ValidateCloudProvider(provider string) bool {
|
||||
for _, supported := range cloudproviders {
|
||||
if provider == supported {
|
||||
return true
|
||||
}
|
||||
}
|
||||
return false
|
||||
}
|
@ -30,7 +30,6 @@ import (
|
||||
kubeadmapi "k8s.io/kubernetes/cmd/kubeadm/app/apis/kubeadm"
|
||||
kubeadmapiext "k8s.io/kubernetes/cmd/kubeadm/app/apis/kubeadm/v1alpha1"
|
||||
"k8s.io/kubernetes/cmd/kubeadm/app/apis/kubeadm/validation"
|
||||
"k8s.io/kubernetes/cmd/kubeadm/app/cmd/flags"
|
||||
kubeadmconstants "k8s.io/kubernetes/cmd/kubeadm/app/constants"
|
||||
"k8s.io/kubernetes/cmd/kubeadm/app/discovery"
|
||||
kubemaster "k8s.io/kubernetes/cmd/kubeadm/app/master"
|
||||
@ -106,11 +105,6 @@ func NewCmdInit(out io.Writer) *cobra.Command {
|
||||
&cfg.Networking.DNSDomain, "service-dns-domain", cfg.Networking.DNSDomain,
|
||||
`Use alternative domain for services, e.g. "myorg.internal"`,
|
||||
)
|
||||
cmd.PersistentFlags().Var(
|
||||
flags.NewCloudProviderFlag(&cfg.CloudProvider), "cloud-provider",
|
||||
`Enable cloud provider features (external load-balancers, storage, etc). Note that you have to configure all kubelets manually`,
|
||||
)
|
||||
|
||||
cmd.PersistentFlags().StringVar(
|
||||
&cfg.KubernetesVersion, "use-kubernetes-version", cfg.KubernetesVersion,
|
||||
`Choose a specific Kubernetes version for the control plane`,
|
||||
|
Loading…
Reference in New Issue
Block a user