Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func DefaultNamespace

func DefaultNamespace(ns string) func(name *types.NamespacedName)

    DefaultNamespace can be used with NamespacedNameFrom to set the default namespace for a resource name that may not be qualified by a namespace.

    func DefaultResources

    func DefaultResources() []schema.GroupVersionResource

      DefaultResources ...

      func EndpointsResources

      func EndpointsResources() []schema.GroupVersionResource

        EndpointsResources ...

        func GatewayAPIResources

        func GatewayAPIResources() []schema.GroupVersionResource

          GatewayAPIResources ...

          func IngressV1Beta1Resource

          func IngressV1Beta1Resource() schema.GroupVersionResource

          func IngressV1Resources

          func IngressV1Resources() []schema.GroupVersionResource

          func InitLogging

          func InitLogging(options ...LogOption)

            InitLogging initializes the Kubernetes client-go logging subsystem.

            func IsStatusEqual

            func IsStatusEqual(objA, objB interface{}) bool

              IsStatusEqual checks that two objects of supported Kubernetes types have equivalent Status structs.

              Currently supports: networking.k8s.io/ingress/v1beta1 projectcontour.io/v1

              func KindOf

              func KindOf(obj interface{}) string

                KindOf returns the kind string for the given Kubernetes object.

                The API machinery doesn't populate the metav1.TypeMeta field for objects, so we have to use a type assertion to detect kinds that we care about.

                func NamespacedNameFrom

                func NamespacedNameFrom(nameStr string, opts ...func(*types.NamespacedName)) types.NamespacedName

                  NamespacedNameFrom parses a resource name string into a fully qualified NamespacedName.

                  func NamespacedNameOf

                  func NamespacedNameOf(obj metav1.Object) types.NamespacedName

                    NamespacedNameOf returns the NamespacedName of any given Kubernetes object.

                    func NewContourScheme

                    func NewContourScheme() (*runtime.Scheme, error)

                      NewContourScheme returns a scheme that includes all the API types that Contour supports as well as the core Kubernetes API types from the default scheme.

                      func NewNamespaceFilter

                      func NewNamespaceFilter(
                      	namespaces []string,
                      	next cache.ResourceEventHandler,
                      ) cache.ResourceEventHandler

                        NewNamespaceFilter returns a cache.ResourceEventHandler that accepts only objects whose namespaces are included in the given slice of namespaces. Objects with matching namespaces are passed to the next handler.

                        func SecretsResources

                        func SecretsResources() []schema.GroupVersionResource

                          SecretsResources ...

                          func ServicesResources

                          func ServicesResources() []schema.GroupVersionResource

                            ServicesResources ...

                            func VersionOf

                            func VersionOf(obj interface{}) string

                              VersionOf returns the GroupVersion string for the given Kubernetes object.

                              Types

                              type Clients

                              type Clients struct {
                              	meta.RESTMapper
                              	// contains filtered or unexported fields
                              }

                                Clients holds the various API clients required by Contour.

                                func NewClients

                                func NewClients(kubeconfig string, inCluster bool) (*Clients, error)

                                  NewClients returns a new set of the various API clients required by Contour using the supplied kubeconfig path, or the cluster environment variables if inCluster is true.

                                  func (*Clients) Cache

                                  func (c *Clients) Cache() client.Reader

                                  func (*Clients) ClientSet

                                  func (c *Clients) ClientSet() *kubernetes.Clientset

                                    ClientSet returns the Kubernetes Core v1 ClientSet.

                                    func (*Clients) DynamicClient

                                    func (c *Clients) DynamicClient() dynamic.Interface

                                      DynamicClient returns the dynamic client.

                                      func (*Clients) InformerForResource

                                      func (c *Clients) InformerForResource(gvr schema.GroupVersionResource) (Informer, error)

                                      func (*Clients) ResourcesExist

                                      func (c *Clients) ResourcesExist(gvr ...schema.GroupVersionResource) bool

                                        ResourcesExist returns true if all of the GroupVersionResources passed exists in the cluster.

                                        func (*Clients) StartInformers

                                        func (c *Clients) StartInformers(ctx context.Context) error

                                        func (*Clients) WaitForCacheSync

                                        func (c *Clients) WaitForCacheSync(ctx context.Context) bool

                                        type Converter

                                        type Converter interface {
                                        	FromUnstructured(obj interface{}) (interface{}, error)
                                        	ToUnstructured(obj interface{}) (*unstructured.Unstructured, error)
                                        }

                                        type DynamicClientHandler

                                        type DynamicClientHandler struct {
                                        
                                        	// Next is the next handler in the chain.
                                        	Next cache.ResourceEventHandler
                                        
                                        	// Converter is the registered converter.
                                        	Converter Converter
                                        
                                        	Logger logrus.FieldLogger
                                        }

                                          DynamicClientHandler converts *unstructured.Unstructured from the k8s dynamic client to the types registered with the supplied Converter and forwards them to the next Handler in the chain.

                                          func (*DynamicClientHandler) OnAdd

                                          func (d *DynamicClientHandler) OnAdd(obj interface{})

                                          func (*DynamicClientHandler) OnDelete

                                          func (d *DynamicClientHandler) OnDelete(obj interface{})

                                          func (*DynamicClientHandler) OnUpdate

                                          func (d *DynamicClientHandler) OnUpdate(oldObj, newObj interface{})

                                          type Informer

                                          type Informer = cache.Informer

                                          type LogOption

                                          type LogOption func(*klogParams)

                                          func LogLevelOption

                                          func LogLevelOption(level int) LogOption

                                            LogLevelOption creates an option to set the Kubernetes verbose log level (1 - 10 is the standard range).

                                            func LogWriterOption

                                            func LogWriterOption(log *logrus.Entry) LogOption

                                              LogWriterOption creates an option to set the Kubernetes logging output.

                                              type ServiceStatusLoadBalancerWatcher

                                              type ServiceStatusLoadBalancerWatcher struct {
                                              	ServiceName string
                                              	LBStatus    chan v1.LoadBalancerStatus
                                              	Log         logrus.FieldLogger
                                              }

                                                ServiceStatusLoadBalancerWatcher implements ResourceEventHandler and watches for changes to the status.loadbalancer field Note that we specifically *don't* inspect inside the struct, as sending empty values is desirable to clear the status.

                                                func (*ServiceStatusLoadBalancerWatcher) OnAdd

                                                func (s *ServiceStatusLoadBalancerWatcher) OnAdd(obj interface{})

                                                func (*ServiceStatusLoadBalancerWatcher) OnDelete

                                                func (s *ServiceStatusLoadBalancerWatcher) OnDelete(obj interface{})

                                                func (*ServiceStatusLoadBalancerWatcher) OnUpdate

                                                func (s *ServiceStatusLoadBalancerWatcher) OnUpdate(oldObj, newObj interface{})

                                                type StatusAddressUpdater

                                                type StatusAddressUpdater struct {
                                                	Logger        logrus.FieldLogger
                                                	LBStatus      v1.LoadBalancerStatus
                                                	IngressClass  string
                                                	StatusUpdater StatusUpdater
                                                	Converter     Converter
                                                	// contains filtered or unexported fields
                                                }

                                                  StatusAddressUpdater observes informer OnAdd and OnUpdate events and updates the ingress.status.loadBalancer field on all Ingress objects that match the ingress class (if used). Note that this is intended to handle updating the status.loadBalancer struct only, not more general status updates. That's a job for the StatusUpdater.

                                                  func (*StatusAddressUpdater) OnAdd

                                                  func (s *StatusAddressUpdater) OnAdd(obj interface{})

                                                    OnAdd updates the given Ingress or HTTPProxy object with the current load balancer address. Note that this method can be called concurrently from an informer or from Contour itself.

                                                    func (*StatusAddressUpdater) OnDelete

                                                    func (s *StatusAddressUpdater) OnDelete(obj interface{})

                                                    func (*StatusAddressUpdater) OnUpdate

                                                    func (s *StatusAddressUpdater) OnUpdate(oldObj, newObj interface{})

                                                    func (*StatusAddressUpdater) Set

                                                      Set updates the LBStatus field.

                                                      type StatusMutator

                                                      type StatusMutator interface {
                                                      	Mutate(obj interface{}) interface{}
                                                      }

                                                        StatusMutator is an interface to hold mutator functions for status updates.

                                                        type StatusMutatorFunc

                                                        type StatusMutatorFunc func(interface{}) interface{}

                                                          StatusMutatorFunc is a function adaptor for StatusMutators.

                                                          func (StatusMutatorFunc) Mutate

                                                          func (m StatusMutatorFunc) Mutate(old interface{}) interface{}

                                                            Mutate adapts the StatusMutatorFunc to fit through the StatusMutator interface.

                                                            type StatusUpdate

                                                            type StatusUpdate struct {
                                                            	NamespacedName types.NamespacedName
                                                            	Resource       schema.GroupVersionResource
                                                            	Mutator        StatusMutator
                                                            }

                                                              StatusUpdate contains an all the information needed to change an object's status to perform a specific update. Send down a channel to the goroutine that actually writes the changes back.

                                                              func NewStatusUpdate

                                                              func NewStatusUpdate(name, namespace string, gvr schema.GroupVersionResource, mutator StatusMutator) StatusUpdate

                                                              type StatusUpdateCacher

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

                                                                StatusUpdateCacher takes status updates and applies them to a cache, to be used for testing.

                                                                func (*StatusUpdateCacher) Add

                                                                func (suc *StatusUpdateCacher) Add(name, namespace string, gvr schema.GroupVersionResource, obj interface{}) bool

                                                                func (*StatusUpdateCacher) Get

                                                                func (suc *StatusUpdateCacher) Get(name, namespace string, gvr schema.GroupVersionResource) interface{}

                                                                  Get allows retrieval of objects from the cache.

                                                                  func (*StatusUpdateCacher) GetStatus

                                                                  func (suc *StatusUpdateCacher) GetStatus(obj interface{}) (*contour_api_v1.HTTPProxyStatus, error)

                                                                  func (*StatusUpdateCacher) IsCacheable

                                                                  func (suc *StatusUpdateCacher) IsCacheable(obj interface{}) bool

                                                                    IsCacheable returns whether this type of object can be stored in the status cache.

                                                                    func (*StatusUpdateCacher) OnAdd

                                                                    func (suc *StatusUpdateCacher) OnAdd(obj interface{})

                                                                      OnAdd adds an object to the status cache.

                                                                      func (*StatusUpdateCacher) OnDelete

                                                                      func (suc *StatusUpdateCacher) OnDelete(obj interface{})

                                                                        OnDelete removes an object from the status cache.

                                                                        func (*StatusUpdateCacher) Send

                                                                        func (suc *StatusUpdateCacher) Send(su StatusUpdate)

                                                                        type StatusUpdateHandler

                                                                        type StatusUpdateHandler struct {
                                                                        	Log           logrus.FieldLogger
                                                                        	Clients       *Clients
                                                                        	UpdateChannel chan StatusUpdate
                                                                        	LeaderElected chan struct{}
                                                                        	IsLeader      bool
                                                                        	Converter     *UnstructuredConverter
                                                                        }

                                                                          StatusUpdateHandler holds the details required to actually write an Update back to the referenced object.

                                                                          func (*StatusUpdateHandler) Start

                                                                          func (suh *StatusUpdateHandler) Start(stop <-chan struct{}) error

                                                                            Start runs the goroutine to perform status writes. Until the Contour is elected leader, will drop updates on the floor.

                                                                            func (*StatusUpdateHandler) Writer

                                                                            func (suh *StatusUpdateHandler) Writer() StatusUpdater

                                                                              Writer retrieves the interface that should be used to write to the StatusUpdateHandler.

                                                                              type StatusUpdateWriter

                                                                              type StatusUpdateWriter struct {
                                                                              	UpdateChannel chan StatusUpdate
                                                                              }

                                                                                StatusUpdateWriter takes status updates and sends these to the StatusUpdateHandler via a channel.

                                                                                func (*StatusUpdateWriter) Send

                                                                                func (suw *StatusUpdateWriter) Send(update StatusUpdate)

                                                                                  Send sends the given StatusUpdate off to the update channel for writing by the StatusUpdateHandler.

                                                                                  type StatusUpdater

                                                                                  type StatusUpdater interface {
                                                                                  	Send(su StatusUpdate)
                                                                                  }

                                                                                    StatusUpdater describes an interface to send status updates somewhere.

                                                                                    type UnstructuredConverter

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

                                                                                      UnstructuredConverter handles conversions between unstructured.Unstructured and Contour types

                                                                                      func NewUnstructuredConverter

                                                                                      func NewUnstructuredConverter() (*UnstructuredConverter, error)

                                                                                        NewUnstructuredConverter returns a new UnstructuredConverter initialized

                                                                                        func (*UnstructuredConverter) FromUnstructured

                                                                                        func (c *UnstructuredConverter) FromUnstructured(obj interface{}) (interface{}, error)

                                                                                          FromUnstructured converts an unstructured.Unstructured to typed struct. If obj is not an unstructured.Unstructured it is returned without further processing.

                                                                                          func (*UnstructuredConverter) ToUnstructured

                                                                                          func (c *UnstructuredConverter) ToUnstructured(obj interface{}) (*unstructured.Unstructured, error)

                                                                                            ToUnstructured converts the supplied object to Unstructured, provided it's one of the types registered in the UnstructuredConverter's Scheme.