kubernetes.v0: gopkg.in/kubernetes/kubernetes.v0/pkg/cloudprovider/aws Index | Files

package aws_cloud

import "gopkg.in/kubernetes/kubernetes.v0/pkg/cloudprovider/aws"

Index

Package Files

aws.go aws_instancegroups.go aws_routes.go

Constants

const ProviderName = "aws"
const TagNameKubernetesCluster = "KubernetesCluster"

The tag name we use to differentiate multiple logically independent clusters running in the same AZ

type ASG Uses

type ASG interface {
    UpdateAutoScalingGroup(*autoscaling.UpdateAutoScalingGroupInput) (*autoscaling.UpdateAutoScalingGroupOutput, error)
    DescribeAutoScalingGroups(*autoscaling.DescribeAutoScalingGroupsInput) (*autoscaling.DescribeAutoScalingGroupsOutput, error)
}

This is a simple pass-through of the Autoscaling client interface, which allows for testing

type AWSCloud Uses

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

AWSCloud is an implementation of Interface, TCPLoadBalancer and Instances for Amazon Web Services.

func (*AWSCloud) AddSSHKeyToAllInstances Uses

func (self *AWSCloud) AddSSHKeyToAllInstances(user string, keyData []byte) error

func (*AWSCloud) AttachDisk Uses

func (aws *AWSCloud) AttachDisk(instanceName string, diskName string, readOnly bool) (string, error)

Implements Volumes.AttachDisk

func (*AWSCloud) Clusters Uses

func (aws *AWSCloud) Clusters() (cloudprovider.Clusters, bool)

func (*AWSCloud) Configure Uses

func (v *AWSCloud) Configure(name string, spec *api.NodeSpec) error

func (*AWSCloud) CreateRoute Uses

func (s *AWSCloud) CreateRoute(clusterName string, nameHint string, route *cloudprovider.Route) error

CreateRoute implements Routes.CreateRoute Create the described route

func (*AWSCloud) CreateTCPLoadBalancer Uses

func (s *AWSCloud) CreateTCPLoadBalancer(name, region string, publicIP net.IP, ports []*api.ServicePort, hosts []string, affinity api.ServiceAffinity) (*api.LoadBalancerStatus, error)

CreateTCPLoadBalancer implements TCPLoadBalancer.CreateTCPLoadBalancer TODO(justinsb): This must be idempotent TODO(justinsb) It is weird that these take a region. I suspect it won't work cross-region anwyay.

func (*AWSCloud) CreateVolume Uses

func (aws *AWSCloud) CreateVolume(volumeOptions *VolumeOptions) (string, error)

Implements Volumes.CreateVolume

func (*AWSCloud) CurrentNodeName Uses

func (a *AWSCloud) CurrentNodeName(hostname string) (string, error)

func (*AWSCloud) DeleteRoute Uses

func (s *AWSCloud) DeleteRoute(clusterName string, route *cloudprovider.Route) error

DeleteRoute implements Routes.DeleteRoute Delete the specified route

func (*AWSCloud) DeleteVolume Uses

func (aws *AWSCloud) DeleteVolume(volumeName string) error

Implements Volumes.DeleteVolume

func (*AWSCloud) DescribeInstanceGroup Uses

func (a *AWSCloud) DescribeInstanceGroup(instanceGroupName string) (InstanceGroupInfo, error)

Implement InstanceGroups.DescribeInstanceGroup Queries the cloud provider for information about the specified instance group

func (*AWSCloud) DetachDisk Uses

func (aws *AWSCloud) DetachDisk(instanceName string, diskName string) error

Implements Volumes.DetachDisk

func (*AWSCloud) EnsureTCPLoadBalancerDeleted Uses

func (s *AWSCloud) EnsureTCPLoadBalancerDeleted(name, region string) error

EnsureTCPLoadBalancerDeleted implements TCPLoadBalancer.EnsureTCPLoadBalancerDeleted.

func (*AWSCloud) ExternalID Uses

func (aws *AWSCloud) ExternalID(name string) (string, error)

ExternalID returns the cloud provider ID of the specified instance (deprecated). Note that if the instance does not exist or is no longer running, we must return ("", cloudprovider.InstanceNotFound)

func (*AWSCloud) GetNodeResources Uses

func (aws *AWSCloud) GetNodeResources(name string) (*api.NodeResources, error)

GetNodeResources implements Instances.GetNodeResources

func (*AWSCloud) GetTCPLoadBalancer Uses

