Documentation
¶
Index ¶
- Constants
- type BackupReconciler
- func (r *BackupReconciler) PerformBackup(ctx context.Context, server *mcv1beta1.PaperMCServer, trigger string) error
- func (r *BackupReconciler) Reconcile(ctx context.Context, req ctrl.Request) (result ctrl.Result, retErr error)
- func (r *BackupReconciler) SetCron(scheduler mccron.Scheduler)
- func (r *BackupReconciler) SetupWithManager(mgr ctrl.Manager) error
- type K8sPodExecutor
- type PaperAPI
- type PaperMCServerReconciler
- type PluginReconciler
- type PodExecutor
- type RCONClientFactory
- type RegistryAPI
- type UpdateReconciler
Constants ¶
const ( // PluginFinalizer is the finalizer added to Plugin resources to ensure JAR cleanup. PluginFinalizer = "mc.k8s.lex.la/plugin-cleanup" // AnnotationApplyNow triggers immediate update application, bypassing maintenance window. // Value should be a Unix timestamp (seconds since epoch) of when the annotation was set. // Annotations older than 5 minutes are ignored to prevent stale triggers. AnnotationApplyNow = "mc.k8s.lex.la/apply-now" // AnnotationBackupNow triggers immediate VolumeSnapshot backup. // Value should be a Unix timestamp (seconds since epoch) of when the annotation was set. // Annotations older than 5 minutes are ignored to prevent stale triggers. AnnotationBackupNow = "mc.k8s.lex.la/backup-now" )
Finalizer and annotation constants.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type BackupReconciler ¶
type BackupReconciler struct {
client.Client
Scheme *runtime.Scheme
Snapshotter backup.Snapshotter
Metrics metrics.Recorder
// contains filtered or unexported fields
}
BackupReconciler reconciles PaperMCServer resources for VolumeSnapshot backups.
func (*BackupReconciler) PerformBackup ¶
func (r *BackupReconciler) PerformBackup( ctx context.Context, server *mcv1beta1.PaperMCServer, trigger string, ) error
PerformBackup creates a VolumeSnapshot with RCON hooks for the given server. This is exported so UpdateReconciler can call it for pre-update backups. Concurrent calls for the same server are serialized via a per-server mutex.
func (*BackupReconciler) Reconcile ¶
func (r *BackupReconciler) Reconcile(ctx context.Context, req ctrl.Request) (result ctrl.Result, retErr error)
Reconcile handles backup scheduling and execution for PaperMCServer resources.
func (*BackupReconciler) SetCron ¶
func (r *BackupReconciler) SetCron(scheduler mccron.Scheduler)
SetCron sets the cron scheduler for the reconciler.
func (*BackupReconciler) SetupWithManager ¶
func (r *BackupReconciler) SetupWithManager(mgr ctrl.Manager) error
SetupWithManager sets up the controller with the Manager.
type K8sPodExecutor ¶
type K8sPodExecutor struct {
// contains filtered or unexported fields
}
K8sPodExecutor implements PodExecutor using client-go remotecommand (SPDY).
func NewK8sPodExecutor ¶
func NewK8sPodExecutor(config *rest.Config) (*K8sPodExecutor, error)
NewK8sPodExecutor creates a new PodExecutor from a rest.Config.
type PaperAPI ¶
type PaperAPI interface {
GetPaperVersions(ctx context.Context) ([]string, error)
GetPaperBuild(ctx context.Context, ver string) (*paper.BuildInfo, error)
GetBuilds(ctx context.Context, ver string) ([]int, error)
}
PaperAPI abstracts PaperMC API operations for testability.
type PaperMCServerReconciler ¶
type PaperMCServerReconciler struct {
client.Client
Scheme *runtime.Scheme
Config *rest.Config
PaperClient PaperAPI
Solver solver.Solver
RegistryClient RegistryAPI
Metrics metrics.Recorder
OperatorNamespace string
}
PaperMCServerReconciler reconciles a PaperMCServer object.
func (*PaperMCServerReconciler) Reconcile ¶
func (r *PaperMCServerReconciler) Reconcile(ctx context.Context, req ctrl.Request) (result ctrl.Result, retErr error)
Reconcile implements the reconciliation loop for PaperMCServer resources.
func (*PaperMCServerReconciler) SetupWithManager ¶
func (r *PaperMCServerReconciler) SetupWithManager(mgr ctrl.Manager) error
SetupWithManager sets up the controller with the Manager.
type PluginReconciler ¶
type PluginReconciler struct {
client.Client
Scheme *runtime.Scheme
PluginClient plugins.PluginClient
Solver solver.Solver
Metrics metrics.Recorder
HTTPClient *http.Client
}
PluginReconciler reconciles a Plugin object. Note: URL-source plugins download entire JARs (up to MaxJARSize=100MB) into memory during metadata extraction. The default MaxConcurrentReconciles=1 keeps this safe; increasing concurrency will multiply peak memory usage accordingly.
func (*PluginReconciler) Reconcile ¶
func (r *PluginReconciler) Reconcile(ctx context.Context, req ctrl.Request) (result ctrl.Result, retErr error)
Reconcile implements the reconciliation loop for Plugin resources.
func (*PluginReconciler) SetupWithManager ¶
func (r *PluginReconciler) SetupWithManager(mgr ctrl.Manager) error
SetupWithManager sets up the controller with the Manager.
type PodExecutor ¶
type PodExecutor interface {
ExecInPod(ctx context.Context, namespace, podName, container string, command []string) ([]byte, error)
}
PodExecutor executes commands inside Kubernetes pods.
type RCONClientFactory ¶
RCONClientFactory creates RCON clients. Allows injection for testing.
type RegistryAPI ¶
type RegistryAPI interface {
ListTags(ctx context.Context, repository string, pageSize int) ([]string, error)
ImageExists(ctx context.Context, repository, tag string) (bool, error)
}
RegistryAPI abstracts Docker registry operations for testability.
type UpdateReconciler ¶
type UpdateReconciler struct {
client.Client
Scheme *runtime.Scheme
PaperClient PaperAPI
PluginClient plugins.PluginClient
PodExecutor PodExecutor
Metrics metrics.Recorder
BackupReconciler *BackupReconciler
// contains filtered or unexported fields
}
UpdateReconciler reconciles PaperMCServer resources for scheduled updates.
func (*UpdateReconciler) Reconcile ¶
func (r *UpdateReconciler) Reconcile(ctx context.Context, req ctrl.Request) (result ctrl.Result, retErr error)
Reconcile reconciles PaperMCServer resources for update management.
func (*UpdateReconciler) SetCron ¶
func (r *UpdateReconciler) SetCron(scheduler mccron.Scheduler)
SetCron sets the cron scheduler for the reconciler.
func (*UpdateReconciler) SetupWithManager ¶
func (r *UpdateReconciler) SetupWithManager(mgr ctrl.Manager) error
SetupWithManager sets up the controller with the Manager.