Documentation ¶
Index ¶
- Variables
- func JoinClusterServices(merger ServiceMerger, cfg Configuration)
- type ClusterService
- func (in *ClusterService) DeepCopy() *ClusterService
- func (in *ClusterService) DeepCopyInto(out *ClusterService)
- func (s *ClusterService) DeepKeyCopy() store.LocalKey
- func (s *ClusterService) GetKeyName() string
- func (s *ClusterService) Marshal() ([]byte, error)
- func (s *ClusterService) NamespaceServiceName() string
- func (s *ClusterService) String() string
- func (s *ClusterService) Unmarshal(data []byte) error
- type Configuration
- type PortConfiguration
- type ServiceMerger
Constants ¶
This section is empty.
Variables ¶
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 bool `json:"shared"` // ClusterID is the cluster ID the service is configured in ClusterID uint32 `json:"clusterID"` }
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.