controller-runtime: Index | Files

package scheme

import ""

Package scheme contains utilities for gradually building Schemes, which contain information associating Go types with Kubernetes groups, versions, and kinds.

Each API group should define a utility function called AddToScheme for adding its types to a Scheme:

// in package myapigroupv1...
var (
	SchemeGroupVersion = schema.GroupVersion{Group: "", Version: "v1"}
	SchemeBuilder = &scheme.Builder{GroupVersion: SchemeGroupVersion}
	AddToScheme = SchemeBuilder.AddToScheme

func init() {
	SchemeBuilder.Register(&MyType{}, &MyTypeList)
var (
	scheme *runtime.Scheme = runtime.NewScheme()

This also true of the built-in Kubernetes types. Then, in the entrypoint for your manager, assemble the scheme containing exactly the types you need. For instance, if our controller needs types from the core/v1 API group (e.g. Pod), plus types from

func init() {

func main() {
	mgr := controllers.NewManager(controllers.GetConfigOrDie(), manager.Options{
		Scheme: scheme,
	// ...


Package Files


type Builder Uses

type Builder struct {
    GroupVersion schema.GroupVersion

Builder builds a new Scheme for mapping go types to Kubernetes GroupVersionKinds.

func (*Builder) AddToScheme Uses

func (bld *Builder) AddToScheme(s *runtime.Scheme) error

AddToScheme adds all registered types to s.

func (*Builder) Build Uses

func (bld *Builder) Build() (*runtime.Scheme, error)

Build returns a new Scheme containing the registered types.

func (*Builder) Register Uses

func (bld *Builder) Register(object ...runtime.Object) *Builder

Register adds one or objects to the SchemeBuilder so they can be added to a Scheme. Register mutates bld.

func (*Builder) RegisterAll Uses

func (bld *Builder) RegisterAll(b *Builder) *Builder

RegisterAll registers all types from the Builder argument. RegisterAll mutates bld.

Package scheme imports 3 packages (graph) and is imported by 202 packages. Updated 2020-01-24. Refresh now. Tools for package owners.