v2

package
v0.20.8 Latest Latest
Warning

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

Go to latest
Published: Oct 15, 2019 License: Apache-2.0 Imports: 33 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var (
	GatewayCrd = crd.NewCrd(
		"gateways",
		GatewayGVK.Group,
		GatewayGVK.Version,
		GatewayGVK.Kind,
		"gw",
		false,
		&Gateway{})
)
View Source
var (
	GatewayGVK = schema.GroupVersionKind{
		Version: "v2",
		Group:   "gateway.solo.io.v2",
		Kind:    "Gateway",
	}
)

Functions

func NewApiEventLoop

func NewApiEventLoop(emitter ApiSnapshotEmitter, syncer ApiSyncer) eventloop.EventLoop

func NewApiSimpleEventLoop

func NewApiSimpleEventLoop(emitter ApiSimpleEmitter, syncers ...ApiSyncer) eventloop.SimpleEventLoop

Types

type ApiEmitter

type ApiEmitter interface {
	ApiSnapshotEmitter
	Register() error
	VirtualService() gateway_solo_io.VirtualServiceClient
	RouteTable() gateway_solo_io.RouteTableClient
	Gateway() GatewayClient
}

func NewApiEmitter

func NewApiEmitter(virtualServiceClient gateway_solo_io.VirtualServiceClient, routeTableClient gateway_solo_io.RouteTableClient, gatewayClient GatewayClient) ApiEmitter

func NewApiEmitterWithEmit

func NewApiEmitterWithEmit(virtualServiceClient gateway_solo_io.VirtualServiceClient, routeTableClient gateway_solo_io.RouteTableClient, gatewayClient GatewayClient, emit <-chan struct{}) ApiEmitter

type ApiSimpleEmitter

type ApiSimpleEmitter interface {
	Snapshots(ctx context.Context) (<-chan *ApiSnapshot, <-chan error, error)
}

func NewApiSimpleEmitter

func NewApiSimpleEmitter(aggregatedWatch clients.ResourceWatch) ApiSimpleEmitter

func NewApiSimpleEmitterWithEmit

func NewApiSimpleEmitterWithEmit(aggregatedWatch clients.ResourceWatch, emit <-chan struct{}) ApiSimpleEmitter

type ApiSnapshot

type ApiSnapshot struct {
	VirtualServices gateway_solo_io.VirtualServiceList
	RouteTables     gateway_solo_io.RouteTableList
	Gateways        GatewayList
}

func (ApiSnapshot) Clone

func (s ApiSnapshot) Clone() ApiSnapshot

func (ApiSnapshot) Hash

func (s ApiSnapshot) Hash() uint64

func (ApiSnapshot) HashFields

func (s ApiSnapshot) HashFields() []zap.Field

func (ApiSnapshot) Stringer

func (s ApiSnapshot) Stringer() ApiSnapshotStringer

type ApiSnapshotEmitter added in v0.18.44

type ApiSnapshotEmitter interface {
	Snapshots(watchNamespaces []string, opts clients.WatchOpts) (<-chan *ApiSnapshot, <-chan error, error)
}

type ApiSnapshotStringer

type ApiSnapshotStringer struct {
	Version         uint64
	VirtualServices []string
	RouteTables     []string
	Gateways        []string
}

func (ApiSnapshotStringer) String

func (ss ApiSnapshotStringer) String() string

type ApiSyncDecider deprecated

type ApiSyncDecider interface {
	ApiSyncer
	ShouldSync(old, new *ApiSnapshot) bool
}

Deprecated: use ApiSyncDeciderWithContext

type ApiSyncDeciderWithContext

type ApiSyncDeciderWithContext interface {
	ApiSyncer
	ShouldSync(ctx context.Context, old, new *ApiSnapshot) bool
}

type ApiSyncer

type ApiSyncer interface {
	Sync(context.Context, *ApiSnapshot) error
}

type ApiSyncers

type ApiSyncers []ApiSyncer

func (ApiSyncers) Sync

func (s ApiSyncers) Sync(ctx context.Context, snapshot *ApiSnapshot) error

type Gateway

