Skip to content

Commit

Permalink
Merge pull request #127711 from elmiko/correct-provider-deprecation-l…
Browse files Browse the repository at this point in the history
…ogic

Correct cloud provider detection logic to be more representative of deprecation and disablement status

Kubernetes-commit: 1b71b94b738f1cd179589b7521ad29985404f65b
  • Loading branch information
k8s-publishing-bot committed Oct 1, 2024
2 parents 6dc74c6 + 3d043ef commit 3bd10a7
Show file tree
Hide file tree
Showing 3 changed files with 25 additions and 58 deletions.
10 changes: 5 additions & 5 deletions go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -11,13 +11,13 @@ require (
github.com/spf13/cobra v1.8.1
github.com/spf13/pflag v1.0.5
github.com/stretchr/testify v1.9.0
k8s.io/api v0.0.0-20240920202009-71385f038c10
k8s.io/apimachinery v0.0.0-20240926041705-dc03077c038e
k8s.io/apiserver v0.0.0-20240928084133-42502d245d51
k8s.io/client-go v0.0.0-20240928082459-2d7a47c42bfc
k8s.io/api v0.0.0-20241001061456-5c8e0b961397
k8s.io/apimachinery v0.0.0-20240929035808-0db5dbf03048
k8s.io/apiserver v0.0.0-20241001073733-d7cbe7a5f28d
k8s.io/client-go v0.0.0-20240929082523-46093399c4de
k8s.io/component-base v0.0.0-20240928083227-66de10e147bc
k8s.io/component-helpers v0.0.0-20240928083404-d763e5df641d
k8s.io/controller-manager v0.0.0-20240928091200-68bb4e3e3504
k8s.io/controller-manager v0.0.0-20241001095331-1f9a5ffcb425
k8s.io/klog/v2 v2.130.1
k8s.io/utils v0.0.0-20240711033017-18e509b52bc8
)
Expand Down
20 changes: 10 additions & 10 deletions go.sum
Original file line number Diff line number Diff line change
Expand Up @@ -276,20 +276,20 @@ gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ=
gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
k8s.io/api v0.0.0-20240920202009-71385f038c10 h1:shjQe98Co9zBlDzQkxb5IJEWtReSl7qunr56C4Jgc70=
k8s.io/api v0.0.0-20240920202009-71385f038c10/go.mod h1:KCEt6+W/Yn1Vc48pYXeLf0mGK52kJhvt+rcaUVsIaKQ=
k8s.io/apimachinery v0.0.0-20240926041705-dc03077c038e h1:/N2qUkIcQ8VaZbmy28grdhVBbNXO6KLZRdz6F2siNeY=
k8s.io/apimachinery v0.0.0-20240926041705-dc03077c038e/go.mod h1:5rKPDwwN9qm//xASFCZ83nyYEanHxxhc7pZ8AC4lukY=
k8s.io/apiserver v0.0.0-20240928084133-42502d245d51 h1:AtNRp1f6HLd/89cf2EB+RKgajQCwmZ0Q1HNllyz05Y8=
k8s.io/apiserver v0.0.0-20240928084133-42502d245d51/go.mod h1:bY2LPWrrW674ESG4dH0xg+yNxjOl2MKzMBq0GSuzZ8M=
k8s.io/client-go v0.0.0-20240928082459-2d7a47c42bfc h1:vXIj/gsKtCPO4OTLbXWOrKOoIAaqZi3sDjniQfcFuPs=
k8s.io/client-go v0.0.0-20240928082459-2d7a47c42bfc/go.mod h1:+LjOIsTEpEsaW4dpOAa5PueCf6hTShgzbB0+c+KT4K0=
k8s.io/api v0.0.0-20241001061456-5c8e0b961397 h1:nAgFHPXbGIAyhn+LgjFlp3/MpOW8m7TQyO933fTEuH8=
k8s.io/api v0.0.0-20241001061456-5c8e0b961397/go.mod h1:P4IhnNCi/5FdQLo54CpHGU7xr10vOGPd2loe31c00vM=
k8s.io/apimachinery v0.0.0-20240929035808-0db5dbf03048 h1:EWQWppfphUSBwuhuNA4weJ9vJtfHhjVwizTYjZb8ikw=
k8s.io/apimachinery v0.0.0-20240929035808-0db5dbf03048/go.mod h1:5rKPDwwN9qm//xASFCZ83nyYEanHxxhc7pZ8AC4lukY=
k8s.io/apiserver v0.0.0-20241001073733-d7cbe7a5f28d h1:J/ZNwAWvfemNQ91XPFT0ei9u5++/cknKYfHhTqQ/OkA=
k8s.io/apiserver v0.0.0-20241001073733-d7cbe7a5f28d/go.mod h1:fEMmcPgJjv/TBTvxkPPhhDdPqHeX1YBebjTmxcDD/CU=
k8s.io/client-go v0.0.0-20240929082523-46093399c4de h1:a/AoWBaxo6kjvY29p3PUxc7PDUfyTHQCBb3zoA7L7gw=
k8s.io/client-go v0.0.0-20240929082523-46093399c4de/go.mod h1:rV8uxwGX3sOvz0lP3/B/bLL2+dtQ7QmA4iU+d7u8snk=
k8s.io/component-base v0.0.0-20240928083227-66de10e147bc h1:rcpUSxWdWOVlC4auITDsLVD8mkDwKoO5ngGUEW1GARg=
k8s.io/component-base v0.0.0-20240928083227-66de10e147bc/go.mod h1:y3+nKeFC4lXl3nEHGAXUtoRopMfxd7um7GOQzZWcdi8=
k8s.io/component-helpers v0.0.0-20240928083404-d763e5df641d h1:Tw+xa+jU6X73uZhtzAoj4wmbKssmcsDiaQNcFBfgJPI=
k8s.io/component-helpers v0.0.0-20240928083404-d763e5df641d/go.mod h1:/gg6Mvn3qY9XUOia0hHgqqy9vDWMJi8KmadhnsHNy6k=
k8s.io/controller-manager v0.0.0-20240928091200-68bb4e3e3504 h1:uPHcczRZVuZS4vED96e8qsLwJE+XaDZAXIU28W8uug8=
k8s.io/controller-manager v0.0.0-20240928091200-68bb4e3e3504/go.mod h1:Ulf84tN7siYj2JEudREfKBc4tyY+c88lQ5Y36z7xbwQ=
k8s.io/controller-manager v0.0.0-20241001095331-1f9a5ffcb425 h1:m9asM6cx9DwI81mT7TPGyBqt/cSfPIbXth8AgTtLfbw=
k8s.io/controller-manager v0.0.0-20241001095331-1f9a5ffcb425/go.mod h1:B1VBA9JmAf/j5UGGo2jWPllauZUT4BAOIWKdKGiarxw=
k8s.io/klog/v2 v2.130.1 h1:n9Xl7H1Xvksem4KFG4PYbdQCQxqc/tTUyrgXaOhHSzk=
k8s.io/klog/v2 v2.130.1/go.mod h1:3Jpz1GvMt720eyJH1ckRHK1EDfpxISzJ7I9OYgaDtPE=
k8s.io/kms v0.0.0-20240912041232-273c893e4e51 h1:mbESnbnzpJyRVv9XDJ7eV+F33qap+hKv/kPEkzVPCoE=
Expand Down
53 changes: 10 additions & 43 deletions plugins.go
Original file line number Diff line number Diff line change
Expand Up @@ -33,13 +33,8 @@ type Factory func(config io.Reader) (Interface, error)

