amifamily

package
v0.0.0-...-5affba4 Latest Latest
Warning

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

Go to latest
Published: Mar 14, 2023 License: Apache-2.0 Imports: 27 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var DefaultEBS = v1alpha1.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) DefaultBlockDeviceMappings

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

DefaultBlockDeviceMappings returns the default block device mappings for the AMI Family

func (AL2) EphemeralBlockDevice

func (a AL2) EphemeralBlockDevice() *string

func (AL2) SSMAlias

func (a AL2) SSMAlias(version string, instanceType *cloudprovider.InstanceType) string

SSMAlias returns the AMI Alias to query SSM

func (AL2) UserData

func (a AL2) UserData(kubeletConfig *v1alpha5.KubeletConfiguration, taints []v1.Taint, labels map[string]string, caBundle *string, instanceTypes []*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 {
	AmiID        string
	CreationDate string
}

type AMIFamily

type AMIFamily interface {
	SSMAlias(version string, instanceType *cloudprovider.InstanceType) string
	UserData(kubeletConfig *v1alpha5.KubeletConfiguration, taints []core.Taint, labels map[string]string, caBundle *string, instanceTypes []*cloudprovider.InstanceType, customUserData *string) bootstrap.Bootstrapper
	DefaultBlockDeviceMappings() []*v1alpha1.BlockDeviceMapping
	DefaultMetadataOptions() *v1alpha1.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 Bottlerocket

type Bottlerocket struct {
	DefaultFamily
	*Options
}

func (Bottlerocket) DefaultBlockDeviceMappings

func (b Bottlerocket) DefaultBlockDeviceMappings() []*v1alpha1.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) SSMAlias

func (b Bottlerocket) SSMAlias(version string, instanceType *cloudprovider.InstanceType) string

SSMAlias returns the AMI Alias to query SSM

func (Bottlerocket) UserData

func (b Bottlerocket) UserData(kubeletConfig *v1alpha5.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) DefaultBlockDeviceMappings

func (c Custom) DefaultBlockDeviceMappings() []*v1alpha1.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) SSMAlias

func (c Custom) SSMAlias(_ string, _ *cloudprovider.InstanceType) string

func (Custom) UserData

func (c Custom) UserData(_ *v1alpha5.KubeletConfiguration, _ []v1.Taint, _ map[string]string, _ *string, _ []*cloudprovider.InstanceType, customUserData *string) bootstrap.Bootstrapper

UserData returns the default userdata script for the AMI Family

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
}

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

type LaunchTemplate

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

LaunchTemplate holds the dynamically generated launch template parameters

type Options

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

Options define the static launch template parameters

func (Options) DefaultMetadataOptions

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

type Provider

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

func NewProvider

func NewProvider(kubeClient client.Client, kubernetesInterface kubernetes.Interface, ssm ssmiface.SSMAPI, ec2api ec2iface.EC2API,
	ssmCache, ec2Cache, kubernetesVersionCache *cache.Cache) *Provider

func (*Provider) Get

func (p *Provider) Get(ctx context.Context, nodeTemplate *v1alpha1.AWSNodeTemplate, instanceTypes []*cloudprovider.InstanceType, amiFamily AMIFamily) (map[string][]*cloudprovider.InstanceType, error)

Get returns a set of AMIIDs and corresponding instance types. AMI may vary due to architecture, accelerator, etc If AMI overrides are specified in the AWSNodeTemplate, then only those AMIs will be chosen.

func (*Provider) KubeServerVersion

func (p *Provider) KubeServerVersion(ctx context.Context) (string, error)

type Resolver

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

Resolver is able to fill-in dynamic launch template parameters

func New

func New(kubeClient client.Client, amiProvider *Provider) *Resolver

New constructs a new launch template Resolver

func (Resolver) Resolve

func (r Resolver) Resolve(ctx context.Context, nodeTemplate *v1alpha1.AWSNodeTemplate, machine *v1alpha5.Machine, instanceTypes []*cloudprovider.InstanceType, 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) DefaultBlockDeviceMappings

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

DefaultBlockDeviceMappings returns the default block device mappings for the AMI Family

func (Ubuntu) EphemeralBlockDevice

func (u Ubuntu) EphemeralBlockDevice() *string

func (Ubuntu) SSMAlias

func (u Ubuntu) SSMAlias(version string, instanceType *cloudprovider.InstanceType) string

SSMAlias returns the AMI Alias to query SSM

func (Ubuntu) UserData

func (u Ubuntu) UserData(kubeletConfig *v1alpha5.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