type Gateway struct {
	// if set to false, only use virtual services without ssl configured.
	// if set to true, only use virtual services with ssl configured.
	Ssl bool `protobuf:"varint,1,opt,name=ssl,proto3" json:"ssl,omitempty"`
	// the bind address the gateway should serve traffic on
	BindAddress string `protobuf:"bytes,3,opt,name=bind_address,json=bindAddress,proto3" json:"bind_address,omitempty"`
	// bind ports must not conflict across gateways for a single proxy
	BindPort uint32 `protobuf:"varint,4,opt,name=bind_port,json=bindPort,proto3" json:"bind_port,omitempty"`
	// top level plugin configuration for all routes on the gateway
	Plugins *v1.ListenerPlugins `protobuf:"bytes,5,opt,name=plugins,proto3" json:"plugins,omitempty"`
	// Status indicates the validation status of this resource.
	// Status is read-only by clients, and set by gloo during validation
	Status core.Status `protobuf:"bytes,6,opt,name=status,proto3" json:"status" testdiff:"ignore"`
	// Metadata contains the object metadata for this resource
	Metadata core.Metadata `protobuf:"bytes,7,opt,name=metadata,proto3" json:"metadata"`
	// Enable ProxyProtocol support for this listener
	UseProxyProto *types.BoolValue `protobuf:"bytes,8,opt,name=use_proxy_proto,json=useProxyProto,proto3" json:"use_proxy_proto,omitempty"`
	// The type of gateway being created
	// HttpGateway creates a listener with an http_connection_manager
	// TcpGateway creates a listener with a tcp proxy filter
	//
	// Types that are valid to be assigned to GatewayType:
	//	*Gateway_HttpGateway
	//	*Gateway_TcpGateway
	GatewayType isGateway_GatewayType `protobuf_oneof:"GatewayType"`
	// deprecated: use proxyNames
	GatewayProxyName string `protobuf:"bytes,11,opt,name=gateway_proxy_name,json=gatewayProxyName,proto3" json:"gateway_proxy_name,omitempty"` // Deprecated: Do not use.
	//
	// Names of the [`Proxy`](https://gloo.solo.io/api/github.com/solo-io/gloo/projects/gloo/api/v1/proxy.proto.sk/)
	// resources to generate from this gateway. If other gateways exist which point to the same proxy,
	// Gloo will join them together.
	//
	// Proxies have a one-to-many relationship with Envoy bootstrap configuration.
	// In order to connect to Gloo, the Envoy bootstrap configuration sets a `role` in
	// the [node metadata](https://www.envoyproxy.io/docs/envoy/latest/api-v2/api/v2/core/base.proto#envoy-api-msg-core-node)
	// Envoy instances announce their `role` to Gloo, which maps to the  `{{ .Namespace }}~{{ .Name }}`
	// of the Proxy resource.
	//
	// The template for this value can be seen in the [Gloo Helm chart](https://github.com/solo-io/gloo/blob/master/install/helm/gloo/templates/9-gateway-proxy-configmap.yaml#L22)
	//
	// Note: this field also accepts fields written in camel-case. They will be converted
	// to kebab-case in the Proxy name. This allows use of the [Gateway Name Helm value](https://github.com/solo-io/gloo/blob/master/install/helm/gloo/values-gateway-template.yaml#L47)
	// for this field
	//
	// Defaults to `["gateway-proxy-v2"]`
	ProxyNames           []string `protobuf:"bytes,12,rep,name=proxy_names,json=proxyNames,proto3" json:"proxy_names,omitempty"`
	XXX_NoUnkeyedLiteral struct{} `json:"-"`
	XXX_unrecognized     []byte   `json:"-"`
	XXX_sizecache        int32    `json:"-"`
}

A Gateway describes a single Listener (bind address:port) and the routing configuration to upstreams that are reachable via a specific port on the Gateway Proxy itself.

func NewGateway

func NewGateway(namespace, name string) *Gateway

func (*Gateway) DeepCopyObject

func (o *Gateway) DeepCopyObject() runtime.Object

func (*Gateway) Descriptor

func (*Gateway) Descriptor() ([]byte, []int)

func (*Gateway) Equal

func (this *Gateway) Equal(that interface{}) bool

func (*Gateway) GetBindAddress

func (m *Gateway) GetBindAddress() string

func (*Gateway) GetBindPort

func (m *Gateway) GetBindPort() uint32

func (*Gateway) GetGatewayProxyName deprecated

func (m *Gateway) GetGatewayProxyName() string

Deprecated: Do not use.

func (*Gateway) GetGatewayType

func (m *Gateway) GetGatewayType() isGateway_GatewayType

func (*Gateway) GetHttpGateway

func (m *Gateway) GetHttpGateway() *HttpGateway

func (*Gateway) GetMetadata

func (m *Gateway) GetMetadata() core.Metadata

func (*Gateway) GetObjectKind

func (o *Gateway) GetObjectKind() schema.ObjectKind

func (*Gateway) GetPlugins

func (m *Gateway) GetPlugins() *v1.ListenerPlugins

func (*Gateway) GetProxyNames added in v0.18.32

func (m *Gateway) GetProxyNames() []string

func (*Gateway) GetSsl

func (m *Gateway) GetSsl() bool

