konnect

package
v3.4.1 Latest Latest
Warning

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

Go to latest
Published: Jan 2, 2025 License: Apache-2.0 Imports: 21 Imported by: 0

Documentation

Index

Constants

View Source
const (
	// MinConfigUploadPeriod is the minimum period between operations to upload Kong configuration to Konnect.
	MinConfigUploadPeriod = 10 * time.Second
	// DefaultConfigUploadPeriod is the default period between operations to upload Kong configuration to Konnect.
	DefaultConfigUploadPeriod = 30 * time.Second
)
View Source
const (
	MinRefreshNodePeriod     = 30 * time.Second
	DefaultRefreshNodePeriod = 60 * time.Second
)

Variables

This section is empty.

Functions

This section is empty.

Types

type ConfigSynchronizer added in v3.3.0

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

ConfigSynchronizer runs a loop to upload the traslated Kong configuration to Konnect in the given period.

func NewConfigSynchronizer added in v3.3.0

func NewConfigSynchronizer(
	logger logr.Logger,
	kongConfig sendconfig.Config,
	configUploadPeriod time.Duration,
	clientsProvider clients.AdminAPIClientsProvider,
	updateStrategyResolver sendconfig.UpdateStrategyResolver,
	configChangeDetector sendconfig.ConfigurationChangeDetector,
	configStatusNotifier clients.ConfigStatusNotifier,
	metricsRecorder metrics.Recorder,
) *ConfigSynchronizer

func (*ConfigSynchronizer) GetTargetContentCopy added in v3.3.0

func (s *ConfigSynchronizer) GetTargetContentCopy() *file.Content

GetTargetContentCopy returns a copy of the latest configuration in `file.Content` format to prevent data race and long duration of occupying lock.

func (*ConfigSynchronizer) SetTargetContent added in v3.3.0

func (s *ConfigSynchronizer) SetTargetContent(targetContent *file.Content)

SetTargetContent stores the latest configuration in `file.Content` format. REVIEW: should we use channel to receive the configuration?

func (*ConfigSynchronizer) Start added in v3.3.0

func (s *ConfigSynchronizer) Start(ctx context.Context) error

Start starts the loop to receive configuration and uplaod configuration to Konnect.

type GatewayClientGetter

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

GatewayClientGetter gets gateway instances from admin API clients.

func NewGatewayClientGetter

func NewGatewayClientGetter(logger logr.Logger, clientsProvider clients.AdminAPIClientsProvider) *GatewayClientGetter

NewGatewayClientGetter creates a GatewayClientGetter to get gateway instances from client provider.

func (*GatewayClientGetter) GetGatewayInstances

func (p *GatewayClientGetter) GetGatewayInstances(ctx context.Context) ([]GatewayInstance, error)

GetGatewayInstances gets gateway instances from currently available gateway API clients.

type GatewayClientsChangesNotifier

type GatewayClientsChangesNotifier interface {
	SubscribeToGatewayClientsChanges() (<-chan struct{}, bool)
}

type GatewayInstance

type GatewayInstance struct {
	Hostname string
	Version  string
	NodeID   string
}

GatewayInstance is a controlled kong gateway instance. its hostname and version will be used to update status of nodes corresponding to the instance in konnect.

type GatewayInstanceGetter

type GatewayInstanceGetter interface {
	GetGatewayInstances(ctx context.Context) ([]GatewayInstance, error)
}

GatewayInstanceGetter is the interface to get currently running gateway instances in the kubernetes cluster.

type ManagerInstanceIDProvider

type ManagerInstanceIDProvider interface {
	GetID() uuid.UUID
}

type NodeAgent

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

NodeAgent gets the running status of KIC node and controlled kong gateway nodes, and update their statuses to konnect.

func NewNodeAgent

func NewNodeAgent(
	hostname string,
	version string,
	refreshPeriod time.Duration,
	logger logr.Logger,
	client NodeClient,
	configStatusSubscriber clients.ConfigStatusSubscriber,
	gatewayGetter GatewayInstanceGetter,
	gatewayClientsChangesNotifier GatewayClientsChangesNotifier,
	managerInstanceIDProvider ManagerInstanceIDProvider,
	opts ...NodeAgentOpt,
) *NodeAgent

NewNodeAgent creates a new node agent. hostname and version are hostname and version of KIC.

func (*NodeAgent) NeedLeaderElection

func (a *NodeAgent) NeedLeaderElection() bool

NeedLeaderElection implements LeaderElectionRunnable interface to ensure that the node agent is run only when the KIC instance is elected a leader.

func (*NodeAgent) Start

func (a *NodeAgent) Start(ctx context.Context) error

Start runs the process of maintaining and uploading of KIC and kong gateway nodes.

type NodeAgentOpt

type NodeAgentOpt func(*NodeAgent)

func WithRefreshTicker

func WithRefreshTicker(ticker Ticker) NodeAgentOpt

WithRefreshTicker sets the refresh ticker of node agent.

type NodeClient

type NodeClient interface {
	CreateNode(ctx context.Context, req *nodes.CreateNodeRequest) (*nodes.CreateNodeResponse, error)
	UpdateNode(ctx context.Context, nodeID string, req *nodes.UpdateNodeRequest) (*nodes.UpdateNodeResponse, error)
	DeleteNode(ctx context.Context, nodeID string) error
	ListAllNodes(ctx context.Context) ([]*nodes.NodeItem, error)
}

NodeClient is the interface to Konnect Control Plane Node API.

type Ticker

type Ticker interface {
	Stop()
	Channel() <-chan time.Time
	Reset(time.Duration)
}

Directories

Path Synopsis

Jump to

Keyboard shortcuts

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