services

package
v2.5.1 Latest Latest
Warning

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

Go to latest
Published: Jun 13, 2024 License: Apache-2.0 Imports: 5 Imported by: 4

Documentation

Overview

Package services contains the interfaces for the AWS services.

Index

Constants

View Source
const (
	// TemporaryResourceID is the name used temporarily when creating AWS resources.
	TemporaryResourceID = "temporary-resource-id"
	// AnyIPv4CidrBlock is the CIDR block to match all IPv4 addresses.
	AnyIPv4CidrBlock = "0.0.0.0/0"
	// AnyIPv6CidrBlock is the CIDR block to match all IPv6 addresses.
	AnyIPv6CidrBlock = "::/0"
)

Variables

This section is empty.

Functions

This section is empty.

Types

type ASGInterface

type ASGInterface interface {
	ASGIfExists(id *string) (*expinfrav1.AutoScalingGroup, error)
	GetASGByName(scope *scope.MachinePoolScope) (*expinfrav1.AutoScalingGroup, error)
	CreateASG(scope *scope.MachinePoolScope) (*expinfrav1.AutoScalingGroup, error)
	UpdateASG(scope *scope.MachinePoolScope) error
	StartASGInstanceRefresh(scope *scope.MachinePoolScope) error
	CanStartASGInstanceRefresh(scope *scope.MachinePoolScope) (bool, error)
	UpdateResourceTags(resourceID *string, create, remove map[string]string) error
	DeleteASGAndWait(id string) error
	SuspendProcesses(name string, processes []string) error
	ResumeProcesses(name string, processes []string) error
	SubnetIDs(scope *scope.MachinePoolScope) ([]string, error)
}

ASGInterface encapsulates the methods exposed to the machinepool actuator.

type AWSNodeInterface added in v2.5.0

type AWSNodeInterface interface {
	ReconcileCNI(ctx context.Context) error
}

AWSNodeInterface installs the CNI for EKS clusters.

type EC2Interface

type EC2Interface interface {
	InstanceIfExists(id *string) (*infrav1.Instance, error)
	TerminateInstance(id string) error
	CreateInstance(scope *scope.MachineScope, userData []byte, userDataFormat string) (*infrav1.Instance, error)
	GetRunningInstanceByTags(scope *scope.MachineScope) (*infrav1.Instance, error)

	GetAdditionalSecurityGroupsIDs(securityGroup []infrav1.AWSResourceReference) ([]string, error)
	GetCoreSecurityGroups(machine *scope.MachineScope) ([]string, error)
	GetInstanceSecurityGroups(instanceID string) (map[string][]string, error)
	UpdateInstanceSecurityGroups(id string, securityGroups []string) error
	UpdateResourceTags(resourceID *string, create, remove map[string]string) error
	ModifyInstanceMetadataOptions(instanceID string, options *infrav1.InstanceMetadataOptions) error

	TerminateInstanceAndWait(instanceID string) error
	DetachSecurityGroupsFromNetworkInterface(groups []string, interfaceID string) error

	DiscoverLaunchTemplateAMI(scope scope.LaunchTemplateScope) (*string, error)
	GetLaunchTemplate(id string) (lt *expinfrav1.AWSLaunchTemplate, userDataHash string, userDataSecretKey *apimachinerytypes.NamespacedName, err error)
	GetLaunchTemplateID(id string) (string, error)
	GetLaunchTemplateLatestVersion(id string) (string, error)
	CreateLaunchTemplate(scope scope.LaunchTemplateScope, imageID *string, userDataSecretKey apimachinerytypes.NamespacedName, userData []byte) (string, error)
	CreateLaunchTemplateVersion(id string, scope scope.LaunchTemplateScope, imageID *string, userDataSecretKey apimachinerytypes.NamespacedName, userData []byte) error
	PruneLaunchTemplateVersions(id string) error
	DeleteLaunchTemplate(id string) error
	LaunchTemplateNeedsUpdate(scope scope.LaunchTemplateScope, incoming *expinfrav1.AWSLaunchTemplate, existing *expinfrav1.AWSLaunchTemplate) (bool, error)
	DeleteBastion() error
	ReconcileBastion() error
	// ReconcileElasticIPFromPublicPool reconciles the elastic IP from a custom Public IPv4 Pool.
	ReconcileElasticIPFromPublicPool(pool *infrav1.ElasticIPPool, instance *infrav1.Instance) error

	// ReleaseElasticIP reconciles the elastic IP from a custom Public IPv4 Pool.
	ReleaseElasticIP(instanceID string) error
}

EC2Interface encapsulates the methods exposed to the machine actuator.

type ELBInterface

