amifamily

package
v0.33.12 Latest Latest
Warning

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

Go to latest
Published: Jan 31, 2025 License: Apache-2.0 Imports: 26 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var DefaultEBS = v1beta1.BlockDevice{
	Encrypted:  aws.Bool(true),
	VolumeType: aws.String(ec2.VolumeTypeGp3),
	VolumeSize: lo.ToPtr(resource.MustParse("20Gi")),
}

Functions

This section is empty.

Types

type AL2

type AL2 struct {
	DefaultFamily
	*Options
}

func (AL2) DefaultAMIs added in v0.27.3

func (a AL2) DefaultAMIs(version string) []DefaultAMIOutput

DefaultAMIs returns the AMI name, and Requirements, with an SSM query

func (AL2) DefaultBlockDeviceMappings

func (a AL2) DefaultBlockDeviceMappings() []*v1beta1.BlockDeviceMapping

DefaultBlockDeviceMappings returns the default block device mappings for the AMI Family

func (AL2) EphemeralBlockDevice

func (a AL2) EphemeralBlockDevice() *string

func (AL2) UserData

func (a AL2) UserData(kubeletConfig *corev1beta1.KubeletConfiguration, taints []v1.Taint, labels map[string]string, caBundle *string, _ []*cloudprovider.InstanceType, customUserData *string) bootstrap.Bootstrapper

UserData returns the exact same string for equivalent input, even if elements of those inputs are in differing orders, guaranteeing it won't cause spurious hash differences. AL2 userdata also works on Ubuntu

type AMI

type AMI struct {
	Name         string
	AmiID        string
	CreationDate string
	Requirements scheduling.Requirements
	Deprecated   bool
}

type AMIFamily

type AMIFamily interface {
	DefaultAMIs(version string) []DefaultAMIOutput
	UserData(kubeletConfig *corev1beta1.KubeletConfiguration, taints []core.Taint, labels map[string]string, caBundle *string, instanceTypes []*cloudprovider.InstanceType, customUserData *string) bootstrap.Bootstrapper
	DefaultBlockDeviceMappings() []*v1beta1.BlockDeviceMapping
	DefaultMetadataOptions() *v1beta1.MetadataOptions
	EphemeralBlockDevice() *string
	FeatureFlags() FeatureFlags
}

AMIFamily can be implemented to override the default logic for generating dynamic launch template parameters

func GetAMIFamily

func GetAMIFamily(amiFamily *string, options *Options) AMIFamily

type AMIs added in v0.31.0

type AMIs []AMI

func (AMIs) MapToInstanceTypes added in v0.31.0

func (a AMIs) MapToInstanceTypes(instanceTypes []*cloudprovider.InstanceType) map[string][]*cloudprovider.InstanceType

MapToInstanceTypes returns a map of AMIIDs that are the most recent on creationDate to compatible instancetypes

func (AMIs) Sort added in v0.31.0

func (a AMIs) Sort()

Sort orders the AMIs by creation date in descending order. If creation date is nil or two AMIs have the same creation date, the AMIs will be sorted by ID, which is guaranteed to be unique, in ascending order.

func (AMIs) String added in v0.31.0

func (a AMIs) String() string

type Bottlerocket

type Bottlerocket struct {
	DefaultFamily
	*Options
}

func (Bottlerocket) DefaultAMIs added in v0.27.3

func (b Bottlerocket) DefaultAMIs(version string) []DefaultAMIOutput

DefaultAMIs returns the AMI name, and Requirements, with an SSM query

func (Bottlerocket) DefaultBlockDeviceMappings

func (b Bottlerocket) DefaultBlockDeviceMappings() []*v1beta1.BlockDeviceMapping

DefaultBlockDeviceMappings returns the default block device mappings for the AMI Family

func (Bottlerocket) EphemeralBlockDevice

func (b Bottlerocket) EphemeralBlockDevice() *string

func (Bottlerocket) FeatureFlags

func (b Bottlerocket) FeatureFlags() FeatureFlags

func (Bottlerocket) UserData

func (b Bottlerocket) UserData(kubeletConfig *corev1beta1.KubeletConfiguration, taints []v1.Taint, labels map[string]string, caBundle *string, _ []*cloudprovider.InstanceType, customUserData *string) bootstrap.Bootstrapper

UserData returns the default userdata script for the AMI Family

type Custom

type Custom struct {
	DefaultFamily
	*Options
}

func (Custom) DefaultAMIs added in v0.27.3

func (c Custom) DefaultAMIs(_ string) []DefaultAMIOutput

func (Custom) DefaultBlockDeviceMappings

func (c Custom) DefaultBlockDeviceMappings() []*v1beta1.BlockDeviceMapping

func (Custom) EphemeralBlockDevice

func (c Custom) EphemeralBlockDevice() *string

EphemeralBlockDevice is the block device that the pods on the node will use. For an AMI of a custom family, this is unknown to us.

func (Custom) UserData

UserData returns the default userdata script for the AMI Family

type DefaultAMIOutput added in v0.27.3

type DefaultAMIOutput struct {
	Query        string
	Requirements scheduling.Requirements
}

type DefaultFamily

type DefaultFamily struct{}

DefaultFamily provides default values for AMIFamilies that compose it

func (DefaultFamily) FeatureFlags

