store

package
v2.12.3 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Dec 19, 2023 License: Apache-2.0 Imports: 30 Imported by: 0

Documentation

Index

Constants

View Source
const (

	// IngressClassKongController is the string used for the Controller field of a recognized IngressClass.
	IngressClassKongController = "ingress-controllers.konghq.com/kong"
)

Variables

This section is empty.

Functions

This section is empty.

Types

type CacheStores

type CacheStores struct {
	// Core Kubernetes Stores
	IngressV1      cache.Store
	IngressClassV1 cache.Store
	Service        cache.Store
	Secret         cache.Store
	EndpointSlice  cache.Store

	// Gateway API Stores
	HTTPRoute      cache.Store
	UDPRoute       cache.Store
	TCPRoute       cache.Store
	TLSRoute       cache.Store
	GRPCRoute      cache.Store
	ReferenceGrant cache.Store
	Gateway        cache.Store

	// Kong Stores
	Plugin                         cache.Store
	ClusterPlugin                  cache.Store
	Consumer                       cache.Store
	ConsumerGroup                  cache.Store
	KongIngress                    cache.Store
	TCPIngress                     cache.Store
	UDPIngress                     cache.Store
	IngressClassParametersV1alpha1 cache.Store

	// Knative Stores
	KnativeIngress cache.Store
	// contains filtered or unexported fields
}

CacheStores stores cache.Store for all Kinds of k8s objects that the Ingress Controller reads.

func NewCacheStores

func NewCacheStores() CacheStores

NewCacheStores is a convenience function for CacheStores to initialize all attributes with new cache stores.

func NewCacheStoresFromObjYAML

func NewCacheStoresFromObjYAML(objs ...[]byte) (c CacheStores, err error)

NewCacheStoresFromObjYAML provides a new CacheStores object given any number of byte arrays containing YAML Kubernetes objects. An error is returned if any provided YAML was not a valid Kubernetes object.

func NewCacheStoresFromObjs

func NewCacheStoresFromObjs(objs ...runtime.Object) (CacheStores, error)

NewCacheStoresFromObjs provides a new CacheStores object given any number of Kubernetes objects that should be pre-populated. This function will sort objects into the appropriate sub-storage (e.g. IngressV1, TCPIngress, e.t.c.) but will produce an error if any of the input objects are erroneous or otherwise unusable as Kubernetes objects.

func (CacheStores) Add

func (c CacheStores) Add(obj runtime.Object) error

Add stores a provided runtime.Object into the CacheStore if it's of a supported type. The CacheStore must be initialized (see NewCacheStores()) or this will panic.

func (CacheStores) Delete

func (c CacheStores) Delete(obj runtime.Object) error

Delete removes a provided runtime.Object from the CacheStore if it's of a supported type. The CacheStore must be initialized (see NewCacheStores()) or this will panic.

func (CacheStores) Get

func (c CacheStores) Get(obj runtime.Object) (item interface{}, exists bool, err error)

Get checks whether or not there's already some version of the provided object present in the cache.

type ErrNotFound

type ErrNotFound struct {
	Message string
}

ErrNotFound error is returned when a lookup results in no resource. This type is meant to be used for error handling using `errors.As()`.

func (ErrNotFound) Error

func (e ErrNotFound) Error() string

type FakeObjects

