@@ -190,6 +190,23 @@ For this example replace the generated controller file `controllers/memcached_co
190190** Note** : The next two subsections explain how the controller watches resources and how the reconcile loop is triggered.
191191If you'd like to skip this section, head to the [ deploy] ( #run-the-operator ) section to see how to run the operator.
192192
193+ ### Setup a Recorder
194+
195+ First, add a recorder when you initialize the Memcached reconciler in ` main.go ` .
196+
197+ ``` Go
198+ if err = (&controllers.MemcachedReconciler {
199+ Client : mgr.GetClient (),
200+ Scheme : mgr.GetScheme (),
201+ Recorder : mgr.GetEventRecorderFor (" memcached-controller" ),
202+ }).SetupWithManager (mgr); err != nil {
203+ setupLog.Error (err, " unable to create controller" , " controller" , " Memcached" )
204+ os.Exit (1 )
205+ }
206+ ```
207+
208+ This recorder will be used within the reconcile method of the controller to emit events.
209+
193210### Resources watched by the Controller
194211
195212The ` SetupWithManager() ` function in ` controllers/memcached_controller.go ` specifies how the controller is built to watch a CR and other resources that are owned and managed by that controller.
@@ -490,56 +507,56 @@ Next, check out the following:
4905071 . The [ advanced topics] [ advanced-topics ] doc for more use cases and under-the-hood details.
491508
492509
493- [ legacy-quickstart-doc ] :https://v0-19-x.sdk.operatorframework.io/docs/golang/legacy/quickstart/
494- [ migration-guide ] :/docs/building-operators/golang/migration
495- [ install-guide ] :/docs/building-operators/golang/installation
496- [ image-reg-config ] :/docs/olm-integration/cli-overview#private-bundle-and-catalog-image-registries
497- [ enqueue_requests_from_map_func ] : https://pkg.go.dev/sigs.k8s.io/controller-runtime/pkg/handler#EnqueueRequestsFromMapFunc
498- [ event_handler_godocs ] : https://pkg.go.dev/sigs.k8s.io/controller-runtime/pkg/handler#hdr-EventHandlers
499- [ event_filtering ] :/docs/building-operators/golang/references/event-filtering/
500- [ controller_options ] : https://pkg.go.dev/sigs.k8s.io/controller-runtime/pkg/controller#Options
501- [ controller_godocs ] : https://pkg.go.dev/sigs.k8s.io/controller-runtime/pkg/controller
502- [ operator_scope ] :/docs/building-operators/golang/operator-scope/
503- [ kubebuilder_layout_doc ] :https://book.kubebuilder.io/cronjob-tutorial/basic-project.html
504- [ go_mod_wiki ] : https://github.com/golang/go/wiki/Modules
505- [ doc_client_api ] :/docs/building-operators/golang/references/client/
506- [ manager_go_doc ] : https://pkg.go.dev/sigs.k8s.io/controller-runtime/pkg/manager#Manager
507- [ request-go-doc ] : https://pkg.go.dev/sigs.k8s.io/controller-runtime/pkg/reconcile#Request
508- [ result_go_doc ] : https://pkg.go.dev/sigs.k8s.io/controller-runtime/pkg/reconcile#Result
509- [ multi-namespaced-cache-builder ] : https://pkg.go.dev/sigs.k8s.io/controller-runtime/pkg/cache#MultiNamespacedCacheBuilder
510- [ kubebuilder_entrypoint_doc ] : https://book.kubebuilder.io/cronjob-tutorial/empty-main.html
510+ [ API-groups ] :https://kubernetes.io/docs/concepts/overview/kubernetes-api/#api-groups
511+ [ activate_modules ] : https://github.com/golang/go/wiki/Modules#how-to-install-and-activate-module-support
512+ [ advanced-topics ] : /docs/building-operators/golang/advanced-topics/
511513[ api_terms_doc ] : https://book.kubebuilder.io/cronjob-tutorial/gvks.html
512- [ kb_controller_doc ] : https://book.kubebuilder.io/cronjob-tutorial/controller-overview.html
513- [ kb_api_doc ] : https://book.kubebuilder.io/cronjob-tutorial/new-api.html
514+ [ builder_godocs ] : https://pkg.go.dev/sigs.k8s.io/controller-runtime/pkg/builder#example-Builder
515+ [ conditionals ] : https://github.com/kubernetes/community/blob/master/contributors/devel/sig-architecture/api-conventions.md#typical-status-properties
516+ [ controller-runtime ] : https://github.com/kubernetes-sigs/controller-runtime
517+ [ controller_godocs ] : https://pkg.go.dev/sigs.k8s.io/controller-runtime/pkg/controller
518+ [ controller_options ] : https://pkg.go.dev/sigs.k8s.io/controller-runtime/pkg/controller#Options
514519[ controller_tools ] : https://sigs.k8s.io/controller-tools
515- [ doc-validation-schema ] : https://kubernetes.io/docs/tasks/extend-kubernetes/custom-resources/custom-resource-definitions/#specifying-a-structural-schema
516- [ generating-crd ] : https://book.kubebuilder.io/reference/generating-crd.html
517- [ markers ] : https://book.kubebuilder.io/reference/markers.html
518520[ crd-markers ] : https://book.kubebuilder.io/reference/markers/crd-validation.html
519- [ memcached_controller ] : https://github.com/operator-framework/operator-sdk/blob/latest/testdata/go/v3/memcached-operator/controllers/memcached_controller.go
520- [ builder_godocs ] : https://pkg.go.dev/sigs.k8s.io/controller-runtime/pkg/builder#example-Builder
521- [ activate_modules ] : https://github.com/golang/go/wiki/Modules#how-to-install-and-activate-module-support
522- [ advanced-topics ] : /docs/building-operators/golang/advanced-topics/
523521[ create_a_webhook ] : /docs/building-operators/golang/webhook
524- [ status_marker ] : https://book.kubebuilder.io/reference/generating-crd.html#status
525- [ status_subresource ] : https://kubernetes.io/docs/tasks/extend-kubernetes/custom-resources/custom-resource-definitions/#status-subresource
526- [ API-groups ] :https://kubernetes.io/docs/concepts/overview/kubernetes-api/#api-groups
527- [ legacy_CLI ] :https://v0-19-x.sdk.operatorframework.io/docs/cli/
528- [ role-based-access-control ] : https://cloud.google.com/kubernetes-engine/docs/how-to/role-based-access-control#iam-rolebinding-bootstrap
529- [ multigroup-kubebuilder-doc ] : https://book.kubebuilder.io/migration/multi-group.html
522+ [ deploy-image-plugin-doc ] : https://master.book.kubebuilder.io/plugins/deploy-image-plugin-v1-alpha.html
530523[ doc-bundle ] :https://github.com/operator-framework/operator-registry/blob/v1.16.1/docs/design/operator-bundle.md#operator-bundle
531- [ tutorial-bundle ] :/docs/olm-integration/tutorial-bundle
532- [ quickstart-bundle ] :/docs/olm-integration/quickstart-bundle
533524[ doc-olm ] :/docs/olm-integration/tutorial-bundle/#enabling-olm
534- [ conditionals ] : https://github.com/kubernetes/community/blob/master/contributors/devel/sig-architecture/api-conventions.md#typical-status-properties
525+ [ doc-validation-schema ] : https://kubernetes.io/docs/tasks/extend-kubernetes/custom-resources/custom-resource-definitions/#specifying-a-structural-schema
526+ [ doc_client_api ] :/docs/building-operators/golang/references/client/
527+ [ enqueue_requests_from_map_func ] : https://pkg.go.dev/sigs.k8s.io/controller-runtime/pkg/handler#EnqueueRequestsFromMapFunc
528+ [ event_filtering ] :/docs/building-operators/golang/references/event-filtering/
529+ [ event_handler_godocs ] : https://pkg.go.dev/sigs.k8s.io/controller-runtime/pkg/handler#hdr-EventHandlers
530+ [ generating-crd ] : https://book.kubebuilder.io/reference/generating-crd.html
531+ [ go_mod_wiki ] : https://github.com/golang/go/wiki/Modules
532+ [ image-reg-config ] :/docs/olm-integration/cli-overview#private-bundle-and-catalog-image-registries
533+ [ install-guide ] :/docs/building-operators/golang/installation
534+ [ k8s-doc-deleting-cascade ] : https://kubernetes.io/docs/concepts/architecture/garbage-collection/#cascading-deletion
535+ [ k8s-doc-owner-ref ] : https://kubernetes.io/docs/concepts/overview/working-with-objects/owners-dependents/
536+ [ kb-doc-gkvs ] : https://book.kubebuilder.io/cronjob-tutorial/gvks.html
537+ [ kb_api_doc ] : https://book.kubebuilder.io/cronjob-tutorial/new-api.html
538+ [ kb_controller_doc ] : https://book.kubebuilder.io/cronjob-tutorial/controller-overview.html
539+ [ kubebuilder_entrypoint_doc ] : https://book.kubebuilder.io/cronjob-tutorial/empty-main.html
540+ [ kubebuilder_layout_doc ] :https://book.kubebuilder.io/cronjob-tutorial/basic-project.html
535541[ kubernetes-extend-api ] : https://kubernetes.io/docs/tasks/extend-kubernetes/custom-resources/custom-resource-definitions/
536- [ reconcile-godoc ] : https://pkg.go.dev/sigs.k8s.io/controller-runtime/pkg/reconcile
537- [ rbac-k8s-doc ] : https://kubernetes.io/docs/reference/access-authn-authz/rbac/
542+ [ legacy-quickstart-doc ] :https://v0-19-x.sdk.operatorframework.io/docs/golang/legacy/quickstart/
543+ [ legacy_CLI ] :https://v0-19-x.sdk.operatorframework.io/docs/cli
544+ [ manager_go_doc ] : https://pkg.go.dev/sigs.k8s.io/controller-runtime/pkg/manager#Manager
545+ [ markers ] : https://book.kubebuilder.io/reference/markers.html
546+ [ memcached_controller ] : https://github.com/operator-framework/operator-sdk/blob/latest/testdata/go/v3/memcached-operator/controllers/memcached_controller.go
547+ [ migration-guide ] :/docs/building-operators/golang/migration
548+ [ multi-namespaced-cache-builder ] : https://pkg.go.dev/sigs.k8s.io/controller-runtime/pkg/cache#MultiNamespacedCacheBuilder
549+ [ multigroup-kubebuilder-doc ] : https://book.kubebuilder.io/migration/multi-group.html
538550[ olm-integration ] : /docs/olm-integration
539551[ openapi-validation ] : /docs/building-operators/golang/references/openapi-validation
540- [ controller-runtime ] : https://github.com/kubernetes-sigs/controller-runtime
541- [ kb-doc-gkvs ] : https://book.kubebuilder.io/cronjob-tutorial/gvks.html
552+ [ operator_scope ] :/docs/building-operators/golang/operator-scope/
553+ [ quickstart-bundle ] :/docs/olm-integration/quickstart-bundle
554+ [ rbac-k8s-doc ] : https://kubernetes.io/docs/reference/access-authn-authz/rbac/
542555[ rbac_markers ] : https://book.kubebuilder.io/reference/markers/rbac.html
543- [ k8s-doc-owner-ref ] : https://kubernetes.io/docs/concepts/overview/working-with-objects/owners-dependents/
544- [ k8s-doc-deleting-cascade ] : https://kubernetes.io/docs/concepts/architecture/garbage-collection/#cascading-deletion
545- [ deploy-image-plugin-doc ] : https://master.book.kubebuilder.io/plugins/deploy-image-plugin-v1-alpha.html
556+ [ reconcile-godoc ] : https://pkg.go.dev/sigs.k8s.io/controller-runtime/pkg/reconcile
557+ [ request-go-doc ] : https://pkg.go.dev/sigs.k8s.io/controller-runtime/pkg/reconcile#Request
558+ [ result_go_doc ] : https://pkg.go.dev/sigs.k8s.io/controller-runtime/pkg/reconcile#Result
559+ [ role-based-access-control ] : https://cloud.google.com/kubernetes-engine/docs/how-to/role-based-access-control#iam-rolebinding-bootstrap
560+ [ status_marker ] : https://book.kubebuilder.io/reference/generating-crd.html#status
561+ [ status_subresource ] : https://kubernetes.io/docs/tasks/extend-kubernetes/custom-resources/custom-resource-definitions/#status-subresource
562+ [ tutorial-bundle ] :/docs/olm-integration/tutorial-bundle
0 commit comments