contour

package
v1.4.0 Latest Latest
Warning

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

Go to latest
Published: Apr 24, 2020 License: Apache-2.0 Imports: 28 Imported by: 0

Documentation

Overview

Package contour contains the translation business logic that listens to Kubernetes ResourceEventHandler events and translates those into additions/deletions in caches connected to the Envoy xDS gRPC API server.

Package contour contains the translation business logic that listens to Kubernetes ResourceEventHandler events and translates those into additions/deletions in caches connected to the Envoy xDS gRPC API server.

Package contour contains the translation business logic that listens to Kubernetes ResourceEventHandler events and translates those into additions/deletions in caches connected to the Envoy xDS gRPC API server.

Index

Examples

Constants

View Source
const (
	ENVOY_HTTP_LISTENER            = "ingress_http"
	ENVOY_HTTPS_LISTENER           = "ingress_https"
	DEFAULT_HTTP_ACCESS_LOG        = "/dev/stdout"
	DEFAULT_HTTP_LISTENER_ADDRESS  = "0.0.0.0"
	DEFAULT_HTTP_LISTENER_PORT     = 8080
	DEFAULT_HTTPS_ACCESS_LOG       = "/dev/stdout"
	DEFAULT_HTTPS_LISTENER_ADDRESS = DEFAULT_HTTP_LISTENER_ADDRESS
	DEFAULT_HTTPS_LISTENER_PORT    = 8443
	DEFAULT_ACCESS_LOG_TYPE        = "envoy"
)

Variables

This section is empty.

Functions

This section is empty.

Types

type CacheHandler added in v0.6.0

CacheHandler manages the state of xDS caches.

func (*CacheHandler) OnChange added in v0.6.0

func (ch *CacheHandler) OnChange(dag *dag.DAG)

type ClusterCache

type ClusterCache struct {
	Cond
	// contains filtered or unexported fields
}

ClusterCache manages the contents of the gRPC CDS cache.

func (*ClusterCache) Contents added in v1.0.0

func (c *ClusterCache) Contents() []proto.Message

Contents returns a copy of the cache's contents.

func (*ClusterCache) Query added in v1.0.0

func (c *ClusterCache) Query(names []string) []proto.Message

func (*ClusterCache) TypeURL added in v1.0.0

func (*ClusterCache) TypeURL() string

func (*ClusterCache) Update added in v0.6.0

func (c *ClusterCache) Update(v map[string]*v2.Cluster)

Update replaces the contents of the cache with the supplied map.

type Cond added in v0.3.0

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

Cond implements a condition variable, a rendezvous point for goroutines waiting for or announcing the ocurence of an event.

Unlike sync.Cond, Cond communciates with waiters via channels registered by the waiters. This permits goroutines to wait on Cond events using select.

Example
package main

import (
	"context"
	"fmt"
	"time"

	"github.com/projectcontour/contour/internal/contour"
)

func main() {
	ctx, cancel := context.WithTimeout(context.Background(), 1*time.Second)
	defer cancel()
	ch := make(chan int, 1)
	last := 0
	var c contour.Cond
	go func() {
		for {
			time.Sleep(100 * time.Millisecond)
			c.Notify()
		}
	}()

	for {
		c.Register(ch, last)
		select {
		case last = <-ch:
			fmt.Println("notification received:", last)
		case <-ctx.Done():
			fmt.Println("timeout")
			return
		}
	}
}
Output:

func (*Cond) Notify added in v0.3.0

func (c *Cond) Notify(hints ...string)

Notify notifies all interested waiters that an event has ocured.

func (*Cond) Register added in v0.3.0

func (c *Cond) Register(ch chan int, last int, hints ...string)

Register registers ch to receive a value when Notify is called. The value of last is the count of the times Notify has been called on this Cond. It functions of a sequence counter, if the value of last supplied to Register is less than the Conds internal counter, then the caller has missed at least one notification and will fire immediately.

Sends by the broadcaster to ch must not block, therefore ch must have a capacity of at least 1.

type EndpointsTranslator added in v0.6.0

type EndpointsTranslator struct {
	logrus.FieldLogger
	// contains filtered or unexported fields
}

