cluster

package
v0.35.0 Latest Latest
Warning

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

Go to latest
Published: Jun 14, 2024 License: Apache-2.0 Imports: 46 Imported by: 0

Documentation

Overview

Package cluster contains Zarf-specific cluster management functions.

Package cluster contains Zarf-specific cluster management functions.

Package cluster contains Zarf-specific cluster management functions.

Package cluster contains Zarf-specific cluster management functions.

Package cluster contains Zarf-specific cluster management functions.

Package cluster contains Zarf-specific cluster management functions.

Package cluster contains Zarf-specific cluster management functions.

Package cluster contains Zarf-specific cluster management functions.

Package cluster contains Zarf-specific cluster management functions.

Index

Constants

View Source
const (
	DistroIsUnknown       = "unknown"
	DistroIsK3s           = "k3s"
	DistroIsK3d           = "k3d"
	DistroIsKind          = "kind"
	DistroIsMicroK8s      = "microk8s"
	DistroIsEKS           = "eks"
	DistroIsEKSAnywhere   = "eksanywhere"
	DistroIsDockerDesktop = "dockerdesktop"
	DistroIsGKE           = "gke"
	DistroIsAKS           = "aks"
	DistroIsRKE2          = "rke2"
	DistroIsTKG           = "tkg"
)

List of supported distros via distro detection.

View Source
const (
	ZarfManagedByLabel      = "app.kubernetes.io/managed-by"
	ZarfNamespaceName       = "zarf"
	ZarfStateSecretName     = "zarf-state"
	ZarfStateDataKey        = "state"
	ZarfPackageInfoLabel    = "package-deploy-info"
	ZarfInitPackageInfoName = "zarf-package-init"
)

Zarf Cluster Constants.

View Source
const (
	ZarfRegistry = "REGISTRY"
	ZarfLogging  = "LOGGING"
	ZarfGit      = "GIT"
	ZarfInjector = "INJECTOR"

	ZarfInjectorName  = "zarf-injector"
	ZarfInjectorPort  = 5000
	ZarfRegistryName  = "zarf-docker-registry"
	ZarfRegistryPort  = 5000
	ZarfGitServerName = "zarf-gitea-http"
	ZarfGitServerPort = 3000
)

Zarf specific connect strings

View Source
const (
	PodResource = "pod"
	SvcResource = "svc"
)

Zarf Tunnel Configuration Constants.

View Source
const (
	// DefaultTimeout is the default time to wait for a cluster to be ready.
	DefaultTimeout = 30 * time.Second
)

Variables

This section is empty.

Functions

func AdoptZarfManagedLabels added in v0.34.0

func AdoptZarfManagedLabels(labels map[string]string) map[string]string

AdoptZarfManagedLabels adds & deletes the necessary labels that signal to Zarf it should manage a namespace

func MergeZarfState added in v0.34.0

func MergeZarfState(oldState *types.ZarfState, initOptions types.ZarfInitOptions, services []string) (*types.ZarfState, error)

MergeZarfState merges init options for provided services into the provided state to create a new state struct

func NewZarfManagedNamespace added in v0.34.0

func NewZarfManagedNamespace(name string) *corev1.Namespace

NewZarfManagedNamespace returns a corev1.Namespace with Zarf-managed labels

Types

type Cluster

type Cluster struct {
	*k8s.K8s
}

Cluster is a wrapper for the k8s package that provides Zarf-specific cluster management functions.

func NewCluster

func NewCluster() (*Cluster, error)

NewCluster creates a new Cluster instance and validates connection to the cluster by fetching the Kubernetes version.

func NewClusterWithWait

func NewClusterWithWait(ctx context.Context) (*Cluster, error)

NewClusterWithWait creates a new Cluster instance and waits for the given timeout for the cluster to be ready.

func (*Cluster) Connect

func (c *Cluster) Connect(ctx context.Context, target string) (*Tunnel, error)

Connect will establish a tunnel to the specified target.

func (*Cluster) ConnectToZarfRegistryEndpoint

func (c *Cluster) ConnectToZarfRegistryEndpoint(ctx context.Context, registryInfo types.RegistryInfo) (string, *Tunnel, error)

ConnectToZarfRegistryEndpoint determines if a registry endpoint is in cluster, and if so opens a tunnel to connect to it

func (*Cluster) ConnectTunnelInfo

func (c *Cluster) ConnectTunnelInfo(ctx context.Context, zt TunnelInfo) (*Tunnel, error)

ConnectTunnelInfo connects to the cluster with the provided TunnelInfo

func (*Cluster) DeleteZarfNamespace

func (c *Cluster) DeleteZarfNamespace(ctx context.Context) error

DeleteZarfNamespace deletes the Zarf namespace from the connected cluster.

func (*Cluster) DisableRegHPAScaleDown

func (c *Cluster) DisableRegHPAScaleDown(ctx context.Context) error

DisableRegHPAScaleDown disables the HPA scale down for the Zarf Registry.

func (*Cluster) EnableRegHPAScaleDown

func (c *Cluster) EnableRegHPAScaleDown(ctx context.Context) error

EnableRegHPAScaleDown enables the HPA scale down for the Zarf Registry.

func (*Cluster) GenerateGitPullCreds

func (c *Cluster) GenerateGitPullCreds(namespace, name string, gitServerInfo types.GitServerInfo) *corev1.Secret

GenerateGitPullCreds generates a secret containing the git credentials.

func (*Cluster) GenerateRegistryPullCreds

func (c *Cluster) GenerateRegistryPullCreds(namespace, name string, registryInfo types.RegistryInfo) *corev1.Secret

GenerateRegistryPullCreds generates a secret containing the registry credentials.

func (*Cluster) GetDeployedPackage

func (c *Cluster) GetDeployedPackage(ctx context.Context, packageName string) (deployedPackage *types.DeployedPackage, err error)

GetDeployedPackage gets the metadata information about the package name provided (if it exists in the cluster). We determine what packages have been deployed to the cluster by looking for specific secrets in the Zarf namespace.

func (*Cluster) GetDeployedZarfPackages

func (c *Cluster) GetDeployedZarfPackages(ctx context.Context) ([]types.DeployedPackage, error)

GetDeployedZarfPackages gets metadata information about packages that have been deployed to the cluster. We determine what packages have been deployed to the cluster by looking for specific secrets in the Zarf namespace. Returns a list of DeployedPackage structs and a list of errors.

func (*Cluster) GetInstalledChartsForComponent

func (c *Cluster) GetInstalledChartsForComponent(ctx context.Context, packageName string, component types.ZarfComponent) (installedCharts []types.InstalledChart, err error)

GetInstalledChartsForComponent returns any installed Helm Charts for the provided package component.

func (*Cluster) HandleDataInjection

func (c *Cluster) HandleDataInjection(ctx context.Context, wg *sync.WaitGroup, data types.ZarfDataInjection, componentPath *layout.ComponentPaths, dataIdx int)

HandleDataInjection waits for the target pod(s) to come up and inject the data into them todo: this currently requires kubectl but we should have enough k8s work to make this native now.

func (*Cluster) InitZarfState

func (c *Cluster) InitZarfState(ctx context.Context, initOptions types.ZarfInitOptions) error

InitZarfState initializes the Zarf state with the given temporary directory and init configs.

func (*Cluster) LoadZarfState

func (c *Cluster) LoadZarfState(ctx context.Context) (state *types.ZarfState, err error)

LoadZarfState returns the current zarf/zarf-state secret data or an empty ZarfState.

func (*Cluster) NewTunnel added in v0.35.0

func (c *Cluster) NewTunnel(namespace, resourceType, resourceName, urlSuffix string, local, remote int) (*Tunnel, error)

NewTunnel will create a new Tunnel struct. Note that if you use 0 for the local port, an open port on the host system will be selected automatically, and the Tunnel struct will be updated with the selected port.

func (*Cluster) PackageSecretNeedsWait

func (c *Cluster) PackageSecretNeedsWait(deployedPackage *types.DeployedPackage, component types.ZarfComponent, skipWebhooks bool) (needsWait bool, waitSeconds int, hookName string)

PackageSecretNeedsWait checks if a package component has a running webhook that needs to be waited on.

func (*Cluster) PrintConnectTable

func (c *Cluster) PrintConnectTable(ctx context.Context) error

PrintConnectTable will print a table of all Zarf connect matches found in the cluster.

func (*Cluster) RecordPackageDeployment

func (c *Cluster) RecordPackageDeployment(ctx context.Context, pkg types.ZarfPackage, components []types.DeployedComponent, connectStrings types.ConnectStrings, generation int) (deployedPackage *types.DeployedPackage, err error)

RecordPackageDeployment saves metadata about a package that has been deployed to the cluster.