type ELBInterface interface {
	DeleteLoadbalancers() error
	ReconcileLoadbalancers() error
	IsInstanceRegisteredWithAPIServerELB(i *infrav1.Instance) (bool, error)
	IsInstanceRegisteredWithAPIServerLB(i *infrav1.Instance, lb *infrav1.AWSLoadBalancerSpec) ([]string, bool, error)
	DeregisterInstanceFromAPIServerELB(i *infrav1.Instance) error
	DeregisterInstanceFromAPIServerLB(targetGroupArn string, i *infrav1.Instance) error
	RegisterInstanceWithAPIServerELB(i *infrav1.Instance) error
	RegisterInstanceWithAPIServerLB(i *infrav1.Instance, lb *infrav1.AWSLoadBalancerSpec) error
}

ELBInterface encapsulates the methods exposed to the cluster and machine controller.

type IAMAuthenticatorInterface added in v2.5.0

type IAMAuthenticatorInterface interface {
	ReconcileIAMAuthenticator(ctx context.Context) error
}

IAMAuthenticatorInterface installs aws-iam-authenticator for EKS clusters.

type KubeProxyInterface added in v2.5.0

type KubeProxyInterface interface {
	ReconcileKubeProxy(ctx context.Context) error
}

KubeProxyInterface installs kube-proxy for EKS clusters.

type MachinePoolReconcileInterface added in v2.4.0

type MachinePoolReconcileInterface interface {
	ReconcileLaunchTemplate(scope scope.LaunchTemplateScope, ec2svc EC2Interface, canUpdateLaunchTemplate func() (bool, error), runPostLaunchTemplateUpdateOperation func() error) error
	ReconcileTags(scope scope.LaunchTemplateScope, resourceServicesToUpdate []scope.ResourceServiceToUpdate) error
}

MachinePoolReconcileInterface encapsulates high-level reconciliation functions regarding EC2 reconciliation. It is separate from EC2Interface so that we can mock AWS requests separately. For example, by not mocking the ReconcileLaunchTemplate function, but mocking EC2Interface, we can test which EC2 API operations would have been called.

type NetworkInterface

type NetworkInterface interface {
	DeleteNetwork() error
	ReconcileNetwork() error
}

NetworkInterface encapsulates the methods exposed to the cluster controller.

type ObjectStoreInterface

type ObjectStoreInterface interface {
	DeleteBucket() error
	ReconcileBucket() error
	Delete(m *scope.MachineScope) error
	Create(m *scope.MachineScope, data []byte) (objectURL string, err error)
}

ObjectStoreInterface encapsulates the methods exposed to the machine actuator.

type SecretInterface

type SecretInterface interface {
	Delete(m *scope.MachineScope) error
	Create(m *scope.MachineScope, data []byte) (string, int32, error)
	UserData(secretPrefix string, chunks int32, region string, endpoints []scope.ServiceEndpoint) ([]byte, error)
}

SecretInterface encapsulated the methods exposed to the machine actuator.

type SecurityGroupInterface

type SecurityGroupInterface interface {
	DeleteSecurityGroups() error
	ReconcileSecurityGroups() error
}

SecurityGroupInterface encapsulates the methods exposed to the cluster controller.

Directories

Path Synopsis
Package asg provides a service for managing AWS AutoScalingGroups.
Package asg provides a service for managing AWS AutoScalingGroups.
Package awsnode provides a way to interact with AWS nodes.
Package awsnode provides a way to interact with AWS nodes.
Package ec2 provides a way to interact with the AWS EC2 API.
Package ec2 provides a way to interact with the AWS EC2 API.
eks
Package eks provides a service to reconcile EKS control plane and nodegroups.
Package eks provides a service to reconcile EKS control plane and nodegroups.
Package elb provides a service for managing AWS load balancers.
Package elb provides a service for managing AWS load balancers.
Package gc provides a way to perform gc operations against a tenant/workload/child cluster.
Package gc provides a way to perform gc operations against a tenant/workload/child cluster.
Package iamauth provides a way to interact with AWS IAM.
Package iamauth provides a way to interact with AWS IAM.
Package instancestate provides a way to interact with the EC2 instance state.
Package instancestate provides a way to interact with the EC2 instance state.
Package kubeproxy provides a way to interact with the kube-proxy service.
Package kubeproxy provides a way to interact with the kube-proxy service.
Package mock_services is a generated GoMock package.
Package mock_services is a generated GoMock package.
Package network provides a service to manage AWS network resources.
Package network provides a service to manage AWS network resources.
s3
Package s3 provides a way to interact with AWS S3.
Package s3 provides a way to interact with AWS S3.
Package secretsmanager provides a way to interact with AWS Secrets Manager.
Package secretsmanager provides a way to interact with AWS Secrets Manager.
Package securitygroup provides a service to manage AWS security group resources.
Package securitygroup provides a service to manage AWS security group resources.
ssm
Package ssm provides a service to generate userdata for AWS Systems Manager.
Package ssm provides a service to generate userdata for AWS Systems Manager.
sts
Package userdata provides a way to generate user data for cloud instances.
Package userdata provides a way to generate user data for cloud instances.
Package wait provides a set of utilities for polling and waiting.
Package wait provides a set of utilities for polling and waiting.

Jump to

Keyboard shortcuts

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