Documentation ¶
Index ¶
Constants ¶
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 )
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?
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 ¶
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 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 ¶
NeedLeaderElection implements LeaderElectionRunnable interface to ensure that the node agent is run only when the KIC instance is elected a leader.
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.