manager

package
v0.46.0 Latest Latest
Warning

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

Go to latest
Published: Apr 23, 2021 License: Apache-2.0 Imports: 34 Imported by: 41

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func GetEksctlVersionFromTags

func GetEksctlVersionFromTags(tags []*cfn.Tag) (semver.Version, bool, error)

GetEksctlVersionFromTags returns the eksctl version used to create or update the stack

func GetIAMServiceAccountName added in v0.39.0

func GetIAMServiceAccountName(s *Stack) string

GetIAMServiceAccountName will return iamserviceaccount name based on tags

func GetNodeGroupType

func GetNodeGroupType(tags []*cfn.Tag) (api.NodeGroupType, error)

GetNodeGroupType returns the nodegroup type

func GetNodegroupTagName

func GetNodegroupTagName(tags []*cfn.Tag) string

GetNodegroupTagName returns the nodegroup name of a stack based on its tags. Taking into account legacy tags.

Types

type ChangeSet

ChangeSet represents a CloudFormation ChangeSet

type DeleteUnownedNodegroupTask added in v0.40.0

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

func (*DeleteUnownedNodegroupTask) Describe added in v0.40.0

func (d *DeleteUnownedNodegroupTask) Describe() string

func (*DeleteUnownedNodegroupTask) Do added in v0.40.0

type DeleteWaitCondition added in v0.40.0

type DeleteWaitCondition struct {
	Condition func() (bool, error)
	Timeout   time.Duration
	Interval  time.Duration
}

type NodeGroupStack

type NodeGroupStack struct {
	NodeGroupName string
	Type          api.NodeGroupType
}

NodeGroupStack represents a nodegroup and its type

type NodeGroupSummary

type NodeGroupSummary struct {
	StackName            string
	Cluster              string
	Name                 string
	Status               string
	MaxSize              int
	MinSize              int
	DesiredCapacity      int
	InstanceType         string
	ImageID              string
	CreationTime         *time.Time
	NodeInstanceRoleARN  string
	AutoScalingGroupName string
}

NodeGroupSummary represents a summary of a nodegroup stack

type Stack

type Stack = cloudformation.Stack

Stack represents the CloudFormation stack

type StackCollection

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

StackCollection stores the CloudFormation stack information

func NewStackCollection

func NewStackCollection(provider api.ClusterProvider, spec *api.ClusterConfig) *StackCollection

NewStackCollection create a stack manager for a single cluster

func (*StackCollection) AppendNewClusterStackResource

func (c *StackCollection) AppendNewClusterStackResource(plan, supportsManagedNodes bool) (bool, error)

AppendNewClusterStackResource will update cluster stack with new resources in append-only way

func (*StackCollection) CreateStack

func (c *StackCollection) CreateStack(stackName string, resourceSet builder.ResourceSet, tags, parameters map[string]string, errs chan error) error

CreateStack with given name, stack builder instance and parameters; any errors will be written to errs channel, when nil is written, assume completion, do not expect more then one error value on the channel, it's closed immediately after it is written to

func (*StackCollection) DeleteStackByName

func (c *StackCollection) DeleteStackByName(name string) (*Stack, error)

DeleteStackByName sends a request to delete the stack

func (*StackCollection) DeleteStackByNameSync

func (c *StackCollection) DeleteStackByNameSync(name string) error

DeleteStackByNameSync sends a request to delete the stack, and waits until status is DELETE_COMPLETE; any errors will be written to errs channel, assume completion when nil is written, do not expect more then one error value on the channel, it's closed immediately after it is written to

func (*StackCollection) DeleteStackBySpec

func (c *StackCollection) DeleteStackBySpec(s *Stack) (*Stack, error)

DeleteStackBySpec sends a request to delete the stack

func (*StackCollection) DeleteStackBySpecSync

func (c *StackCollection) DeleteStackBySpecSync(s *Stack, errs chan error) error

DeleteStackBySpecSync sends a request to delete the stack, and waits until status is DELETE_COMPLETE; any errors will be written to errs channel, assume completion when nil is written, do not expect more then one error value on the channel, it's closed immediately after it is written to

func (*StackCollection) DeleteTasksForDeprecatedStacks

func (c *StackCollection) DeleteTasksForDeprecatedStacks() (*tasks.TaskTree, error)

DeleteTasksForDeprecatedStacks all deprecated stacks

func (*StackCollection) DescribeClusterStack

func (c *StackCollection) DescribeClusterStack() (*Stack, error)

DescribeClusterStack calls DescribeStacks and filters out cluster stack

func (*StackCollection) DescribeIAMServiceAccountStacks

