Operator模式将运维知识编码到软件中,实现Kubernetes应用的自动化管理。 ## Operator原理 Operator = 自定义资源(CRD) + 控制器(Controller) ## 使用kubebuilder创建Operator ```bash kubebuilder init --domain my.domain --repo my.domain/guestbook kubebuilder create api --group webapp --version v1 --kind Guestbook ``` ## CRD定义 ```go type GuestbookSpec struct { Frontend ReplicasSpec `json:"frontend"` Backend ReplicasSpec `json:"backend"` } ``` ## 控制器逻辑 ```go func (r *GuestbookReconciler) Reconcile(ctx context.Context, req ctrl.Request) (ctrl.Result, error) { var guestbook webappv1.Guestbook if err := r.Get(ctx, req.NamespacedName, &guestbook); err != nil { return ctrl.Result{}, client.IgnoreNotFound(err) } // 调谐逻辑 return ctrl.Result{}, nil } ``` Operator模式让复杂应用的运维自动化成为可能。