func (s *AWSCloud) GetTCPLoadBalancer(name, region string) (*api.LoadBalancerStatus, bool, error)

GetTCPLoadBalancer is an implementation of TCPLoadBalancer.GetTCPLoadBalancer

func (*AWSCloud) GetZone Uses

func (self *AWSCloud) GetZone() (cloudprovider.Zone, error)

GetZone implements Zones.GetZone

func (*AWSCloud) InstanceID Uses

func (aws *AWSCloud) InstanceID(name string) (string, error)

InstanceID returns the cloud provider ID of the specified instance.

func (*AWSCloud) Instances Uses

func (aws *AWSCloud) Instances() (cloudprovider.Instances, bool)

Instances returns an implementation of Instances for Amazon Web Services.

func (*AWSCloud) List Uses

func (aws *AWSCloud) List(filter string) ([]string, error)

List is an implementation of Instances.List.

func (*AWSCloud) ListRoutes Uses

func (s *AWSCloud) ListRoutes(clusterName string) ([]*cloudprovider.Route, error)

ListRoutes implements Routes.ListRoutes List all routes that match the filter

func (*AWSCloud) NodeAddresses Uses

func (aws *AWSCloud) NodeAddresses(name string) ([]api.NodeAddress, error)

NodeAddresses is an implementation of Instances.NodeAddresses.

func (*AWSCloud) ProviderName Uses

func (aws *AWSCloud) ProviderName() string

ProviderName returns the cloud provider ID.

func (*AWSCloud) Release Uses

func (v *AWSCloud) Release(name string) error

func (*AWSCloud) ResizeInstanceGroup Uses

func (a *AWSCloud) ResizeInstanceGroup(instanceGroupName string, size int) error

Implement InstanceGroups.ResizeInstanceGroup Set the size to the fixed size

func (*AWSCloud) Routes Uses

func (aws *AWSCloud) Routes() (cloudprovider.Routes, bool)

Routes returns an implementation of Routes for Amazon Web Services.

func (*AWSCloud) TCPLoadBalancer Uses

func (s *AWSCloud) TCPLoadBalancer() (cloudprovider.TCPLoadBalancer, bool)

TCPLoadBalancer returns an implementation of TCPLoadBalancer for Amazon Web Services.

func (*AWSCloud) TCPLoadBalancerExists Uses

func (self *AWSCloud) TCPLoadBalancerExists(name, region string) (bool, error)

TCPLoadBalancerExists implements TCPLoadBalancer.TCPLoadBalancerExists.

func (*AWSCloud) UpdateTCPLoadBalancer Uses

func (s *AWSCloud) UpdateTCPLoadBalancer(name, region string, hosts []string) error

UpdateTCPLoadBalancer implements TCPLoadBalancer.UpdateTCPLoadBalancer

func (*AWSCloud) Zones Uses

func (aws *AWSCloud) Zones() (cloudprovider.Zones, bool)

Zones returns an implementation of Zones for Amazon Web Services.

type AWSCloudConfig Uses

type AWSCloudConfig struct {
    Global struct {
        // TODO: Is there any use for this?  We can get it from the instance metadata service
        // Maybe if we're not running on AWS, e.g. bootstrap; for now it is not very useful
        Zone string

        KubernetesClusterTag string
    }
}

type AWSMetadata Uses

type AWSMetadata interface {
    // Query the EC2 metadata service (used to discover instance-id etc)
    GetMetaData(key string) ([]byte, error)
}

Abstraction over the AWS metadata service

type AWSServices Uses

type AWSServices interface {
    Compute(region string) (EC2, error)
    LoadBalancing(region string) (ELB, error)
    Autoscaling(region string) (ASG, error)
    Metadata() AWSMetadata
}

Abstraction over AWS, to allow mocking/other implementations

type EC2 Uses