A EndpointsTranslator translates Kubernetes Endpoints objects into Envoy ClusterLoadAssignment objects.

func (*EndpointsTranslator) Add added in v0.6.0

func (c *EndpointsTranslator) Add(a *v2.ClusterLoadAssignment)

Add adds an entry to the cache. If a ClusterLoadAssignment with the same name exists, it is replaced.

func (*EndpointsTranslator) Contents added in v1.0.0

func (e *EndpointsTranslator) Contents() []proto.Message

func (*EndpointsTranslator) OnAdd added in v0.6.0

func (e *EndpointsTranslator) OnAdd(obj interface{})

func (*EndpointsTranslator) OnDelete added in v0.6.0

func (e *EndpointsTranslator) OnDelete(obj interface{})

func (*EndpointsTranslator) OnUpdate added in v0.6.0

func (e *EndpointsTranslator) OnUpdate(oldObj, newObj interface{})

func (*EndpointsTranslator) Query added in v1.0.0

func (e *EndpointsTranslator) Query(names []string) []proto.Message

func (*EndpointsTranslator) Remove added in v0.6.0

func (c *EndpointsTranslator) Remove(name string)

Remove removes the named entry from the cache. If the entry is not present in the cache, the operation is a no-op.

func (*EndpointsTranslator) TypeURL added in v1.0.0

func (*EndpointsTranslator) TypeURL() string

type EventHandler added in v1.0.0

type EventHandler struct {
	dag.Builder

	*CacheHandler

	HoldoffDelay, HoldoffMaxDelay time.Duration

	StatusClient k8s.StatusClient

	logrus.FieldLogger

	// IsLeader will become ready to read when this EventHandler becomes
	// the leader. If IsLeader is not readable, or nil, status events will
	// be suppressed.
	IsLeader chan struct{}

	// Sequence is a channel that receives a incrementing sequence number
	// for each update processed. The updates may be processed immediately, or
	// delayed by a holdoff timer. In each case a non blocking send to Sequence
	// will be made once CacheHandler.OnUpdate has been called.
	Sequence chan int
	// contains filtered or unexported fields
}

EventHandler implements cache.ResourceEventHandler, filters k8s events towards a dag.Builder and calls through to the CacheHandler to notify it that a new DAG is available.

func (*EventHandler) OnAdd added in v1.0.0

func (e *EventHandler) OnAdd(obj interface{})

func (*EventHandler) OnDelete added in v1.0.0

func (e *EventHandler) OnDelete(obj interface{})

func (*EventHandler) OnUpdate added in v1.0.0

func (e *EventHandler) OnUpdate(oldObj, newObj interface{})

func (*EventHandler) Start added in v1.0.0

func (e *EventHandler) Start() func(<-chan struct{}) error

Start initializes the EventHandler and returns a function suitable for registration with a workgroup.Group.

func (*EventHandler) UpdateNow added in v1.0.0

func (e *EventHandler) UpdateNow()

UpdateNow enqueues a DAG update subject to the holdoff timer.

type EventRecorder added in v1.2.0

type EventRecorder struct {
	Next    cache.ResourceEventHandler
	Counter *prometheus.CounterVec
}

EventRecorder records the count and kind of events forwarded to another ResourceEventHandler.

func (*EventRecorder) OnAdd added in v1.2.0

func (e *EventRecorder) OnAdd(obj interface{})

func (*EventRecorder) OnDelete added in v1.2.0

func (e *EventRecorder) OnDelete(obj interface{})

func (*EventRecorder) OnUpdate added in v1.2.0

func (e *EventRecorder) OnUpdate(oldObj, newObj interface{})

type ListenerCache

type ListenerCache struct {
	Cond
	// contains filtered or unexported fields
}

ListenerCache manages the contents of the gRPC LDS cache.

func NewListenerCache added in v1.0.0

func NewListenerCache(address string, port int) ListenerCache

NewListenerCache returns an instance of a ListenerCache

func (*ListenerCache) Contents added in v1.0.0

func (c *ListenerCache) Contents() []proto.Message

Contents returns a copy of the cache's contents.

