eks

package
v0.199.0 Latest Latest
Warning

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

Go to latest
Published: Dec 13, 2024 License: Apache-2.0 Imports: 90 Imported by: 36

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func CheckInstanceAvailability added in v0.106.0

func CheckInstanceAvailability(ctx context.Context, spec *api.ClusterConfig, ec2API awsapi.EC2) error

CheckInstanceAvailability verifies that if any instances are provided in any node groups that those instances are available in the selected AZs.

func DoAllNodegroupStackTasks added in v0.99.0

func DoAllNodegroupStackTasks(taskTree *tasks.TaskTree, region, name string) error

DoAllNodegroupStackTasks iterates over nodegroup tasks and returns any errors.

func DoCreateFargateProfiles

func DoCreateFargateProfiles(ctx context.Context, config *api.ClusterConfig, fargateClient FargateClient) error

DoCreateFargateProfiles creates fargate profiles as specified in the config

func DoesAWSNodeUseIRSA

func DoesAWSNodeUseIRSA(ctx context.Context, provider api.ClusterProvider, clientSet kubernetes.Interface) (bool, error)

DoesAWSNodeUseIRSA evaluates whether an aws-node uses IRSA

func GetNodes added in v0.137.0

func GetNodes(clientSet kubernetes.Interface, ng KubeNodeGroup) (int, error)

func GetUsername added in v0.99.0

func GetUsername(roleArn string) string

GetUsername extracts the username part from the IAM role ARN

func IsAccessEntryEnabled added in v0.167.0

func IsAccessEntryEnabled(accessConfig *ekstypes.AccessConfigResponse) bool

IsAccessEntryEnabled reports whether the specified accessConfig has access entries enabled.

func LoadConfigFromFile

func LoadConfigFromFile(configFile string) (*api.ClusterConfig, error)

LoadConfigFromFile loads ClusterConfig from configFile

func LoadConfigWithReader added in v0.186.0

func LoadConfigWithReader(configFile string, configReader io.Reader) (*api.ClusterConfig, error)

LoadConfigWithReader loads ClusterConfig from configFile or configReader.

func LogEnabledFeatures added in v0.80.0

func LogEnabledFeatures(clusterConfig *api.ClusterConfig)

LogEnabledFeatures logs enabled features

func LogWindowsCompatibility

func LogWindowsCompatibility(nodeGroups []KubeNodeGroup, clusterMeta *api.ClusterMeta)

LogWindowsCompatibility logs Windows compatibility messages

func ParseConfig added in v0.44.0

func ParseConfig(data []byte) (*api.ClusterConfig, error)

ParseConfig parses data into a ClusterConfig

func PlatformVersion

func PlatformVersion(platformVersion string) (int, error)

PlatformVersion extracts the digit X in the provided platform version eks.X

func ResolveAMI

func ResolveAMI(ctx context.Context, provider api.ClusterProvider, version string, np api.NodePool) error

ResolveAMI ensures that the node AMI is set and is available

func ScheduleCoreDNSOnFargateIfRelevant

func ScheduleCoreDNSOnFargateIfRelevant(config *api.ClusterConfig, ctl *ClusterProvider, clientSet kubernetes.Interface) error

func SetAvailabilityZones added in v0.87.0

func SetAvailabilityZones(ctx context.Context, spec *api.ClusterConfig, given []string, ec2API awsapi.EC2, region string) (bool, error)

SetAvailabilityZones sets the given (or chooses) the availability zones Returns whether azs were set randomly or provided by a user. CheckInstanceAvailability is only run if azs were provided by the user. Random selection already performs this check and makes sure AZs support all given instances.

func SupportsWindowsWorkloads

func SupportsWindowsWorkloads(nodeGroups []KubeNodeGroup) bool

SupportsWindowsWorkloads reports whether nodeGroups can support running Windows workloads

func UpdateAuthConfigMap added in v0.99.0

func UpdateAuthConfigMap(nodeGroups []*api.NodeGroup, clientSet kubernetes.Interface) error

UpdateAuthConfigMap creates or adds a nodegroup IAM role in the auth ConfigMap for the given nodegroup.

func ValidateExistingNodeGroupsForCompatibility added in v0.99.0