func (*Gateway) GetStatus

func (m *Gateway) GetStatus() core.Status

func (*Gateway) GetTcpGateway

func (m *Gateway) GetTcpGateway() *TcpGateway

func (*Gateway) GetUseProxyProto

func (m *Gateway) GetUseProxyProto() *types.BoolValue

func (*Gateway) GroupVersionKind

func (r *Gateway) GroupVersionKind() schema.GroupVersionKind

func (*Gateway) Hash

func (r *Gateway) Hash() uint64

func (*Gateway) ProtoMessage

func (*Gateway) ProtoMessage()

func (*Gateway) Reset

func (m *Gateway) Reset()

func (*Gateway) SetMetadata

func (r *Gateway) SetMetadata(meta core.Metadata)

func (*Gateway) SetStatus

func (r *Gateway) SetStatus(status core.Status)

func (*Gateway) String

func (m *Gateway) String() string

func (*Gateway) XXX_DiscardUnknown

func (m *Gateway) XXX_DiscardUnknown()

func (*Gateway) XXX_Marshal

func (m *Gateway) XXX_Marshal(b []byte, deterministic bool) ([]byte, error)

func (*Gateway) XXX_Merge

func (m *Gateway) XXX_Merge(src proto.Message)

func (*Gateway) XXX_OneofWrappers added in v0.18.29

func (*Gateway) XXX_OneofWrappers() []interface{}

XXX_OneofWrappers is for the internal use of the proto package.

func (*Gateway) XXX_Size

func (m *Gateway) XXX_Size() int

func (*Gateway) XXX_Unmarshal

func (m *Gateway) XXX_Unmarshal(b []byte) error

type GatewayClient

type GatewayClient interface {
	BaseClient() clients.ResourceClient
	Register() error
	Read(namespace, name string, opts clients.ReadOpts) (*Gateway, error)
	Write(resource *Gateway, opts clients.WriteOpts) (*Gateway, error)
	Delete(namespace, name string, opts clients.DeleteOpts) error
	List(namespace string, opts clients.ListOpts) (GatewayList, error)
	GatewayWatcher
}

func NewGatewayClient

func NewGatewayClient(rcFactory factory.ResourceClientFactory) (GatewayClient, error)

func NewGatewayClientWithBase

func NewGatewayClientWithBase(rc clients.ResourceClient) GatewayClient

func NewGatewayClientWithToken

func NewGatewayClientWithToken(rcFactory factory.ResourceClientFactory, token string) (GatewayClient, error)

type GatewayList

type GatewayList []*Gateway

func (GatewayList) AsInputResources

func (list GatewayList) AsInputResources() resources.InputResourceList

func (GatewayList) AsInterfaces

func (list GatewayList) AsInterfaces() []interface{}

func (GatewayList) AsResources

func (list GatewayList) AsResources() resources.ResourceList

func (GatewayList) Clone

func (list GatewayList) Clone() GatewayList

func (GatewayList) Each

func (list GatewayList) Each(f func(element *Gateway))

func (GatewayList) EachResource

func (list GatewayList) EachResource(f func(element resources.Resource))

func (GatewayList) Find

func (list GatewayList) Find(namespace, name string) (*Gateway, error)

namespace is optional, if left empty, names can collide if the list contains more than one with the same name

func (GatewayList) Names

func (list GatewayList) Names() []string

func (GatewayList) NamespacesDotNames

func (list GatewayList) NamespacesDotNames() []string

func (GatewayList) Sort

func (list GatewayList) Sort() GatewayList

type GatewayReconciler

type GatewayReconciler interface {
	Reconcile(namespace string, desiredResources GatewayList, transition TransitionGatewayFunc, opts clients.ListOpts) error
}

func NewGatewayReconciler

func NewGatewayReconciler(client GatewayClient) GatewayReconciler

type GatewayWatcher

type GatewayWatcher interface {
	// watch namespace-scoped Gateways
	Watch(namespace string, opts clients.WatchOpts) (<-chan GatewayList, <-chan error, error)
}

type Gateway_HttpGateway

type Gateway_HttpGateway struct {
	HttpGateway *HttpGateway `protobuf:"bytes,9,opt,name=http_gateway,json=httpGateway,proto3,oneof" json:"http_gateway,omitempty"`
}

func (*Gateway_HttpGateway) Equal

func (this *Gateway_HttpGateway) Equal(that interface{}) bool

type Gateway_TcpGateway

type Gateway_TcpGateway struct {
	TcpGateway *TcpGateway `protobuf:"bytes,10,opt,name=tcp_gateway,json=tcpGateway,proto3,oneof" json:"tcp_gateway,omitempty"`
}

