controller-runtime 的create函数
controller-runtime 的 `create` 函数用于根据 Kubernetes 资源类型(例如 `Deployment`、`Pod`、`Service`)创建相应的控制器对象。
函数签名如下:
壁纸可爱go
func newControllerBuilder() *controllerBuilder关于元宵的诗句
type controllerBuilder struct {
scheme *runtime.Scheme
mgr Manager
ctrlName string
controllerEvents []string
rateLimiter workqueue.RateLimiterbillionaire
options builderOptions
startupHooks []func(<-chan struct{}) error
customReconcilers []CustomReconciler
}
func (c *controllerBuilder) For(object runtime.Object, b ControllerBuilder) *controllerBuilder
心理的英语func (c *controllerBuilder) Owns(object runtime.Object, b ControllerBuilder) *controllerBuilder
func (c *controllerBuilder) Watches(source source.Kind, controller Controller) *controllerBuilder
作文美好的回忆
秋天的夜晚作文func (c *controllerBuilder) WatchesAs(source source.Kind, obj runtime.Object, controller Controller) *controllerBuilder
白带变多
func (c *controllerBuilder) WithEventFilter(p predicate.Predicate) *controllerBuilder
func (c *controllerBuilder) WithOptions(opts Options) *controllerBuilder
func (c *controllerBuilder) WithInitialEvent(initialEvent watch.Event) *controllerBuilder
func (c *controllerBuilder) WithCustomReconcilers(customReconcilers []CustomReconciler) *controllerBuilder
func (c *controllerBuilder) Complete(controller Controller) error天龙八部长久服发布网
其中,`newControllerBuilder()` 返回一个新的 `controllerBuilder` 对象,该对象用于配置控制器。
`For()` 和 `Owns()` 方法用于指定控制器关注的资源类型,区别在于 `For()` 会监听并处理该资源类型的所有对象,而 `Owns()` 只会监听并处理该资源类型的某些对象(如该对象的
ownerReference 中包含该控制器的任意一个对象的)。
`Watches()` 和 `WatchesAs()` 方法用于指定控制器监听的事件源,其中 `Watches()` 用于监听某个资源类型的所有对象,`WatchesAs()` 则可以监听任意类型的事件源,需要在方法参数中传递对应的 `runtime.Object` 对象。
`WithOptions()` 方法用于设置控制器的选项,如 `Reconciler`、`MaxConcurrentReconciles` 等。
`WithEventFilter()` 方法用于添加过滤器,在接收到事件时可以选择过滤掉一部分事件。
`Complete()` 方法用于通过配置后创建与配置匹配的控制器对象,参数为实现了 `Reconciler` 接口的自定义控制器对象。