func ValidateExistingNodeGroupsForCompatibility(ctx context.Context, cfg *api.ClusterConfig, stackManager manager.StackManager) error

ValidateExistingNodeGroupsForCompatibility looks at each of the existing nodegroups and validates configuration, if it find issues it logs messages.

func ValidateLocalZones added in v0.97.0

func ValidateLocalZones(ctx context.Context, ec2API awsapi.EC2, localZones []string, region string) error

ValidateLocalZones validates that the specified local zones exist.

func WaitForNodes added in v0.99.0

func WaitForNodes(ctx context.Context, clientSet kubernetes.Interface, ng KubeNodeGroup) error

WaitForNodes waits till the nodes are ready

Types

type AWSConfigurationLoader added in v0.153.0

type AWSConfigurationLoader interface {
	LoadDefaultConfig(ctx context.Context, optFns ...func(*config.LoadOptions) error) (cfg aws.Config, err error)
}

type Client

type Client struct {
	Config *clientcmdapi.Config
	// contains filtered or unexported fields
}

Client stores information about the client config

func (*Client) NewClientSet

func (c *Client) NewClientSet() (*kubernetes.Clientset, error)

NewClientSet creates a new API client

type ClusterInfo

type ClusterInfo struct {
	Cluster *ekstypes.Cluster
}

ClusterInfo provides information about the cluster.

type ClusterProvider

type ClusterProvider struct {
	// KubeProvider offers helper methods to handle Kubernetes operations
	KubeProvider

	// core fields used for config and AWS APIs
	AWSProvider api.ClusterProvider
	// informative fields, i.e. used as outputs
	Status *ProviderStatus
}

ClusterProvider stores information about the cluster

func New

func New(
	ctx context.Context,
	spec *api.ProviderConfig,
	clusterSpec *api.ClusterConfig,
) (*ClusterProvider, error)

New creates a new setup of the used AWS APIs

func (*ClusterProvider) CanOperate

func (c *ClusterProvider) CanOperate(spec *api.ClusterConfig) (bool, error)

CanOperate returns true when a cluster can be operated, otherwise it returns false along with an error explaining the reason

func (*ClusterProvider) CanOperateWithRefresh added in v0.85.0

func (c *ClusterProvider) CanOperateWithRefresh(ctx context.Context, spec *api.ClusterConfig) (bool, error)

CanOperateWithRefresh returns true when a cluster can be operated, otherwise it returns false along with an error explaining the reason

func (*ClusterProvider) CanUpdate

func (c *ClusterProvider) CanUpdate(spec *api.ClusterConfig) (bool, error)

CanUpdate return true when a cluster or add-ons can be updated, otherwise it returns false along with an error explaining the reason

func (*ClusterProvider) ClusterTasksForNodeGroups

func (c *ClusterProvider) ClusterTasksForNodeGroups(cfg *api.ClusterConfig, installNeuronDevicePluginParam, installNvidiaDevicePluginParam bool) *tasks.TaskTree

ClusterTasksForNodeGroups returns all tasks dependent on node groups

func (*ClusterProvider) ControlPlaneVPCInfo added in v0.40.0

func (c *ClusterProvider) ControlPlaneVPCInfo() ekstypes.VpcConfigResponse

ControlPlaneVPCInfo returns cached version (EKS API)

func (*ClusterProvider) ControlPlaneVersion

func (c *ClusterProvider) ControlPlaneVersion() string

ControlPlaneVersion returns cached version (EKS API)

func (*ClusterProvider) CreateExtraClusterConfigTasks

func (c *ClusterProvider) CreateExtraClusterConfigTasks(ctx context.Context, cfg *api.ClusterConfig, preNodeGroupAddons *tasks.TaskTree, updateVPCCNITask *tasks.GenericTask) *tasks.TaskTree

CreateExtraClusterConfigTasks returns all tasks for updating cluster configuration

func (*ClusterProvider) DescribeControlPlane

func (c *ClusterProvider) DescribeControlPlane(ctx context.Context, meta *api.ClusterMeta) (*ekstypes.Cluster, error)

DescribeControlPlane describes the cluster control plane

func (*ClusterProvider) EnableKMSEncryption added in v0.39.0

func (c *ClusterProvider) EnableKMSEncryption(ctx context.Context, clusterConfig *api.ClusterConfig) error

