clusters

package
v0.14.1 Latest Latest
Warning

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

Go to latest
Published: May 25, 2022 License: Apache-2.0 Imports: 22 Imported by: 6

Documentation

Index

Constants

View Source
const (
	// TestResourceLabel is a label used on any resources to indicate that they
	// were created as part of a testing run and can be cleaned up in bulk based
	// on the value provided to the label.
	TestResourceLabel = "created-by-ktf"
)

Variables

This section is empty.

Functions

func ApplyYAML added in v0.9.0

func ApplyYAML(ctx context.Context, cluster Cluster, yaml string) error

ApplyYAML applies a given YAML manifest to the cluster provided

func CleanupGeneratedResources added in v0.9.0

func CleanupGeneratedResources(ctx context.Context, cluster Cluster, creatorID string) error

CleanupGeneratedResources cleans up all resources created by the given creator ID.

func CreateNamespace added in v0.6.3

func CreateNamespace(ctx context.Context, cluster Cluster, namespace string) error

CreateNamespace creates a new namespace in the given cluster provided a name.

func DeleteIngress added in v0.6.1

func DeleteIngress(ctx context.Context, c Cluster, namespace string, ingress runtime.Object) (err error)

DeleteIngress is a helper and function to delete an Ingress object to a cluster handling the version of the Ingress object for the caller so they don't have to. TODO: once we stop supporting old Kubernetes versions <1.19 we can remove this.

func DeleteYAML added in v0.10.0

func DeleteYAML(ctx context.Context, cluster Cluster, yaml string) error

DeleteYAML deletes a given YAML manifest on the cluster provided

func DeployIngress added in v0.6.1

func DeployIngress(ctx context.Context, c Cluster, namespace string, ingress runtime.Object) (err error)

DeployIngress is a helper and function to deploy an Ingress object to a cluster handling the version of the Ingress object for the caller so they don't have to. TODO: once we stop supporting old Kubernetes versions <1.19 we can remove this.

func GenerateNamespace added in v0.9.0

func GenerateNamespace(ctx context.Context, cluster Cluster, creatorID string) (*corev1.Namespace, error)

GenerateNamespace creates a transient testing namespace given the cluster to create it on and a creator ID. The namespace will be given a UUID for a name, and the creatorID will be applied to the TestResourceLabel for automated cleanup.

func GetIngressLoadbalancerStatus added in v0.6.1

func GetIngressLoadbalancerStatus(ctx context.Context, c Cluster, namespace string, ingress runtime.Object) (*corev1.LoadBalancerStatus, error)

GetIngressLoadbalancerStatus is a partner to the above DeployIngress function which will given an Ingress object provided by the caller determine the version and pull a fresh copy of the current LoadBalancerStatus for that Ingress object without the caller needing to be aware of which version of Ingress they're using. TODO: once we stop supporting old Kubernetes versions <1.19 we can remove this.

func KustomizeDeployForCluster added in v0.9.0

func KustomizeDeployForCluster(ctx context.Context, cluster Cluster, kustomizeURL string) error

KustomizeDeployForCluster applies a given kustomizeURL to the provided cluster

func TempKubeconfig added in v0.9.0

func TempKubeconfig(cluster Cluster) (*os.File, error)

TempKubeconfig produces a kubeconfig tempfile given a cluster. the caller is responsible for cleaning up the file if they want it removed.

func WaitForAddonDependencies added in v0.11.0

func WaitForAddonDependencies(ctx context.Context, cluster Cluster, addon Addon) error

WaitForAddonDependencies is a convenience method to wait for all dependencies of a given addon to be ready on the cluster according to a given context.

func WaitForCondition added in v0.10.0

func WaitForCondition(ctx context.Context, cluster Cluster, namespace, objectType, object, condition string, seconds int) error

WaitForCondition waits for a condition to be true for an object on the cluster given that objects namespace, type and name.

Types

type Addon

type Addon interface {
	// Name indicates the unique name of the Addon
	Name() AddonName

	// Dependencies indicates any addons this addon is dependent on in order
	// for operations to succeed.
	Dependencies(ctx context.Context, cluster Cluster) []AddonName

	// Deploy deploys the addon component to a provided cluster.
	// Addon implementations are responsible for waiting for their
	// own dependencies to deploy as needed.
	Deploy(ctx context.Context, cluster Cluster) error

	// Delete removes the addon component from the given cluster.
	Delete(ctx context.Context, cluster Cluster) error

	// Ready is a non-blocking call which checks the status of the addon on the
	// cluster and reports any runtime.Objects which are still unresolved.
	// If all components are ready, this method will return [], true, nil.
	// If the addon has failed unrecoverably, it will provide an error.
	Ready(ctx context.Context, cluster Cluster) (waitingForObjects []runtime.Object, ready bool, err error)
}

Addon is a loadable component to extend the functionality of a Cluster.

type AddonName

type AddonName string

AddonName indicates a unique name for Addons which can be deployed to Clusters.

type Addons

type Addons map[AddonName]Addon

Addons is a map type for collecting a list of unique Addons.

type Cleaner added in v0.14.1

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

Cleaner holds namespaces and objects for later cleanup. This is generally used during integration tests to clean up test resources.

func NewCleaner added in v0.14.1

func NewCleaner(cluster Cluster) *Cleaner

NewCleaner provides a new initialized *Cleaner object.

func (*Cleaner) Add added in v0.14.1

func (c *Cleaner) Add(obj client.Object)

func (*Cleaner) AddNamespace added in v0.14.1

func (c *Cleaner) AddNamespace(namespace *corev1.Namespace)

func (*Cleaner) Cleanup added in v0.14.1

func (c *Cleaner) Cleanup(ctx context.Context) error

type Cluster

type Cluster interface {
	// Name indicates the unique name of the running cluster.
	Name() string

	// Type indicates the type of Kubernetes Cluster (e.g. Kind, GKE, e.t.c.)
	Type() Type

	// Version indicates the Kubernetes server version of the cluster.
	Version() (semver.Version, error)

	// Client is the configured *kubernetes.Clientset which can be used to access the Cluster's API
	Client() *kubernetes.Clientset

	// Config provides the *rest.Config for the cluster which is convenient for initiating custom kubernetes.Clientsets.
	Config() *rest.Config

	// Cleanup performance any cleanup and teardown needed to destroy the cluster.
	Cleanup(ctx context.Context) error

	// GetAddon retrieves and Addon object from the cluster if that addon was previously loaded.
	GetAddon(name AddonName) (Addon, error)

	// ListAddons lists the addon components currently loaded into the cluster.
	ListAddons() []Addon

	// DeployAddon deploys a new addon component to the cluster.
	DeployAddon(ctx context.Context, addon Addon) error

	// DeleteAddon removes an existing cluster Addon.
	DeleteAddon(ctx context.Context, addon Addon) error
}

Cluster objects represent a running Kubernetes cluster.

type Type

type Type string

Type indicates the type of Kubernetes cluster (e.g. Kind, GKE, e.t.c.)

Directories

Path Synopsis
addons
types
gke

Jump to

Keyboard shortcuts

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