diff --git a/cmd/kube-controller-manager/app/controllermanager.go b/cmd/kube-controller-manager/app/controllermanager.go index 447b216b7b3..9978079f41b 100644 --- a/cmd/kube-controller-manager/app/controllermanager.go +++ b/cmd/kube-controller-manager/app/controllermanager.go @@ -72,16 +72,19 @@ import ( ) const ( - // Jitter used when starting controller managers + // ControllerStartJitter is the Jitter used when starting controller managers ControllerStartJitter = 1.0 // ConfigzName is the name used for register kube-controller manager /configz, same with GroupName. ConfigzName = "kubecontrollermanager.config.k8s.io" ) +// ControllerLoopMode is the kube-controller-manager's mode of running controller loops that are cloud provider dependent type ControllerLoopMode int const ( + // IncludeCloudLoops means the kube-controller-manager include the controller loops that are cloud provider dependent IncludeCloudLoops ControllerLoopMode = iota + // ExternalLoops means the kube-controller-manager exclude the controller loops that are cloud provider dependent ExternalLoops ) @@ -284,6 +287,7 @@ func Run(c *config.CompletedConfig, stopCh <-chan struct{}) error { panic("unreachable") } +// ControllerContext defines the context object for controller type ControllerContext struct { // ClientBuilder will provide a client for this controller to use ClientBuilder controller.ControllerClientBuilder @@ -328,6 +332,7 @@ type ControllerContext struct { ResyncPeriod func() time.Duration } +// IsControllerEnabled checks if the context's controllers enabled or not func (c ControllerContext) IsControllerEnabled(name string) bool { return genericcontrollermanager.IsControllerEnabled(name, ControllersDisabledByDefault, c.ComponentConfig.Generic.Controllers) } @@ -337,6 +342,7 @@ func (c ControllerContext) IsControllerEnabled(name string) bool { // The bool indicates whether the controller was enabled. type InitFunc func(ctx ControllerContext) (debuggingHandler http.Handler, enabled bool, err error) +// KnownControllers returns all known controllers's name func KnownControllers() []string { ret := sets.StringKeySet(NewControllerInitializers(IncludeCloudLoops)) @@ -351,6 +357,7 @@ func KnownControllers() []string { return ret.List() } +// ControllersDisabledByDefault is the set of controllers which is disabled by default var ControllersDisabledByDefault = sets.NewString( "bootstrapsigner", "tokencleaner", @@ -405,8 +412,9 @@ func NewControllerInitializers(loopMode ControllerLoopMode) map[string]InitFunc return controllers } +// GetAvailableResources gets the map which contains all available resources of the apiserver // TODO: In general, any controller checking this needs to be dynamic so -// users don't have to restart their controller manager if they change the apiserver. +// users don't have to restart their controller manager if they change the apiserver. // Until we get there, the structure here needs to be exposed for the construction of a proper ControllerContext. func GetAvailableResources(clientBuilder controller.ControllerClientBuilder) (map[schema.GroupVersionResource]bool, error) { client := clientBuilder.ClientOrDie("controller-discovery") @@ -484,6 +492,7 @@ func CreateControllerContext(s *config.CompletedConfig, rootClientBuilder, clien return ctx, nil } +// StartControllers starts a set of controllers with a specified ControllerContext func StartControllers(ctx ControllerContext, startSATokenController InitFunc, controllers map[string]InitFunc, unsecuredMux *mux.PathRecorderMux) error { // Always start the SA token controller first using a full-power client, since it needs to mint tokens for the rest // If this fails, just return here and fail since other controllers won't be able to get credentials. diff --git a/cmd/kube-controller-manager/app/import_known_versions.go b/cmd/kube-controller-manager/app/import_known_versions.go index f7f3cb894ec..e92bd0dbe31 100644 --- a/cmd/kube-controller-manager/app/import_known_versions.go +++ b/cmd/kube-controller-manager/app/import_known_versions.go @@ -14,12 +14,13 @@ See the License for the specific language governing permissions and limitations under the License. */ +// Package app imports the API groups that the client will support // TODO: Remove this file when namespace controller and garbage collector // stops using legacyscheme.Registry.RESTMapper() package app -// These imports are the API groups the client will support. import ( + // These imports are the API groups the client will support. _ "k8s.io/kubernetes/pkg/apis/apps/install" _ "k8s.io/kubernetes/pkg/apis/authentication/install" _ "k8s.io/kubernetes/pkg/apis/authorization/install" diff --git a/cmd/kube-controller-manager/app/plugins.go b/cmd/kube-controller-manager/app/plugins.go index 0c9f8b3cf81..ff66bfed58c 100644 --- a/cmd/kube-controller-manager/app/plugins.go +++ b/cmd/kube-controller-manager/app/plugins.go @@ -27,6 +27,7 @@ import ( // Cloud providers cloudprovider "k8s.io/cloud-provider" + // ensure the cloud providers are installed _ "k8s.io/kubernetes/pkg/cloudprovider/providers" // Volume plugins "k8s.io/kubernetes/pkg/volume" diff --git a/hack/.golint_failures b/hack/.golint_failures index 9c138bef309..73f562a0ae9 100644 --- a/hack/.golint_failures +++ b/hack/.golint_failures @@ -1,6 +1,5 @@ cmd/cloud-controller-manager/app/apis/config/v1alpha1 cmd/kube-apiserver/app -cmd/kube-controller-manager/app cmd/kubeadm/app/apis/kubeadm/v1beta1 cmd/kubeadm/app/apis/kubeadm/v1beta2 pkg/apis/abac/latest diff --git a/test/integration/apiserver/admissionwebhook/broken_webhook_test.go b/test/integration/apiserver/admissionwebhook/broken_webhook_test.go index 7a78ca2b293..7a08d4cd4da 100644 --- a/test/integration/apiserver/admissionwebhook/broken_webhook_test.go +++ b/test/integration/apiserver/admissionwebhook/broken_webhook_test.go @@ -150,7 +150,7 @@ func exampleDeployment(name string) *appsv1.Deployment { func brokenWebhookConfig(name string) *admissionregistrationv1beta1.ValidatingWebhookConfiguration { var path string - var failurePolicy = admissionregistrationv1beta1.Fail + failurePolicy := admissionregistrationv1beta1.Fail return &admissionregistrationv1beta1.ValidatingWebhookConfiguration{ ObjectMeta: metav1.ObjectMeta{ Name: name,