kube-controller-manager
kube-controller-manager is a binary that runs controllers, which are control loops shipped with Kubernetes. Examples of controllers are the Deployment Controller, Service Controller, Job Controller, Namespace Controller, ReplicaSet Controller, Endpoints Controller, and so on.
1. Introduction
This article give you an overview of kube-controller-manager source code, which including parameter parsing and initialization of various types of controllers. There is no detailed logic for the specific controller. The controllers are located in the kubernetes/pkg/controller module, which will be analyzed in subsequent articles.
The code structure of the kube-controller-manager is as follows:

The following code snippets are based on the Kubernetes v1.24 version.
The source code is at https://github.com/kubernetes/kubernetes/blob/release-1.24/cmd/kube-controller-manager/controller-manager.go
2. Main Function
The main function of kube-controller-manager
is very clean.

3. NewControllerManagerCommand
NewControllerManagerCommand creates a *cobra.Command object with default parameters.

4. Run
Run runs the kube-controller-manager
.

The core functions are CreateControllerContext, StartControllers and NewControllerInitializers.
4.1 CreateControllerContext
CreateControllerContext creates a context struct containing references to resources needed by the controllers such as the cloud provider and clientBuilder.

4.2 NewControllerInitializers
NewControllerInitializers is a public map of named controller groups paired to their InitFunc. This allows for structured downstream composition and subdivision.

4.3 StartControllers
StartControllers starts a set of controllers with a specified ControllerContext.

4.4 InitFunc
InitFunc is used to launch a particular controller. It returns a controller that can optionally implement other interfaces so that the controller manager can support the requested features. The bool indicates whether the controller was enabled.
type InitFunc func(ctx context.Context, controllerCtx ControllerContext) (controller controller.Interface, enabled bool, err error)
5. Some Start Controller Functions
5. 1 startJobController
startJobController creates a new JobController and runs the goroutine responsible for watching and syncing Jobs.

5.2 startDeploymentController
startDeploymentController creates a new DeploymentController and runs the goroutine responsible for watching and syncing Deployments.

5.3 startReplicaSetController
startReplicaSetController configures a new ReplicaSetController and begins watching and syncing ReplicaSets.

Wrap up
The following diagram shows an overview flow of kube-controller-manager:
