cluster

package
v0.19.1 Latest Latest
Warning

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

Go to latest
Published: Mar 15, 2024 License: Apache-2.0 Imports: 30 Imported by: 1

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func BuildMapForWorkerNodeGroupsByName added in v0.7.1

func BuildMapForWorkerNodeGroupsByName(workerNodeGroups []eksav1alpha1.WorkerNodeGroupConfiguration) map[string]eksav1alpha1.WorkerNodeGroupConfiguration

func BundlesForCluster added in v0.17.0

func BundlesForCluster(ctx context.Context, client Client, cluster *v1alpha1.Cluster) (*v1alpha1release.Bundles, error)

BundlesForCluster returns a bundles resource for the cluster.

func GetVersionsBundle added in v0.8.0

func GetVersionsBundle(version v1alpha1.KubernetesVersion, bundles *v1alpha1release.Bundles) (*v1alpha1release.VersionsBundle, error)

GetVersionsBundle gets the VersionsBundle that corresponds to KubernetesVersion.

func LoadManagement added in v0.6.0

func LoadManagement(kubeconfig string) (*types.Cluster, error)

func NodeGroupsToDelete added in v0.7.1

func NodeGroupsToDelete(currentSpec, newSpec *Spec) []eksav1alpha1.WorkerNodeGroupConfiguration

func SetConfigDefaults added in v0.8.0

func SetConfigDefaults(c *Config) error

func SetDefaultFluxConfigPath added in v0.9.0

func SetDefaultFluxConfigPath(c *Config) error

func SetDefaultFluxGitHubConfigPath added in v0.8.0

func SetDefaultFluxGitHubConfigPath(c *Config) error

func SetMachineHealthCheckMaxUnhealthyDefaults added in v0.19.0

func SetMachineHealthCheckMaxUnhealthyDefaults(cluster *anywherev1.Cluster, globalMaxUnhealthy, workerMaxUnhealthy intstr.IntOrString)

SetMachineHealthCheckMaxUnhealthyDefaults sets defaults maxUnhealthy for MHCs in the EKSA cluster object based on the input.

func SetMachineHealthCheckTimeoutDefaults added in v0.17.0

func SetMachineHealthCheckTimeoutDefaults(cluster *anywherev1.Cluster, nodeStartupTimeout, unhealthyMachineTimeout time.Duration)

SetMachineHealthCheckTimeoutDefaults sets default timeouts for MHCs in the EKSA cluster object based on the input.

func SetSnowDatacenterIndentityRefDefault added in v0.12.0

func SetSnowDatacenterIndentityRefDefault(s *anywherev1.SnowDatacenterConfig)

SetSnowDatacenterIndentityRefDefault sets a default secret as the identity reference The secret will need to be created by the CLI flow as it's not provided by the user This only runs in CLI. snowDatacenterConfig.SetDefaults() will run in both CLI and webhook.

func SetSnowMachineConfigsAnnotations added in v0.9.0

func SetSnowMachineConfigsAnnotations(c *Config) error

func ValidateConfig added in v0.8.0

func ValidateConfig(c *Config) error

func ValidateSnowMachineRefExists added in v0.13.0

func ValidateSnowMachineRefExists(c *Config) error

ValidateSnowMachineRefExists checks the cluster spec machine refs and makes sure the snowmachineconfig object exists for each ref with kind == snowmachineconfig.

func WaitFor added in v0.18.0

func WaitFor(ctx context.Context, log logr.Logger, client kubernetes.Reader, cluster *anywherev1.Cluster, total int, retrier *retrier.Retrier, matcher Matcher) error

WaitFor gets the cluster object from the client checks for generation and observedGeneration condition matches condition and returns error if the condition is not met.

func WaitForCondition added in v0.18.0

func WaitForCondition(ctx context.Context, log logr.Logger, client kubernetes.Reader, cluster *anywherev1.Cluster, total int, retrier *retrier.Retrier, conditionType anywherev1.ConditionType) error

WaitForCondition blocks until either the cluster has this condition as True or the retrier timeouts. If observedGeneration is not equal to generation, the condition is considered false regardless of the status value. total field is to check the total number of times the given condition is met for consistency.

Types

type APIObject added in v0.8.0

type APIObject interface {
	runtime.Object
	GetName() string
}

APIObject represents a kubernetes API object.

type APIObjectGenerator added in v0.8.0

type APIObjectGenerator func() APIObject

APIObjectGenerator returns an implementor of the APIObject interface.

type Client added in v0.9.2

type Client interface {
	Get(ctx context.Context, name, namespace string, obj kubernetes.Object) error
}

Client is a kubernetes API client.

