Documentation ¶
Overview ¶
Package envtest provides libraries for integration testing by starting a local control plane
Control plane binaries (etcd and kube-apiserver) are loaded by default from /usr/local/kubebuilder/bin. This can be overridden by setting the KUBEBUILDER_ASSETS environment variable, or by directly creating a ControlPlane for the Environment to use.
Environment can also be configured to work with an existing cluster, and simply load CRDs and provide client configuration.
Index ¶
- Constants
- func CreateCRDs(config *rest.Config, crds []runtime.Object) error
- func InstallCRDs(config *rest.Config, options CRDInstallOptions) ([]runtime.Object, error)
- func UninstallCRDs(config *rest.Config, options CRDInstallOptions) error
- func WaitForCRDs(config *rest.Config, crds []runtime.Object, options CRDInstallOptions) error
- type CRDInstallOptions
- type Environment
Constants ¶
const ( StartTimeout = 60 StopTimeout = 60 )
It's possible to override some defaults, by setting the following environment variables:
USE_EXISTING_CLUSTER (boolean): if set to true, envtest will use an existing cluster TEST_ASSET_KUBE_APISERVER (string): path to the api-server binary to use TEST_ASSET_ETCD (string): path to the etcd binary to use TEST_ASSET_KUBECTL (string): path to the kubectl binary to use KUBEBUILDER_ASSETS (string): directory containing the binaries to use (api-server, etcd and kubectl). Defaults to /usr/local/kubebuilder/bin. KUBEBUILDER_CONTROLPLANE_START_TIMEOUT (string supported by time.ParseDuration): timeout for test control plane to start. Defaults to 20s. KUBEBUILDER_CONTROLPLANE_STOP_TIMEOUT (string supported by time.ParseDuration): timeout for test control plane to start. Defaults to 20s. KUBEBUILDER_ATTACH_CONTROL_PLANE_OUTPUT (boolean): if set to true, the control plane's stdout and stderr are attached to os.Stdout and os.Stderr
Variables ¶
This section is empty.
Functions ¶
func CreateCRDs ¶
CreateCRDs creates the CRDs
func InstallCRDs ¶
InstallCRDs installs a collection of CRDs into a cluster by reading the crd yaml files from a directory
func UninstallCRDs ¶ added in v0.5.0
func UninstallCRDs(config *rest.Config, options CRDInstallOptions) error
UninstallCRDs uninstalls a collection of CRDs by reading the crd yaml files from a directory
func WaitForCRDs ¶
WaitForCRDs waits for the CRDs to appear in discovery
Types ¶
type CRDInstallOptions ¶
type CRDInstallOptions struct { // Paths is a list of paths to the directories or files containing CRDs Paths []string // CRDs is a list of CRDs to install CRDs []runtime.Object // ErrorIfPathMissing will cause an error if a Path does not exist ErrorIfPathMissing bool // MaxTime is the max time to wait MaxTime time.Duration // PollInterval is the interval to check PollInterval time.Duration // CleanUpAfterUse will cause the CRDs listed for installation to be // uninstalled when terminating the test environment. // Defaults to false. CleanUpAfterUse bool }
CRDInstallOptions are the options for installing CRDs
type Environment ¶
type Environment struct { // ControlPlane is the ControlPlane including the apiserver and etcd ControlPlane integration.ControlPlane // Config can be used to talk to the apiserver. It's automatically // populated if not set using the standard controller-runtime config // loading. Config *rest.Config // CRDInstallOptions are the options for installing CRDs. CRDInstallOptions CRDInstallOptions // ErrorIfCRDPathMissing provides an interface for the underlying // CRDInstallOptions.ErrorIfPathMissing. It prevents silent failures // for missing CRD paths. ErrorIfCRDPathMissing bool // CRDs is a list of CRDs to install. // If both this field and CRDs field in CRDInstallOptions are specified, the // values are merged. CRDs []runtime.Object // CRDDirectoryPaths is a list of paths containing CRD yaml or json configs. // If both this field and Paths field in CRDInstallOptions are specified, the // values are merged. CRDDirectoryPaths []string // UseExisting indicates that this environments should use an // existing kubeconfig, instead of trying to stand up a new control plane. // This is useful in cases that need aggregated API servers and the like. UseExistingCluster *bool // ControlPlaneStartTimeout is the maximum duration each controlplane component // may take to start. It defaults to the KUBEBUILDER_CONTROLPLANE_START_TIMEOUT // environment variable or 20 seconds if unspecified ControlPlaneStartTimeout time.Duration // ControlPlaneStopTimeout is the maximum duration each controlplane component // may take to stop. It defaults to the KUBEBUILDER_CONTROLPLANE_STOP_TIMEOUT // environment variable or 20 seconds if unspecified ControlPlaneStopTimeout time.Duration // KubeAPIServerFlags is the set of flags passed while starting the api server. KubeAPIServerFlags []string // AttachControlPlaneOutput indicates if control plane output will be attached to os.Stdout and os.Stderr. // Enable this to get more visibility of the testing control plane. // It respect KUBEBUILDER_ATTACH_CONTROL_PLANE_OUTPUT environment variable. AttachControlPlaneOutput bool }
Environment creates a Kubernetes test environment that will start / stop the Kubernetes control plane and install extension APIs
func (*Environment) Start ¶
func (te *Environment) Start() (*rest.Config, error)
Start starts a local Kubernetes server and updates te.ApiserverPort with the port it is listening on
func (*Environment) Stop ¶
func (te *Environment) Stop() error
Stop stops a running server. Previously installed CRDs, as listed in CRDInstallOptions.CRDs, will be uninstalled if CRDInstallOptions.CleanUpAfterUse are set to true.