Documentation
¶
Overview ¶
Package service implements Kubernetes Services [1] for Contiv/VPP.
A detailed description of the plugin can be found in the developer's guide for services [2].
[1]: https://kubernetes.io/docs/concepts/services-networking/service/ [2]: docs/dev-guide/SERVICES.md (from the repo's top directory)
Index ¶
- type Deps
- type Option
- type Plugin
- func (p *Plugin) AfterInit() error
- func (p *Plugin) Close() error
- func (p *Plugin) HandlesEvent(event controller.Event) bool
- func (p *Plugin) Init() error
- func (p *Plugin) Resync(event controller.Event, kubeStateData controller.KubeStateData, ...) error
- func (p *Plugin) Revert(event controller.Event) error
- func (p *Plugin) Update(event controller.Event, txn controller.UpdateOperations) (changeDescription string, err error)
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type Deps ¶
type Deps struct {
infra.PluginDeps
ServiceLabel servicelabel.ReaderAPI
ContivConf contivconf.API
IPAM ipam.API
IPNet ipnet.API /* to get the Node IP and all interface names */
NodeSync nodesync.API /* to get the list of all node IPs for nodePort services */
PodManager podmanager.API /* to get the list or running pods which determines frontend interfaces */
GoVPP govppmux.API /* used for direct NAT binary API calls */
Stats statscollector.API /* used for exporting the statistics */
ConfigRetriever controller.ConfigRetriever
}
Deps defines dependencies of the service plugin.
type Option ¶
type Option func(*Plugin)
Option is a function that acts on a Plugin to inject Dependencies or configuration
type Plugin ¶
type Plugin struct {
Deps
// contains filtered or unexported fields
}
Plugin watches configuration of K8s resources (as reflected by KSR into ETCD) for changes in services, endpoints and pods and updates the NAT configuration in the VPP accordingly.
func (*Plugin) AfterInit ¶
AfterInit can be used by renderers to perform a second stage of initialization.
func (*Plugin) HandlesEvent ¶
func (p *Plugin) HandlesEvent(event controller.Event) bool
HandlesEvent selects:
- any resync event
- KubeStateChange for service-related data
- AddPod & DeletePod
- NodeUpdate event
func (*Plugin) Init ¶
Init initializes the service plugin and starts watching ETCD for K8s configuration.
func (*Plugin) Resync ¶
func (p *Plugin) Resync(event controller.Event, kubeStateData controller.KubeStateData, resyncCount int, txn controller.ResyncOperations) error
Resync is called by Controller to handle event that requires full re-synchronization. For startup resync, resyncCount is 1. Higher counter values identify run-time resync.
func (*Plugin) Revert ¶
func (p *Plugin) Revert(event controller.Event) error
Revert is called for failed AddPod event.
func (*Plugin) Update ¶
func (p *Plugin) Update(event controller.Event, txn controller.UpdateOperations) (changeDescription string, err error)
Update is called for:
- KubeStateChange for service-related data
- AddPod & DeletePod
- NodeUpdate event