func (c *StackCollection) DescribeIAMServiceAccountStacks() ([]*Stack, error)

DescribeIAMServiceAccountStacks calls DescribeStacks and filters out iamserviceaccounts

func (*StackCollection) DescribeNodeGroupStack

func (c *StackCollection) DescribeNodeGroupStack(nodeGroupName string) (*Stack, error)

DescribeNodeGroupStack gets the specified nodegroup stack

func (*StackCollection) DescribeNodeGroupStacks

func (c *StackCollection) DescribeNodeGroupStacks() ([]*Stack, error)

DescribeNodeGroupStacks calls DescribeStacks and filters out nodegroups

func (*StackCollection) DescribeNodeGroupStacksAndResources

func (c *StackCollection) DescribeNodeGroupStacksAndResources() (map[string]StackInfo, error)

DescribeNodeGroupStacksAndResources calls DescribeNodeGroupStacks and fetches all resources, then returns it in a map by nodegroup name

func (*StackCollection) DescribeStack

func (c *StackCollection) DescribeStack(i *Stack) (*Stack, error)

DescribeStack describes a cloudformation stack.

func (*StackCollection) DescribeStackChangeSet

func (c *StackCollection) DescribeStackChangeSet(i *Stack, changeSetName string) (*ChangeSet, error)

DescribeStackChangeSet describes a ChangeSet by name

func (*StackCollection) DescribeStackEvents

func (c *StackCollection) DescribeStackEvents(i *Stack) ([]*cloudformation.StackEvent, error)

DescribeStackEvents describes the events that have occurred on the stack

func (*StackCollection) DescribeStacks

func (c *StackCollection) DescribeStacks() ([]*Stack, error)

DescribeStacks describes the existing stacks

func (*StackCollection) DoCreateStackRequest

func (c *StackCollection) DoCreateStackRequest(i *Stack, templateData TemplateData, tags, parameters map[string]string, withIAM bool, withNamedIAM bool) error

DoCreateStackRequest requests the creation of a CloudFormation stack

func (*StackCollection) DoWaitUntilStackIsCreated

func (c *StackCollection) DoWaitUntilStackIsCreated(i *Stack) error

DoWaitUntilStackIsCreated blocks until the given stack's creation has completed.

func (*StackCollection) EnsureMapPublicIPOnLaunchEnabled

func (c *StackCollection) EnsureMapPublicIPOnLaunchEnabled() error

EnsureMapPublicIPOnLaunchEnabled sets this subnet property to true when it is not set or is set to false

func (*StackCollection) FixClusterCompatibility

func (c *StackCollection) FixClusterCompatibility() error

FixClusterCompatibility adds any resources missing in the CloudFormation stack in order to support new features like Managed Nodegroups and Fargate

func (*StackCollection) GetAutoScalingGroupDesiredCapacity added in v0.45.0

func (c *StackCollection) GetAutoScalingGroupDesiredCapacity(name string) (autoscaling.Group, error)

GetAutoScalingGroupDesiredCapacity returns the AutoScalingGroup's desired capacity

func (*StackCollection) GetAutoScalingGroupName added in v0.39.0

func (c *StackCollection) GetAutoScalingGroupName(s *Stack) (string, error)

func (*StackCollection) GetFargateStack

func (c *StackCollection) GetFargateStack() (*Stack, error)

GetFargateStack returns the stack holding the fargate IAM resources, if any

func (*StackCollection) GetIAMAddonName

func (*StackCollection) GetIAMAddonName(s *Stack) string

func (*StackCollection) GetIAMAddonsStacks

func (c *StackCollection) GetIAMAddonsStacks() ([]*Stack, error)

func (*StackCollection) GetIAMServiceAccounts

func (c *StackCollection) GetIAMServiceAccounts() ([]*api.ClusterIAMServiceAccount, error)

GetIAMServiceAccounts calls DescribeIAMServiceAccountStacks and return native iamserviceaccounts

func (*StackCollection) GetManagedNodeGroupTemplate

func (c *StackCollection) GetManagedNodeGroupTemplate(nodeGroupName string) (string, error)

GetManagedNodeGroupTemplate returns the template for a ManagedNodeGroup resource

func (*StackCollection) GetNodeGroupName

func (*StackCollection) GetNodeGroupName(s *Stack) string

GetNodeGroupName will return nodegroup name based on tags

func (*StackCollection) GetNodeGroupStackType

func (c *StackCollection) GetNodeGroupStackType(name string) (api.NodeGroupType, error)

GetNodeGroupStackType returns the nodegroup stack type

func (*StackCollection) GetStackTemplate

func (c *StackCollection) GetStackTemplate(stackName string) (string, error)

