service

package
v1.6.6 Latest Latest
Warning

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

Go to latest
Published: Feb 3, 2020 License: Apache-2.0 Imports: 12 Imported by: 0

Documentation

Index

Constants

View Source
const (
	// ServiceIDKeyPath is the base path where the IDs are stored in the kvstore.
	ServiceIDKeyPath = common.OperationalPath + "/ServicesV2/IDs"

	// LastFreeServiceIDKeyPath is the path where the Last free UUID is stored in the kvstore.
	LastFreeServiceIDKeyPath = common.OperationalPath + "/ServicesV2/LastUUID"

	// FirstFreeServiceID is the first ID for which the services should be assigned.
	FirstFreeServiceID = uint32(1)

	// MaxSetOfServiceID is maximum number of set of service IDs that can be stored
	// in the kvstore or the local ID allocator.
	MaxSetOfServiceID = uint32(0xFFFF)

	// FirstFreeBackendID is the first ID for which the backend should be assigned.
	FirstFreeBackendID = uint32(1)

	// MaxSetOfBackendID is maximum number of set of backendIDs IDs that can be
	// stored in the local ID allocator.
	MaxSetOfBackendID = uint32(0xFFFF)
)

Variables

View Source
var (
	// ServiceStorePrefix is the kvstore prefix of the shared store
	//
	// WARNING - STABLE API: Changing the structure or values of this will
	// break backwards compatibility
	ServiceStorePrefix = path.Join(kvstore.BaseKeyPrefix, "state", "services", "v1")
)

Functions

func AcquireBackendID

func AcquireBackendID(l3n4Addr loadbalancer.L3n4Addr) (loadbalancer.BackendID, error)

AcquireBackendID acquires a new local ID for the given backend.

func AcquireID

func AcquireID(l3n4Addr loadbalancer.L3n4Addr, baseID uint32) (*loadbalancer.L3n4AddrID, error)

AcquireID acquires a service ID

func DeleteBackendID

func DeleteBackendID(id loadbalancer.BackendID)

DeleteBackendID releases the given backend ID. TODO(brb) maybe provide l3n4Addr as an arg for the extra safety.

func DeleteID

func DeleteID(id uint32) error

DeleteID deletes the L3n4AddrID belonging to the given id from the kvstore.

func EnableGlobalServiceID

func EnableGlobalServiceID(val bool)

EnableGlobalServiceID enables or disables the use of global service IDs. When global service IDs are enabled, a kvstore interaction is used to allocate service IDs in the scope of the entire kvstore domain to enable transfer of service ID context between nodes.

func GetID

func GetID(id uint32) (*loadbalancer.L3n4AddrID, error)

GetID returns the L3n4AddrID that belongs to the given id.

func LookupBackendID

func LookupBackendID(l3n4Addr loadbalancer.L3n4Addr) (loadbalancer.BackendID, error)

LookupBackendID looks up already allocated backend ID for the given backend addr. If such cannot be found, returns an error.

func RestoreBackendID

func RestoreBackendID(l3n4Addr loadbalancer.L3n4Addr, id loadbalancer.BackendID) error

RestoreBackendID tries to restore the given local ID for the given backend.

If ID cannot be restored (ID already taken), returns an error.

func RestoreID

func RestoreID(l3n4Addr loadbalancer.L3n4Addr, baseID uint32) (*loadbalancer.L3n4AddrID, error)

RestoreID restores previously used service ID

Types

type ClusterService

type ClusterService struct {
	// Cluster is the cluster name the service is configured in
	Cluster string `json:"cluster"`

	// Namespace is the cluster namespace the service is configured in
	Namespace string `json:"namespace"`

	// Name is the name of the service. It must be unique within the
	// namespace of the cluster
	Name string `json:"name"`

	// Frontends is a map indexed by the frontend IP address
	Frontends map[string]PortConfiguration `json:"frontends"`

	// Backends is is map indexed by the backend IP address
	Backends map[string]PortConfiguration `json:"backends"`

	// Labels are the labels of the service
	Labels map[string]string `json:"labels"`

	// Selector is the label selector used to select backends
	Selector map[string]string `json:"selector"`
}

ClusterService is the definition of a service in a cluster

WARNING - STABLE API: Any change to this structure must be done in a backwards compatible way.

+k8s:deepcopy-gen=true

func NewClusterService

func NewClusterService(name, namespace string) ClusterService

NewClusterService returns a new cluster service definition

func (*ClusterService) DeepCopy

func (in *ClusterService) DeepCopy() *ClusterService

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ClusterService.

func (*ClusterService) DeepCopyInto

func (in *ClusterService) DeepCopyInto(out *ClusterService)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

func (*ClusterService) DeepKeyCopy

func (s *ClusterService) DeepKeyCopy() store.LocalKey

DeepKeyCopy creates a deep copy of the LocalKey

func (*ClusterService) GetKeyName

func (s *ClusterService) GetKeyName() string

GetKeyName returns the kvstore key to be used for the global service

func (*ClusterService) Marshal

func (s *ClusterService) Marshal() ([]byte, error)

Marshal returns the global service object as JSON byte slice

func (*ClusterService) NamespaceServiceName

func (s *ClusterService) NamespaceServiceName() string

NamespaceServiceName returns the namespace and service name

func (*ClusterService) String

func (s *ClusterService) String() string

func (*ClusterService) Unmarshal

func (s *ClusterService) Unmarshal(data []byte) error

Unmarshal parses the JSON byte slice and updates the global service receiver

type IDAllocator

type IDAllocator struct {
	// Protects entitiesID, entities, nextID and maxID
	lock.RWMutex
	// contains filtered or unexported fields
}

IDAllocator contains an internal state of the ID allocator.

func NewIDAllocator

func NewIDAllocator(nextID uint32, maxID uint32) *IDAllocator

NewIDAllocator creates a new ID allocator instance.

type PortConfiguration

type PortConfiguration map[string]*loadbalancer.L4Addr

PortConfiguration is the L4 port configuration of a frontend or backend. The map is indexed by the name of the port and the value constains the L4 port and protocol.

func (PortConfiguration) DeepEquals

func (p PortConfiguration) DeepEquals(o PortConfiguration) bool

DeepEquals returns true if both PortConfigurations are identical

Jump to

Keyboard shortcuts

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