Documentation ¶
Index ¶
- Constants
- func ApplyManifestByURL(ctx context.Context, cluster Cluster, url string) error
- func ApplyManifestByYAML(ctx context.Context, cluster Cluster, yaml string) error
- func CleanupGeneratedResources(ctx context.Context, cluster Cluster, creatorID string) error
- func CreateNamespace(ctx context.Context, cluster Cluster, namespace string) error
- func DeleteIngress(ctx context.Context, c Cluster, namespace string, ingress runtime.Object) (err error)
- func DeleteManifestByURL(ctx context.Context, cluster Cluster, url string) error
- func DeleteManifestByYAML(ctx context.Context, cluster Cluster, yaml string) error
- func DeployIngress(ctx context.Context, c Cluster, namespace string, ingress runtime.Object) (err error)
- func GenerateNamespace(ctx context.Context, cluster Cluster, creatorID string) (*corev1.Namespace, error)
- func GetIngressLoadbalancerStatus(ctx context.Context, c Cluster, namespace string, ingress runtime.Object) (*corev1.LoadBalancerStatus, error)
- func KustomizeDeleteForCluster(ctx context.Context, cluster Cluster, kustomizeURL string) error
- func KustomizeDeployForCluster(ctx context.Context, cluster Cluster, kustomizeURL string) error
- func TempKubeconfig(cluster Cluster) (*os.File, error)
- func WaitForAddonDependencies(ctx context.Context, cluster Cluster, addon Addon) error
- func WaitForCondition(ctx context.Context, cluster Cluster, ...) error
- type Addon
- type AddonName
- type Addons
- type Cleaner
- type Cluster
- type Type
Constants ¶
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 ApplyManifestByURL ¶ added in v0.17.0
ApplyManifestByURL applies a given manifest URL to the cluster provided
func ApplyManifestByYAML ¶ added in v0.17.0
ApplyManifestByYAML applies a given YAML manifest to the cluster provided
func CleanupGeneratedResources ¶ added in v0.9.0
CleanupGeneratedResources cleans up all resources created by the given creator ID.
func CreateNamespace ¶ added in v0.6.3
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 DeleteManifestByURL ¶ added in v0.17.0
DeleteManifestByURL deletes a given manifest URL on the cluster provided
func DeleteManifestByYAML ¶ added in v0.17.0
DeleteManifestByYAML 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 KustomizeDeleteForCluster ¶ added in v0.14.2
KustomizeDeleteForCluster deletes the provided kustomize manafests from the cluster
func KustomizeDeployForCluster ¶ added in v0.9.0
KustomizeDeployForCluster applies a given kustomizeURL to the provided cluster
func TempKubeconfig ¶ added in v0.9.0
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
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.
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 // DumpDiagnostics gathers and returns diagnostic information for an addon. Its return map is a map of string // filenames to file content byte slices. DumpDiagnostics(ctx context.Context, cluster Cluster) (map[string][]byte, 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 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
NewCleaner provides a new initialized *Cleaner object.
func (*Cleaner) AddManifest ¶ added in v0.18.0
func (*Cleaner) AddNamespace ¶ added in v0.14.1
func (*Cleaner) DumpDiagnostics ¶ added in v0.17.0
DumpDiagnostics gathers a wide range of diagnostic information from the test cluster, to provide a snapshot of it at a given time for offline debugging. It uses the provided context and writes the meta string to meta.txt to identify the result set.
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.