Skip to content

Commit 826937e

Browse files
authored
Merge pull request #789 from k8up-io/remove-obs-exclusive
Free Check and Prune from internal Observer, rework exclusive job queueing
2 parents 8eb74dd + 47eade1 commit 826937e

40 files changed

+565
-1109
lines changed

.golangci.yml

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,5 @@
11
issues:
22
exclude-rules:
3-
- linters:
4-
- staticcheck
5-
text: "k8upv1.LegacyLabelK8upType is deprecated: LegacyLabelK8upType is the former label key that identified the job type"
63
- linters:
74
- staticcheck
85
text: "k8upv1.LegacyScheduleFinalizerName is deprecated: Migrate to ScheduleFinalizerName"

api/v1/check_types.go

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
package v1
22

33
import (
4+
"reflect"
5+
46
corev1 "k8s.io/api/core/v1"
57
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
68
"k8s.io/apimachinery/pkg/runtime"
@@ -156,3 +158,7 @@ func (c *CheckSpec) CreateObject(name, namespace string) runtime.Object {
156158
Spec: *c,
157159
}
158160
}
161+
162+
var (
163+
CheckKind = reflect.TypeOf(Check{}).Name()
164+
)

api/v1/prune_types.go

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
package v1
22

33
import (
4+
"reflect"
5+
46
corev1 "k8s.io/api/core/v1"
57
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
68
"k8s.io/apimachinery/pkg/runtime"
@@ -169,3 +171,7 @@ func (in *PruneSchedule) GetObjectCreator() ObjectCreator {
169171
func init() {
170172
SchemeBuilder.Register(&Prune{}, &PruneList{})
171173
}
174+
175+
var (
176+
PruneKind = reflect.TypeOf(Prune{}).Name()
177+
)

cmd/k8up/main.go

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,9 @@ import (
99

1010
"github.com/go-logr/logr"
1111
"github.com/urfave/cli/v2"
12+
"go.uber.org/zap"
1213
"go.uber.org/zap/zapcore"
13-
"sigs.k8s.io/controller-runtime/pkg/log/zap"
14+
controllerzap "sigs.k8s.io/controller-runtime/pkg/log/zap"
1415

1516
"github.com/k8up-io/k8up/v2/cmd"
1617
"github.com/k8up-io/k8up/v2/cmd/operator"
@@ -89,6 +90,9 @@ func newLogger(name string, debug bool) logr.Logger {
8990
if debug {
9091
level = zapcore.DebugLevel
9192
}
92-
logger := zap.New(zap.UseDevMode(true), zap.Level(level))
93+
cfg := zap.NewDevelopmentConfig()
94+
cfg.EncoderConfig.EncodeTime = zapcore.RFC3339TimeEncoder
95+
enc := zapcore.NewConsoleEncoder(cfg.EncoderConfig)
96+
logger := controllerzap.New(controllerzap.Level(level), controllerzap.Encoder(enc))
9397
return logger.WithName(name)
9498
}

cmd/operator/main.go

Lines changed: 18 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -4,28 +4,24 @@ import (
44
"fmt"
55
"strings"
66

7+
k8upv1 "github.com/k8up-io/k8up/v2/api/v1"
8+
"github.com/k8up-io/k8up/v2/cmd"
79
"github.com/k8up-io/k8up/v2/operator/archivecontroller"
810
"github.com/k8up-io/k8up/v2/operator/backupcontroller"
11+
"github.com/k8up-io/k8up/v2/operator/cfg"
12+
"github.com/k8up-io/k8up/v2/operator/checkcontroller"
13+
"github.com/k8up-io/k8up/v2/operator/executor"
914
"github.com/k8up-io/k8up/v2/operator/jobcontroller"
1015
"github.com/k8up-io/k8up/v2/operator/locker"
16+
"github.com/k8up-io/k8up/v2/operator/prunecontroller"
1117
"github.com/k8up-io/k8up/v2/operator/restorecontroller"
1218
"github.com/k8up-io/k8up/v2/operator/schedulecontroller"
13-
"k8s.io/apimachinery/pkg/api/resource"
14-
_ "k8s.io/client-go/plugin/pkg/client/auth/gcp"
15-
1619
"github.com/urfave/cli/v2"
17-
batchv1 "k8s.io/api/batch/v1"
20+
"k8s.io/apimachinery/pkg/api/resource"
1821
"k8s.io/apimachinery/pkg/runtime"
1922
utilruntime "k8s.io/apimachinery/pkg/util/runtime"
2023
clientgoscheme "k8s.io/client-go/kubernetes/scheme"
2124
ctrl "sigs.k8s.io/controller-runtime"
22-
23-
k8upv1 "github.com/k8up-io/k8up/v2/api/v1"
24-
"github.com/k8up-io/k8up/v2/cmd"
25-
"github.com/k8up-io/k8up/v2/controllers"
26-
"github.com/k8up-io/k8up/v2/operator/cfg"
27-
"github.com/k8up-io/k8up/v2/operator/executor"
28-
// +kubebuilder:scaffold:imports
2925
)
3026

3127
const (
@@ -119,18 +115,18 @@ func operatorMain(c *cli.Context) error {
119115
lock := &locker.Locker{Kube: mgr.GetClient()}
120116
executor.StartExecutor(lock)
121117

122-
for name, reconciler := range map[string]controllers.ReconcilerSetup{
118+
for name, reconciler := range map[string]ReconcilerSetup{
123119
"Schedule": &schedulecontroller.ScheduleReconciler{},
124120
"Backup": &backupcontroller.BackupReconciler{},
125121
"Restore": &restorecontroller.RestoreReconciler{},
126122
"Archive": &archivecontroller.ArchiveReconciler{},
127-
"Check": &controllers.CheckReconciler{},
128-
"Prune": &controllers.PruneReconciler{},
123+
"Check": &checkcontroller.CheckReconciler{},
124+
"Prune": &prunecontroller.PruneReconciler{},
129125
"Job": &jobcontroller.JobReconciler{},
130126
} {
131-
if err := reconciler.SetupWithManager(mgr, operatorLog.WithName("controllers").WithName(name)); err != nil {
132-
operatorLog.Error(err, "unable to initialize operator mode", "step", "controller", "controller", name)
133-
return fmt.Errorf("unable to setup reconciler: %w", err)
127+
if setupErr := reconciler.SetupWithManager(mgr); setupErr != nil {
128+
operatorLog.Error(setupErr, "unable to initialize operator mode", "step", "controller", "controller", name)
129+
return fmt.Errorf("unable to setup reconciler: %w", setupErr)
134130
}
135131
}
136132
// +kubebuilder:scaffold:builder
@@ -146,7 +142,6 @@ func operatorMain(c *cli.Context) error {
146142
func k8upScheme() *runtime.Scheme {
147143
scheme := runtime.NewScheme()
148144
utilruntime.Must(clientgoscheme.AddToScheme(scheme))
149-
utilruntime.Must(batchv1.AddToScheme(scheme))
150145
utilruntime.Must(k8upv1.AddToScheme(scheme))
151146
// +kubebuilder:scaffold:scheme
152147
return scheme
@@ -174,3 +169,8 @@ func validateQuantityFlags(ctx *cli.Context) error {
174169

175170
return nil
176171
}
172+
173+
// ReconcilerSetup is a common interface to configure reconcilers.
174+
type ReconcilerSetup interface {
175+
SetupWithManager(mgr ctrl.Manager) error
176+
}

controllers/check_controller.go

Lines changed: 0 additions & 68 deletions
This file was deleted.

controllers/controller_setup.go

Lines changed: 0 additions & 14 deletions
This file was deleted.

controllers/prune_controller.go

Lines changed: 0 additions & 66 deletions
This file was deleted.

go.mod

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,6 @@ require (
2323
)
2424

2525
require (
26-
cloud.google.com/go/compute v1.9.0 // indirect
2726
github.com/PuerkitoBio/purell v1.1.1 // indirect
2827
github.com/PuerkitoBio/urlesc v0.0.0-20170810143723-de5bf2ad4578 // indirect
2928
github.com/benbjohnson/clock v1.1.0 // indirect

go.sum

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,6 @@ cloud.google.com/go/compute v1.5.0/go.mod h1:9SMHyhJlzhlkJqrPAc839t2BZFTSk6Jdj6m
4343
cloud.google.com/go/compute v1.6.0/go.mod h1:T29tfhtVbq1wvAPo0E3+7vhgmkOYeXjhFvz/FMzPu0s=
4444
cloud.google.com/go/compute v1.6.1/go.mod h1:g85FgpzFvNULZ+S8AYq87axRKuf2Kh7deLqV/jJ3thU=
4545
cloud.google.com/go/compute v1.7.0/go.mod h1:435lt8av5oL9P3fv1OEzSbSUe+ybHXGMPQHHZWZxy9U=
46-
cloud.google.com/go/compute v1.9.0 h1:ED/FP4xv8GJw63v556/ASNc1CeeLUO2Bs8nzaHchkHg=
4746
cloud.google.com/go/compute v1.9.0/go.mod h1:lWv1h/zUWTm/LozzfTJhBSkd6ShQq8la8VeeuOEGxfY=
4847
cloud.google.com/go/datastore v1.0.0/go.mod h1:LXYbyblFSglQ5pkeyhO+Qmw7ukd3C+pD7TKLgZqpHYE=
4948
cloud.google.com/go/datastore v1.1.0/go.mod h1:umbIZjpQpHh4hmRpGhH4tLFup+FVzqBi1b3c64qFpCk=

operator/archivecontroller/controller.go

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,10 @@ func (r *ArchiveReconciler) Reconcile(ctx context.Context, req controllerruntime
3232
return controllerruntime.Result{}, err
3333
}
3434

35+
if archive.Status.HasStarted() {
36+
return controllerruntime.Result{}, nil
37+
}
38+
3539
repository := cfg.Config.GetGlobalRepository()
3640
if archive.Spec.Backend != nil {
3741
repository = archive.Spec.Backend.String()

operator/archivecontroller/setup.go

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
package archivecontroller
22

33
import (
4-
"github.com/go-logr/logr"
54
v1 "github.com/k8up-io/k8up/v2/api/v1"
65
controllerruntime "sigs.k8s.io/controller-runtime"
76
"sigs.k8s.io/controller-runtime/pkg/predicate"
@@ -11,7 +10,7 @@ import (
1110
// +kubebuilder:rbac:groups=k8up.io,resources=archives/status;archives/finalizers,verbs=get;update;patch
1211

1312
// SetupWithManager configures the reconciler.
14-
func (r *ArchiveReconciler) SetupWithManager(mgr controllerruntime.Manager, l logr.Logger) error {
13+
func (r *ArchiveReconciler) SetupWithManager(mgr controllerruntime.Manager) error {
1514
name := "archive.k8up.io"
1615
r.Kube = mgr.GetClient()
1716
return controllerruntime.NewControllerManagedBy(mgr).

0 commit comments

Comments
 (0)