EnableKMSEncryption enables KMS encryption for the specified cluster

func (*ClusterProvider) GetCluster

func (c *ClusterProvider) GetCluster(ctx context.Context, clusterName string) (*ekstypes.Cluster, error)

GetCluster display details of an EKS cluster in your account

func (*ClusterProvider) GetClusterState added in v0.167.0

func (c *ClusterProvider) GetClusterState() *ekstypes.Cluster

GetClusterState returns the EKS cluster state.

func (*ClusterProvider) GetCredentialsEnv

func (c *ClusterProvider) GetCredentialsEnv(ctx context.Context) ([]string, error)

GetCredentialsEnv returns the AWS credentials for env usage

func (*ClusterProvider) GetCurrentClusterConfigForLogging

func (c *ClusterProvider) GetCurrentClusterConfigForLogging(ctx context.Context, spec *api.ClusterConfig) (sets.Set[string], sets.Set[string], error)

GetCurrentClusterConfigForLogging fetches current cluster logging configuration as two sets - enabled and disabled types

func (*ClusterProvider) GetCurrentClusterVPCConfig

func (c *ClusterProvider) GetCurrentClusterVPCConfig(ctx context.Context, spec *api.ClusterConfig) (*ClusterVPCConfig, error)

GetCurrentClusterVPCConfig fetches current cluster endpoint configuration for public and private access types

func (*ClusterProvider) GetNodeGroupIAM

func (c *ClusterProvider) GetNodeGroupIAM(ctx context.Context, stackManager manager.StackManager, ng *api.NodeGroup) error

GetNodeGroupIAM retrieves the IAM configuration of the given nodegroup

func (*ClusterProvider) IsAccessEntryEnabled added in v0.167.0

func (c *ClusterProvider) IsAccessEntryEnabled() bool

IsAccessEntryEnabled reports whether the cluster has access entries enabled.

func (*ClusterProvider) IsSupportedRegion

func (c *ClusterProvider) IsSupportedRegion() bool

IsSupportedRegion check if given region is supported

func (*ClusterProvider) LoadClusterIntoSpecFromStack added in v0.40.0

func (c *ClusterProvider) LoadClusterIntoSpecFromStack(ctx context.Context, spec *api.ClusterConfig, stack *manager.Stack) error

LoadClusterIntoSpecFromStack uses stack information to load the cluster configuration into the spec At the moment VPC and KubernetesNetworkConfig are respected

func (*ClusterProvider) LoadClusterVPC

func (c *ClusterProvider) LoadClusterVPC(ctx context.Context, spec *api.ClusterConfig, stack *manager.Stack, ignoreDrift bool) error

LoadClusterVPC loads the VPC configuration.

func (*ClusterProvider) NewOpenIDConnectManager

func (c *ClusterProvider) NewOpenIDConnectManager(ctx context.Context, spec *api.ClusterConfig) (*iamoidc.OpenIDConnectManager, error)

NewOpenIDConnectManager returns OpenIDConnectManager

func (*ClusterProvider) NewStackManager

func (c *ClusterProvider) NewStackManager(spec *api.ClusterConfig) manager.StackManager

NewStackManager returns a new stack manager

func (*ClusterProvider) RefreshClusterStatus

func (c *ClusterProvider) RefreshClusterStatus(ctx context.Context, spec *api.ClusterConfig) error

RefreshClusterStatus calls c.DescribeControlPlane and caches the results; it parses the credentials (endpoint, CA certificate) and stores them in ClusterConfig.Status, so that a Kubernetes client can be constructed; additionally it caches Kubernetes version (use ctl.ControlPlaneVersion to retrieve it) and other properties in c.Status.cachedClusterInfo. It also updates ClusterConfig to reflect the current cluster state.

func (*ClusterProvider) RefreshClusterStatusIfStale added in v0.73.0

func (c *ClusterProvider) RefreshClusterStatusIfStale(ctx context.Context, spec *api.ClusterConfig) error

RefreshClusterStatusIfStale refreshes the cluster status if enough time has passed since the last refresh

func (*ClusterProvider) UpdateClusterConfig added in v0.164.0

func (c *ClusterProvider) UpdateClusterConfig(ctx context.Context, input *eks.UpdateClusterConfigInput) error

