mirror of
				https://github.com/k3s-io/kubernetes.git
				synced 2025-11-03 23:40:03 +00:00 
			
		
		
		
	Fixing federation controllers to support controllers flag
This commit is contained in:
		@@ -38,7 +38,7 @@ import (
 | 
			
		||||
	"k8s.io/kubernetes/federation/pkg/dnsprovider"
 | 
			
		||||
	clustercontroller "k8s.io/kubernetes/federation/pkg/federation-controller/cluster"
 | 
			
		||||
	configmapcontroller "k8s.io/kubernetes/federation/pkg/federation-controller/configmap"
 | 
			
		||||
	daemonset "k8s.io/kubernetes/federation/pkg/federation-controller/daemonset"
 | 
			
		||||
	daemonsetcontroller "k8s.io/kubernetes/federation/pkg/federation-controller/daemonset"
 | 
			
		||||
	deploymentcontroller "k8s.io/kubernetes/federation/pkg/federation-controller/deployment"
 | 
			
		||||
	ingresscontroller "k8s.io/kubernetes/federation/pkg/federation-controller/ingress"
 | 
			
		||||
	namespacecontroller "k8s.io/kubernetes/federation/pkg/federation-controller/namespace"
 | 
			
		||||
@@ -154,11 +154,6 @@ func StartControllers(s *options.CMServer, restClientCfg *restclient.Config) err
 | 
			
		||||
	glog.Infof("Loading client config for cluster controller %q", "cluster-controller")
 | 
			
		||||
	ccClientset := federationclientset.NewForConfigOrDie(restclient.AddUserAgent(restClientCfg, "cluster-controller"))
 | 
			
		||||
	glog.Infof("Running cluster controller")
 | 
			
		||||
	go clustercontroller.NewclusterController(ccClientset, s.ClusterMonitorPeriod.Duration).Run()
 | 
			
		||||
	dns, err := dnsprovider.InitDnsProvider(s.DnsProvider, s.DnsConfigFile)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		glog.Fatalf("Cloud provider could not be initialized: %v", err)
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	discoveryClient := discovery.NewDiscoveryClientForConfigOrDie(restClientCfg)
 | 
			
		||||
	serverResources, err := discoveryClient.ServerResources()
 | 
			
		||||
@@ -166,32 +161,60 @@ func StartControllers(s *options.CMServer, restClientCfg *restclient.Config) err
 | 
			
		||||
		glog.Fatalf("Could not find resources from API Server: %v", err)
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	go clustercontroller.NewclusterController(ccClientset, s.ClusterMonitorPeriod.Duration).Run()
 | 
			
		||||
 | 
			
		||||
	if controllerEnabled(s.Controllers, serverResources, servicecontroller.ControllerName, servicecontroller.RequiredResources, true) {
 | 
			
		||||
		dns, err := dnsprovider.InitDnsProvider(s.DnsProvider, s.DnsConfigFile)
 | 
			
		||||
		if err != nil {
 | 
			
		||||
			glog.Fatalf("Cloud provider could not be initialized: %v", err)
 | 
			
		||||
		}
 | 
			
		||||
		glog.Infof("Loading client config for service controller %q", servicecontroller.UserAgentName)
 | 
			
		||||
		scClientset := federationclientset.NewForConfigOrDie(restclient.AddUserAgent(restClientCfg, servicecontroller.UserAgentName))
 | 
			
		||||
		servicecontroller := servicecontroller.New(scClientset, dns, s.FederationName, s.ServiceDnsSuffix, s.ZoneName, s.ZoneID)
 | 
			
		||||
		glog.Infof("Running service controller")
 | 
			
		||||
		if err := servicecontroller.Run(s.ConcurrentServiceSyncs, wait.NeverStop); err != nil {
 | 
			
		||||
			glog.Errorf("Failed to start service controller: %v", err)
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	if controllerEnabled(s.Controllers, serverResources, namespacecontroller.ControllerName, namespacecontroller.RequiredResources, true) {
 | 
			
		||||
		glog.Infof("Loading client config for namespace controller %q", "namespace-controller")
 | 
			
		||||
		nsClientset := federationclientset.NewForConfigOrDie(restclient.AddUserAgent(restClientCfg, "namespace-controller"))
 | 
			
		||||
		namespaceController := namespacecontroller.NewNamespaceController(nsClientset, dynamic.NewDynamicClientPool(restclient.AddUserAgent(restClientCfg, "namespace-controller")))
 | 
			
		||||
		glog.Infof("Running namespace controller")
 | 
			
		||||
		namespaceController.Run(wait.NeverStop)
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	if controllerEnabled(s.Controllers, serverResources, secretcontroller.ControllerName, secretcontroller.RequiredResources, true) {
 | 
			
		||||
		secretcontrollerClientset := federationclientset.NewForConfigOrDie(restclient.AddUserAgent(restClientCfg, "secret-controller"))
 | 
			
		||||
		secretcontroller := secretcontroller.NewSecretController(secretcontrollerClientset)
 | 
			
		||||
		secretcontroller.Run(wait.NeverStop)
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	if controllerEnabled(s.Controllers, serverResources, configmapcontroller.ControllerName, configmapcontroller.RequiredResources, true) {
 | 
			
		||||
		configmapcontrollerClientset := federationclientset.NewForConfigOrDie(restclient.AddUserAgent(restClientCfg, "configmap-controller"))
 | 
			
		||||
		configmapcontroller := configmapcontroller.NewConfigMapController(configmapcontrollerClientset)
 | 
			
		||||
		configmapcontroller.Run(wait.NeverStop)
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	if controllerEnabled(s.Controllers, serverResources, daemonsetcontroller.ControllerName, daemonsetcontroller.RequiredResources, true) {
 | 
			
		||||
		daemonsetcontrollerClientset := federationclientset.NewForConfigOrDie(restclient.AddUserAgent(restClientCfg, "daemonset-controller"))
 | 
			
		||||
	daemonsetcontroller := daemonset.NewDaemonSetController(daemonsetcontrollerClientset)
 | 
			
		||||
		daemonsetcontroller := daemonsetcontroller.NewDaemonSetController(daemonsetcontrollerClientset)
 | 
			
		||||
		daemonsetcontroller.Run(wait.NeverStop)
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	if controllerEnabled(s.Controllers, serverResources, replicasetcontroller.ControllerName, replicasetcontroller.RequiredResources, true) {
 | 
			
		||||
		replicaSetClientset := federationclientset.NewForConfigOrDie(restclient.AddUserAgent(restClientCfg, replicasetcontroller.UserAgentName))
 | 
			
		||||
		replicaSetController := replicasetcontroller.NewReplicaSetController(replicaSetClientset)
 | 
			
		||||
		go replicaSetController.Run(s.ConcurrentReplicaSetSyncs, wait.NeverStop)
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	if controllerEnabled(s.Controllers, serverResources, deploymentcontroller.ControllerName, deploymentcontroller.RequiredResources, true) {
 | 
			
		||||
		deploymentClientset := federationclientset.NewForConfigOrDie(restclient.AddUserAgent(restClientCfg, deploymentcontroller.UserAgentName))
 | 
			
		||||
		deploymentController := deploymentcontroller.NewDeploymentController(deploymentClientset)
 | 
			
		||||
		// TODO: rename s.ConcurentReplicaSetSyncs
 | 
			
		||||
		go deploymentController.Run(s.ConcurrentReplicaSetSyncs, wait.NeverStop)
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	if controllerEnabled(s.Controllers, serverResources, ingresscontroller.ControllerName, ingresscontroller.RequiredResources, true) {
 | 
			
		||||
		glog.Infof("Loading client config for ingress controller %q", "ingress-controller")
 | 
			
		||||
@@ -201,14 +224,6 @@ func StartControllers(s *options.CMServer, restClientCfg *restclient.Config) err
 | 
			
		||||
		ingressController.Run(wait.NeverStop)
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	glog.Infof("Loading client config for service controller %q", servicecontroller.UserAgentName)
 | 
			
		||||
	scClientset := federationclientset.NewForConfigOrDie(restclient.AddUserAgent(restClientCfg, servicecontroller.UserAgentName))
 | 
			
		||||
	servicecontroller := servicecontroller.New(scClientset, dns, s.FederationName, s.ServiceDnsSuffix, s.ZoneName, s.ZoneID)
 | 
			
		||||
	glog.Infof("Running service controller")
 | 
			
		||||
	if err := servicecontroller.Run(s.ConcurrentServiceSyncs, wait.NeverStop); err != nil {
 | 
			
		||||
		glog.Errorf("Failed to start service controller: %v", err)
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	select {}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -123,8 +123,8 @@ func (s *CMServer) AddFlags(fs *pflag.FlagSet) {
 | 
			
		||||
	fs.StringVar(&s.DnsProvider, "dns-provider", s.DnsProvider, "DNS provider. Valid values are: "+fmt.Sprintf("%q", dnsprovider.RegisteredDnsProviders()))
 | 
			
		||||
	fs.StringVar(&s.DnsConfigFile, "dns-provider-config", s.DnsConfigFile, "Path to config file for configuring DNS provider.")
 | 
			
		||||
	fs.Var(&s.Controllers, "controllers", ""+
 | 
			
		||||
		"A set of key=value pairs that describe controller configuration that may be passed "+
 | 
			
		||||
		"to controller manager to enable/disable specific controllers. Valid options are: \n"+
 | 
			
		||||
		"ingress=true|false (default=true)")
 | 
			
		||||
		"A set of key=value pairs that describe controller configuration "+
 | 
			
		||||
		"to enable/disable specific controllers. Key should be the resource name (like services) and value should be true or false. "+
 | 
			
		||||
		"For example: services=false,ingresses=false")
 | 
			
		||||
	leaderelection.BindFlags(&s.LeaderElection, fs)
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -23,6 +23,7 @@ import (
 | 
			
		||||
	"k8s.io/apimachinery/pkg/api/errors"
 | 
			
		||||
	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
 | 
			
		||||
	pkgruntime "k8s.io/apimachinery/pkg/runtime"
 | 
			
		||||
	"k8s.io/apimachinery/pkg/runtime/schema"
 | 
			
		||||
	"k8s.io/apimachinery/pkg/types"
 | 
			
		||||
	"k8s.io/apimachinery/pkg/watch"
 | 
			
		||||
	clientv1 "k8s.io/client-go/pkg/api/v1"
 | 
			
		||||
@@ -44,6 +45,11 @@ import (
 | 
			
		||||
 | 
			
		||||
const (
 | 
			
		||||
	allClustersKey = "ALL_CLUSTERS"
 | 
			
		||||
	ControllerName = "configmaps"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
var (
 | 
			
		||||
	RequiredResources = []schema.GroupVersionResource{apiv1.SchemeGroupVersion.WithResource("configmaps")}
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
type ConfigMapController struct {
 | 
			
		||||
 
 | 
			
		||||
@@ -24,6 +24,7 @@ import (
 | 
			
		||||
	"k8s.io/apimachinery/pkg/api/errors"
 | 
			
		||||
	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
 | 
			
		||||
	pkgruntime "k8s.io/apimachinery/pkg/runtime"
 | 
			
		||||
	"k8s.io/apimachinery/pkg/runtime/schema"
 | 
			
		||||
	"k8s.io/apimachinery/pkg/types"
 | 
			
		||||
	"k8s.io/apimachinery/pkg/watch"
 | 
			
		||||
	clientv1 "k8s.io/client-go/pkg/api/v1"
 | 
			
		||||
@@ -45,6 +46,11 @@ import (
 | 
			
		||||
 | 
			
		||||
const (
 | 
			
		||||
	allClustersKey = "ALL_CLUSTERS"
 | 
			
		||||
	ControllerName = "daemonsets"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
var (
 | 
			
		||||
	RequiredResources = []schema.GroupVersionResource{extensionsv1.SchemeGroupVersion.WithResource("daemonsets")}
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
type DaemonSetController struct {
 | 
			
		||||
 
 | 
			
		||||
@@ -28,6 +28,7 @@ import (
 | 
			
		||||
	"k8s.io/apimachinery/pkg/api/errors"
 | 
			
		||||
	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
 | 
			
		||||
	"k8s.io/apimachinery/pkg/runtime"
 | 
			
		||||
	"k8s.io/apimachinery/pkg/runtime/schema"
 | 
			
		||||
	"k8s.io/apimachinery/pkg/util/wait"
 | 
			
		||||
	"k8s.io/apimachinery/pkg/watch"
 | 
			
		||||
	clientv1 "k8s.io/client-go/pkg/api/v1"
 | 
			
		||||
@@ -54,9 +55,11 @@ const (
 | 
			
		||||
	FedDeploymentPreferencesAnnotation = "federation.kubernetes.io/deployment-preferences"
 | 
			
		||||
	allClustersKey                     = "THE_ALL_CLUSTER_KEY"
 | 
			
		||||
	UserAgentName                      = "Federation-Deployment-Controller"
 | 
			
		||||
	ControllerName                     = "deployments"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
var (
 | 
			
		||||
	RequiredResources        = []schema.GroupVersionResource{extensionsv1.SchemeGroupVersion.WithResource("deployments")}
 | 
			
		||||
	deploymentReviewDelay    = 10 * time.Second
 | 
			
		||||
	clusterAvailableDelay    = 20 * time.Second
 | 
			
		||||
	clusterUnavailableDelay  = 60 * time.Second
 | 
			
		||||
 
 | 
			
		||||
@@ -60,7 +60,7 @@ const (
 | 
			
		||||
	// We wait for ingress to be created in this cluster before creating it any
 | 
			
		||||
	// other cluster.
 | 
			
		||||
	firstClusterAnnotation = "ingress.federation.kubernetes.io/first-cluster"
 | 
			
		||||
	ControllerName         = "ingress"
 | 
			
		||||
	ControllerName         = "ingresses"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
var (
 | 
			
		||||
 
 | 
			
		||||
@@ -23,6 +23,7 @@ import (
 | 
			
		||||
	"k8s.io/apimachinery/pkg/api/errors"
 | 
			
		||||
	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
 | 
			
		||||
	"k8s.io/apimachinery/pkg/runtime"
 | 
			
		||||
	"k8s.io/apimachinery/pkg/runtime/schema"
 | 
			
		||||
	"k8s.io/apimachinery/pkg/watch"
 | 
			
		||||
	"k8s.io/client-go/dynamic"
 | 
			
		||||
	clientv1 "k8s.io/client-go/pkg/api/v1"
 | 
			
		||||
@@ -45,6 +46,11 @@ import (
 | 
			
		||||
 | 
			
		||||
const (
 | 
			
		||||
	allClustersKey = "ALL_CLUSTERS"
 | 
			
		||||
	ControllerName = "namespaces"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
var (
 | 
			
		||||
	RequiredResources = []schema.GroupVersionResource{apiv1.SchemeGroupVersion.WithResource("namespaces")}
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
type NamespaceController struct {
 | 
			
		||||
 
 | 
			
		||||
@@ -29,6 +29,7 @@ import (
 | 
			
		||||
	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
 | 
			
		||||
	"k8s.io/apimachinery/pkg/labels"
 | 
			
		||||
	"k8s.io/apimachinery/pkg/runtime"
 | 
			
		||||
	"k8s.io/apimachinery/pkg/runtime/schema"
 | 
			
		||||
	utilruntime "k8s.io/apimachinery/pkg/util/runtime"
 | 
			
		||||
	"k8s.io/apimachinery/pkg/util/wait"
 | 
			
		||||
	"k8s.io/apimachinery/pkg/watch"
 | 
			
		||||
@@ -57,9 +58,11 @@ const (
 | 
			
		||||
	FedReplicaSetPreferencesAnnotation = "federation.kubernetes.io/replica-set-preferences"
 | 
			
		||||
	allClustersKey                     = "THE_ALL_CLUSTER_KEY"
 | 
			
		||||
	UserAgentName                      = "Federation-replicaset-Controller"
 | 
			
		||||
	ControllerName                     = "replicasets"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
var (
 | 
			
		||||
	RequiredResources        = []schema.GroupVersionResource{extensionsv1.SchemeGroupVersion.WithResource("replicasets")}
 | 
			
		||||
	replicaSetReviewDelay    = 10 * time.Second
 | 
			
		||||
	clusterAvailableDelay    = 20 * time.Second
 | 
			
		||||
	clusterUnavailableDelay  = 60 * time.Second
 | 
			
		||||
 
 | 
			
		||||
@@ -23,6 +23,7 @@ import (
 | 
			
		||||
	"k8s.io/apimachinery/pkg/api/errors"
 | 
			
		||||
	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
 | 
			
		||||
	pkgruntime "k8s.io/apimachinery/pkg/runtime"
 | 
			
		||||
	"k8s.io/apimachinery/pkg/runtime/schema"
 | 
			
		||||
	"k8s.io/apimachinery/pkg/types"
 | 
			
		||||
	"k8s.io/apimachinery/pkg/watch"
 | 
			
		||||
	clientv1 "k8s.io/client-go/pkg/api/v1"
 | 
			
		||||
@@ -44,6 +45,11 @@ import (
 | 
			
		||||
 | 
			
		||||
const (
 | 
			
		||||
	allClustersKey = "ALL_CLUSTERS"
 | 
			
		||||
	ControllerName = "secrets"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
var (
 | 
			
		||||
	RequiredResources = []schema.GroupVersionResource{apiv1.SchemeGroupVersion.WithResource("secrets")}
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
type SecretController struct {
 | 
			
		||||
 
 | 
			
		||||
@@ -28,6 +28,7 @@ import (
 | 
			
		||||
	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
 | 
			
		||||
	"k8s.io/apimachinery/pkg/conversion"
 | 
			
		||||
	pkgruntime "k8s.io/apimachinery/pkg/runtime"
 | 
			
		||||
	"k8s.io/apimachinery/pkg/runtime/schema"
 | 
			
		||||
	"k8s.io/apimachinery/pkg/util/runtime"
 | 
			
		||||
	"k8s.io/apimachinery/pkg/util/sets"
 | 
			
		||||
	"k8s.io/apimachinery/pkg/util/wait"
 | 
			
		||||
@@ -78,6 +79,11 @@ const (
 | 
			
		||||
	updateTimeout         = 30 * time.Second
 | 
			
		||||
	allClustersKey        = "ALL_CLUSTERS"
 | 
			
		||||
	clusterAvailableDelay = time.Second * 20
 | 
			
		||||
	ControllerName        = "services"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
var (
 | 
			
		||||
	RequiredResources = []schema.GroupVersionResource{v1.SchemeGroupVersion.WithResource("services")}
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
type cachedService struct {
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user