Documentation ¶
Overview ¶
Package config provides decoupling between various configuration sources (etcd, files,...) and the pieces that actually care about them (loadbalancer, proxy). Config takes 1 or more configuration sources and allows for incremental (add/remove) and full replace (set) changes from each of the sources, then creates a union of the configuration and provides a unified view for both service handlers as well as endpoint handlers. There is no attempt to resolve conflicts of any sort. Basic idea is that each configuration source gets a channel from the Config service and pushes updates to it via that channel. Config then keeps track of incremental & replace changes and distributes them to listeners as appropriate.
Index ¶
- func NewEndpointsController(lw cache.ListerWatcher, period time.Duration, ch chan<- EndpointsUpdate) cache.Controller
- func NewServiceController(lw cache.ListerWatcher, period time.Duration, ch chan<- ServiceUpdate) cache.Controller
- func NewSourceAPI(c cache.Getter, period time.Duration, servicesChan chan<- ServiceUpdate, ...)
- type EndpointsConfig
- type EndpointsConfigHandler
- type EndpointsUpdate
- type Operation
- type ServiceConfig
- type ServiceConfigHandler
- type ServiceUpdate
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func NewEndpointsController ¶ added in v1.6.0
func NewEndpointsController(lw cache.ListerWatcher, period time.Duration, ch chan<- EndpointsUpdate) cache.Controller
NewEndpointsController creates a controller that is watching endpoints and sending updates into EndpointsUpdate channel.
func NewServiceController ¶ added in v1.6.0
func NewServiceController(lw cache.ListerWatcher, period time.Duration, ch chan<- ServiceUpdate) cache.Controller
NewServiceController creates a controller that is watching services and sending updates into ServiceUpdate channel.
func NewSourceAPI ¶
func NewSourceAPI(c cache.Getter, period time.Duration, servicesChan chan<- ServiceUpdate, endpointsChan chan<- EndpointsUpdate)
NewSourceAPI creates config source that watches for changes to the services and endpoints.
Types ¶
type EndpointsConfig ¶
type EndpointsConfig struct {
// contains filtered or unexported fields
}
EndpointsConfig tracks a set of endpoints configurations. It accepts "set", "add" and "remove" operations of endpoints via channels, and invokes registered handlers on change.
func NewEndpointsConfig ¶
func NewEndpointsConfig() *EndpointsConfig
NewEndpointsConfig creates a new EndpointsConfig. It immediately runs the created EndpointsConfig.
func (*EndpointsConfig) Channel ¶
func (c *EndpointsConfig) Channel(source string) chan EndpointsUpdate
Channel returns a channel to which endpoints updates should be delivered.
func (*EndpointsConfig) Config ¶
func (c *EndpointsConfig) Config() []api.Endpoints
Config returns list of all endpoints from underlying store.
func (*EndpointsConfig) RegisterHandler ¶
func (c *EndpointsConfig) RegisterHandler(handler EndpointsConfigHandler)
RegisterHandler registers a handler which is called on every endpoints change.
type EndpointsConfigHandler ¶
type EndpointsConfigHandler interface { // OnEndpointsUpdate gets called when endpoints configuration is changed for a given // service on any of the configuration sources. An example is when a new // service comes up, or when containers come up or down for an existing service. OnEndpointsUpdate(endpoints []api.Endpoints) }
EndpointsConfigHandler is an abstract interface of objects which receive update notifications for the set of endpoints.
type EndpointsUpdate ¶
EndpointsUpdate describes an operation of endpoints, sent on the channel. You can add, update or remove single endpoints by setting Op == ADD|UPDATE|REMOVE.
type ServiceConfig ¶
type ServiceConfig struct {
// contains filtered or unexported fields
}
ServiceConfig tracks a set of service configurations. It accepts "set", "add" and "remove" operations of services via channels, and invokes registered handlers on change.
func NewServiceConfig ¶
func NewServiceConfig() *ServiceConfig
NewServiceConfig creates a new ServiceConfig. It immediately runs the created ServiceConfig.
func (*ServiceConfig) Channel ¶
func (c *ServiceConfig) Channel(source string) chan ServiceUpdate
Channel returns a channel to which services updates should be delivered.
func (*ServiceConfig) Config ¶
func (c *ServiceConfig) Config() []api.Service
Config returns list of all services from underlying store.
func (*ServiceConfig) RegisterHandler ¶
func (c *ServiceConfig) RegisterHandler(handler ServiceConfigHandler)
RegisterHandler registers a handler which is called on every services change.
type ServiceConfigHandler ¶
type ServiceConfigHandler interface { // OnServiceUpdate gets called when a configuration has been changed by one of the sources. // This is the union of all the configuration sources. OnServiceUpdate(services []api.Service) }
ServiceConfigHandler is an abstract interface of objects which receive update notifications for the set of services.
type ServiceUpdate ¶
ServiceUpdate describes an operation of services, sent on the channel. You can add, update or remove single service by setting Op == ADD|UPDATE|REMOVE.