crder

package module
v0.3.3 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Mar 6, 2024 License: Apache-2.0 Imports: 17 Imported by: 6

README

CRDer ("see-are-dee-er')

Helps you create CustomResourceDefinitions and install them into a cluster.

Example

package main

import (
	"github.com/ebauman/crder"
	v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
	"k8s.io/apimachinery/pkg/runtime/schema"
)

// usually present in pkg/apis/v1/example.org/types.g

type Foo struct {
	v1.TypeMeta
	Metadata v1.ObjectMeta

	Spec FooSpec
}

type FooSpec struct {
	Bar bool
}

func main() {
	c := NewCRD(Foo{})
	
	c.AddVersion("v1", Foo{}, func(cv *CRDVersion) {
		cv.
			IsServed(true).
			IsStored(true)
	})

	cfg, err := clientcmd.BuildConfigFromFlags("", "/path/to/kube/config/file")
	if err != nil {
		log.Fatal(err)
	}

	installable, err := c.ToV1CustomResourceDefinition()
	if err != nil {
		log.Fatal(err)
	}

	err = InstallUpdateCRDs(cfg, *installable)
	if err != nil {
		log.Fatal(err)
	}
}

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func InstallUpdateCRDs

func InstallUpdateCRDs(config *rest.Config, crds ...CRD) error

InstallUpdateCRDs used to install and update CRDs (also validatingwebhookconfigurations)

func InstallUpdateCRDsWithRecordedObjects added in v0.1.0

func InstallUpdateCRDsWithRecordedObjects(config *rest.Config, crds ...CRD) ([]client.Object, error)

InstallUpdateCRDsWithRecordedObjects same as InstallUpdateCRDs except this returns objects that were created or updated Mostly useful for tests where the test should clean up after itself

Types

type CRD

type CRD struct {
	// contains filtered or unexported fields
}

func NewCRD

func NewCRD(obj interface{}, group string, customize func(c *CRD)) *CRD

func (*CRD) AddValidation added in v0.1.0

func (c *CRD) AddValidation(name string, customizer validationCustomizer) *CRD

func (*CRD) AddVersion

func (c *CRD) AddVersion(version string, object interface{}, customize versionCustomizer) *CRD

func (*CRD) GetValidatingWebhooks added in v0.1.0

func (c *CRD) GetValidatingWebhooks() (*[]v12.ValidatingWebhookConfiguration, error)

func (*CRD) IsNamespaced

func (c *CRD) IsNamespaced(namespaced bool) *CRD

func (*CRD) OverrideGVK

func (c *CRD) OverrideGVK(group string, version string, kind string) *CRD

func (CRD) ToV1CustomResourceDefinition

func (c CRD) ToV1CustomResourceDefinition() (*apiextv1.CustomResourceDefinition, error)

func (*CRD) WithCategories

func (c *CRD) WithCategories(categories ...string) *CRD

func (*CRD) WithConversion

func (c *CRD) WithConversion(customizer conversionCustomizer) *CRD

func (*CRD) WithNames

func (c *CRD) WithNames(singular string, plural string) *CRD

func (*CRD) WithPreserveUnknown

func (c *CRD) WithPreserveUnknown()

WithPreserveUnknown sets preserveUnknown to true

func (*CRD) WithShortNames

func (c *CRD) WithShortNames(names ...string) *CRD

type Conversion added in v0.0.5

type Conversion struct {
	Webhook  bool
	Service  apiextv1.ServiceReference
	CABundle string
	URL      string
	Versions []string
}

func (*Conversion) StrategyNone added in v0.0.5

func (cc *Conversion) StrategyNone() *Conversion

func (*Conversion) StrategyWebhook added in v0.0.5

func (cc *Conversion) StrategyWebhook() *Conversion

func (*Conversion) WithCABundle added in v0.0.5

func (cc *Conversion) WithCABundle(bundle string) *Conversion

func (*Conversion) WithService added in v0.0.5

func (cc *Conversion) WithService(service apiextv1.ServiceReference) *Conversion

func (*Conversion) WithURL added in v0.0.5

func (cc *Conversion) WithURL(url string) *Conversion

func (*Conversion) WithVersions added in v0.0.5

func (cc *Conversion) WithVersions(versions ...string) *Conversion

type Validation added in v0.1.0

type Validation struct {
	// contains filtered or unexported fields
}

func (*Validation) AddRules added in v0.1.0

func (vv *Validation) AddRules(rules ...v1.RuleWithOperations) *Validation

func (*Validation) MatchPolicyEquivalent added in v0.1.0

func (vv *Validation) MatchPolicyEquivalent() *Validation

func (*Validation) MatchPolicyExact added in v0.1.0

func (vv *Validation) MatchPolicyExact() *Validation

func (*Validation) SetNamespaceSelector added in v0.1.0

func (vv *Validation) SetNamespaceSelector(selector v12.LabelSelector) *Validation

func (*Validation) SetObjectSelector added in v0.1.0

func (vv *Validation) SetObjectSelector(selector v12.LabelSelector) *Validation

func (*Validation) SideEffectNone added in v0.1.0

func (vv *Validation) SideEffectNone() *Validation

func (*Validation) SideEffectNoneOnDryRun added in v0.1.0

func (vv *Validation) SideEffectNoneOnDryRun() *Validation

func (*Validation) WithCABundle added in v0.1.0

func (vv *Validation) WithCABundle(bundle string) *Validation

func (*Validation) WithService added in v0.1.0

func (vv *Validation) WithService(service v1.ServiceReference) *Validation

func (*Validation) WithURL added in v0.1.0

func (vv *Validation) WithURL(url string) *Validation

func (*Validation) WithVersions added in v0.1.0

func (vv *Validation) WithVersions(versions ...string) *Validation

type Version added in v0.0.5

type Version struct {
	// contains filtered or unexported fields
}

func (*Version) IsDeprecated added in v0.0.5

func (cv *Version) IsDeprecated(deprecationWarning string) *Version

func (*Version) IsServed added in v0.0.5

func (cv *Version) IsServed(served bool) *Version

func (*Version) IsStored added in v0.0.5

func (cv *Version) IsStored(stored bool) *Version

func (Version) ToV1CustomResourceDefinitionVersion added in v0.0.5

func (cv Version) ToV1CustomResourceDefinitionVersion() (*apiextv1.CustomResourceDefinitionVersion, error)

func (*Version) WithCRDColumns added in v0.0.5

func (cv *Version) WithCRDColumns(cols ...apiextv1.CustomResourceColumnDefinition) *Version

func (*Version) WithColumn added in v0.0.5

func (cv *Version) WithColumn(name string, jsonPath string) *Version

func (*Version) WithObject added in v0.0.5

func (cv *Version) WithObject(obj interface{}) *Version

func (*Version) WithPreserveUnknown added in v0.3.0

func (cv *Version) WithPreserveUnknown() *Version

func (*Version) WithScale added in v0.0.5

func (cv *Version) WithScale(labelSelectorPath string, specReplicasPath string, statusReplicaPath string) *Version

func (*Version) WithStatus added in v0.0.5

func (cv *Version) WithStatus() *Version

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL