@@ -190,6 +190,23 @@ For this example replace the generated controller file `controllers/memcached_co
190
190
** Note** : The next two subsections explain how the controller watches resources and how the reconcile loop is triggered.
191
191
If you'd like to skip this section, head to the [ deploy] ( #run-the-operator ) section to see how to run the operator.
192
192
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
+
193
210
### Resources watched by the Controller
194
211
195
212
The ` 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:
490
507
1 . The [ advanced topics] [ advanced-topics ] doc for more use cases and under-the-hood details.
491
508
492
509
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/
511
513
[ 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
514
519
[ 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
518
520
[ 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/
523
521
[ 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
530
523
[ 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
533
524
[ 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
535
541
[ 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
538
550
[ olm-integration ] : /docs/olm-integration
539
551
[ 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/
542
555
[ 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