type EC2 interface {
    // Query EC2 for instances matching the filter
    DescribeInstances(request *ec2.DescribeInstancesInput) ([]*ec2.Instance, error)

    // Attach a volume to an instance
    AttachVolume(volumeID, instanceId, mountDevice string) (resp *ec2.VolumeAttachment, err error)
    // Detach a volume from an instance it is attached to
    DetachVolume(request *ec2.DetachVolumeInput) (resp *ec2.VolumeAttachment, err error)
    // Lists volumes
    DescribeVolumes(request *ec2.DescribeVolumesInput) ([]*ec2.Volume, error)
    // Create an EBS volume
    CreateVolume(request *ec2.CreateVolumeInput) (resp *ec2.Volume, err error)
    // Delete an EBS volume
    DeleteVolume(volumeID string) (resp *ec2.DeleteVolumeOutput, err error)

    DescribeSecurityGroups(request *ec2.DescribeSecurityGroupsInput) ([]*ec2.SecurityGroup, error)

    CreateSecurityGroup(*ec2.CreateSecurityGroupInput) (*ec2.CreateSecurityGroupOutput, error)
    DeleteSecurityGroup(request *ec2.DeleteSecurityGroupInput) (*ec2.DeleteSecurityGroupOutput, error)

    AuthorizeSecurityGroupIngress(*ec2.AuthorizeSecurityGroupIngressInput) (*ec2.AuthorizeSecurityGroupIngressOutput, error)
    RevokeSecurityGroupIngress(*ec2.RevokeSecurityGroupIngressInput) (*ec2.RevokeSecurityGroupIngressOutput, error)

    DescribeVPCs(*ec2.DescribeVPCsInput) ([]*ec2.VPC, error)

    DescribeSubnets(*ec2.DescribeSubnetsInput) ([]*ec2.Subnet, error)

    CreateTags(*ec2.CreateTagsInput) (*ec2.CreateTagsOutput, error)

    DescribeRouteTables(request *ec2.DescribeRouteTablesInput) ([]*ec2.RouteTable, error)
    CreateRoute(request *ec2.CreateRouteInput) (*ec2.CreateRouteOutput, error)
    DeleteRoute(request *ec2.DeleteRouteInput) (*ec2.DeleteRouteOutput, error)

    ModifyInstanceAttribute(request *ec2.ModifyInstanceAttributeInput) (*ec2.ModifyInstanceAttributeOutput, error)
}

TODO: Should we rename this to AWS (EBS & ELB are not technically part of EC2) Abstraction over EC2, to allow mocking/other implementations Note that the DescribeX functions return a list, so callers don't need to deal with paging

type ELB Uses

type ELB interface {
    CreateLoadBalancer(*elb.CreateLoadBalancerInput) (*elb.CreateLoadBalancerOutput, error)
    DeleteLoadBalancer(*elb.DeleteLoadBalancerInput) (*elb.DeleteLoadBalancerOutput, error)
    DescribeLoadBalancers(*elb.DescribeLoadBalancersInput) (*elb.DescribeLoadBalancersOutput, error)
    RegisterInstancesWithLoadBalancer(*elb.RegisterInstancesWithLoadBalancerInput) (*elb.RegisterInstancesWithLoadBalancerOutput, error)
    DeregisterInstancesFromLoadBalancer(*elb.DeregisterInstancesFromLoadBalancerInput) (*elb.DeregisterInstancesFromLoadBalancerOutput, error)
}

This is a simple pass-through of the ELB client interface, which allows for testing

type InstanceGroupInfo Uses

type InstanceGroupInfo interface {
    // The number of instances currently running under control of this group
    CurrentSize() (int, error)
}

InstanceGroupInfo is returned by InstanceGroups.Describe, and exposes information about the group.

type InstanceGroups Uses

type InstanceGroups interface {
    // Set the size to the fixed size
    ResizeInstanceGroup(instanceGroupName string, size int) error
    // Queries the cloud provider for information about the specified instance group
    DescribeInstanceGroup(instanceGroupName string) (InstanceGroupInfo, error)
}

InstanceGroups is an interface for managing cloud-managed instance groups / autoscaling instance groups TODO: Allow other clouds to implement this

type VolumeOptions Uses

type VolumeOptions struct {
    CapacityMB int
}

type Volumes Uses

type Volumes interface {
    // Attach the disk to the specified instance
    // instanceName can be empty to mean "the instance on which we are running"
    // Returns the device (e.g. /dev/xvdf) where we attached the volume
    AttachDisk(instanceName string, volumeName string, readOnly bool) (string, error)
    // Detach the disk from the specified instance
    // instanceName can be empty to mean "the instance on which we are running"
    DetachDisk(instanceName string, volumeName string) error

    // Create a volume with the specified options
    CreateVolume(volumeOptions *VolumeOptions) (volumeName string, err error)
    DeleteVolume(volumeName string) error
}

Volumes is an interface for managing cloud-provisioned volumes TODO: Allow other clouds to implement this

Package aws_cloud imports 23 packages (graph). Updated 2016-07-25. Refresh now. Tools for package owners.