move pkg/controller/cloud/node_lifecycle_controller.go to k8s.io/cloud-provider/controllers/nodelifecycle for easier external consumption
Signed-off-by: Andrew Sy Kim <kim.andrewsy@gmail.com>
This commit is contained in:
parent
6d4a19b31c
commit
41dc075a85
@ -12,7 +12,6 @@ go_library(
|
|||||||
"//cmd/cloud-controller-manager/app/config:go_default_library",
|
"//cmd/cloud-controller-manager/app/config:go_default_library",
|
||||||
"//cmd/cloud-controller-manager/app/options:go_default_library",
|
"//cmd/cloud-controller-manager/app/options:go_default_library",
|
||||||
"//cmd/controller-manager/app:go_default_library",
|
"//cmd/controller-manager/app:go_default_library",
|
||||||
"//pkg/controller/cloud:go_default_library",
|
|
||||||
"//staging/src/k8s.io/apimachinery/pkg/util/sets:go_default_library",
|
"//staging/src/k8s.io/apimachinery/pkg/util/sets:go_default_library",
|
||||||
"//staging/src/k8s.io/apimachinery/pkg/util/uuid:go_default_library",
|
"//staging/src/k8s.io/apimachinery/pkg/util/uuid:go_default_library",
|
||||||
"//staging/src/k8s.io/apimachinery/pkg/util/wait:go_default_library",
|
"//staging/src/k8s.io/apimachinery/pkg/util/wait:go_default_library",
|
||||||
@ -23,6 +22,7 @@ go_library(
|
|||||||
"//staging/src/k8s.io/client-go/tools/leaderelection/resourcelock:go_default_library",
|
"//staging/src/k8s.io/client-go/tools/leaderelection/resourcelock:go_default_library",
|
||||||
"//staging/src/k8s.io/cloud-provider:go_default_library",
|
"//staging/src/k8s.io/cloud-provider:go_default_library",
|
||||||
"//staging/src/k8s.io/cloud-provider/controllers/node:go_default_library",
|
"//staging/src/k8s.io/cloud-provider/controllers/node:go_default_library",
|
||||||
|
"//staging/src/k8s.io/cloud-provider/controllers/nodelifecycle:go_default_library",
|
||||||
"//staging/src/k8s.io/cloud-provider/controllers/route:go_default_library",
|
"//staging/src/k8s.io/cloud-provider/controllers/route:go_default_library",
|
||||||
"//staging/src/k8s.io/cloud-provider/controllers/service:go_default_library",
|
"//staging/src/k8s.io/cloud-provider/controllers/service:go_default_library",
|
||||||
"//staging/src/k8s.io/component-base/cli/flag:go_default_library",
|
"//staging/src/k8s.io/component-base/cli/flag:go_default_library",
|
||||||
|
@ -28,11 +28,11 @@ import (
|
|||||||
|
|
||||||
cloudprovider "k8s.io/cloud-provider"
|
cloudprovider "k8s.io/cloud-provider"
|
||||||
cloudnodecontroller "k8s.io/cloud-provider/controllers/node"
|
cloudnodecontroller "k8s.io/cloud-provider/controllers/node"
|
||||||
|
cloudnodelifecyclecontroller "k8s.io/cloud-provider/controllers/nodelifecycle"
|
||||||
routecontroller "k8s.io/cloud-provider/controllers/route"
|
routecontroller "k8s.io/cloud-provider/controllers/route"
|
||||||
servicecontroller "k8s.io/cloud-provider/controllers/service"
|
servicecontroller "k8s.io/cloud-provider/controllers/service"
|
||||||
"k8s.io/klog/v2"
|
"k8s.io/klog/v2"
|
||||||
cloudcontrollerconfig "k8s.io/kubernetes/cmd/cloud-controller-manager/app/config"
|
cloudcontrollerconfig "k8s.io/kubernetes/cmd/cloud-controller-manager/app/config"
|
||||||
cloudcontrollers "k8s.io/kubernetes/pkg/controller/cloud"
|
|
||||||
netutils "k8s.io/utils/net"
|
netutils "k8s.io/utils/net"
|
||||||
|
|
||||||
utilfeature "k8s.io/apiserver/pkg/util/feature"
|
utilfeature "k8s.io/apiserver/pkg/util/feature"
|
||||||
@ -65,7 +65,7 @@ func startCloudNodeController(ctx *cloudcontrollerconfig.CompletedConfig, cloud
|
|||||||
|
|
||||||
func startCloudNodeLifecycleController(ctx *cloudcontrollerconfig.CompletedConfig, cloud cloudprovider.Interface, stopCh <-chan struct{}) (http.Handler, bool, error) {
|
func startCloudNodeLifecycleController(ctx *cloudcontrollerconfig.CompletedConfig, cloud cloudprovider.Interface, stopCh <-chan struct{}) (http.Handler, bool, error) {
|
||||||
// Start the cloudNodeLifecycleController
|
// Start the cloudNodeLifecycleController
|
||||||
cloudNodeLifecycleController, err := cloudcontrollers.NewCloudNodeLifecycleController(
|
cloudNodeLifecycleController, err := cloudnodelifecyclecontroller.NewCloudNodeLifecycleController(
|
||||||
ctx.SharedInformers.Core().V1().Nodes(),
|
ctx.SharedInformers.Core().V1().Nodes(),
|
||||||
// cloud node lifecycle controller uses existing cluster role from node-controller
|
// cloud node lifecycle controller uses existing cluster role from node-controller
|
||||||
ctx.ClientBuilder.ClientOrDie("node-controller"),
|
ctx.ClientBuilder.ClientOrDie("node-controller"),
|
||||||
|
@ -49,7 +49,6 @@ go_library(
|
|||||||
"//pkg/controller/certificates/rootcacertpublisher:go_default_library",
|
"//pkg/controller/certificates/rootcacertpublisher:go_default_library",
|
||||||
"//pkg/controller/certificates/signer:go_default_library",
|
"//pkg/controller/certificates/signer:go_default_library",
|
||||||
"//pkg/controller/certificates/signer/config:go_default_library",
|
"//pkg/controller/certificates/signer/config:go_default_library",
|
||||||
"//pkg/controller/cloud:go_default_library",
|
|
||||||
"//pkg/controller/clusterroleaggregation:go_default_library",
|
"//pkg/controller/clusterroleaggregation:go_default_library",
|
||||||
"//pkg/controller/cronjob:go_default_library",
|
"//pkg/controller/cronjob:go_default_library",
|
||||||
"//pkg/controller/daemon:go_default_library",
|
"//pkg/controller/daemon:go_default_library",
|
||||||
@ -135,6 +134,7 @@ go_library(
|
|||||||
"//staging/src/k8s.io/client-go/util/flowcontrol:go_default_library",
|
"//staging/src/k8s.io/client-go/util/flowcontrol:go_default_library",
|
||||||
"//staging/src/k8s.io/client-go/util/keyutil:go_default_library",
|
"//staging/src/k8s.io/client-go/util/keyutil:go_default_library",
|
||||||
"//staging/src/k8s.io/cloud-provider:go_default_library",
|
"//staging/src/k8s.io/cloud-provider:go_default_library",
|
||||||
|
"//staging/src/k8s.io/cloud-provider/controllers/nodelifecycle:go_default_library",
|
||||||
"//staging/src/k8s.io/cloud-provider/controllers/route:go_default_library",
|
"//staging/src/k8s.io/cloud-provider/controllers/route:go_default_library",
|
||||||
"//staging/src/k8s.io/cloud-provider/controllers/service:go_default_library",
|
"//staging/src/k8s.io/cloud-provider/controllers/service:go_default_library",
|
||||||
"//staging/src/k8s.io/component-base/cli/flag:go_default_library",
|
"//staging/src/k8s.io/component-base/cli/flag:go_default_library",
|
||||||
|
@ -38,12 +38,12 @@ import (
|
|||||||
clientset "k8s.io/client-go/kubernetes"
|
clientset "k8s.io/client-go/kubernetes"
|
||||||
"k8s.io/client-go/metadata"
|
"k8s.io/client-go/metadata"
|
||||||
restclient "k8s.io/client-go/rest"
|
restclient "k8s.io/client-go/rest"
|
||||||
|
cloudnodelifecyclecontroller "k8s.io/cloud-provider/controllers/nodelifecycle"
|
||||||
routecontroller "k8s.io/cloud-provider/controllers/route"
|
routecontroller "k8s.io/cloud-provider/controllers/route"
|
||||||
servicecontroller "k8s.io/cloud-provider/controllers/service"
|
servicecontroller "k8s.io/cloud-provider/controllers/service"
|
||||||
"k8s.io/component-base/metrics/prometheus/ratelimiter"
|
"k8s.io/component-base/metrics/prometheus/ratelimiter"
|
||||||
csitrans "k8s.io/csi-translation-lib"
|
csitrans "k8s.io/csi-translation-lib"
|
||||||
"k8s.io/kubernetes/pkg/controller"
|
"k8s.io/kubernetes/pkg/controller"
|
||||||
cloudcontroller "k8s.io/kubernetes/pkg/controller/cloud"
|
|
||||||
endpointcontroller "k8s.io/kubernetes/pkg/controller/endpoint"
|
endpointcontroller "k8s.io/kubernetes/pkg/controller/endpoint"
|
||||||
"k8s.io/kubernetes/pkg/controller/garbagecollector"
|
"k8s.io/kubernetes/pkg/controller/garbagecollector"
|
||||||
namespacecontroller "k8s.io/kubernetes/pkg/controller/namespace"
|
namespacecontroller "k8s.io/kubernetes/pkg/controller/namespace"
|
||||||
@ -217,7 +217,7 @@ func startNodeLifecycleController(ctx ControllerContext) (http.Handler, bool, er
|
|||||||
}
|
}
|
||||||
|
|
||||||
func startCloudNodeLifecycleController(ctx ControllerContext) (http.Handler, bool, error) {
|
func startCloudNodeLifecycleController(ctx ControllerContext) (http.Handler, bool, error) {
|
||||||
cloudNodeLifecycleController, err := cloudcontroller.NewCloudNodeLifecycleController(
|
cloudNodeLifecycleController, err := cloudnodelifecyclecontroller.NewCloudNodeLifecycleController(
|
||||||
ctx.InformerFactory.Core().V1().Nodes(),
|
ctx.InformerFactory.Core().V1().Nodes(),
|
||||||
// cloud node lifecycle controller uses existing cluster role from node-controller
|
// cloud node lifecycle controller uses existing cluster role from node-controller
|
||||||
ctx.ClientBuilder.ClientOrDie("node-controller"),
|
ctx.ClientBuilder.ClientOrDie("node-controller"),
|
||||||
|
@ -50,7 +50,6 @@ pkg/controller/apis/config/v1alpha1
|
|||||||
pkg/controller/certificates
|
pkg/controller/certificates
|
||||||
pkg/controller/certificates/signer
|
pkg/controller/certificates/signer
|
||||||
pkg/controller/certificates/signer/config/v1alpha1
|
pkg/controller/certificates/signer/config/v1alpha1
|
||||||
pkg/controller/cloud
|
|
||||||
pkg/controller/clusterroleaggregation
|
pkg/controller/clusterroleaggregation
|
||||||
pkg/controller/daemon
|
pkg/controller/daemon
|
||||||
pkg/controller/daemon/config/v1alpha1
|
pkg/controller/daemon/config/v1alpha1
|
||||||
@ -424,6 +423,7 @@ staging/src/k8s.io/client-go/util/testing
|
|||||||
staging/src/k8s.io/client-go/util/workqueue
|
staging/src/k8s.io/client-go/util/workqueue
|
||||||
staging/src/k8s.io/cloud-provider
|
staging/src/k8s.io/cloud-provider
|
||||||
staging/src/k8s.io/cloud-provider/controllers/node
|
staging/src/k8s.io/cloud-provider/controllers/node
|
||||||
|
staging/src/k8s.io/cloud-provider/controllers/nodelifecycle
|
||||||
staging/src/k8s.io/cloud-provider/controllers/route
|
staging/src/k8s.io/cloud-provider/controllers/route
|
||||||
staging/src/k8s.io/code-generator/cmd/client-gen/args
|
staging/src/k8s.io/code-generator/cmd/client-gen/args
|
||||||
staging/src/k8s.io/code-generator/cmd/client-gen/generators/fake
|
staging/src/k8s.io/code-generator/cmd/client-gen/generators/fake
|
||||||
|
@ -108,7 +108,6 @@ filegroup(
|
|||||||
"//pkg/controller/apis/config:all-srcs",
|
"//pkg/controller/apis/config:all-srcs",
|
||||||
"//pkg/controller/bootstrap:all-srcs",
|
"//pkg/controller/bootstrap:all-srcs",
|
||||||
"//pkg/controller/certificates:all-srcs",
|
"//pkg/controller/certificates:all-srcs",
|
||||||
"//pkg/controller/cloud:all-srcs",
|
|
||||||
"//pkg/controller/clusterroleaggregation:all-srcs",
|
"//pkg/controller/clusterroleaggregation:all-srcs",
|
||||||
"//pkg/controller/cronjob:all-srcs",
|
"//pkg/controller/cronjob:all-srcs",
|
||||||
"//pkg/controller/daemon:all-srcs",
|
"//pkg/controller/daemon:all-srcs",
|
||||||
|
@ -38,6 +38,7 @@ filegroup(
|
|||||||
":package-srcs",
|
":package-srcs",
|
||||||
"//staging/src/k8s.io/cloud-provider/api:all-srcs",
|
"//staging/src/k8s.io/cloud-provider/api:all-srcs",
|
||||||
"//staging/src/k8s.io/cloud-provider/controllers/node:all-srcs",
|
"//staging/src/k8s.io/cloud-provider/controllers/node:all-srcs",
|
||||||
|
"//staging/src/k8s.io/cloud-provider/controllers/nodelifecycle:all-srcs",
|
||||||
"//staging/src/k8s.io/cloud-provider/controllers/route:all-srcs",
|
"//staging/src/k8s.io/cloud-provider/controllers/route:all-srcs",
|
||||||
"//staging/src/k8s.io/cloud-provider/controllers/service:all-srcs",
|
"//staging/src/k8s.io/cloud-provider/controllers/service:all-srcs",
|
||||||
"//staging/src/k8s.io/cloud-provider/fake:all-srcs",
|
"//staging/src/k8s.io/cloud-provider/fake:all-srcs",
|
||||||
|
@ -3,7 +3,8 @@ load("@io_bazel_rules_go//go:def.bzl", "go_library", "go_test")
|
|||||||
go_library(
|
go_library(
|
||||||
name = "go_default_library",
|
name = "go_default_library",
|
||||||
srcs = ["node_lifecycle_controller.go"],
|
srcs = ["node_lifecycle_controller.go"],
|
||||||
importpath = "k8s.io/kubernetes/pkg/controller/cloud",
|
importmap = "k8s.io/kubernetes/vendor/k8s.io/cloud-provider/controllers/nodelifecycle",
|
||||||
|
importpath = "k8s.io/cloud-provider/controllers/nodelifecycle",
|
||||||
visibility = ["//visibility:public"],
|
visibility = ["//visibility:public"],
|
||||||
deps = [
|
deps = [
|
||||||
"//staging/src/k8s.io/api/core/v1:go_default_library",
|
"//staging/src/k8s.io/api/core/v1:go_default_library",
|
@ -207,3 +207,26 @@ func shutdownInCloudProvider(ctx context.Context, cloud cloudprovider.Interface,
|
|||||||
|
|
||||||
return shutdown, err
|
return shutdown, err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// ensureNodeExistsByProviderID checks if the instance exists by the provider id,
|
||||||
|
// If provider id in spec is empty it calls instanceId with node name to get provider id
|
||||||
|
func ensureNodeExistsByProviderID(ctx context.Context, instances cloudprovider.Instances, node *v1.Node) (bool, error) {
|
||||||
|
providerID := node.Spec.ProviderID
|
||||||
|
if providerID == "" {
|
||||||
|
var err error
|
||||||
|
providerID, err = instances.InstanceID(ctx, types.NodeName(node.Name))
|
||||||
|
if err != nil {
|
||||||
|
if err == cloudprovider.InstanceNotFound {
|
||||||
|
return false, nil
|
||||||
|
}
|
||||||
|
return false, err
|
||||||
|
}
|
||||||
|
|
||||||
|
if providerID == "" {
|
||||||
|
klog.Warningf("Cannot find valid providerID for node name %q, assuming non existence", node.Name)
|
||||||
|
return false, nil
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return instances.InstanceExistsByProviderID(ctx, providerID)
|
||||||
|
}
|
@ -5,6 +5,8 @@ module k8s.io/cloud-provider
|
|||||||
go 1.13
|
go 1.13
|
||||||
|
|
||||||
require (
|
require (
|
||||||
|
github.com/google/go-cmp v0.4.0
|
||||||
|
github.com/stretchr/testify v1.4.0
|
||||||
k8s.io/api v0.0.0
|
k8s.io/api v0.0.0
|
||||||
k8s.io/apimachinery v0.0.0
|
k8s.io/apimachinery v0.0.0
|
||||||
k8s.io/client-go v0.0.0
|
k8s.io/client-go v0.0.0
|
||||||
|
Loading…
Reference in New Issue
Block a user