type FakeObjects struct {
	IngressesV1                    []*netv1.Ingress
	IngressClassesV1               []*netv1.IngressClass
	HTTPRoutes                     []*gatewayv1beta1.HTTPRoute
	UDPRoutes                      []*gatewayv1alpha2.UDPRoute
	TCPRoutes                      []*gatewayv1alpha2.TCPRoute
	TLSRoutes                      []*gatewayv1alpha2.TLSRoute
	GRPCRoutes                     []*gatewayv1alpha2.GRPCRoute
	ReferenceGrants                []*gatewayv1beta1.ReferenceGrant
	Gateways                       []*gatewayv1beta1.Gateway
	TCPIngresses                   []*kongv1beta1.TCPIngress
	UDPIngresses                   []*kongv1beta1.UDPIngress
	IngressClassParametersV1alpha1 []*kongv1alpha1.IngressClassParameters
	Services                       []*corev1.Service
	EndpointSlices                 []*discoveryv1.EndpointSlice
	Secrets                        []*corev1.Secret
	KongPlugins                    []*kongv1.KongPlugin
	KongClusterPlugins             []*kongv1.KongClusterPlugin
	KongIngresses                  []*kongv1.KongIngress
	KongConsumers                  []*kongv1.KongConsumer
	KongConsumerGroups             []*kongv1beta1.KongConsumerGroup

	KnativeIngresses []*knative.Ingress
}

FakeObjects can be used to populate a fake Store.

func (FakeObjects) MarshalToYAML added in v2.11.0

func (objects FakeObjects) MarshalToYAML() ([]byte, error)

MarshalToYAML marshals the contents of every object in the store as YAML, separated by "---". This is useful for debugging.

type Store

type Store struct {
	// contains filtered or unexported fields
}

Store implements Storer and can be used to list Ingress, Services and other resources from k8s APIserver. The backing stores should be synced and updated by the caller. It is ingressClass filter aware.

func (Store) GetEndpointSlicesForService added in v2.10.0

func (s Store) GetEndpointSlicesForService(namespace, name string) ([]*discoveryv1.EndpointSlice, error)

GetEndpointSlicesForService returns all EndpointSlices for service 'namespace/name' inside K8s.

func (Store) GetGateway added in v2.8.0

func (s Store) GetGateway(namespace string, name string) (*gatewayv1beta1.Gateway, error)

GetGateway returns gateway resource having specified namespace and name.

func (Store) GetIngressClassName added in v2.9.0

func (s Store) GetIngressClassName() string

func (Store) GetIngressClassParametersV1Alpha1 added in v2.6.0

func (s Store) GetIngressClassParametersV1Alpha1(ingressClass *netv1.IngressClass) (*kongv1alpha1.IngressClassParameters, error)

GetIngressClassParametersV1Alpha1 returns IngressClassParameters for provided IngressClass.

func (Store) GetIngressClassV1 added in v2.3.0

func (s Store) GetIngressClassV1(name string) (*netv1.IngressClass, error)

GetIngressClassV1 returns the 'name' IngressClass resource.

func (Store) GetKongClusterPlugin

func (s Store) GetKongClusterPlugin(name string) (*kongv1.KongClusterPlugin, error)

GetKongClusterPlugin returns the 'name' KongClusterPlugin resource.

func (Store) GetKongConsumer

func (s Store) GetKongConsumer(namespace, name string) (*kongv1.KongConsumer, error)

GetKongConsumer returns the 'name' KongConsumer resource in namespace.

func (Store) GetKongConsumerGroup added in v2.11.0

func (s Store) GetKongConsumerGroup(namespace, name string) (*kongv1beta1.KongConsumerGroup, error)

GetKongConsumerGroup returns the 'name' KongConsumerGroup resource in namespace.

func (Store) GetKongIngress

func (s Store) GetKongIngress(namespace, name string) (*kongv1.KongIngress, error)

GetKongIngress returns the 'name' KongIngress resource in namespace.

func (Store) GetKongPlugin

func (s Store) GetKongPlugin(namespace, name string) (*kongv1.KongPlugin, error)

GetKongPlugin returns the 'name' KongPlugin resource in namespace.

func (Store) GetSecret

func (s Store) GetSecret(namespace, name string) (*corev1.Secret, error)

GetSecret returns a Secret using the namespace and name as key.

func (Store) GetService

func (s Store) GetService(namespace, name string) (*corev1.Service, error)

GetService returns a Service using the namespace and name as key.

func (Store) ListCACerts

