Documentation ¶
Overview ¶
Package object holds functions that convert the objects from the k8s API in to a more memory efficient structures.
Adding new fields to any of the structures defined in pod.go, endpoint.go and service.go should not be done lightly as this increases the memory use and will leads to OOMs in the k8s scale test.
We can do some optimizations here as well. We store IP addresses as strings, this might be moved to uint32 (for v4) for instance, but then we need to convert those again.
Also the msg.Service use in this plugin may be deprecated at some point, as we don't use most of those features anyway and would free us from the *etcd* dependency, where msg.Service is defined. And should save some mem/cpu as we convert to and from msg.Services.
Index ¶
- func EndpointsKey(name, namespace string) string
- func NewIndexerInformer(lw cache.ListerWatcher, objType runtime.Object, h cache.ResourceEventHandler, ...) (cache.Indexer, cache.Controller)
- func ServiceKey(name, namespace string) string
- func ToEndpoints(obj interface{}) interface{}
- func ToPod(obj interface{}) interface{}
- func ToService(obj interface{}) interface{}
- type Empty
- func (e *Empty) GetAnnotations() map[string]string
- func (e *Empty) GetClusterName() string
- func (e *Empty) GetCreationTimestamp() v1.Time
- func (e *Empty) GetDeletionGracePeriodSeconds() *int64
- func (e *Empty) GetDeletionTimestamp() *v1.Time
- func (e *Empty) GetFinalizers() []string
- func (e *Empty) GetGenerateName() string
- func (e *Empty) GetGeneration() int64
- func (e *Empty) GetInitializers() *v1.Initializers
- func (e *Empty) GetLabels() map[string]string
- func (e *Empty) GetManagedFields() []v1.ManagedFieldsEntry
- func (e *Empty) GetObjectKind() schema.ObjectKind
- func (e *Empty) GetOwnerReferences() []v1.OwnerReference
- func (e *Empty) GetSelfLink() string
- func (e *Empty) GetUID() types.UID
- func (e *Empty) SetAnnotations(annotations map[string]string)
- func (e *Empty) SetClusterName(clusterName string)
- func (e *Empty) SetCreationTimestamp(timestamp v1.Time)
- func (e *Empty) SetDeletionGracePeriodSeconds(*int64)
- func (e *Empty) SetDeletionTimestamp(timestamp *v1.Time)
- func (e *Empty) SetFinalizers(finalizers []string)
- func (e *Empty) SetGenerateName(name string)
- func (e *Empty) SetGeneration(generation int64)
- func (e *Empty) SetInitializers(initializers *v1.Initializers)
- func (e *Empty) SetLabels(labels map[string]string)
- func (e *Empty) SetManagedFields(managedFields []v1.ManagedFieldsEntry)
- func (e *Empty) SetOwnerReferences([]v1.OwnerReference)
- func (e *Empty) SetSelfLink(selfLink string)
- func (e *Empty) SetUID(uid types.UID)
- type EndpointAddress
- type EndpointPort
- type EndpointSubset
- type Endpoints
- func (e *Endpoints) CopyWithoutSubsets() *Endpoints
- func (e *Endpoints) DeepCopyObject() runtime.Object
- func (e *Endpoints) GetName() string
- func (e *Endpoints) GetNamespace() string
- func (e *Endpoints) GetResourceVersion() string
- func (e *Endpoints) SetName(name string)
- func (e *Endpoints) SetNamespace(namespace string)
- func (e *Endpoints) SetResourceVersion(version string)
- type Pod
- type Service
- func (s *Service) DeepCopyObject() runtime.Object
- func (s *Service) GetName() string
- func (s *Service) GetNamespace() string
- func (s *Service) GetResourceVersion() string
- func (s *Service) SetName(name string)
- func (s *Service) SetNamespace(namespace string)
- func (s *Service) SetResourceVersion(version string)
- type ToFunc
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func EndpointsKey ¶
EndpointsKey return a string using for the index.
func NewIndexerInformer ¶
func NewIndexerInformer(lw cache.ListerWatcher, objType runtime.Object, h cache.ResourceEventHandler, indexers cache.Indexers, convert ToFunc) (cache.Indexer, cache.Controller)
NewIndexerInformer is a copy of the cache.NewIndexInformer function, but allows Process to have a conversion function (ToFunc).
func ServiceKey ¶
ServiceKey return a string using for the index.
func ToEndpoints ¶
func ToEndpoints(obj interface{}) interface{}
ToEndpoints converts an api.Service to a *Service.
Types ¶
type Empty ¶
type Empty struct{}
Empty is an empty struct.
func (*Empty) GetAnnotations ¶
GetAnnotations implements the metav1.Object interface.
func (*Empty) GetClusterName ¶
GetClusterName implements the metav1.Object interface.
func (*Empty) GetCreationTimestamp ¶
GetCreationTimestamp implements the metav1.Object interface.
func (*Empty) GetDeletionGracePeriodSeconds ¶
GetDeletionGracePeriodSeconds implements the metav1.Object interface.
func (*Empty) GetDeletionTimestamp ¶
GetDeletionTimestamp implements the metav1.Object interface.
func (*Empty) GetFinalizers ¶
GetFinalizers implements the metav1.Object interface.
func (*Empty) GetGenerateName ¶
GetGenerateName implements the metav1.Object interface.
func (*Empty) GetGeneration ¶
GetGeneration implements the metav1.Object interface.
func (*Empty) GetInitializers ¶
func (e *Empty) GetInitializers() *v1.Initializers
GetInitializers implements the metav1.Object interface.
func (*Empty) GetManagedFields ¶ added in v1.5.1
func (e *Empty) GetManagedFields() []v1.ManagedFieldsEntry
GetManagedFields implements the metav1.Object interface.
func (*Empty) GetObjectKind ¶
func (e *Empty) GetObjectKind() schema.ObjectKind
GetObjectKind implementss the ObjectKind interface as a noop.
func (*Empty) GetOwnerReferences ¶
func (e *Empty) GetOwnerReferences() []v1.OwnerReference
GetOwnerReferences implements the metav1.Object interface.
func (*Empty) GetSelfLink ¶
GetSelfLink implements the metav1.Object interface.
func (*Empty) SetAnnotations ¶
SetAnnotations implements the metav1.Object interface.
func (*Empty) SetClusterName ¶
SetClusterName implements the metav1.Object interface.
func (*Empty) SetCreationTimestamp ¶
SetCreationTimestamp implements the metav1.Object interface.
func (*Empty) SetDeletionGracePeriodSeconds ¶
SetDeletionGracePeriodSeconds implements the metav1.Object interface.
func (*Empty) SetDeletionTimestamp ¶
SetDeletionTimestamp implements the metav1.Object interface.
func (*Empty) SetFinalizers ¶
SetFinalizers implements the metav1.Object interface.
func (*Empty) SetGenerateName ¶
SetGenerateName implements the metav1.Object interface.
func (*Empty) SetGeneration ¶
SetGeneration implements the metav1.Object interface.
func (*Empty) SetInitializers ¶
func (e *Empty) SetInitializers(initializers *v1.Initializers)
SetInitializers implements the metav1.Object interface.
func (*Empty) SetManagedFields ¶ added in v1.5.1
func (e *Empty) SetManagedFields(managedFields []v1.ManagedFieldsEntry)
SetManagedFields implements the metav1.Object interface.
func (*Empty) SetOwnerReferences ¶
func (e *Empty) SetOwnerReferences([]v1.OwnerReference)
SetOwnerReferences implements the metav1.Object interface.
func (*Empty) SetSelfLink ¶
SetSelfLink implements the metav1.Object interface.
type EndpointAddress ¶
EndpointAddress is a tuple that describes single IP address.
type EndpointPort ¶
EndpointPort is a tuple that describes a single port.
type EndpointSubset ¶
type EndpointSubset struct { Addresses []EndpointAddress Ports []EndpointPort }
EndpointSubset is a group of addresses with a common set of ports. The expanded set of endpoints is the Cartesian product of Addresses x Ports.
type Endpoints ¶
type Endpoints struct { // Don't add new fields to this struct without talking to the CoreDNS maintainers. Version string Name string Namespace string Index string IndexIP []string Subsets []EndpointSubset *Empty }
Endpoints is a stripped down api.Endpoints with only the items we need for CoreDNS.
func (*Endpoints) CopyWithoutSubsets ¶
CopyWithoutSubsets copies e, without the subsets.
func (*Endpoints) DeepCopyObject ¶
DeepCopyObject implements the ObjectKind interface.
func (*Endpoints) GetNamespace ¶
GetNamespace implements the metav1.Object interface.
func (*Endpoints) GetResourceVersion ¶
GetResourceVersion implements the metav1.Object interface.
func (*Endpoints) SetNamespace ¶
SetNamespace implements the metav1.Object interface.
func (*Endpoints) SetResourceVersion ¶
SetResourceVersion implements the metav1.Object interface.
type Pod ¶
type Pod struct { // Don't add new fields to this struct without talking to the CoreDNS maintainers. Version string PodIP string Name string Namespace string *Empty }
Pod is a stripped down api.Pod with only the items we need for CoreDNS.
func (*Pod) DeepCopyObject ¶
DeepCopyObject implements the ObjectKind interface.
func (*Pod) GetNamespace ¶
GetNamespace implements the metav1.Object interface.
func (*Pod) GetResourceVersion ¶
GetResourceVersion implements the metav1.Object interface.
func (*Pod) SetNamespace ¶
SetNamespace implements the metav1.Object interface.
func (*Pod) SetResourceVersion ¶
SetResourceVersion implements the metav1.Object interface.
type Service ¶
type Service struct { // Don't add new fields to this struct without talking to the CoreDNS maintainers. Version string Name string Namespace string Index string ClusterIP string Type api.ServiceType ExternalName string Ports []api.ServicePort // ExternalIPs we may want to export. ExternalIPs []string *Empty }
Service is a stripped down api.Service with only the items we need for CoreDNS.
func (*Service) DeepCopyObject ¶
DeepCopyObject implements the ObjectKind interface.
func (*Service) GetNamespace ¶
GetNamespace implements the metav1.Object interface.
func (*Service) GetResourceVersion ¶
GetResourceVersion implements the metav1.Object interface.
func (*Service) SetNamespace ¶
SetNamespace implements the metav1.Object interface.
func (*Service) SetResourceVersion ¶
SetResourceVersion implements the metav1.Object interface.