Documentation
¶
Overview ¶
Package ksr implements plugin that watches K8s resources and causes all changes to be reflected in the ETCD data store.
Index ¶
- Constants
- Variables
- type Deps
- type DsItems
- type EndpointsReflector
- type EtcdMonitor
- type K8sClientGetter
- type K8sListWatcher
- type K8sToProtoConverter
- type KeyProtoValBroker
- type NamespaceReflector
- type NodeReflector
- type Option
- type Plugin
- type PodReflector
- type PolicyReflector
- type ProtoAllocator
- type Reflector
- type ReflectorFunctions
- type ReflectorRegistry
- type ServiceReflector
- type SfcPodReflector
- type StatsCollector
Constants ¶
const ( // ConfigFlagName is name of the flag that defines kubeconfig location ConfigFlagName = "kube-config" // MicroserviceLabel is the microservice label used by contiv-ksr. MicroserviceLabel = "contiv-ksr" // KubeConfigAdmin is the default location of kubeconfig with admin credentials. KubeConfigAdmin = "/etc/kubernetes/admin.conf" // KubeConfigUsage explains the purpose of 'kube-config' flag. KubeConfigUsage = "Path to the kubeconfig file to use for the client connection to K8s cluster" )
Variables ¶
var DefaultPlugin = *NewPlugin()
DefaultPlugin is default instance of Plugin.
var MockK8sCache = &cache.FakeCustomStore{}
MockK8sCache holds the k8s mock cache
Functions ¶
This section is empty.
Types ¶
type Deps ¶
type Deps struct {
infra.PluginDeps
ServiceLabel servicelabel.ReaderAPI
// Kubeconfig with k8s cluster address and access credentials to use.
KubeConfig config.PluginConfig
// broker is used to propagate changes into a key-value datastore.
// contiv-ksr uses ETCD as datastore.
Publish *kvdbsync.Plugin
// Prometheus used to publish statistics
Prometheus *prometheus.Plugin
}
Deps defines dependencies of ksr plugin.
type DsItems ¶
type DsItems map[string]interface{}
DsItems defines the structure holding items listed from the data store.
type EndpointsReflector ¶
type EndpointsReflector struct {
Reflector
}
EndpointsReflector subscribes to K8s cluster to watch for changes in the configuration of k8s service endpoints. Protobuf-modelled changes are published into the selected key-value store.
type EtcdMonitor ¶
type EtcdMonitor struct {
// contains filtered or unexported fields
}
EtcdMonitor defines the state data for the Etcd Monitor
type K8sClientGetter ¶
type K8sClientGetter func(*kubernetes.Clientset) rest.Interface
K8sClientGetter defines the signature for a function that allocates a REST client for a given K8s data type
type K8sListWatcher ¶
type K8sListWatcher interface {
// NewListWatchFromClient creates a new ListWatch from the specified client, resource, namespace and field selector.
NewListWatchFromClient(c cache.Getter, resource string, namespace string,
fieldSelector fields.Selector) *cache.ListWatch
// NewInformer returns a Store and a Controller for populating the store
// while also providing event notifications.
NewInformer(lw cache.ListerWatcher, objType runtime.Object, resyncPeriod time.Duration,
h cache.ResourceEventHandler) (cache.Store, cache.Controller)
}
K8sListWatcher is used to watch for Kubernetes config changes.
type K8sToProtoConverter ¶
K8sToProtoConverter defines the signature for a function converting k8s objects to KSR protobuf objects.
type KeyProtoValBroker ¶
type KeyProtoValBroker interface {
// Put <data> to ETCD or to any other key-value based data source.
Put(key string, data proto.Message, opts ...datasync.PutOption) error
// Delete data under the <key> in ETCD or in any other key-value based data
// source.
Delete(key string, opts ...datasync.DelOption) (existed bool, err error)
// GetValue reads a value from etcd stored under the given key.
GetValue(key string, reqObj proto.Message) (found bool, revision int64, err error)
// List values stored in etcd under the given prefix.
ListValues(prefix string) (keyval.ProtoKeyValIterator, error)
}
KeyProtoValBroker defines KSR's interface to the key-value data store. It defines a subset of operations from a generic cn-infra broker interface (keyval.ProtoBroker in cn-infra).
type NamespaceReflector ¶
type NamespaceReflector struct {
Reflector
}
NamespaceReflector subscribes to K8s cluster to watch for changes in the configuration of k8s namespaces. Protobuf-modelled changes are published into the selected key-value store.
type NodeReflector ¶
type NodeReflector struct {
Reflector
// contains filtered or unexported fields
}
NodeReflector subscribes to K8s cluster to watch for changes in the configuration of k8s nodes. Protobuf-modelled changes are published into the selected key-value store.
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
StatusMonitor statuscheck.StatusReader
StatsCollector StatsCollector
// contains filtered or unexported fields
}
Plugin watches K8s resources and causes all changes to be reflected in the ETCD data store.
type PodReflector ¶
type PodReflector struct {
Reflector
}
PodReflector subscribes to K8s cluster to watch for changes in the configuration of k8s pods. Protobuf-modelled changes are published into the selected key-value store.
type PolicyReflector ¶
type PolicyReflector struct {
Reflector
}
PolicyReflector subscribes to K8s cluster to watch for changes in the configuration of k8s network policies. Protobuf-modelled changes are published into the selected key-value store.
type ProtoAllocator ¶
ProtoAllocator defines the signature for a protobuf message allocation function
type Reflector ¶
type Reflector struct {
// Each reflector gets a separate child logger.
Log logging.Logger
// A K8s client gets the appropriate REST client.
K8sClientset *kubernetes.Clientset
// K8s List-Watch watches for Kubernetes config changes.
K8sListWatch K8sListWatcher
// broker is the interface to a key-val data store.
Broker KeyProtoValBroker
// reflector registry
*ReflectorRegistry
// contains filtered or unexported fields
}
Reflector holds data that is common to all KSR reflectors.
type ReflectorFunctions ¶
type ReflectorFunctions struct {
EventHdlrFunc cache.ResourceEventHandlerFuncs
ProtoAllocFunc ProtoAllocator
K8s2NodeFunc K8sToProtoConverter
K8sClntGetFunc K8sClientGetter
}
ReflectorFunctions defines the function types required in the KSR reflector
type ReflectorRegistry ¶
type ReflectorRegistry struct {
// contains filtered or unexported fields
}
ReflectorRegistry defines the data structures for the KSR Reflector Registry
type ServiceReflector ¶
type ServiceReflector struct {
Reflector
}
ServiceReflector subscribes to K8s cluster to watch for changes in the configuration of k8s services. Protobuf-modelled changes are published into the selected key-value store.
type SfcPodReflector ¶ added in v1.4.0
type SfcPodReflector struct {
Reflector
}
SfcPodReflector subscribes to K8s cluster to watch for changes in the configuration of k8s pods. Protobuf-modelled changes are published into the selected key-value store.
type StatsCollector ¶
type StatsCollector struct {
Log logging.Logger
Prometheus prometheusplugin.API
// contains filtered or unexported fields
}
StatsCollector defines the data structures for the KSR Stats Collector
func (*StatsCollector) Init ¶
func (ksc *StatsCollector) Init() error
Init initializes the KSR Statistics Collector