Skip to content

Commit 0c3fd14

Browse files
ytsarevhasbro17
authored andcommitted
Extend 3rd party resource management documentation (#2356)
* Explicitly mention example code location of `cmd/manager/main.go` * Provide example of registration of 3rd party resource which does not support `AddToScheme()` function
1 parent 93f23d7 commit 0c3fd14

File tree

1 file changed

+44
-1
lines changed

1 file changed

+44
-1
lines changed

doc/user-guide.md

Lines changed: 44 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -449,7 +449,8 @@ To add a 3rd party resource to an operator, you must add it to the Manager's sch
449449

450450
#### Register with the Manager's scheme
451451

452-
Call the `AddToScheme()` function for your 3rd party resource and pass it the Manager's scheme via `mgr.GetScheme()`.
452+
Call the `AddToScheme()` function for your 3rd party resource and pass it the Manager's scheme via `mgr.GetScheme()`
453+
in `cmd/manager/main.go`.
453454

454455
Example:
455456
```go
@@ -478,6 +479,47 @@ func main() {
478479
}
479480
```
480481

482+
##### If 3rd party resource does not have `AddToScheme()` function
483+
484+
Use the [SchemeBuilder][scheme_builder] package from controller-runtime to initialize a new scheme builder that can be used to register the 3rd party resource with the manager's scheme.
485+
486+
Example of registering `DNSEndpoints` 3rd party resource from `external-dns`:
487+
488+
```go
489+
import (
490+
...
491+
"k8s.io/apimachinery/pkg/runtime/schema"
492+
"sigs.k8s.io/controller-runtime/pkg/scheme"
493+
...
494+
// DNSEndoints
495+
externaldns "github.com/kubernetes-incubator/external-dns/endpoint"
496+
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
497+
)
498+
499+
func main() {
500+
....
501+
502+
log.Info("Registering Components.")
503+
504+
schemeBuilder := &scheme.Builder{GroupVersion: schema.GroupVersion{Group: "externaldns.k8s.io", Version: "v1alpha1"}}
505+
schemeBuilder.Register(&externaldns.DNSEndpoint{}, &externaldns.DNSEndpointList{})
506+
if err := schemeBuilder.AddToScheme(mgr.GetScheme()); err != nil {
507+
log.Error(err, "")
508+
os.Exit(1)
509+
}
510+
511+
....
512+
513+
// Setup all Controllers
514+
if err := controller.AddToManager(mgr); err != nil {
515+
log.Error(err, "")
516+
os.Exit(1)
517+
}
518+
}
519+
```
520+
521+
522+
481523
**NOTES:**
482524

483525
* After adding new import paths to your operator project, run `go mod vendor` if a `vendor/` directory is present in the root of your project directory to fulfill these dependencies.
@@ -694,3 +736,4 @@ When the operator is not running in a cluster, the Manager will return an error
694736
[metrics_doc]: ./user/metrics/README.md
695737
[quay_link]: https://quay.io
696738
[multi-namespaced-cache-builder]: https://godoc.org/github.com/kubernetes-sigs/controller-runtime/pkg/cache#MultiNamespacedCacheBuilder
739+
[scheme_builder]: https://godoc.org/sigs.k8s.io/controller-runtime/pkg/scheme#Builder

0 commit comments

Comments
 (0)