Use embedded metrics struct from pkg/controller
This rewrites the two reconcilers, and their initialisation in main.go, to use the `Metrics` struct from pkg/controller.
This commit is contained in:
parent
b090d834cf
commit
0ccada4a0a
|
|
@ -34,8 +34,8 @@ import (
|
|||
"sigs.k8s.io/controller-runtime/pkg/reconcile"
|
||||
"sigs.k8s.io/controller-runtime/pkg/source"
|
||||
|
||||
"github.com/fluxcd/pkg/runtime/controller"
|
||||
"github.com/fluxcd/pkg/runtime/events"
|
||||
"github.com/fluxcd/pkg/runtime/metrics"
|
||||
"github.com/fluxcd/pkg/version"
|
||||
|
||||
imagev1alpha1 "github.com/fluxcd/image-reflector-controller/api/v1alpha1"
|
||||
|
|
@ -57,8 +57,8 @@ type ImagePolicyReconciler struct {
|
|||
Scheme *runtime.Scheme
|
||||
EventRecorder kuberecorder.EventRecorder
|
||||
ExternalEventRecorder *events.Recorder
|
||||
MetricsRecorder *metrics.Recorder
|
||||
Database DatabaseReader
|
||||
controller.Metrics
|
||||
Database DatabaseReader
|
||||
}
|
||||
|
||||
// +kubebuilder:rbac:groups=image.toolkit.fluxcd.io,resources=imagepolicies,verbs=get;list;watch;create;update;patch;delete
|
||||
|
|
@ -76,14 +76,12 @@ func (r *ImagePolicyReconciler) Reconcile(req ctrl.Request) (ctrl.Result, error)
|
|||
|
||||
log := r.Log.WithValues("controller", strings.ToLower(imagev1alpha1.ImagePolicyKind), "request", req.NamespacedName)
|
||||
|
||||
// record reconciliation duration
|
||||
if r.MetricsRecorder != nil {
|
||||
objRef, err := reference.GetReference(r.Scheme, &pol)
|
||||
if err != nil {
|
||||
return ctrl.Result{}, err
|
||||
}
|
||||
defer r.MetricsRecorder.RecordDuration(*objRef, reconcileStart)
|
||||
objRef, refErr := reference.GetReference(r.Scheme, &pol)
|
||||
if refErr != nil {
|
||||
return ctrl.Result{}, refErr
|
||||
}
|
||||
// the duration is recorded, but there's no readiness condition at present
|
||||
defer r.RecordDuration(objRef, reconcileStart)
|
||||
|
||||
var repo imagev1alpha1.ImageRepository
|
||||
if err := r.Get(ctx, types.NamespacedName{
|
||||
|
|
|
|||
|
|
@ -39,8 +39,8 @@ import (
|
|||
"sigs.k8s.io/controller-runtime/pkg/client"
|
||||
|
||||
"github.com/fluxcd/pkg/apis/meta"
|
||||
"github.com/fluxcd/pkg/runtime/controller"
|
||||
"github.com/fluxcd/pkg/runtime/events"
|
||||
"github.com/fluxcd/pkg/runtime/metrics"
|
||||
"github.com/fluxcd/pkg/runtime/predicates"
|
||||
|
||||
imagev1alpha1 "github.com/fluxcd/image-reflector-controller/api/v1alpha1"
|
||||
|
|
@ -57,8 +57,8 @@ type ImageRepositoryReconciler struct {
|
|||
Scheme *runtime.Scheme
|
||||
EventRecorder kuberecorder.EventRecorder
|
||||
ExternalEventRecorder *events.Recorder
|
||||
MetricsRecorder *metrics.Recorder
|
||||
Database interface {
|
||||
controller.Metrics
|
||||
Database interface {
|
||||
DatabaseWriter
|
||||
DatabaseReader
|
||||
}
|
||||
|
|
@ -83,8 +83,13 @@ func (r *ImageRepositoryReconciler) Reconcile(req ctrl.Request) (ctrl.Result, er
|
|||
|
||||
log := r.Log.WithValues("controller", strings.ToLower(imagev1alpha1.ImageRepositoryKind), "request", req.NamespacedName)
|
||||
|
||||
// record rediness metric
|
||||
defer r.recordReadinessMetric(&imageRepo)
|
||||
objRef, err := reference.GetReference(r.Scheme, &imageRepo)
|
||||
if err != nil {
|
||||
return ctrl.Result{}, err
|
||||
}
|
||||
|
||||
// this always gets recorded
|
||||
defer r.RecordReadinessMetric(objRef, &imageRepo)
|
||||
|
||||
if imageRepo.Spec.Suspend {
|
||||
msg := "ImageRepository is suspended, skipping reconciliation"
|
||||
|
|
@ -102,14 +107,8 @@ func (r *ImageRepositoryReconciler) Reconcile(req ctrl.Request) (ctrl.Result, er
|
|||
return ctrl.Result{}, nil
|
||||
}
|
||||
|
||||
// record reconciliation duration
|
||||
if r.MetricsRecorder != nil {
|
||||
objRef, err := reference.GetReference(r.Scheme, &imageRepo)
|
||||
if err != nil {
|
||||
return ctrl.Result{}, err
|
||||
}
|
||||
defer r.MetricsRecorder.RecordDuration(*objRef, reconcileStart)
|
||||
}
|
||||
// this gets recorded if it's not suspended
|
||||
defer r.MetricsRecorder.RecordDuration(*objRef, reconcileStart)
|
||||
|
||||
ref, err := name.ParseReference(imageRepo.Spec.Image)
|
||||
if err != nil {
|
||||
|
|
|
|||
1
go.sum
1
go.sum
|
|
@ -201,6 +201,7 @@ github.com/evanphx/json-patch v4.9.0+incompatible h1:kLcOMZeuLAJvL2BPWLMIj5oaZQo
|
|||
github.com/evanphx/json-patch v4.9.0+incompatible/go.mod h1:50XU6AFN0ol/bzJsmQLiYLvXMP4fmwYFNcr97nuDLSk=
|
||||
github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4=
|
||||
github.com/fatih/color v1.9.0/go.mod h1:eQcE1qtQxscV5RaZvpXrrb8Drkc3/DdQ+uUYCNjL+zU=
|
||||
github.com/fluxcd/pkg v0.0.4 h1:fMA6GG3FTSBFDrlB026gQJhxj4xVuvcvwP3rhX/Yqrw=
|
||||
github.com/fluxcd/pkg/apis/meta v0.3.0 h1:o2YkfGgf0j8sKeZs8cBmmmMKLA7kEoS1qYViOial1Ds=
|
||||
github.com/fluxcd/pkg/apis/meta v0.3.0/go.mod h1:wOzQQx8CdtUQCGaLzqGu4QgnNxYkI6/wvdvlovxWhF0=
|
||||
github.com/fluxcd/pkg/apis/meta v0.4.0 h1:JChqB9GGgorW9HWKxirTVV0rzrcLyzBaVjinmqZ0iHA=
|
||||
|
|
|
|||
11
main.go
11
main.go
|
|
@ -25,13 +25,12 @@ import (
|
|||
_ "k8s.io/client-go/plugin/pkg/client/auth/gcp"
|
||||
ctrl "sigs.k8s.io/controller-runtime"
|
||||
"sigs.k8s.io/controller-runtime/pkg/healthz"
|
||||
crtlmetrics "sigs.k8s.io/controller-runtime/pkg/metrics"
|
||||
|
||||
imagev1alpha1 "github.com/fluxcd/image-reflector-controller/api/v1alpha1"
|
||||
"github.com/fluxcd/image-reflector-controller/controllers"
|
||||
"github.com/fluxcd/pkg/runtime/controller"
|
||||
"github.com/fluxcd/pkg/runtime/events"
|
||||
"github.com/fluxcd/pkg/runtime/logger"
|
||||
"github.com/fluxcd/pkg/runtime/metrics"
|
||||
// +kubebuilder:scaffold:imports
|
||||
)
|
||||
|
||||
|
|
@ -84,9 +83,6 @@ func main() {
|
|||
}
|
||||
}
|
||||
|
||||
metricsRecorder := metrics.NewRecorder()
|
||||
crtlmetrics.Registry.MustRegister(metricsRecorder.Collectors()...)
|
||||
|
||||
watchNamespace := ""
|
||||
if !watchAllNamespaces {
|
||||
watchNamespace = os.Getenv("RUNTIME_NAMESPACE")
|
||||
|
|
@ -109,6 +105,7 @@ func main() {
|
|||
setupChecks(mgr)
|
||||
|
||||
db := controllers.NewDatabase()
|
||||
metrics := controller.MustMakeMetrics()
|
||||
|
||||
if err = (&controllers.ImageRepositoryReconciler{
|
||||
Client: mgr.GetClient(),
|
||||
|
|
@ -116,7 +113,7 @@ func main() {
|
|||
Scheme: mgr.GetScheme(),
|
||||
EventRecorder: mgr.GetEventRecorderFor(controllerName),
|
||||
ExternalEventRecorder: eventRecorder,
|
||||
MetricsRecorder: metricsRecorder,
|
||||
Metrics: metrics,
|
||||
Database: db,
|
||||
}).SetupWithManager(mgr); err != nil {
|
||||
setupLog.Error(err, "unable to create controller", "controller", imagev1alpha1.ImageRepositoryKind)
|
||||
|
|
@ -128,7 +125,7 @@ func main() {
|
|||
Scheme: mgr.GetScheme(),
|
||||
EventRecorder: mgr.GetEventRecorderFor(controllerName),
|
||||
ExternalEventRecorder: eventRecorder,
|
||||
MetricsRecorder: metricsRecorder,
|
||||
Metrics: metrics,
|
||||
Database: db,
|
||||
}).SetupWithManager(mgr); err != nil {
|
||||
setupLog.Error(err, "unable to create controller", "controller", imagev1alpha1.ImagePolicyKind)
|
||||
|
|
|
|||
Loading…
Reference in New Issue