func (*Cluster) RecordPackageDeploymentAndWait

func (c *Cluster) RecordPackageDeploymentAndWait(ctx context.Context, pkg types.ZarfPackage, components []types.DeployedComponent, connectStrings types.ConnectStrings, generation int, component types.ZarfComponent, skipWebhooks bool) (deployedPackage *types.DeployedPackage, err error)

RecordPackageDeploymentAndWait records the deployment of a package to the cluster and waits for any webhooks to complete.

func (*Cluster) SaveZarfState

func (c *Cluster) SaveZarfState(ctx context.Context, state *types.ZarfState) error

SaveZarfState takes a given state and persists it to the Zarf/zarf-state secret.

func (*Cluster) StartInjectionMadness

func (c *Cluster) StartInjectionMadness(ctx context.Context, tmpDir string, imagesDir string, injectorSeedSrcs []string) error

StartInjectionMadness initializes a Zarf injection into the cluster.

func (*Cluster) StopInjectionMadness

func (c *Cluster) StopInjectionMadness(ctx context.Context) error

StopInjectionMadness handles cleanup once the seed registry is up.

func (*Cluster) StripZarfLabelsAndSecretsFromNamespaces

func (c *Cluster) StripZarfLabelsAndSecretsFromNamespaces(ctx context.Context)

StripZarfLabelsAndSecretsFromNamespaces removes metadata and secrets from existing namespaces no longer manged by Zarf.

func (*Cluster) UpdateZarfManagedGitSecrets

func (c *Cluster) UpdateZarfManagedGitSecrets(ctx context.Context, state *types.ZarfState)

UpdateZarfManagedGitSecrets updates all Zarf-managed git secrets in all namespaces based on state TODO: Refactor to return errors properly.

func (*Cluster) UpdateZarfManagedImageSecrets

func (c *Cluster) UpdateZarfManagedImageSecrets(ctx context.Context, state *types.ZarfState)

UpdateZarfManagedImageSecrets updates all Zarf-managed image secrets in all namespaces based on state TODO: Refactor to return errors properly.

type DockerConfig

type DockerConfig struct {
	Auths DockerConfigEntry `json:"auths"`
}

DockerConfig contains the authentication information from the machine's docker config.

type DockerConfigEntry

type DockerConfigEntry map[string]DockerConfigEntryWithAuth

DockerConfigEntry contains a map of DockerConfigEntryWithAuth for a registry.

type DockerConfigEntryWithAuth

type DockerConfigEntryWithAuth struct {
	Auth string `json:"auth"`
}

DockerConfigEntryWithAuth contains a docker config authentication string.

type Tunnel added in v0.35.0

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

Tunnel is the main struct that configures and manages port forwarding tunnels to Kubernetes resources.

func (*Tunnel) Close added in v0.35.0

func (tunnel *Tunnel) Close()

Close disconnects a tunnel connection by closing the StopChan, thereby stopping the goroutine.

func (*Tunnel) Connect added in v0.35.0

func (tunnel *Tunnel) Connect(ctx context.Context) (string, error)

Connect will establish a tunnel to the specified target.

func (*Tunnel) Endpoint added in v0.35.0

func (tunnel *Tunnel) Endpoint() string

Endpoint returns the tunnel ip address and port (i.e. for docker registries)

func (*Tunnel) ErrChan added in v0.35.0

func (tunnel *Tunnel) ErrChan() chan error

ErrChan returns the tunnel's error channel

func (*Tunnel) FullURL added in v0.35.0

func (tunnel *Tunnel) FullURL() string

FullURL returns the tunnel endpoint as a HTTP URL string with the urlSuffix appended.

func (*Tunnel) HTTPEndpoint added in v0.35.0

func (tunnel *Tunnel) HTTPEndpoint() string

HTTPEndpoint returns the tunnel endpoint as a HTTP URL string.

func (*Tunnel) Wrap added in v0.35.0

func (tunnel *Tunnel) Wrap(function func() error) error

Wrap takes a function that returns an error and wraps it to check for tunnel errors as well.

type TunnelInfo

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

TunnelInfo is a struct that contains the necessary info to create a new Tunnel

func NewTunnelInfo

func NewTunnelInfo(namespace, resourceType, resourceName, urlSuffix string, localPort, remotePort int) TunnelInfo

NewTunnelInfo returns a new TunnelInfo object for connecting to a cluster

Jump to

Keyboard shortcuts

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