UpdateClusterConfig calls EKS.UpdateClusterConfig and waits for the update to complete.

func (*ClusterProvider) UpdateClusterConfigForEndpoints

func (c *ClusterProvider) UpdateClusterConfigForEndpoints(ctx context.Context, cfg *api.ClusterConfig) error

UpdateClusterConfigForEndpoints calls eks.UpdateClusterConfig and updates access to API endpoints

func (*ClusterProvider) UpdateClusterConfigForLogging

func (c *ClusterProvider) UpdateClusterConfigForLogging(ctx context.Context, cfg *api.ClusterConfig) error

UpdateClusterConfigForLogging calls UpdateClusterConfig to enable logging

func (*ClusterProvider) UpdateClusterVersion

func (c *ClusterProvider) UpdateClusterVersion(ctx context.Context, cfg *api.ClusterConfig) (*ekstypes.Update, error)

UpdateClusterVersion calls eks.UpdateClusterVersion and updates to cfg.Metadata.Version, it will return update ID along with an error (if it occurs)

func (*ClusterProvider) UpdateClusterVersionBlocking

func (c *ClusterProvider) UpdateClusterVersionBlocking(ctx context.Context, cfg *api.ClusterConfig) error

UpdateClusterVersionBlocking calls UpdateClusterVersion and blocks until update operation is successful

func (*ClusterProvider) UpdatePublicAccessCIDRs

func (c *ClusterProvider) UpdatePublicAccessCIDRs(ctx context.Context, clusterConfig *api.ClusterConfig) error

UpdatePublicAccessCIDRs calls eks.UpdateClusterConfig and updates the CIDRs for public access

func (*ClusterProvider) ValidateClusterForCompatibility

func (c *ClusterProvider) ValidateClusterForCompatibility(ctx context.Context, cfg *api.ClusterConfig, stackManager manager.StackManager) error

ValidateClusterForCompatibility looks at the cluster stack and check if it's compatible with current nodegroup configuration, if it find issues it returns an error

type ClusterVPCConfig

type ClusterVPCConfig struct {
	ClusterEndpoints  *api.ClusterEndpoints
	PublicAccessCIDRs []string
}

ClusterVPCConfig represents a cluster's VPC configuration

type ConfigurationLoader added in v0.153.0

type ConfigurationLoader struct {
	AWSConfigurationLoader
}

func (ConfigurationLoader) LoadDefaultConfig added in v0.153.0

func (cl ConfigurationLoader) LoadDefaultConfig(ctx context.Context, optFns ...func(*config.LoadOptions) error) (aws.Config, error)

type FargateClient

type FargateClient interface {
	CreateProfile(ctx context.Context, profile *api.FargateProfile, waitForCreation bool) error
	ListProfiles(ctx context.Context) ([]string, error)
}

type InstanceSelector added in v0.45.0

type InstanceSelector interface {
	// Filter returns a set of instance types matching the specified instance selector filters.
	Filter(context.Context, selector.Filters) ([]string, error)
}

InstanceSelector selects a set of instance types matching the specified instance selector criteria.

type KubeNodeGroup

type KubeNodeGroup interface {
	// NameString returns the name
	NameString() string
	// Size returns the number of the nodes (desired capacity)
	Size() int
	// ListOptions returns the selector for listing nodes in this nodegroup
	ListOptions() metav1.ListOptions
	// GetAMIFamily returns the AMI family
	GetAMIFamily() string
}

KubeNodeGroup defines a set of Kubernetes nodes.

type KubeProvider added in v0.53.0

type KubeProvider interface {
	NewRawClient(clusterInfo kubeconfig.ClusterInfo) (*kubernetes.RawClient, error)
	NewStdClientSet(clusterInfo kubeconfig.ClusterInfo) (k8sclient.Interface, error)
	NewDynamicClient(clusterInfo kubeconfig.ClusterInfo) (*dynamic.DynamicClient, error)
	ServerVersion(rawClient *kubernetes.RawClient) (string, error)
	WaitForControlPlane(meta *api.ClusterMeta, clientSet *kubernetes.RawClient, waitTimeout time.Duration) error
}

KubeProvider is an interface with helper funcs for k8s and EKS that are part of ClusterProvider

