controller

package
v1.18.0-beta29 Latest Latest
Warning

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

Go to latest
Published: Oct 25, 2024 License: Apache-2.0 Imports: 46 Imported by: 0

Documentation

Index

Constants

View Source
const (
	// AutoProvision controls whether the controller will be responsible for provisioning dynamic
	// infrastructure for the Gateway API.
	AutoProvision = true
)
View Source
const (
	GatewayAutoDeployAnnotationKey = "gateway.gloo.solo.io/auto-deploy"
)
View Source
const (
	// field name used for indexing
	GatewayParamsField = "gateway-params"
)

Variables

This section is empty.

Functions

func NewBaseGatewayController

func NewBaseGatewayController(ctx context.Context, cfg GatewayConfig) error

func Start

func Start(ctx context.Context, cfg StartConfig) error

Start runs the controllers responsible for processing the K8s Gateway API objects It is intended to be run in a goroutine as the function will block until the supplied context is cancelled

Types

type GatewayConfig

type GatewayConfig struct {
	Mgr            manager.Manager
	GWClasses      sets.Set[string]
	Dev            bool
	ControllerName string
	AutoProvision  bool
	Kick           func(ctx context.Context)

	ControlPlane bootstrap.ControlPlane
	IstioValues  bootstrap.IstioValues

	Extensions extensions.K8sGatewayExtensions
}

type ObjList

type ObjList[T any, PT Object[T]] struct {
	metav1.TypeMeta `json:",inline"`
	metav1.ListMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"`
	Items           []T `json:"items" protobuf:"bytes,2,rep,name=items"`
}

func (*ObjList[T, PT]) DeepCopyObject

func (t *ObjList[T, PT]) DeepCopyObject() runtime.Object

func (*ObjList[T, PT]) EachListItem

func (t *ObjList[T, PT]) EachListItem(f func(runtime.Object) error) error

func (*ObjList[T, PT]) EachListItemWithAlloc

func (t *ObjList[T, PT]) EachListItemWithAlloc(f func(runtime.Object) error) error

func (*ObjList[T, PT]) GetObjectKind

func (t *ObjList[T, PT]) GetObjectKind() schema.ObjectKind

func (*ObjList[T, PT]) IsList

func (t *ObjList[T, PT]) IsList() bool

func (*ObjList[T, PT]) NewEmptyInstance

func (t *ObjList[T, PT]) NewEmptyInstance() runtime.Unstructured

func (*ObjList[T, PT]) SetUnstructuredContent

func (t *ObjList[T, PT]) SetUnstructuredContent(map[string]interface{})

func (*ObjList[T, PT]) UnstructuredContent

func (t *ObjList[T, PT]) UnstructuredContent() map[string]interface{}

type Object

type Object[T any] interface {
	*T
	client.Object
}

type StartConfig

type StartConfig struct {
	Dev  bool
	Opts bootstrap.Opts

	// ExtensionsFactory is the factory function which will return an extensions.K8sGatewayExtensions
	// This is responsible for producing the extension points that this controller requires
	ExtensionsFactory extensions.K8sGatewayExtensionsFactory

	// GlooPluginRegistryFactory is the factory function to produce a PluginRegistry
	// The plugins in this registry are used during the conversion of a Proxy resource into an xDS Snapshot
	GlooPluginRegistryFactory plugins.PluginRegistryFactory

	// ProxyClient is the client that writes Proxy resources into an in-memory cache
	// This cache ultimately populates the ApiSnapshot (important for extensions such as Rate Limit to work correctly)
	// and is also utilized by the debug.ProxyEndpointServer
	ProxyClient v1.ProxyClient

	// AuthConfigClient is the client used for retrieving AuthConfig objects within the Portal Plugin
	AuthConfigClient extauthv1.AuthConfigClient

	// RouteOptionClient is the client used for retrieving RouteOption objects within the RouteOptionsPlugin
	RouteOptionClient gatewayv1.RouteOptionClient

	// VirtualHostOptionClient is the client used for retrieving VirtualHostOption objects within the VirtualHostOptionsPlugin
	VirtualHostOptionClient gatewayv1.VirtualHostOptionClient

	// SecretClient is used for converting from kube Secrets to gloov1 Secrets
	SecretClient v1.SecretClient

	// GlooStatusReporter is the shared reporter from setup_syncer that reports as 'gloo',
	// it is used to report on Upstreams and Proxies after xds translation.
	// this is required because various upstream tests expect a certain reporter for Upstreams
	// TODO: remove the other reporter and only use this one, no need for 2 different reporters
	GlooStatusReporter reporter.StatusReporter

	// KubeGwStatusReporter is used within any StatusPlugins that must persist a GE-classic style status
	// TODO: as mentioned above, this should be removed: https://github.com/solo-io/solo-projects/issues/7055
	KubeGwStatusReporter reporter.StatusReporter

	// Translator is an instance of the Gloo translator used to translate Proxy -> xDS Snapshot
	Translator translator.Translator

	// SyncerExtensions is a list of extensions, the kube gw controller will use these to get extension-specific
	// errors & warnings for any Proxies it generates
	SyncerExtensions []syncer.TranslatorSyncerExtension
}

type TypedClient

type TypedClient[T any, PT Object[T]] struct {
	Cli    client.Client
	Scheme *runtime.Scheme
}

func (TypedClient[T, PT]) Get

func (t TypedClient[T, PT]) Get(ctx context.Context, key client.ObjectKey, opts ...client.GetOption) (*T, error)

func (TypedClient[T, PT]) List

func (t TypedClient[T, PT]) List(ctx context.Context, opts ...client.ListOption) ([]T, error)

Jump to

Keyboard shortcuts

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