GetStackTemplate gets the Cloudformation template for a stack and returns a json string representation

func (*StackCollection) GetUnmanagedNodeGroupSummaries added in v0.45.0

func (c *StackCollection) GetUnmanagedNodeGroupSummaries(name string) ([]*NodeGroupSummary, error)

GetUnmanagedNodeGroupSummaries returns a list of summaries for the unmanaged nodegroups of a cluster

func (*StackCollection) HasClusterStack

func (c *StackCollection) HasClusterStack() (bool, error)

func (*StackCollection) HasClusterStackUsingCachedList

func (c *StackCollection) HasClusterStackUsingCachedList(clusterStackNames []string) (bool, error)

func (*StackCollection) ListClusterStackNames

func (c *StackCollection) ListClusterStackNames() ([]string, error)

ListStackNamesMatching gets all stack names matching regex

func (*StackCollection) ListIAMServiceAccountStacks

func (c *StackCollection) ListIAMServiceAccountStacks() ([]string, error)

ListIAMServiceAccountStacks calls DescribeIAMServiceAccountStacks and returns only iamserviceaccount names

func (*StackCollection) ListNodeGroupStacks

func (c *StackCollection) ListNodeGroupStacks() ([]NodeGroupStack, error)

ListNodeGroupStacks returns a list of NodeGroupStacks

func (*StackCollection) ListStacks

func (c *StackCollection) ListStacks(statusFilters ...string) ([]*Stack, error)

ListStacks gets all of CloudFormation stacks

func (*StackCollection) ListStacksMatching

func (c *StackCollection) ListStacksMatching(nameRegex string, statusFilters ...string) ([]*Stack, error)

ListStacksMatching gets all of CloudFormation stacks with names matching nameRegex.

func (*StackCollection) LookupCloudTrailEvents

func (c *StackCollection) LookupCloudTrailEvents(i *Stack) ([]*cloudtrail.Event, error)

LookupCloudTrailEvents looks up stack events in CloudTrail

func (*StackCollection) MakeChangeSetName

func (c *StackCollection) MakeChangeSetName(action string) string

MakeChangeSetName builds a consistent name for a changeset.

func (*StackCollection) MakeClusterStackName added in v0.40.0

func (c *StackCollection) MakeClusterStackName() string

func (*StackCollection) NewClusterCompatTask

func (c *StackCollection) NewClusterCompatTask() tasks.Task

NewClusterCompatTask creates a new task that checks for cluster compatibility with new features like Managed Nodegroups and Fargate, and updates the CloudFormation cluster stack if the required resources are missing

func (*StackCollection) NewManagedNodeGroupTask

func (c *StackCollection) NewManagedNodeGroupTask(nodeGroups []*api.ManagedNodeGroup, forceAddCNIPolicy bool, vpcImporter vpc.Importer) *tasks.TaskTree

NewManagedNodeGroupTask defines tasks required to create managed nodegroups

func (*StackCollection) NewTaskToDeleteAddonIAM

func (c *StackCollection) NewTaskToDeleteAddonIAM(wait bool) (*tasks.TaskTree, error)

NewTaskToDeleteAddonIAM defines tasks required to delete all of the addons

func (*StackCollection) NewTaskToDeleteUnownedNodeGroup added in v0.40.0

func (c *StackCollection) NewTaskToDeleteUnownedNodeGroup(clusterName, nodegroup string, eksAPI eksiface.EKSAPI, waitCondition *DeleteWaitCondition) tasks.Task

func (*StackCollection) NewTasksToCreateClusterWithNodeGroups

func (c *StackCollection) NewTasksToCreateClusterWithNodeGroups(nodeGroups []*api.NodeGroup,
	managedNodeGroups []*api.ManagedNodeGroup, supportsManagedNodes bool, postClusterCreationTasks ...tasks.Task) *tasks.TaskTree

NewTasksToCreateClusterWithNodeGroups defines all tasks required to create a cluster along with some nodegroups; see CreateAllNodeGroups for how onlyNodeGroupSubset works

func (*StackCollection) NewTasksToCreateIAMServiceAccounts

func (c *StackCollection) NewTasksToCreateIAMServiceAccounts(serviceAccounts []*api.ClusterIAMServiceAccount, oidc *iamoidc.OpenIDConnectManager, clientSetGetter kubernetes.ClientSetGetter) *tasks.TaskTree

NewTasksToCreateIAMServiceAccounts defines tasks required to create all of the IAM ServiceAccounts

func (*StackCollection) NewTasksToDeleteClusterWithNodeGroups