type KubernetesProvider added in v0.99.0

type KubernetesProvider struct {
	WaitTimeout time.Duration
	RoleARN     string
	Signer      api.STSPresigner
}

KubernetesProvider provides helper methods to handle Kubernetes operations.

func (*KubernetesProvider) NewClient added in v0.99.0

func (c *KubernetesProvider) NewClient(clusterInfo kubeconfig.ClusterInfo) (*Client, error)

NewClient creates a new client config.

func (*KubernetesProvider) NewDynamicClient added in v0.195.0

func (c *KubernetesProvider) NewDynamicClient(clusterInfo kubeconfig.ClusterInfo) (*dynamic.DynamicClient, error)

NewDynamicClient creates a new DynamicClient.

func (*KubernetesProvider) NewRawClient added in v0.99.0

func (c *KubernetesProvider) NewRawClient(clusterInfo kubeconfig.ClusterInfo) (*kubewrapper.RawClient, error)

NewRawClient creates a new raw REST client.

func (*KubernetesProvider) NewStdClientSet added in v0.99.0

func (c *KubernetesProvider) NewStdClientSet(clusterInfo kubeconfig.ClusterInfo) (kubernetes.Interface, error)

NewStdClientSet creates a new API client.

func (*KubernetesProvider) ServerVersion added in v0.99.0

func (c *KubernetesProvider) ServerVersion(rawClient *kubewrapper.RawClient) (string, error)

ServerVersion will use discovery API to fetch version of Kubernetes control plane

func (*KubernetesProvider) WaitForControlPlane added in v0.101.0

func (c *KubernetesProvider) WaitForControlPlane(meta *api.ClusterMeta, clientSet *kubewrapper.RawClient, waitTimeout time.Duration) error

WaitForControlPlane waits till the control plane is ready

type NodeGroupLister added in v0.195.0

type NodeGroupLister struct {
	NodeGroupStackLister NodeGroupStackLister
}

func (*NodeGroupLister) List added in v0.195.0

type NodeGroupService

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

A NodeGroupService provides helpers for nodegroup creation.

func NewNodeGroupService

func NewNodeGroupService(provider api.ClusterProvider, instanceSelector InstanceSelector, outpostsService *outposts.Service) *NodeGroupService

NewNodeGroupService creates a new NodeGroupService.

func (*NodeGroupService) ExpandInstanceSelectorOptions added in v0.44.0

func (n *NodeGroupService) ExpandInstanceSelectorOptions(nodePools []api.NodePool, clusterAZs []string) error

ExpandInstanceSelectorOptions sets instance types to instances matched by the instance selector criteria.

func (*NodeGroupService) Normalize

func (n *NodeGroupService) Normalize(ctx context.Context, nodePools []api.NodePool, clusterConfig *api.ClusterConfig) error

Normalize normalizes nodegroups.

type NodeGroupStackLister added in v0.195.0

type NodeGroupStackLister interface {
	ListNodeGroupStacksWithStatuses(ctx context.Context) ([]manager.NodeGroupStack, error)
}

type ProviderServices

type ProviderServices struct {
	*ServicesV2
	// contains filtered or unexported fields
}

ProviderServices stores the used APIs

func (ProviderServices) ASG added in v0.39.0

func (p ProviderServices) ASG() awsapi.ASG

ASG returns a representation of the AutoScaling API

func (ProviderServices) CloudFormationDisableRollback

func (p ProviderServices) CloudFormationDisableRollback() bool

CloudFormationDisableRollback returns whether stacks should not rollback on failure

func (ProviderServices) CloudFormationRoleARN

func (p ProviderServices) CloudFormationRoleARN() string

CloudFormationRoleARN returns, if any, a service role used by CloudFormation to call AWS API on your behalf

func (ProviderServices) CloudTrail

func (p ProviderServices) CloudTrail() awsapi.CloudTrail

CloudTrail returns a representation of the CloudTrail API

func (ProviderServices) CloudWatchLogs added in v0.73.0

func (p ProviderServices) CloudWatchLogs() awsapi.CloudWatchLogs

CloudWatchLogs returns a representation of the CloudWatchLogs API.

func (ProviderServices) Profile

func (p ProviderServices) Profile() api.Profile