// All registered cloud providers.
var (
providersMutex sync.Mutex
providers = make(map[string]Factory)
deprecatedCloudProviders = []struct {
name string
external bool
detail string
}{}
providersMutex sync.Mutex
providers = make(map[string]Factory)
)

const externalCloudProvider = "external"
Expand Down Expand Up @@ -85,47 +80,19 @@ func IsExternal(name string) bool {
return name == externalCloudProvider
}

// IsDeprecatedInternal is responsible for preventing cloud.Interface
// from being initialized in kubelet, kube-controller-manager or kube-api-server
func IsDeprecatedInternal(name string) bool {
for _, provider := range deprecatedCloudProviders {
if provider.name == name {
return true
}
}

return false
}

// DisableWarningForProvider logs information about disabled cloud provider state
func DisableWarningForProvider(providerName string) {
for _, provider := range deprecatedCloudProviders {
if provider.name == providerName {
klog.Infof("INFO: Please make sure you are running external cloud controller manager binary for provider %q."+
"In-tree cloud providers are currently disabled. Refer to https://github.com/kubernetes/kubernetes/tree/master/staging/src/k8s.io/cloud-provider/sample"+
"for example implementation.", providerName)
detail := fmt.Sprintf("Please reach to sig-cloud-provider and use 'external' cloud provider for %q: %s", providerName, provider.detail)
klog.Warningf("WARNING: %q built-in cloud provider is now disabled. %s", providerName, detail)
break
}
if !IsExternal(providerName) {
klog.Infof("INFO: Please make sure you are running an external cloud controller manager binary for provider %q."+
"In-tree cloud providers are disabled. Refer to https://github.com/kubernetes/kubernetes/tree/master/staging/src/k8s.io/cloud-provider/sample "+
"for an example implementation.", providerName)
klog.Warningf("WARNING: built-in cloud providers are disabled. Please set \"--cloud-provider=external\" and migrate to an external cloud controller manager for provider %q", providerName)
}
}

// DeprecationWarningForProvider logs information about deprecated cloud provider state
func DeprecationWarningForProvider(providerName string) {
for _, provider := range deprecatedCloudProviders {
if provider.name != providerName {
continue
}

detail := provider.detail
if provider.external {
detail = fmt.Sprintf("Please use 'external' cloud provider for %s: %s", providerName, provider.detail)
}

klog.Warningf("WARNING: %s built-in cloud provider is now deprecated. %s", providerName, detail)
break
}
// ErrorForDisabledProvider returns an error formatted with the supplied provider name
func ErrorForDisabledProvider(providerName string) error {
return fmt.Errorf("cloud provider %q was specified, but built-in cloud providers are disabled. Please set --cloud-provider=external and migrate to an external cloud provider", providerName)
}

// InitCloudProvider creates an instance of the named cloud provider.
Expand Down

0 comments on commit 3bd10a7

Please sign in to comment.