type Config added in v0.8.0

type Config struct {
	Cluster                   *anywherev1.Cluster
	CloudStackDatacenter      *anywherev1.CloudStackDatacenterConfig
	VSphereDatacenter         *anywherev1.VSphereDatacenterConfig
	DockerDatacenter          *anywherev1.DockerDatacenterConfig
	SnowDatacenter            *anywherev1.SnowDatacenterConfig
	NutanixDatacenter         *anywherev1.NutanixDatacenterConfig
	TinkerbellDatacenter      *anywherev1.TinkerbellDatacenterConfig
	VSphereMachineConfigs     map[string]*anywherev1.VSphereMachineConfig
	CloudStackMachineConfigs  map[string]*anywherev1.CloudStackMachineConfig
	SnowMachineConfigs        map[string]*anywherev1.SnowMachineConfig
	NutanixMachineConfigs     map[string]*anywherev1.NutanixMachineConfig
	TinkerbellMachineConfigs  map[string]*anywherev1.TinkerbellMachineConfig
	TinkerbellTemplateConfigs map[string]*anywherev1.TinkerbellTemplateConfig
	OIDCConfigs               map[string]*anywherev1.OIDCConfig
	AWSIAMConfigs             map[string]*anywherev1.AWSIamConfig
	GitOpsConfig              *anywherev1.GitOpsConfig
	FluxConfig                *anywherev1.FluxConfig
	SnowCredentialsSecret     *v1.Secret
	SnowIPPools               map[string]*anywherev1.SnowIPPool
}

func ParseConfig added in v0.8.0

func ParseConfig(yamlManifest []byte) (*Config, error)

ParseConfig reads yaml manifest with at least one Cluster object and generates the corresponding Config using the default package config manager.

func ParseConfigFromFile added in v0.8.0

func ParseConfigFromFile(path string) (*Config, error)

ParseConfig reads yaml file with at least one Cluster object and generates the corresponding Config using the default package config manager.

func (*Config) AWSIamConfig added in v0.8.0

func (c *Config) AWSIamConfig(name string) *anywherev1.AWSIamConfig

func (*Config) ChildObjects added in v0.9.2

func (c *Config) ChildObjects() []kubernetes.Object

ChildObjects returns all API objects in Config except the Cluster.

func (*Config) CloudStackMachineConfig added in v0.9.0

func (c *Config) CloudStackMachineConfig(name string) *anywherev1.CloudStackMachineConfig

func (*Config) ClusterAndChildren added in v0.18.0

func (c *Config) ClusterAndChildren() []kubernetes.Object

ClusterAndChildren returns all kubernetes objects in the cluster Config. It's equivalent to appending the Cluster to the result of ChildObjects.

func (*Config) DeepCopy added in v0.8.0

func (c *Config) DeepCopy() *Config

func (*Config) NutanixMachineConfig added in v0.12.0

func (c *Config) NutanixMachineConfig(name string) *anywherev1.NutanixMachineConfig

func (*Config) OIDCConfig added in v0.8.0

func (c *Config) OIDCConfig(name string) *anywherev1.OIDCConfig

func (*Config) SnowIPPool added in v0.14.0

func (c *Config) SnowIPPool(name string) *anywherev1.SnowIPPool

SnowIPPool returns a SnowIPPool based on a name.

func (*Config) SnowMachineConfig added in v0.8.0

func (c *Config) SnowMachineConfig(name string) *anywherev1.SnowMachineConfig

func (*Config) VsphereMachineConfig added in v0.8.0

func (c *Config) VsphereMachineConfig(name string) *anywherev1.VSphereMachineConfig

type ConfigClientBuilder added in v0.9.2

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

ConfigClientBuilder allows to register processors to build a Config using a cluster client, retrieving the api objects from the API server.

func NewConfigClientBuilder added in v0.9.2

func NewConfigClientBuilder() *ConfigClientBuilder

NewConfigClientBuilder builds a new ConfigClientBuilder with no processors registered.

func NewDefaultConfigClientBuilder added in v0.9.2

func NewDefaultConfigClientBuilder() *ConfigClientBuilder

NewDefaultConfigClientBuilder returns a ConfigClientBuilder with the default processors to build a Config.

func (*ConfigClientBuilder) Build added in v0.9.2

func (b *ConfigClientBuilder) Build(ctx context.Context, client Client, cluster *anywherev1.Cluster) (*Config, error)

Build constructs a Config for a cluster using the registered processors.

func (*ConfigClientBuilder) Register added in v0.9.2

Register stores processors to be used during Build.

type ConfigClientProcessor added in v0.9.2

type ConfigClientProcessor func(ctx context.Context, client Client, c *Config) error

ConfigClientProcessor updates a Config retrieving objects from the API server through a client.

type ConfigManager added in v0.8.0

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

ConfigManager allows to parse from yaml, set defaults and validate a Cluster struct It allows to dynamically register configuration for all those operations.

func NewConfigManager added in v0.8.0

func NewConfigManager() *ConfigManager

NewConfigManager builds a ConfigManager with empty configuration.

func NewDefaultConfigManager added in v0.9.2

func NewDefaultConfigManager() (*ConfigManager, error)

func (*ConfigManager) Parse added in v0.8.0

func (c *ConfigManager) Parse(yamlManifest []byte) (*Config, error)

Parse reads yaml manifest with at least one cluster object and generates the corresponding Config.

func (*ConfigManager) Register added in v0.8.0

func (c *ConfigManager) Register(entries ...*ConfigManagerEntry) error

Register records the configuration defined in a ConfigManagerEntry into the ConfigManager This is equivalent to the individual register methods.

func (*ConfigManager) RegisterDefaulters added in v0.8.0

func (c *ConfigManager) RegisterDefaulters(defaulters ...Defaulter)

RegisterDefaulters records defaults for a Config struct.

func (*ConfigManager) RegisterMapping added in v0.8.0

func (c *ConfigManager) RegisterMapping(kind string, generator APIObjectGenerator) error

RegisterMapping records the mapping between a kubernetes Kind and an API concrete type.

func (*ConfigManager) RegisterProcessors added in v0.8.0

func (c *ConfigManager) RegisterProcessors(processors ...ParsedProcessor)

RegisterProcessors records setters to fill the Config struct from the parsed API objects.

func (*ConfigManager) RegisterValidations added in v0.8.0

func (c *ConfigManager) RegisterValidations(validations ...Validation)

RegisterValidations records validations for a Config struct.

func (*ConfigManager) SetDefaults added in v0.8.0

func (c *ConfigManager) SetDefaults(config *Config) error

Parse set the registered defaults in a Config struct.

func (*ConfigManager) Validate added in v0.8.0

func (c *ConfigManager) Validate(config *Config) error

Validate performs the registered validations in a Config struct.

type ConfigManagerEntry added in v0.8.0

type ConfigManagerEntry struct {
	APIObjectMapping map[string]APIObjectGenerator
	Processors       []ParsedProcessor
	Validations      []Validation
	Defaulters       []Defaulter
}

ConfigManagerEntry allows to declare the necessary configuration to parse from yaml, set defaults and validate a Cluster struct for one or more types. It is semantically equivalent to use the individual register methods and its only purpose is convenience.

func NewConfigManagerEntry added in v0.8.0

func NewConfigManagerEntry() *ConfigManagerEntry

NewConfigManagerEntry builds a ConfigManagerEntry with empty configuration.

func (*ConfigManagerEntry) Merge added in v0.8.0

func (c *ConfigManagerEntry) Merge(entries ...*ConfigManagerEntry) error

Merge combines the configuration declared in multiple ConfigManagerEntry.

func (*ConfigManagerEntry) RegisterDefaulters added in v0.8.0

func (c *ConfigManagerEntry) RegisterDefaulters(defaulters ...Defaulter)

RegisterDefaulters records defaults for a Config struct.

func (*ConfigManagerEntry) RegisterMapping added in v0.8.0

func (c *ConfigManagerEntry) RegisterMapping(kind string, generator APIObjectGenerator) error

RegisterMapping records the mapping between a kubernetes Kind and an API concrete type.

func (*ConfigManagerEntry) RegisterProcessors added in v0.8.0

func (c *ConfigManagerEntry) RegisterProcessors(processors ...ParsedProcessor)

RegisterProcessors records setters to fill the Config struct from the parsed API objects.

func (*ConfigManagerEntry) RegisterValidations added in v0.8.0

func (c *ConfigManagerEntry) RegisterValidations(validations ...Validation)

RegisterValidations records validations for a Config struct.

type ControlPlaneIPCheckAnnotationDefaulter added in v0.17.0

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

ControlPlaneIPCheckAnnotationDefaulter is the defaulter created to set the skip ip value.

func NewControlPlaneIPCheckAnnotationDefaulter added in v0.17.0

func NewControlPlaneIPCheckAnnotationDefaulter(skipIPCheck bool) ControlPlaneIPCheckAnnotationDefaulter

NewControlPlaneIPCheckAnnotationDefaulter allows to create a new ControlPlaneIPCheckAnnotationDefaulter.

func (ControlPlaneIPCheckAnnotationDefaulter) ControlPlaneIPCheckDefault added in v0.17.0

func (d ControlPlaneIPCheckAnnotationDefaulter) ControlPlaneIPCheckDefault(ctx context.Context, spec *Spec) (*Spec, error)

ControlPlaneIPCheckDefault sets the annotation for control plane skip ip check if the flag is set to true.

type Defaulter added in v0.8.0

type Defaulter func(*Config) error

Defaulter sets defaults in a Config object.

func BundlesRefDefaulter added in v0.9.2

func BundlesRefDefaulter() Defaulter

type EKSD added in v0.15.0

type EKSD struct {
	// Channel is the minor Kubernetes version for the eks-d release (eg. "1.23", "1.24", etc.)
	Channel string
	// Number is the monotonically increasing number that distinguishes the different eks-d releases
	// for the same Kubernetes minor version (channel).
	Number int
}

EKSD represents an eks-d release.

type FileSpecBuilder added in v0.15.0

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

FileSpecBuilder allows to build Spec by reading from files.

func NewFileSpecBuilder added in v0.15.0

func NewFileSpecBuilder(reader manifests.FileReader, cliVersion version.Info, opts ...FileSpecBuilderOpt) FileSpecBuilder

NewFileSpecBuilder builds a new FileSpecBuilder. cliVersion is used to chose the right Bundles from the the Release manifest.

func (FileSpecBuilder) Build added in v0.15.0

func (b FileSpecBuilder) Build(clusterConfigURL string) (*Spec, error)

Build constructs a new Spec by reading the cluster config in yaml from a file and Releases, Bundles and EKS-D manifests from the configured URLs.

type FileSpecBuilderOpt added in v0.15.0

type FileSpecBuilderOpt func(*FileSpecBuilder)

FileSpecBuilderOpt allows to configure FileSpecBuilder.

func WithOverrideBundlesManifest added in v0.6.0

func WithOverrideBundlesManifest(url string) FileSpecBuilderOpt

WithOverrideBundlesManifest configures the URL to read the Bundles manifest. This overrides the Bundles declared in the Releases so reading the Releases manifest is skipped.

func WithReleasesManifest

func WithReleasesManifest(url string) FileSpecBuilderOpt

WithReleasesManifest configures the URL to read the Releases manifest.

type KubeDistro

type KubeDistro struct {
	EKSD                EKSD
	Kubernetes          VersionedRepository
	CoreDNS             VersionedRepository
	Etcd                VersionedRepository
	NodeDriverRegistrar v1alpha1.Image
	LivenessProbe       v1alpha1.Image
	ExternalAttacher    v1alpha1.Image
	ExternalProvisioner v1alpha1.Image
	Pause               v1alpha1.Image
	EtcdImage           v1alpha1.Image
	EtcdVersion         string
	EtcdURL             string
	AwsIamAuthImage     v1alpha1.Image
	KubeProxy           v1alpha1.Image
}

type MachineHealthCheckDefaulter added in v0.17.0

type MachineHealthCheckDefaulter struct {
	NodeStartupTimeout      time.Duration
	UnhealthyMachineTimeout time.Duration
	MaxUnhealthy            intstr.IntOrString
	WorkerMaxUnhealthy      intstr.IntOrString
}

MachineHealthCheckDefaulter is the defaulter created to configure the machine health check timeouts.

func NewMachineHealthCheckDefaulter added in v0.17.0

func NewMachineHealthCheckDefaulter(nodeStartupTimeout, unhealthyMachineTimeout time.Duration, globalMaxUnhealthy, workerMaxUnhealthy intstr.IntOrString) MachineHealthCheckDefaulter

NewMachineHealthCheckDefaulter allows to create a new MachineHealthCheckDefaulter.

func (MachineHealthCheckDefaulter) MachineHealthCheckDefault added in v0.17.0

func (d MachineHealthCheckDefaulter) MachineHealthCheckDefault(ctx context.Context, spec *Spec) (*Spec, error)

MachineHealthCheckDefault sets the defaults for machine health check timeouts and maxUnhealthy.

type ManagementComponents added in v0.19.0

ManagementComponents bundles the resource definitions of all EKS-A management components.

func GetManagementComponents added in v0.19.0

func GetManagementComponents(ctx context.Context, client Client, cluster *v1alpha1.Cluster) (*ManagementComponents, error)

GetManagementComponents returns the first VersionsBundle from the Bundles object for cluster's the management components version.

func ManagementComponentsFromBundles added in v0.19.0

func ManagementComponentsFromBundles(bundles *v1alpha1release.Bundles) *ManagementComponents

ManagementComponentsFromBundles returns ManagementComponents built from a VersionsBundle.