Profile returns the provider-level AWS profile.

func (ProviderServices) Region

func (p ProviderServices) Region() string

Region returns provider-level region setting

func (ProviderServices) WaitTimeout

func (p ProviderServices) WaitTimeout() time.Duration

WaitTimeout returns provider-level duration after which any wait operation has to timeout

type ProviderStatus

type ProviderStatus struct {
	IAMRoleARN  string
	ClusterInfo *ClusterInfo
}

ProviderStatus stores information about the used IAM role and the resulting session

type RetryerV2 added in v0.90.0

type RetryerV2 struct {
	aws.Retryer
}

RetryerV2 implements aws.Retryer

func NewRetryerV2 added in v0.90.0

func NewRetryerV2() *RetryerV2

NewRetryerV2 returns a new *RetryerV2

func (*RetryerV2) IsErrorRetryable added in v0.90.0

func (r *RetryerV2) IsErrorRetryable(err error) bool

IsErrorRetryable implements aws.Retryer

type ServicesV2 added in v0.90.0

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

ServicesV2 implements api.ServicesV2. The SDK clients are initialized lazily and guarded by a mutex.

func (*ServicesV2) AWSConfig added in v0.148.0

func (s *ServicesV2) AWSConfig() aws.Config

func (*ServicesV2) CloudFormation added in v0.95.0

func (s *ServicesV2) CloudFormation() awsapi.CloudFormation

CloudFormation implements the AWS CloudFormation service.

func (*ServicesV2) CredentialsProvider added in v0.148.0

func (s *ServicesV2) CredentialsProvider() aws.CredentialsProvider

func (*ServicesV2) EC2 added in v0.94.0

func (s *ServicesV2) EC2() awsapi.EC2

EC2 implements the AWS EC2 service.

func (*ServicesV2) EKS added in v0.98.0

func (s *ServicesV2) EKS() awsapi.EKS

EKS returns the AWS EKS service.

func (*ServicesV2) ELB added in v0.91.0

func (s *ServicesV2) ELB() awsapi.ELB

ELB implements the AWS ELB service.

func (*ServicesV2) ELBV2 added in v0.91.0

func (s *ServicesV2) ELBV2() awsapi.ELBV2

ELBV2 implements the ELBV2 service.

func (*ServicesV2) IAM added in v0.94.0

func (s *ServicesV2) IAM() awsapi.IAM

IAM implements the AWS IAM service.

func (*ServicesV2) Outposts added in v0.112.0

func (s *ServicesV2) Outposts() awsapi.Outposts

Outposts returns the AWS Outposts service.

func (*ServicesV2) SSM added in v0.91.0

func (s *ServicesV2) SSM() awsapi.SSM

SSM implements the AWS SSM service.

func (*ServicesV2) STS added in v0.92.0

func (s *ServicesV2) STS() awsapi.STS

STS implements the AWS STS service.

func (*ServicesV2) STSPresigner added in v0.92.0

func (s *ServicesV2) STSPresigner() api.STSPresigner

STSPresigner provides a signed STS client for calls to Kubernetes.

type VPCControllerTask

type VPCControllerTask struct {
	Context         context.Context
	Info            string
	ClusterProvider *ClusterProvider
	ClusterConfig   *api.ClusterConfig
	PlanMode        bool
}

VPCControllerTask represents a task to install the VPC controller

func (*VPCControllerTask) Describe

func (v *VPCControllerTask) Describe() string

Describe implements Task

func (*VPCControllerTask) Do

func (v *VPCControllerTask) Do(errCh chan error) error

Do implements Task

type WindowsIPAMTask added in v0.74.0

type WindowsIPAMTask struct {
	Info          string
	ClientsetFunc func() (kubernetes.Interface, error)
}

WindowsIPAMTask is a task for enabling Windows IPAM.

func (*WindowsIPAMTask) Describe added in v0.74.0

func (w *WindowsIPAMTask) Describe() string

Describe implements Task.

func (*WindowsIPAMTask) Do added in v0.74.0

func (w *WindowsIPAMTask) Do(errCh chan error) error

Do implements Task.

Directories

Path Synopsis
Code generated by counterfeiter.
Code generated by counterfeiter.

Jump to

Keyboard shortcuts

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