func (s Store) ListCACerts() ([]*corev1.Secret, error)

ListCACerts returns all Secrets containing the label "konghq.com/ca-cert"="true".

func (Store) ListGRPCRoutes added in v2.9.0

func (s Store) ListGRPCRoutes() ([]*gatewayv1alpha2.GRPCRoute, error)

ListGRPCRoutes returns the list of GRPCRoutes in the GRPCRoute cache store.

func (Store) ListGateways added in v2.5.0

func (s Store) ListGateways() ([]*gatewayv1beta1.Gateway, error)

ListGateways returns the list of Gateways in the Gateway cache store.

func (Store) ListGlobalKongClusterPlugins

func (s Store) ListGlobalKongClusterPlugins() ([]*kongv1.KongClusterPlugin, error)

ListGlobalKongClusterPlugins returns all KongClusterPlugin resources filtered by the ingress.class annotation and with the label global:"true".

func (Store) ListGlobalKongPlugins

func (s Store) ListGlobalKongPlugins() ([]*kongv1.KongPlugin, error)

ListGlobalKongPlugins returns all KongPlugin resources filtered by the ingress.class annotation and with the label global:"true". Support for these global namespaced KongPlugins was removed in 0.10.0 This function remains only to provide warnings to users with old configuration.

func (Store) ListHTTPRoutes added in v2.1.0

func (s Store) ListHTTPRoutes() ([]*gatewayv1beta1.HTTPRoute, error)

ListHTTPRoutes returns the list of HTTPRoutes in the HTTPRoute cache store.

func (Store) ListIngressClassParametersV1Alpha1 added in v2.6.0

func (s Store) ListIngressClassParametersV1Alpha1() []*kongv1alpha1.IngressClassParameters

ListIngressClassParametersV1Alpha1 returns the list of IngressClassParameters in the Ingress v1alpha1 store.

func (Store) ListIngressClassesV1 added in v2.3.0

func (s Store) ListIngressClassesV1() []*netv1.IngressClass

ListIngressClassesV1 returns the list of Ingresses in the Ingress v1 store.

func (Store) ListIngressesV1

func (s Store) ListIngressesV1() []*netv1.Ingress

ListIngressesV1 returns the list of Ingresses in the Ingress v1 store.

func (Store) ListKnativeIngresses

func (s Store) ListKnativeIngresses() ([]*knative.Ingress, error)

ListKnativeIngresses returns the list of Knative Ingresses from ingresses.networking.internal.knative.dev group.

func (Store) ListKongClusterPlugins added in v2.8.0

func (s Store) ListKongClusterPlugins() []*kongv1.KongClusterPlugin

ListKongClusterPlugins lists all KongClusterPlugins that match expected ingress.class annotation.

func (Store) ListKongConsumerGroups added in v2.11.0

func (s Store) ListKongConsumerGroups() []*kongv1beta1.KongConsumerGroup

ListKongConsumerGroups returns all KongConsumerGroups filtered by the ingress.class annotation.

func (Store) ListKongConsumers

func (s Store) ListKongConsumers() []*kongv1.KongConsumer

ListKongConsumers returns all KongConsumers filtered by the ingress.class annotation.

func (Store) ListKongPlugins added in v2.8.0

func (s Store) ListKongPlugins() []*kongv1.KongPlugin

ListKongPlugins lists all KongPlugins.

func (Store) ListReferenceGrants added in v2.6.0

func (s Store) ListReferenceGrants() ([]*gatewayv1beta1.ReferenceGrant, error)

ListReferenceGrants returns the list of ReferenceGrants in the ReferenceGrant cache store.

func (Store) ListTCPIngresses

func (s Store) ListTCPIngresses() ([]*kongv1beta1.TCPIngress, error)

ListTCPIngresses returns the list of TCP Ingresses from configuration.konghq.com group.

func (Store) ListTCPRoutes added in v2.4.0