func (*ListenerCache) Query added in v1.0.0

func (c *ListenerCache) Query(names []string) []proto.Message

Query returns the proto.Messages in the ListenerCache that match a slice of strings

func (*ListenerCache) TypeURL added in v1.0.0

func (*ListenerCache) TypeURL() string

func (*ListenerCache) Update added in v0.6.0

func (c *ListenerCache) Update(v map[string]*v2.Listener)

Update replaces the contents of the cache with the supplied map.

type ListenerVisitorConfig added in v0.8.0

type ListenerVisitorConfig struct {
	// Envoy's HTTP (non TLS) listener address.
	// If not set, defaults to DEFAULT_HTTP_LISTENER_ADDRESS.
	HTTPAddress string

	// Envoy's HTTP (non TLS) listener port.
	// If not set, defaults to DEFAULT_HTTP_LISTENER_PORT.
	HTTPPort int

	// Envoy's HTTP (non TLS) access log path.
	// If not set, defaults to DEFAULT_HTTP_ACCESS_LOG.
	HTTPAccessLog string

	// Envoy's HTTPS (TLS) listener address.
	// If not set, defaults to DEFAULT_HTTPS_LISTENER_ADDRESS.
	HTTPSAddress string

	// Envoy's HTTPS (TLS) listener port.
	// If not set, defaults to DEFAULT_HTTPS_LISTENER_PORT.
	HTTPSPort int

	// Envoy's HTTPS (TLS) access log path.
	// If not set, defaults to DEFAULT_HTTPS_ACCESS_LOG.
	HTTPSAccessLog string

	// UseProxyProto configures all listeners to expect a PROXY
	// V1 or V2 preamble.
	// If not set, defaults to false.
	UseProxyProto bool

	// MinimumProtocolVersion defines the min tls protocol version to be used
	MinimumProtocolVersion envoy_api_v2_auth.TlsParameters_TlsProtocol

	// AccessLogType defines if Envoy logs should be output as Envoy's default or JSON.
	// Valid values: 'envoy', 'json'
	// If not set, defaults to 'envoy'
	AccessLogType string

	// AccessLogFields sets the fields that should be shown in JSON logs.
	// Valid entries are the keys from internal/envoy/accesslog.go:jsonheaders
	// Defaults to a particular set of fields.
	AccessLogFields []string

	// RequestTimeout configures the request_timeout for all Connection Managers.
	RequestTimeout time.Duration
}

ListenerVisitorConfig holds configuration parameters for visitListeners.

type RouteCache added in v0.6.0

type RouteCache struct {
	Cond
	// contains filtered or unexported fields
}

RouteCache manages the contents of the gRPC RDS cache.

func (*RouteCache) Contents added in v1.0.0

func (c *RouteCache) Contents() []proto.Message

Contents returns a copy of the cache's contents.

func (*RouteCache) Query added in v1.0.0

func (c *RouteCache) Query(names []string) []proto.Message

Query searches the RouteCache for the named RouteConfiguration entries.

func (*RouteCache) TypeURL added in v1.0.0

func (*RouteCache) TypeURL() string

TypeURL returns the string type of RouteCache Resource.

func (*RouteCache) Update added in v0.6.0

func (c *RouteCache) Update(v map[string]*v2.RouteConfiguration)

Update replaces the contents of the cache with the supplied map.

type SecretCache added in v1.0.0

type SecretCache struct {
	Cond
	// contains filtered or unexported fields
}

SecretCache manages the contents of the gRPC SDS cache.

func (*SecretCache) Contents added in v1.0.0

func (c *SecretCache) Contents() []proto.Message

Contents returns a copy of the cache's contents.

func (*SecretCache) Query added in v1.0.0

func (c *SecretCache) Query(names []string) []proto.Message

func (*SecretCache) TypeURL added in v1.0.0

func (*SecretCache) TypeURL() string

func (*SecretCache) Update added in v1.0.0

func (c *SecretCache) Update(v map[string]*envoy_api_v2_auth.Secret)

Update replaces the contents of the cache with the supplied map.

Jump to

Keyboard shortcuts

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