For decoupled component upgrades, the management components can be upgraded to the new EKS-A version separately from the Cluster. So, here we have the management components bundles for that new version, but, there are still multiple Kubernetes versions to choose from within the bundle to get the components information. However, because management component images are the same for every Kubernetes version within the same bundle manifest, it's OK to use the first bundle. If there are is differences between the management components on this first versions bundle, and the new cluster specs first versions bundle, that indicates an upgrade is required. In the future, we might change the bundles API to remove the assumption and make this explicit. When that happens, this method will need to change.

type Matcher added in v0.18.0

type Matcher func(*anywherev1.Cluster) error

Matcher matches the given condition.

type NamespaceDefaulter added in v0.19.0

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

NamespaceDefaulter is the defaulter created to configure the cluster's namespace.

func NewNamespaceDefaulter added in v0.19.0

func NewNamespaceDefaulter(namespace string) NamespaceDefaulter

NewNamespaceDefaulter allows to create a new ClusterNamespaceDefaulter.

func (NamespaceDefaulter) NamespaceDefault added in v0.19.0

func (c NamespaceDefaulter) NamespaceDefault(ctx context.Context, spec *Spec) (*Spec, error)

NamespaceDefault sets the defaults for cluster's namespace.

type ObjectLookup added in v0.8.0

type ObjectLookup map[string]APIObject

func (ObjectLookup) GetFromRef added in v0.8.0

func (o ObjectLookup) GetFromRef(apiVersion string, ref anywherev1.Ref) APIObject

GetFromRef searches in a ObjectLookup for an APIObject referenced by a anywherev1.Ref.

type ParsedProcessor added in v0.8.0

type ParsedProcessor func(*Config, ObjectLookup)

ParsedProcessor fills the Config struct from the parsed API objects in ObjectLookup.

type Spec

type Spec struct {
	*Config
	Bundles           *v1alpha1.Bundles
	OIDCConfig        *eksav1alpha1.OIDCConfig
	AWSIamConfig      *eksav1alpha1.AWSIamConfig
	ManagementCluster *types.Cluster // TODO(g-gaston): cleanup, this doesn't belong here
	EKSARelease       *v1alpha1.EKSARelease
	VersionsBundles   map[eksav1alpha1.KubernetesVersion]*VersionsBundle
}

func BuildSpec added in v0.9.2

func BuildSpec(ctx context.Context, client Client, cluster *v1alpha1.Cluster) (*Spec, error)

BuildSpec constructs a cluster.Spec for an eks-a cluster by retrieving all necessary objects from the cluster using a kubernetes client.

func BuildSpecFromConfig added in v0.14.0

func BuildSpecFromConfig(ctx context.Context, client Client, config *Config) (*Spec, error)

BuildSpecFromConfig constructs a cluster.Spec for an eks-a cluster config by retrieving all dependencies objects from the cluster using a kubernetes client.

func NewSpec

func NewSpec(config *Config, bundles *v1alpha1.Bundles, eksdReleases []eksdv1alpha1.Release, eksaRelease *v1alpha1.EKSARelease) (*Spec, error)

NewSpec builds a new Spec.

func (*Spec) DeepCopy added in v0.6.0

func (s *Spec) DeepCopy() *Spec

func (*Spec) RootVersionsBundle added in v0.18.0

func (s *Spec) RootVersionsBundle() *VersionsBundle

RootVersionsBundle returns a VersionsBundle for the Cluster objects root Kubernetes versions.

func (*Spec) VersionsBundle

func (s *Spec) VersionsBundle(version eksav1alpha1.KubernetesVersion) *VersionsBundle

VersionsBundle returns a VersionsBundle if one exists for the provided kubernetes version and nil otherwise.

func (*Spec) WorkerNodeGroupVersionsBundle added in v0.17.0

func (s *Spec) WorkerNodeGroupVersionsBundle(w eksav1alpha1.WorkerNodeGroupConfiguration) *VersionsBundle

WorkerNodeGroupVersionsBundle returns a VersionsBundle for the Worker Node's kubernetes version.

type Validation added in v0.8.0

type Validation func(*Config) error

Validation performs a validation over the Config object.

type VersionedRepository

type VersionedRepository struct {
	Repository, Tag string
}

type VersionsBundle

type VersionsBundle struct {
	*v1alpha1.VersionsBundle
	KubeDistro *KubeDistro
}

func (*VersionsBundle) Ovas added in v0.6.0

func (vb *VersionsBundle) Ovas() []v1alpha1.Archive

Directories

Path Synopsis
Package mocks is a generated GoMock package.
Package mocks is a generated GoMock package.

Jump to

Keyboard shortcuts

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