func (c *StackCollection) NewTasksToDeleteClusterWithNodeGroups(deleteOIDCProvider bool, oidc *iamoidc.OpenIDConnectManager, clientSetGetter kubernetes.ClientSetGetter, wait bool, cleanup func(chan error, string) error) (*tasks.TaskTree, error)

NewTasksToDeleteClusterWithNodeGroups defines tasks required to delete the given cluster along with all of its resources

func (*StackCollection) NewTasksToDeleteIAMServiceAccounts

func (c *StackCollection) NewTasksToDeleteIAMServiceAccounts(serviceAccounts []string, clientSetGetter kubernetes.ClientSetGetter, wait bool) (*tasks.TaskTree, error)

NewTasksToDeleteIAMServiceAccounts defines tasks required to delete all of the iamserviceaccounts

func (*StackCollection) NewTasksToDeleteNodeGroups

func (c *StackCollection) NewTasksToDeleteNodeGroups(shouldDelete func(string) bool, wait bool, cleanup func(chan error, string) error) (*tasks.TaskTree, error)

NewTasksToDeleteNodeGroups defines tasks required to delete all of the nodegroups

func (*StackCollection) NewTasksToDeleteOIDCProviderWithIAMServiceAccounts

func (c *StackCollection) NewTasksToDeleteOIDCProviderWithIAMServiceAccounts(oidc *iamoidc.OpenIDConnectManager, clientSetGetter kubernetes.ClientSetGetter) (*tasks.TaskTree, error)

NewTasksToDeleteOIDCProviderWithIAMServiceAccounts defines tasks required to delete all of the iamserviceaccounts along with associated IAM ODIC provider

func (*StackCollection) NewUnmanagedNodeGroupTask

func (c *StackCollection) NewUnmanagedNodeGroupTask(nodeGroups []*api.NodeGroup, supportsManagedNodes bool, forceAddCNIPolicy bool, vpcImporter vpc.Importer) *tasks.TaskTree

NewUnmanagedNodeGroupTask defines tasks required to create all of the nodegroups

func (*StackCollection) RefreshFargatePodExecutionRoleARN

func (c *StackCollection) RefreshFargatePodExecutionRoleARN() error

RefreshFargatePodExecutionRoleARN reads the CloudFormation stacks and their output values, and sets the Fargate pod execution role ARN to the ClusterConfig. If there is no cluster stack found but a fargate stack exists, use the output from that stack.

func (*StackCollection) StackStatusIsNotReady

func (*StackCollection) StackStatusIsNotReady(s *Stack) bool

StackStatusIsNotReady will return true when stack statate is non-ready

func (*StackCollection) StackStatusIsNotTransitional

func (*StackCollection) StackStatusIsNotTransitional(s *Stack) bool

StackStatusIsNotTransitional will return true when stack status is non-transitional

func (*StackCollection) UpdateNodeGroupStack

func (c *StackCollection) UpdateNodeGroupStack(nodeGroupName, template string) error

UpdateNodeGroupStack updates the nodegroup stack with the specified template

func (*StackCollection) UpdateStack

func (c *StackCollection) UpdateStack(stackName, changeSetName, description string, templateData TemplateData, parameters map[string]string) error

UpdateStack will update a CloudFormation stack by creating and executing a ChangeSet

type StackInfo

type StackInfo struct {
	Stack     *Stack
	Resources []*cloudformation.StackResource
	Template  *string
}

StackInfo hold the stack along with template and resources

type StackManager added in v0.39.0