func (s Store) ListTCPRoutes() ([]*gatewayv1alpha2.TCPRoute, error)

ListTCPRoutes returns the list of TCPRoutes in the TCPRoute cache store.

func (Store) ListTLSRoutes added in v2.4.0

func (s Store) ListTLSRoutes() ([]*gatewayv1alpha2.TLSRoute, error)

ListTLSRoutes returns the list of TLSRoutes in the TLSRoute cache store.

func (Store) ListUDPIngresses

func (s Store) ListUDPIngresses() ([]*kongv1beta1.UDPIngress, error)

ListUDPIngresses returns the list of UDP Ingresses.

func (Store) ListUDPRoutes added in v2.3.0

func (s Store) ListUDPRoutes() ([]*gatewayv1alpha2.UDPRoute, error)

ListUDPRoutes returns the list of UDPRoutes in the UDPRoute cache store.

type Storer

type Storer interface {
	GetSecret(namespace, name string) (*corev1.Secret, error)
	GetService(namespace, name string) (*corev1.Service, error)
	GetEndpointSlicesForService(namespace, name string) ([]*discoveryv1.EndpointSlice, error)
	GetKongIngress(namespace, name string) (*kongv1.KongIngress, error)
	GetKongPlugin(namespace, name string) (*kongv1.KongPlugin, error)
	GetKongClusterPlugin(name string) (*kongv1.KongClusterPlugin, error)
	GetKongConsumer(namespace, name string) (*kongv1.KongConsumer, error)
	GetKongConsumerGroup(namespace, name string) (*kongv1beta1.KongConsumerGroup, error)
	GetIngressClassName() string
	GetIngressClassV1(name string) (*netv1.IngressClass, error)
	GetIngressClassParametersV1Alpha1(ingressClass *netv1.IngressClass) (*kongv1alpha1.IngressClassParameters, error)
	GetGateway(namespace string, name string) (*gatewayv1beta1.Gateway, error)

	ListIngressesV1() []*netv1.Ingress
	ListIngressClassesV1() []*netv1.IngressClass
	ListIngressClassParametersV1Alpha1() []*kongv1alpha1.IngressClassParameters
	ListHTTPRoutes() ([]*gatewayv1beta1.HTTPRoute, error)
	ListUDPRoutes() ([]*gatewayv1alpha2.UDPRoute, error)
	ListTCPRoutes() ([]*gatewayv1alpha2.TCPRoute, error)
	ListTLSRoutes() ([]*gatewayv1alpha2.TLSRoute, error)
	ListGRPCRoutes() ([]*gatewayv1alpha2.GRPCRoute, error)
	ListReferenceGrants() ([]*gatewayv1beta1.ReferenceGrant, error)
	ListGateways() ([]*gatewayv1beta1.Gateway, error)
	ListTCPIngresses() ([]*kongv1beta1.TCPIngress, error)
	ListUDPIngresses() ([]*kongv1beta1.UDPIngress, error)
	ListKnativeIngresses() ([]*knative.Ingress, error)
	ListGlobalKongPlugins() ([]*kongv1.KongPlugin, error)
	ListGlobalKongClusterPlugins() ([]*kongv1.KongClusterPlugin, error)
	ListKongPlugins() []*kongv1.KongPlugin
	ListKongClusterPlugins() []*kongv1.KongClusterPlugin
	ListKongConsumers() []*kongv1.KongConsumer
	ListKongConsumerGroups() []*kongv1beta1.KongConsumerGroup
	ListCACerts() ([]*corev1.Secret, error)
}

Storer is the interface that wraps the required methods to gather information about ingresses, services, secrets and ingress annotations.

func New

func New(cs CacheStores, ingressClass string, logger logrus.FieldLogger) Storer

New creates a new object store to be used in the ingress controller.

func NewFakeStore

func NewFakeStore(
	objects FakeObjects,
) (Storer, error)

NewFakeStore creates a store backed by the objects passed in as arguments.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL