backends

package
v1.4.1 Latest Latest
Warning

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

Go to latest
Published: Jan 4, 2019 License: Apache-2.0 Imports: 17 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type Backends

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

Backends handles CRUD operations for backends.

func NewPool added in v1.4.0

func NewPool(
	cloud *gce.GCECloud,
	namer *utils.Namer,
	resyncWithCloud bool) *Backends

NewPool returns a new backend pool. - cloud: implements BackendServices - namer: procudes names for backends. - resyncWithCloud: if true, periodically syncs with cloud resources.

func (*Backends) Create added in v1.4.0

func (b *Backends) Create(sp utils.ServicePort, hcLink string) (*composite.BackendService, error)

Create implements Pool.

func (*Backends) Delete

func (b *Backends) Delete(name string) (err error)

Delete implements Pool.

func (*Backends) Get

func (b *Backends) Get(name string, version meta.Version) (*composite.BackendService, error)

Get implements Pool.

func (*Backends) GetLocalSnapshot added in v1.4.0

func (b *Backends) GetLocalSnapshot() []string

GetLocalSnapshot implements Pool.

func (*Backends) Health added in v1.4.0

func (b *Backends) Health(name string) string

Health implements Pool.

func (*Backends) List

func (b *Backends) List() ([]interface{}, error)

List lists all backends.

func (*Backends) Update added in v1.4.0

func (b *Backends) Update(be *composite.BackendService) error

Update implements Pool.

type BalancingMode

type BalancingMode string

BalancingMode represents the loadbalancing configuration of an individual Backend in a BackendService. This is *effectively* a cluster wide setting since you can't mix modes across Backends pointing to the same IG, and you can't have a single node in more than 1 loadbalanced IG.

const (
	// Rate balances incoming requests based on observed RPS.
	// As of this writing, it's the only balancing mode supported by GCE's
	// internal LB. This setting doesn't make sense for Kubernetes clusters
	// because requests can get proxied between instance groups in different
	// zones by kube-proxy without GCE even knowing it. Setting equal RPS on
	// all IGs should achieve roughly equal distribution of requests.
	Rate BalancingMode = "RATE"
	// Utilization balances incoming requests based on observed utilization.
	// This mode is only useful if you want to divert traffic away from IGs
	// running other compute intensive workloads. Utilization statistics are
	// aggregated per instances, not per container, and requests can get proxied
	// between instance groups in different zones by kube-proxy without GCE even
	// knowing about it.
	Utilization BalancingMode = "UTILIZATION"
	// Connections balances incoming requests based on a connection counter.
	// This setting currently doesn't make sense for Kubernetes clusters,
	// because we use NodePort Services as HTTP LB backends, so GCE's connection
	// counters don't accurately represent connections per container.
	Connections BalancingMode = "CONNECTION"
)

type FakeProbeProvider

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

FakeProbeProvider implements the probeProvider interface for tests.

func NewFakeProbeProvider

func NewFakeProbeProvider(probes map[utils.ServicePort]*api_v1.Probe) *FakeProbeProvider

NewFakeProbeProvider returns a struct which satisfies probeProvider interface

func (*FakeProbeProvider) GetProbe

func (pp *FakeProbeProvider) GetProbe(port utils.ServicePort) (*api_v1.Probe, error)

GetProbe returns the probe for a given nodePort

type GroupKey added in v1.4.0

type GroupKey struct {
	Zone string
	Name string
}

GroupKey represents a single group for a backend. The implementation of this Group could be InstanceGroup or NEG.

type Linker added in v1.4.0

type Linker interface {
	// Link a BackendService to its groups.
	Link(sp utils.ServicePort, groups []GroupKey) error
}

Linker is an interface to link backends with their associated groups.

func NewInstanceGroupLinker added in v1.4.0

func NewInstanceGroupLinker(
	instancePool instances.NodePool,
	backendPool Pool,
	namer *utils.Namer) Linker

func NewNEGLinker added in v1.4.0

func NewNEGLinker(
	backendPool Pool,
	negGetter NEGGetter,
	namer *utils.Namer) Linker

type NEGGetter

type NEGGetter interface {
	GetNetworkEndpointGroup(name string, zone string) (*computebeta.NetworkEndpointGroup, error)
}

NEGGetter is an interface to retrieve NEG object

type Pool added in v1.4.0

type Pool interface {
	// Get a composite BackendService given a required version.
	Get(name string, version meta.Version) (*composite.BackendService, error)
	// Create a composite BackendService and returns it.
	Create(sp utils.ServicePort, hcLink string) (*composite.BackendService, error)
	// Update a BackendService given the composite type.
	Update(be *composite.BackendService) error
	// Delete a BackendService given its name.
	Delete(name string) error
	// Get the health of a BackendService given its name.
	Health(name string) string
	// Get a list of BackendService names currently in this pool.
	GetLocalSnapshot() []string
}

Pool is an interface to perform CRUD operations on a pool of GCE Backend Services.

type ProbeProvider

type ProbeProvider interface {
	GetProbe(sp utils.ServicePort) (*api_v1.Probe, error)
}

ProbeProvider retrieves a probe struct given a nodePort

type Syncer added in v1.4.0

type Syncer interface {
	// Init an implementation of ProbeProvider.
	Init(p ProbeProvider)
	// Sync a BackendService. Implementations should only create the BackendService
	// but not its groups.
	Sync(svcPorts []utils.ServicePort) error
	// GC garbage collects unused BackendService's
	GC(svcPorts []utils.ServicePort) error
	// Status returns the status of a BackendService given its name.
	Status(name string) string
	// Shutdown cleans up all BackendService's previously synced.
	Shutdown() error
}

Syncer is an interface to sync Kubernetes services to GCE BackendServices.

func NewBackendSyncer added in v1.4.0

func NewBackendSyncer(
	backendPool Pool,
	healthChecker healthchecks.HealthChecker,
	namer *utils.Namer,
	backendConfigEnabled bool) Syncer

Directories

Path Synopsis
This package contains the implementations of backend service features.
This package contains the implementations of backend service features.

Jump to

Keyboard shortcuts

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