store

package
v1.12.0 Latest Latest
Warning

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

Go to latest
Published: Jul 19, 2022 License: Apache-2.0 Imports: 8 Imported by: 5

Documentation

Index

Constants

This section is empty.

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 JoinClusterServices

func JoinClusterServices(merger ServiceMerger, cfg Configuration)

JoinClusterServices starts a controller for syncing services from the kvstore

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 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"`

	// IncludeExternal is true when external endpoints from other clusters
	// should be included
	IncludeExternal bool `json:"includeExternal"`

	// Shared is true when the service should be exposed/shared to other clusters
	Shared bool `json:"shared"`
}

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 Configuration

type Configuration interface {
	// LocalClusterName must return the name of the local cluster
	LocalClusterName() string
}

Configuration is the required configuration for the service store

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.

+deepequal-gen=true

func (*PortConfiguration) DeepEqual

func (in *PortConfiguration) DeepEqual(other *PortConfiguration) bool

DeepEqual is an autogenerated deepequal function, deeply comparing the receiver with other. in must be non-nil.

type ServiceMerger

type ServiceMerger interface {
	MergeClusterServiceUpdate(service *ClusterService, swg *lock.StoppableWaitGroup)
	MergeClusterServiceDelete(service *ClusterService, swg *lock.StoppableWaitGroup)
}

ServiceMerger is the interface to be implemented by the owner of local services. The functions have to merge service updates and deletions with local services to provide a shared view.

Jump to

Keyboard shortcuts

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