konnect

package
v1.6.1-0...-486f9dc Latest Latest
Warning

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

Go to latest
Published: Sep 9, 2025 License: Apache-2.0, Apache-2.0 Imports: 24 Imported by: 0

Documentation

Index

Constants

View Source
const (
	MinRefreshNodePeriod     = 30 * time.Second
	DefaultRefreshNodePeriod = 60 * time.Second
)

Variables

This section is empty.

Functions

This section is empty.

Types

type ClientFactory

type ClientFactory interface {
	NewKonnectClient(ctx context.Context) (*adminapi.KonnectClient, error)
}

type ConfigSynchronizer

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

ConfigSynchronizer runs a loop to upload the translated Kong configuration to Konnect periodically.

func (*ConfigSynchronizer) KonnectClientInitialized

func (s *ConfigSynchronizer) KonnectClientInitialized() bool

KonnectClientInitialized returns true if the Konnect client is initialized and ready to upload configuration.

func (*ConfigSynchronizer) NeedLeaderElection

func (s *ConfigSynchronizer) NeedLeaderElection() bool

NeedLeaderElection returns true to indicate that this runnable requires leader election. This is required to ensure that only one instance of the synchronizer is running at a time.

func (*ConfigSynchronizer) Start

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

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

func (*ConfigSynchronizer) UpdateKongState

func (s *ConfigSynchronizer) UpdateKongState(ks *kongstate.KongState, isFallbackConfig bool)

UpdateKongState updates the Kong state to be uploaded to Konnect asynchronously. It may not update the state if the Konnect client is not initialized yet.

type ConfigSynchronizerParams

type ConfigSynchronizerParams struct {
	Logger                 logr.Logger
	KongConfig             sendconfig.Config
	ConfigUploadTicker     Ticker
	KonnectClientFactory   ClientFactory
	UpdateStrategyResolver sendconfig.UpdateStrategyResolver
	ConfigChangeDetector   sendconfig.ConfigurationChangeDetector
	ConfigStatusNotifier   clients.ConfigStatusNotifier
	MetricsRecorder        metrics.Recorder
}

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(ctx context.Context) (<-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 ManagerInstanceID

type ManagerInstanceID interface {
	String() string
}

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,
	managerInstanceID ManagerInstanceID,
	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 TargetContent

type TargetContent struct {
	*file.Content

	// IsFallback indicates whether the configuration is a fallback configuration.
	IsFallback bool
}

TargetContent wraps the deck content to be uploaded to Konnect and indicates whether the configuration is a fallback configuration.

type TargetKongState

type TargetKongState struct {
	*kongstate.KongState

	// IsFallback indicates whether the configuration is a fallback configuration.
	IsFallback bool
}

TargetKongState wraps the Kong state to be uploaded to Konnect and indicates whether the configuration is a fallback configuration.

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