Documentation
¶
Index ¶
- Constants
- Variables
- func ConvergeModulesInQueue(q *queue.TaskQueue) int
- func ConvergeTasksInQueue(q *queue.TaskQueue) int
- func DrainNonMainQueue(q *queue.TaskQueue)
- func InitDefaultHelmResourcesManager(ctx context.Context, namespace string, metricStorage metric.Storage, ...) (helm_resources_manager.HelmResourcesManager, error)
- func ModuleEnsureCRDsTasksInQueueAfterId(q *queue.TaskQueue, afterId string) bool
- func ModulesWithPendingModuleRun(q *queue.TaskQueue) map[string]struct{}
- func QueueHasPendingModuleRunTask(q *queue.TaskQueue, moduleName string) bool
- func RemoveAdjacentConvergeModules(q *queue.TaskQueue, afterId string, logLabels map[string]string, ...)
- func RemoveCurrentConvergeTasks(convergeQueues []*queue.TaskQueue, logLabels map[string]string, ...) bool
- func RemoveCurrentConvergeTasksFromId(q *queue.TaskQueue, afterId string, logLabels map[string]string, ...) bool
- func StartLiveTicksUpdater(metricStorage metric.Storage)
- func StartTasksQueueLengthUpdater(metricStorage metric.Storage, tqs *queue.TaskQueueSet)
- type AddonOperator
- func (op *AddonOperator) Assemble(debugServer *debug.Server) error
- func (op *AddonOperator) BootstrapMainQueue(tqs *queue.TaskQueueSet)
- func (op *AddonOperator) CreateAndStartParallelQueues()
- func (op *AddonOperator) CreateAndStartQueue(queueName string)
- func (op *AddonOperator) CreateAndStartQueuesForGlobalHooks()
- func (op *AddonOperator) CreateAndStartQueuesForModuleHooks(moduleName string)
- func (op *AddonOperator) CreateBootstrapTasks(logLabels map[string]string) []sh_task.Task
- func (op *AddonOperator) CreateReloadModulesTasks(moduleNames []string, logLabels map[string]string, eventDescription string) []sh_task.Task
- func (op *AddonOperator) EnsureCRDs(module *modules.BasicModule) ([]string, error)
- func (op *AddonOperator) InitModuleManager() error
- func (op *AddonOperator) IsQueueExists(queueName string) bool
- func (op *AddonOperator) IsStartupConvergeDone() bool
- func (op *AddonOperator) KubeClient() *client.Client
- func (op *AddonOperator) RegisterDebugGlobalRoutes(dbgSrv *debug.Server)
- func (op *AddonOperator) RegisterDebugGraphRoutes(dbgSrv *debug.Server)
- func (op *AddonOperator) RegisterDebugModuleRoutes(dbgSrv *debug.Server)
- func (op *AddonOperator) RegisterDiscoveryRoute(dbgSrv *debug.Server)
- func (op *AddonOperator) RegisterManagerEventsHandlers()
- func (op *AddonOperator) Setup() error
- func (op *AddonOperator) SetupKubeConfigManager(bk backend.ConfigHandler)
- func (op *AddonOperator) SetupModuleManager(modulesDir string, globalHooksDir string, tempDir string)
- func (op *AddonOperator) Start(ctx context.Context) error
- func (op *AddonOperator) StartAPIServer()
- func (op *AddonOperator) StartModuleManagerEventHandler()
- func (op *AddonOperator) Stop()
- func (op *AddonOperator) WithLeaderElector(config *leaderelection.LeaderElectionConfig) error
- type AdmissionServer
- type Option
Constants ¶
const (
LabelHeritage string = "heritage"
)
Variables ¶
var DefaultHelmMonitorKubeClientMetricLabels = map[string]string{"component": "helm_monitor"}
DefaultHelmMonitorKubeClientMetricLabels are labels that indicates go client metrics producer. Important! These labels should be consistent with similar labels in ShellOperator!
Functions ¶
func ConvergeModulesInQueue ¶ added in v1.0.6
func ConvergeTasksInQueue ¶ added in v1.0.6
func DrainNonMainQueue ¶ added in v1.0.6
func InitDefaultHelmResourcesManager ¶ added in v1.0.6
func InitDefaultHelmResourcesManager(ctx context.Context, namespace string, metricStorage metric.Storage, logger *log.Logger) (helm_resources_manager.HelmResourcesManager, error)
func ModuleEnsureCRDsTasksInQueueAfterId ¶ added in v1.5.0
func ModulesWithPendingModuleRun ¶ added in v1.0.6
ModulesWithPendingModuleRun returns names of all modules in pending ModuleRun tasks. First task in queue considered not pending and is ignored.
func QueueHasPendingModuleRunTask ¶
QueueHasPendingModuleRunTask returns true if queue has pending tasks with the type "ModuleRun" related to the module "moduleName".
func RemoveAdjacentConvergeModules ¶ added in v1.0.6
func RemoveAdjacentConvergeModules(q *queue.TaskQueue, afterId string, logLabels map[string]string, logger *log.Logger)
RemoveAdjacentConvergeModules removes ConvergeModules tasks right after the task with the specified ID.
func RemoveCurrentConvergeTasks ¶ added in v1.0.6
func RemoveCurrentConvergeTasks(convergeQueues []*queue.TaskQueue, logLabels map[string]string, logger *log.Logger) bool
RemoveCurrentConvergeTasks detects if converge tasks present in the main and parallel queues. These tasks are drained and the method returns true
func RemoveCurrentConvergeTasksFromId ¶ added in v1.5.0
func RemoveCurrentConvergeTasksFromId(q *queue.TaskQueue, afterId string, logLabels map[string]string, logger *log.Logger) bool
RemoveCurrentConvergeTasksFromId detects if converge tasks present in the main queue after task which ID equals to 'afterID'. These tasks are drained and the method returns true.
func StartLiveTicksUpdater ¶ added in v1.0.6
StartLiveTicksUpdater starts a goroutine that periodically updates the live_ticks metric every 10 seconds. This metric can be used to verify that addon-operator is alive and functioning.
func StartTasksQueueLengthUpdater ¶ added in v1.0.6
func StartTasksQueueLengthUpdater(metricStorage metric.Storage, tqs *queue.TaskQueueSet)
StartTasksQueueLengthUpdater starts a goroutine that periodically updates the tasks_queue_length metric every 5 seconds. This metric shows the number of pending tasks in each queue, which can be useful for monitoring system load and potential backlog issues.
Types ¶
type AddonOperator ¶
type AddonOperator struct {
DefaultNamespace string
DebugServer *debug.Server
// KubeConfigManager monitors changes in ConfigMap.
KubeConfigManager *kube_config_manager.KubeConfigManager
// ModuleManager is the module manager object, which monitors configuration
// and variable changes.
ModuleManager *module_manager.ModuleManager
Helm *helm.ClientFactory
// HelmResourcesManager monitors absent resources created for modules.
HelmResourcesManager helm_resources_manager.HelmResourcesManager
// Initial KubeConfig to bypass initial loading from the ConfigMap.
InitialKubeConfig *config.KubeConfig
// AdmissionServer handles validation and mutation admission webhooks
AdmissionServer *AdmissionServer
MetricStorage metric.Storage
// LeaderElector represents leaderelection client for HA mode
LeaderElector *leaderelection.LeaderElector
// CRDExtraLabels contains labels for processing CRD files
// like heritage=addon-operator
CRDExtraLabels map[string]string
Logger *log.Logger
// converge state
ConvergeState *converge.ConvergeState
TaskService *taskservice.TaskHandlerService
// contains filtered or unexported fields
}
AddonOperator extends ShellOperator with modules and global hooks and with a value storage.
func NewAddonOperator ¶
func NewAddonOperator(ctx context.Context, opts ...Option) *AddonOperator
func (*AddonOperator) Assemble ¶ added in v1.1.3
func (op *AddonOperator) Assemble(debugServer *debug.Server) error
Assemble initializes and connects components of the AddonOperator. It sets up debugging http endpoints, starts netrics services, and initializes the module manager.
func (*AddonOperator) BootstrapMainQueue ¶ added in v1.0.6
func (op *AddonOperator) BootstrapMainQueue(tqs *queue.TaskQueueSet)
BootstrapMainQueue adds tasks to initiate Startup sequence:
- Run onStartup hooks. - Enable global schedule bindings. - Enable kubernetes bindings: run Synchronization tasks. - Purge unknown Helm releases. - Start reload all modules.
func (*AddonOperator) CreateAndStartParallelQueues ¶ added in v1.5.0
func (op *AddonOperator) CreateAndStartParallelQueues()
CreateAndStartParallelQueues creates and starts named queues for executing parallel tasks in parallel
func (*AddonOperator) CreateAndStartQueue ¶ added in v1.0.6
func (op *AddonOperator) CreateAndStartQueue(queueName string)
CreateAndStartQueue creates a named queue and starts it. It returns false is queue is already created
func (*AddonOperator) CreateAndStartQueuesForGlobalHooks ¶ added in v1.0.6
func (op *AddonOperator) CreateAndStartQueuesForGlobalHooks()
CreateAndStartQueuesForGlobalHooks creates queues for all registered global hooks. It is safe to run this method multiple times, as it checks for existing queues.
func (*AddonOperator) CreateAndStartQueuesForModuleHooks ¶ added in v1.0.6
func (op *AddonOperator) CreateAndStartQueuesForModuleHooks(moduleName string)
CreateAndStartQueuesForModuleHooks creates queues for registered module hooks. It is safe to run this method multiple times, as it checks for existing queues.
func (*AddonOperator) CreateBootstrapTasks ¶ added in v1.0.6
func (op *AddonOperator) CreateBootstrapTasks(logLabels map[string]string) []sh_task.Task
func (*AddonOperator) CreateReloadModulesTasks ¶ added in v1.0.6
func (*AddonOperator) EnsureCRDs ¶ added in v1.5.0
func (op *AddonOperator) EnsureCRDs(module *modules.BasicModule) ([]string, error)
func (*AddonOperator) InitModuleManager ¶
func (op *AddonOperator) InitModuleManager() error
InitModuleManager initialize KubeConfigManager and ModuleManager, reads values from ConfigMap for the first time and sets handlers for kubernetes and schedule events.
func (*AddonOperator) IsQueueExists ¶ added in v1.7.0
func (op *AddonOperator) IsQueueExists(queueName string) bool
IsQueueExists returns true is queue is already created
func (*AddonOperator) IsStartupConvergeDone ¶ added in v1.0.5
func (op *AddonOperator) IsStartupConvergeDone() bool
func (*AddonOperator) KubeClient ¶ added in v1.3.0
func (op *AddonOperator) KubeClient() *client.Client
KubeClient returns default common kubernetes client initialized by shell-operator
func (*AddonOperator) RegisterDebugGlobalRoutes ¶ added in v1.1.3
func (op *AddonOperator) RegisterDebugGlobalRoutes(dbgSrv *debug.Server)
func (*AddonOperator) RegisterDebugGraphRoutes ¶ added in v1.4.0
func (op *AddonOperator) RegisterDebugGraphRoutes(dbgSrv *debug.Server)
func (*AddonOperator) RegisterDebugModuleRoutes ¶ added in v1.1.3
func (op *AddonOperator) RegisterDebugModuleRoutes(dbgSrv *debug.Server)
func (*AddonOperator) RegisterDiscoveryRoute ¶ added in v1.3.4
func (op *AddonOperator) RegisterDiscoveryRoute(dbgSrv *debug.Server)
func (*AddonOperator) RegisterManagerEventsHandlers ¶ added in v1.0.6
func (op *AddonOperator) RegisterManagerEventsHandlers()
func (*AddonOperator) Setup ¶ added in v1.3.0
func (op *AddonOperator) Setup() error
Setup initializes the AddonOperator with required components and configurations. It performs the following steps: 1. Initializes the Helm client factory with specified options like namespace, history max, timeout, and logger. 2. Sets up the Helm resources manager using a separate client-go instance. 3. Validates the existence of the global hooks directory. 4. Ensures the temporary directory exists. 5. Verifies that KubeConfigManager is set before proceeding. 6. Finally sets up the module manager with the appropriate directories.
Returns an error if any initialization step fails.
func (*AddonOperator) SetupKubeConfigManager ¶ added in v1.3.0
func (op *AddonOperator) SetupKubeConfigManager(bk backend.ConfigHandler)
SetupKubeConfigManager sets manager, which reads configuration for Modules from a cluster
func (*AddonOperator) SetupModuleManager ¶ added in v1.1.3
func (op *AddonOperator) SetupModuleManager(modulesDir string, globalHooksDir string, tempDir string)
func (*AddonOperator) Start ¶
func (op *AddonOperator) Start(ctx context.Context) error
Start runs all managers, event and queue handlers. TODO: implement context in various dependencies (ModuleManager, KubeConfigManaer, etc)
func (*AddonOperator) StartAPIServer ¶ added in v1.3.9
func (op *AddonOperator) StartAPIServer()
func (*AddonOperator) StartModuleManagerEventHandler ¶
func (op *AddonOperator) StartModuleManagerEventHandler()
func (*AddonOperator) Stop ¶
func (op *AddonOperator) Stop()
func (*AddonOperator) WithLeaderElector ¶ added in v1.3.9
func (op *AddonOperator) WithLeaderElector(config *leaderelection.LeaderElectionConfig) error
type AdmissionServer ¶ added in v1.1.4
type AdmissionServer struct {
// contains filtered or unexported fields
}
func NewAdmissionServer ¶ added in v1.1.4
func NewAdmissionServer(listenPort, certsDir string) *AdmissionServer
func (*AdmissionServer) RegisterHandler ¶ added in v1.1.4
func (as *AdmissionServer) RegisterHandler(route string, handler http.Handler)
type Option ¶ added in v1.5.1
type Option func(operator *AddonOperator)