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 ¶
- Constants
- func EndpointSliceToEndpoints(obj meta.Object) (meta.Object, error)
- func EndpointSliceV1beta1ToEndpoints(obj meta.Object) (meta.Object, error)
- func EndpointsKey(name, namespace string) string
- func ServiceKey(name, namespace string) string
- func ToNamespace(obj meta.Object) (meta.Object, error)
- func ToServiceImport(obj meta.Object) (meta.Object, error)
- 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) 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) 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 Namespace
- func (n *Namespace) DeepCopyObject() runtime.Object
- func (n *Namespace) GetName() string
- func (n *Namespace) GetNamespace() string
- func (n *Namespace) GetResourceVersion() string
- func (n *Namespace) SetName(name string)
- func (n *Namespace) SetNamespace(namespace string)
- func (n *Namespace) SetResourceVersion(version string)
- type ProcessorBuilder
- type ServiceImport
- func (s *ServiceImport) DeepCopyObject() runtime.Object
- func (s *ServiceImport) GetName() string
- func (s *ServiceImport) GetNamespace() string
- func (s *ServiceImport) GetResourceVersion() string
- func (s *ServiceImport) SetName(name string)
- func (s *ServiceImport) SetNamespace(namespace string)
- func (s *ServiceImport) SetResourceVersion(version string)
- type ToFunc
Constants ¶
const (
LabelClusterId = "multicluster.kubernetes.io/source-cluster"
)
Variables ¶
This section is empty.
Functions ¶
func EndpointSliceToEndpoints ¶
EndpointSliceToEndpoints converts a *discovery.EndpointSlice to a *Endpoints.
func EndpointSliceV1beta1ToEndpoints ¶
EndpointSliceV1beta1ToEndpoints converts a v1beta1 *discovery.EndpointSlice to a *Endpoints.
func EndpointsKey ¶
EndpointsKey returns a string using for the index.
func ServiceKey ¶
ServiceKey returns a string using for the index.
func ToNamespace ¶
ToNamespace returns a function that converts an api.Namespace to a *Namespace.
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) GetManagedFields ¶
func (e *Empty) GetManagedFields() []v1.ManagedFieldsEntry
GetManagedFields implements the metav1.Object interface.
func (*Empty) GetObjectKind ¶
func (e *Empty) GetObjectKind() schema.ObjectKind
GetObjectKind implements 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) SetManagedFields ¶
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 ClusterId 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 Namespace ¶
type Namespace struct { // Don't add new fields to this struct without talking to the CoreDNS maintainers. Version string Name string *Empty }
Namespace is a stripped down api.Namespace with only the items we need for CoreDNS.
func (*Namespace) DeepCopyObject ¶
DeepCopyObject implements the ObjectKind interface.
func (*Namespace) GetNamespace ¶
GetNamespace implements the metav1.Object interface.
func (*Namespace) GetResourceVersion ¶
GetResourceVersion implements the metav1.Object interface.
func (*Namespace) SetNamespace ¶
SetNamespace implements the metav1.Object interface.
func (*Namespace) SetResourceVersion ¶
SetResourceVersion implements the metav1.Object interface.
type ProcessorBuilder ¶
type ProcessorBuilder func(cache.Indexer, cache.ResourceEventHandler) cache.ProcessFunc
ProcessorBuilder returns function to process cache events.
type ServiceImport ¶
type ServiceImport struct { Version string Name string Namespace string Index string ClusterIPs []string Type v1alpha1.ServiceImportType Ports []v1alpha1.ServicePort *object.Empty }
ServiceImport is a stripped down api.ServiceImport with only the items we need for CoreDNS.
func (*ServiceImport) DeepCopyObject ¶
func (s *ServiceImport) DeepCopyObject() runtime.Object
DeepCopyObject implements the ObjectKind interface.
func (*ServiceImport) GetName ¶
func (s *ServiceImport) GetName() string
GetName implements the metav1.Object interface.
func (*ServiceImport) GetNamespace ¶
func (s *ServiceImport) GetNamespace() string
GetNamespace implements the metav1.Object interface.
func (*ServiceImport) GetResourceVersion ¶
func (s *ServiceImport) GetResourceVersion() string
GetResourceVersion implements the metav1.Object interface.
func (*ServiceImport) SetName ¶
func (s *ServiceImport) SetName(name string)
SetName implements the metav1.Object interface.
func (*ServiceImport) SetNamespace ¶
func (s *ServiceImport) SetNamespace(namespace string)
SetNamespace implements the metav1.Object interface.
func (*ServiceImport) SetResourceVersion ¶
func (s *ServiceImport) SetResourceVersion(version string)
SetResourceVersion implements the metav1.Object interface.