contour

package
v0.6.0-alpha.3 Latest Latest
Warning

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

Go to latest
Published: Jul 10, 2018 License: Apache-2.0 Imports: 23 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.

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
)
View Source
const DEFAULT_INGRESS_CLASS = "contour"

Variables

This section is empty.

Functions

This section is empty.

Types

type ClusterCache

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

ClusterCache manages the contents of the gRPC CDS cache.

func (*ClusterCache) Register added in v0.6.0

func (c *ClusterCache) Register(ch chan int, last int)

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 Cache. It functions of a sequence counter, if the value of last supplied to Register is less than the Cache's internal counter, then the caller has missed at least one notification and will fire immediately.

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

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.

func (*ClusterCache) Values

func (c *ClusterCache) Values(filter func(string) bool) []proto.Message

Values returns a slice of the value stored in the cache.

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 occurence 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/heptio/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()

Notify notifies all registered waiters that an event has occured.

func (*Cond) Register added in v0.3.0

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

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, therefor ch must have a capacity of at least 1.

type DAGAdapter

type DAGAdapter struct {
	// Contour's IngressClass.
	// If not set, defaults to DEFAULT_INGRESS_CLASS.
	IngressClass string

	dag.ResourceEventHandler // provides a Visit method
	ListenerCache
	RouteCache
	ClusterCache

	IngressRouteStatus *k8s.IngressRouteStatus
	logrus.FieldLogger
}

DAGAdapter wraps a dag.ResourceEventHandler to hook post update cache generation.

func (*DAGAdapter) OnAdd

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

func (*DAGAdapter) OnDelete

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

func (*DAGAdapter) OnUpdate

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

type EndpointsTranslator added in v0.6.0

type EndpointsTranslator struct {
	logrus.FieldLogger

	Cond
	// 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(assignments ...*v2.ClusterLoadAssignment)

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

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) Remove added in v0.6.0

func (c *EndpointsTranslator) Remove(names ...string)

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

type ListenerCache

type ListenerCache 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 configurs all listeners to expect a PROXY protocol
	// V1 header on new connections.
	// If not set, defaults to false.
	UseProxyProto bool
	// contains filtered or unexported fields
}

ListenerCache manages the contents of the gRPC LDS cache.

func (*ListenerCache) Register added in v0.6.0

func (c *ListenerCache) Register(ch chan int, last int)

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 Cache. It functions of a sequence counter, if the value of last supplied to Register is less than the Cache's internal counter, then the caller has missed at least one notification and will fire immediately.

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

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.

func (*ListenerCache) Values

func (c *ListenerCache) Values(filter func(string) bool) []proto.Message

Values returns a slice of the value stored in the cache.

type RouteCache added in v0.6.0

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

RouteCache manages the contents of the gRPC RDS cache.

func (*RouteCache) Register added in v0.6.0

func (c *RouteCache) Register(ch chan int, last int)

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 Cache. It functions of a sequence counter, if the value of last supplied to Register is less than the Cache's internal counter, then the caller has missed at least one notification and will fire immediately.

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

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.

func (*RouteCache) Values added in v0.6.0

func (c *RouteCache) Values(filter func(string) bool) []proto.Message

Values returns a slice of the value stored in the cache.

Jump to

Keyboard shortcuts

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