func (*Gateway_TcpGateway) Equal

func (this *Gateway_TcpGateway) Equal(that interface{}) bool

type HttpGateway

type HttpGateway struct {
	// names of the the virtual services, which contain the actual routes for the gateway
	// if the list is empty, all virtual services will apply to this gateway (with accordance to tls flag above).
	VirtualServices []core.ResourceRef `protobuf:"bytes,1,rep,name=virtual_services,json=virtualServices,proto3" json:"virtual_services"`
	// Select virtual services by their label. This will apply only to virtual services
	// in the same namespace as the gateway resource.
	// only one of `virtualServices` or `virtualServiceSelector` should be provided
	VirtualServiceSelector map[string]string `` /* 217-byte string literal not displayed */
	// http gateway configuration
	Plugins              *v1.HttpListenerPlugins `protobuf:"bytes,8,opt,name=plugins,proto3" json:"plugins,omitempty"`
	XXX_NoUnkeyedLiteral struct{}                `json:"-"`
	XXX_unrecognized     []byte                  `json:"-"`
	XXX_sizecache        int32                   `json:"-"`
}

func (*HttpGateway) Descriptor

func (*HttpGateway) Descriptor() ([]byte, []int)

func (*HttpGateway) Equal

func (this *HttpGateway) Equal(that interface{}) bool

func (*HttpGateway) GetPlugins

func (m *HttpGateway) GetPlugins() *v1.HttpListenerPlugins

func (*HttpGateway) GetVirtualServiceSelector added in v0.18.32

func (m *HttpGateway) GetVirtualServiceSelector() map[string]string

func (*HttpGateway) GetVirtualServices

func (m *HttpGateway) GetVirtualServices() []core.ResourceRef

func (*HttpGateway) ProtoMessage

func (*HttpGateway) ProtoMessage()

func (*HttpGateway) Reset

func (m *HttpGateway) Reset()

func (*HttpGateway) String

func (m *HttpGateway) String() string

func (*HttpGateway) XXX_DiscardUnknown

func (m *HttpGateway) XXX_DiscardUnknown()

func (*HttpGateway) XXX_Marshal

func (m *HttpGateway) XXX_Marshal(b []byte, deterministic bool) ([]byte, error)

func (*HttpGateway) XXX_Merge

func (m *HttpGateway) XXX_Merge(src proto.Message)

func (*HttpGateway) XXX_Size

func (m *HttpGateway) XXX_Size() int

func (*HttpGateway) XXX_Unmarshal

func (m *HttpGateway) XXX_Unmarshal(b []byte) error

type TcpGateway

type TcpGateway struct {
	// Name of the destinations the gateway can route to
	Destinations []*v1.TcpHost `protobuf:"bytes,1,rep,name=destinations,proto3" json:"destinations,omitempty"`
	// tcp gateway configuration
	Plugins              *v1.TcpListenerPlugins `protobuf:"bytes,8,opt,name=plugins,proto3" json:"plugins,omitempty"`
	XXX_NoUnkeyedLiteral struct{}               `json:"-"`
	XXX_unrecognized     []byte                 `json:"-"`
	XXX_sizecache        int32                  `json:"-"`
}

func (*TcpGateway) Descriptor

func (*TcpGateway) Descriptor() ([]byte, []int)

func (*TcpGateway) Equal

func (this *TcpGateway) Equal(that interface{}) bool

func (*TcpGateway) GetDestinations

func (m *TcpGateway) GetDestinations() []*v1.TcpHost

func (*TcpGateway) GetPlugins

func (m *TcpGateway) GetPlugins() *v1.TcpListenerPlugins

func (*TcpGateway) ProtoMessage

func (*TcpGateway) ProtoMessage()

func (*TcpGateway) Reset

func (m *TcpGateway) Reset()

func (*TcpGateway) String

func (m *TcpGateway) String() string

func (*TcpGateway) XXX_DiscardUnknown

func (m *TcpGateway) XXX_DiscardUnknown()

func (*TcpGateway) XXX_Marshal

func (m *TcpGateway) XXX_Marshal(b []byte, deterministic bool) ([]byte, error)

func (*TcpGateway) XXX_Merge

func (m *TcpGateway) XXX_Merge(src proto.Message)

func (*TcpGateway) XXX_Size

func (m *TcpGateway) XXX_Size() int

func (*TcpGateway) XXX_Unmarshal

func (m *TcpGateway) XXX_Unmarshal(b []byte) error

type TransitionGatewayFunc

type TransitionGatewayFunc func(original, desired *Gateway) (bool, error)

Option to copy anything from the original to the desired before writing. Return value of false means don't update

Jump to

Keyboard shortcuts

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