func (d DefaultFamily) FeatureFlags() FeatureFlags

type FeatureFlags

type FeatureFlags struct {
	UsesENILimitedMemoryOverhead bool
	PodsPerCoreEnabled           bool
	EvictionSoftEnabled          bool
	SupportsENILimitedPodDensity bool
}

FeatureFlags describes whether the features below are enabled for a given AMIFamily

type FiltersAndOwners added in v0.31.0

type FiltersAndOwners struct {
	Filters []*ec2.Filter
	Owners  []string
}

func GetFilterAndOwnerSets added in v0.31.0

func GetFilterAndOwnerSets(terms []v1beta1.AMISelectorTerm) (res []FiltersAndOwners)

type LaunchTemplate

type LaunchTemplate struct {
	*Options
	UserData            bootstrap.Bootstrapper
	BlockDeviceMappings []*v1beta1.BlockDeviceMapping
	MetadataOptions     *v1beta1.MetadataOptions
	AMIID               string
	InstanceTypes       []*cloudprovider.InstanceType `hash:"ignore"`
	DetailedMonitoring  bool
	EFACount            int
	CapacityType        string
}

LaunchTemplate holds the dynamically generated launch template parameters

type Options

type Options struct {
	ClusterName     string
	ClusterEndpoint string
	InstanceProfile string
	CABundle        *string `hash:"ignore"`
	// Level-triggered fields that may change out of sync.
	SecurityGroups           []v1beta1.SecurityGroup
	Tags                     map[string]string
	Labels                   map[string]string `hash:"ignore"`
	KubeDNSIP                net.IP
	AssociatePublicIPAddress *bool
}

Options define the static launch template parameters

func (Options) DefaultMetadataOptions

func (o Options) DefaultMetadataOptions() *v1beta1.MetadataOptions

type Provider

type Provider struct {
	sync.Mutex
	// contains filtered or unexported fields
}

func NewProvider

func NewProvider(clock clock.Clock, versionProvider *version.Provider, ssmProvider ssm.Provider, ec2api ec2iface.EC2API, cache *cache.Cache) *Provider

func (*Provider) Get

func (p *Provider) Get(ctx context.Context, nodeClass *v1beta1.EC2NodeClass, options *Options) (AMIs, error)

Get Returning a list of AMIs with its associated requirements

func (*Provider) IsDeprecated added in v0.33.11

func (p *Provider) IsDeprecated(image *ec2.Image) bool

type Resolver

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

Resolver is able to fill-in dynamic launch template parameters

func New

func New(amiProvider *Provider) *Resolver

New constructs a new launch template Resolver

func (Resolver) Resolve

func (r Resolver) Resolve(ctx context.Context, nodeClass *v1beta1.EC2NodeClass, nodeClaim *corev1beta1.NodeClaim, instanceTypes []*cloudprovider.InstanceType, capacityType string, options *Options) ([]*LaunchTemplate, error)

Resolve generates launch templates using the static options and dynamically generates launch template parameters. Multiple ResolvedTemplates are returned based on the instanceTypes passed in to support special AMIs for certain instance types like GPUs.

type Ubuntu

type Ubuntu struct {
	DefaultFamily
	*Options
}

func (Ubuntu) DefaultAMIs added in v0.27.3

func (u Ubuntu) DefaultAMIs(version string) []DefaultAMIOutput

DefaultAMIs returns the AMI name, and Requirements, with an SSM query

func (Ubuntu) DefaultBlockDeviceMappings

func (u Ubuntu) DefaultBlockDeviceMappings() []*v1beta1.BlockDeviceMapping

DefaultBlockDeviceMappings returns the default block device mappings for the AMI Family

func (Ubuntu) EphemeralBlockDevice

func (u Ubuntu) EphemeralBlockDevice() *string

func (Ubuntu) UserData

func (u Ubuntu) UserData(kubeletConfig *corev1beta1.KubeletConfiguration, taints []v1.Taint, labels map[string]string, caBundle *string, _ []*cloudprovider.InstanceType, customUserData *string) bootstrap.Bootstrapper

UserData returns the default userdata script for the AMI Family

type Windows added in v0.29.0

type Windows struct {
	DefaultFamily
	*Options
	Version string
	Build   string
}

func (Windows) DefaultAMIs added in v0.29.0

func (w Windows) DefaultAMIs(version string) []DefaultAMIOutput

func (Windows) DefaultBlockDeviceMappings added in v0.29.0

func (w Windows) DefaultBlockDeviceMappings() []*v1beta1.BlockDeviceMapping

DefaultBlockDeviceMappings returns the default block device mappings for the AMI Family

func (Windows) EphemeralBlockDevice added in v0.29.0

func (w Windows) EphemeralBlockDevice() *string

func (Windows) FeatureFlags added in v0.29.0

func (w Windows) FeatureFlags() FeatureFlags

func (Windows) UserData added in v0.29.0

func (w Windows) UserData(kubeletConfig *corev1beta1.KubeletConfiguration, taints []v1.Taint, labels map[string]string, caBundle *string, _ []*cloudprovider.InstanceType, customUserData *string) bootstrap.Bootstrapper

UserData returns the default userdata script for the AMI Family

Directories

Path Synopsis

Jump to

Keyboard shortcuts

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