kubebuilder 构建控制器说明点
发布于: 3 小时前
在 调谐器 内部,我们可以通过 Get,List 方法获得其他类型的对象
// SetupWithManager sets up the controller with the Manager.
func (r *GuestbookReconciler) SetupWithManager(mgr ctrl.Manager) error {
return ctrl.NewControllerManagedBy(mgr).
For(&webappv1beta1.Guestbook{}).
Complete(r)
}
func (r *GuestbookReconciler) Reconcile(ctx context.Context, req ctrl.Request) (ctrl.Result, error) {
_ = r.Log.WithValues("guestbook", req.NamespacedName)
// your logic here
// 此处得到 CRD 对象的通知
r.Log.Info("object", "namespace", req.NamespacedName.Namespace)
r.Log.Info("object", "name", req.NamespacedName.Name)
// var g webappv1beta1.Guestbook
// err := r.Get(ctx, req.NamespacedName, &g)
// 此处 我们获得 特定 ns 下的所有 POD 对象
podItems := &v1.PodList{Items: []v1.Pod{}}
r.List(ctx, podItems, client.InNamespace("volcano-system"))
for _, pod := range podItems.Items {
r.Log.Info(pod.Name)
}
return ctrl.Result{}, nil
}
复制代码
当 想关心 其他对象的通知时,可以利用 Watch 添加
// SetupWithManager sets up the controller with the Manager.
func (r *GuestbookReconciler) SetupWithManager(mgr ctrl.Manager) error {
return ctrl.NewControllerManagedBy(mgr).Watches(&source.Kind{Type: &v1.Pod{}}, &handler.EnqueueRequestForObject{}).
For(&webappv1beta1.Guestbook{}).
Complete(r)
}
// 这里 watch 了 POD 对象,,POD的变化都会同样通知到 Reconcile 内部
复制代码
当 想关心 对象中 某些字段或特定条件,可以使用 filter 过滤特定对象
func (r *GuestbookReconciler) SetupWithManager(mgr ctrl.Manager) error {
return ctrl.NewControllerManagedBy(mgr).Watches(&source.Kind{Type: &v1.Pod{}}, &handler.EnqueueRequestForObject{}).
For(&webappv1beta1.Guestbook{}, builder.WithPredicates(filterEvent{})).
Complete(r)
}
// 设置 for 的option , 实现 filter 接口,就可以控制特定 对象是否入队
// builder 的 watch, own 方法都支持 该 option
// 通过 WithEventFilter 可以设置全局的 event filter,
type filterEvent struct {
}
func (fe filterEvent) Create(event event.CreateEvent) bool {
return false
}
func (fe filterEvent) Delete(event event.DeleteEvent) bool {
return false
}
func (fe filterEvent) Update(event event.UpdateEvent) bool {
return false
}
func (fe filterEvent) Generic(event event.GenericEvent) bool {
return false
}
复制代码
划线
评论
复制
发布于: 3 小时前阅读数: 5
Geek_f24c45
关注
还未添加个人签名 2018.03.24 加入
还未添加个人简介
评论