type StackManager interface {
	ListNodeGroupStacks() ([]NodeGroupStack, error)
	DescribeNodeGroupStacksAndResources() (map[string]StackInfo, error)
	GetUnmanagedNodeGroupSummaries(name string) ([]*NodeGroupSummary, error)
	DescribeNodeGroupStack(nodeGroupName string) (*Stack, error)
	DescribeNodeGroupStacks() ([]*Stack, error)
	GetNodeGroupStackType(name string) (v1alpha5.NodeGroupType, error)
	GetNodeGroupName(s *Stack) string
	DoWaitUntilStackIsCreated(i *Stack) error
	DoCreateStackRequest(i *Stack, templateData TemplateData, tags, parameters map[string]string, withIAM bool, withNamedIAM bool) error
	CreateStack(name string, stack builder.ResourceSet, tags, parameters map[string]string, errs chan error) error
	UpdateStack(stackName, changeSetName, description string, templateData TemplateData, parameters map[string]string) error
	DescribeStack(i *Stack) (*Stack, error)
	GetManagedNodeGroupTemplate(nodeGroupName string) (string, error)
	UpdateNodeGroupStack(nodeGroupName, template string) error
	ListStacksMatching(nameRegex string, statusFilters ...string) ([]*Stack, error)
	ListClusterStackNames() ([]string, error)
	ListStacks(statusFilters ...string) ([]*Stack, error)
	StackStatusIsNotTransitional(s *Stack) bool
	StackStatusIsNotReady(s *Stack) bool
	DeleteStackByName(name string) (*Stack, error)
	DeleteStackByNameSync(name string) error
	DeleteStackBySpec(s *Stack) (*Stack, error)
	DeleteStackBySpecSync(s *Stack, errs chan error) error
	DescribeStacks() ([]*Stack, error)
	HasClusterStack() (bool, error)
	HasClusterStackUsingCachedList(clusterStackNames []string) (bool, error)
	DescribeStackEvents(i *Stack) ([]*cloudformation.StackEvent, error)
	LookupCloudTrailEvents(i *Stack) ([]*cloudtrail.Event, error)
	DescribeStackChangeSet(i *Stack, changeSetName string) (*ChangeSet, error)
	MakeChangeSetName(action string) string
	DescribeClusterStack() (*Stack, error)
	RefreshFargatePodExecutionRoleARN() error
	AppendNewClusterStackResource(plan, supportsManagedNodes bool) (bool, error)
	GetFargateStack() (*Stack, error)
	GetStackTemplate(stackName string) (string, error)
	MakeClusterStackName() string
	NewTasksToCreateClusterWithNodeGroups(nodeGroups []*v1alpha5.NodeGroup,
		managedNodeGroups []*v1alpha5.ManagedNodeGroup, supportsManagedNodes bool, postClusterCreationTasks ...tasks.Task) *tasks.TaskTree
	NewUnmanagedNodeGroupTask(nodeGroups []*v1alpha5.NodeGroup, supportsManagedNodes bool, forceAddCNIPolicy bool, importer vpc.Importer) *tasks.TaskTree
	NewManagedNodeGroupTask(nodeGroups []*v1alpha5.ManagedNodeGroup, forceAddCNIPolicy bool, importer vpc.Importer) *tasks.TaskTree
	NewClusterCompatTask() tasks.Task
	NewTasksToCreateIAMServiceAccounts(serviceAccounts []*v1alpha5.ClusterIAMServiceAccount, oidc *iamoidc.OpenIDConnectManager, clientSetGetter kubernetes.ClientSetGetter) *tasks.TaskTree
	DeleteTasksForDeprecatedStacks() (*tasks.TaskTree, error)
	NewTasksToDeleteClusterWithNodeGroups(deleteOIDCProvider bool, oidc *iamoidc.OpenIDConnectManager, clientSetGetter kubernetes.ClientSetGetter, wait bool, cleanup func(chan error, string) error) (*tasks.TaskTree, error)
	NewTasksToDeleteNodeGroups(shouldDelete func(_ string) bool, wait bool, cleanup func(chan error, string) error) (*tasks.TaskTree, error)
	NewTaskToDeleteUnownedNodeGroup(clusterName, nodegroup string, eksAPI eksiface.EKSAPI, waitCondition *DeleteWaitCondition) tasks.Task
	NewTasksToDeleteOIDCProviderWithIAMServiceAccounts(oidc *iamoidc.OpenIDConnectManager, clientSetGetter kubernetes.ClientSetGetter) (*tasks.TaskTree, error)
	NewTasksToDeleteIAMServiceAccounts(serviceAccounts []string, clientSetGetter kubernetes.ClientSetGetter, wait bool) (*tasks.TaskTree, error)
	NewTaskToDeleteAddonIAM(wait bool) (*tasks.TaskTree, error)
	FixClusterCompatibility() error
	DescribeIAMServiceAccountStacks() ([]*Stack, error)
	ListIAMServiceAccountStacks() ([]string, error)
	GetIAMServiceAccounts() ([]*v1alpha5.ClusterIAMServiceAccount, error)
	GetIAMAddonsStacks() ([]*Stack, error)
	GetIAMAddonName(s *Stack) string
	EnsureMapPublicIPOnLaunchEnabled() error
	GetAutoScalingGroupName(s *Stack) (string, error)
}

type StackNotFoundErr added in v0.40.0

type StackNotFoundErr struct {
	ClusterName string
}

func (*StackNotFoundErr) Error added in v0.40.0

func (e *StackNotFoundErr) Error() string

type TemplateBody

type TemplateBody []byte

TemplateBody allows to pass the full template.

type TemplateData

type TemplateData interface {
	// contains filtered or unexported methods
}

TemplateData is a union (sum type) to describe template data.

type TemplateURL

type TemplateURL string

TemplateURL allows to pass in a link to a template.

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