make ReconcilePodMonitor

Change-Id: I39be505b37128c7583975b75fde0ba79fed6dddc
This commit is contained in:
okozachenko 2020-04-14 13:12:27 -07:00
parent bbbe4f9b68
commit 9b5c71c6a5
3 changed files with 104 additions and 84 deletions

View File

@ -129,36 +129,10 @@ func (r *McrouterReconciler) Reconcile(req ctrl.Request) (ctrl.Result, error) {
log.WithValues("resource", "Deployment").WithValues("op", op).Info("Reconciled")
// PodMonitor
podMonitor := &monitoringv1.PodMonitor{
TypeMeta: metav1.TypeMeta{
APIVersion: "monitoring.coreos.com/v1",
Kind: "PodMonitor",
},
ObjectMeta: metav1.ObjectMeta{
Namespace: req.Namespace,
Name: "mcrouter-podmonitor",
},
if res, err := r.ReconcilePodMonitor(ctx, req, &mcrouter, log, typeLabels); err != nil || res != (ctrl.Result{}) {
return res, err
}
op, err = k8sutils.CreateOrUpdate(ctx, r, podMonitor, func() error {
return builders.PodMonitor(podMonitor, &mcrouter, r.Scheme).
Labels(typeLabels).
Selector(map[string]string{
"app.kubernetes.io/name": "mcrouter",
}).
PodMetricsEndpoints(
builders.PodMetricsEndpoint().
Port("metrics").
Path("/metrics").
Interval("15s"),
).Build()
})
if err != nil {
return ctrl.Result{}, err
}
log.WithValues("resource", "mcrouter-podmonitor").WithValues("op", op).Info("Reconciled")
// Alertrule
alertRule := &monitoringv1.PrometheusRule{
ObjectMeta: metav1.ObjectMeta{
@ -232,3 +206,36 @@ func (r *McrouterReconciler) ReconcileService(ctx context.Context, req ctrl.Requ
log.WithValues("resource", "Service").WithValues("op", op).Info("Reconciled")
return ctrl.Result{}, nil
}
// ReconcilePodMonitor reconciles the podMonitor
func (r *McrouterReconciler) ReconcilePodMonitor(ctx context.Context, req ctrl.Request, mcrouter *infrastructurev1alpha1.Mcrouter, log logr.Logger, labels map[string]string) (ctrl.Result, error) {
podMonitor := &monitoringv1.PodMonitor{
TypeMeta: metav1.TypeMeta{
APIVersion: "monitoring.coreos.com/v1",
Kind: "PodMonitor",
},
ObjectMeta: metav1.ObjectMeta{
Namespace: req.Namespace,
Name: "mcrouter-podmonitor",
},
}
op, err := k8sutils.CreateOrUpdate(ctx, r, podMonitor, func() error {
return builders.PodMonitor(podMonitor, mcrouter, r.Scheme).
Labels(labels).
Selector(map[string]string{
"app.kubernetes.io/name": "mcrouter",
}).
PodMetricsEndpoints(
builders.PodMetricsEndpoint().
Port("metrics").
Path("/metrics").
Interval("15s"),
).Build()
})
if err != nil {
return ctrl.Result{}, err
}
log.WithValues("resource", "mcrouter-podmonitor").WithValues("op", op).Info("Reconciled")
return ctrl.Result{}, nil
}

View File

@ -129,36 +129,10 @@ func (r *MemcachedReconciler) Reconcile(req ctrl.Request) (ctrl.Result, error) {
log.WithValues("resource", "Deployment").WithValues("op", op).Info("Reconciled")
// PodMonitor
podMonitor := &monitoringv1.PodMonitor{
TypeMeta: metav1.TypeMeta{
APIVersion: "monitoring.coreos.com/v1",
Kind: "PodMonitor",
},
ObjectMeta: metav1.ObjectMeta{
Namespace: req.Namespace,
Name: "memcached-podmonitor",
},
if res, err := r.ReconcilePodMonitor(ctx, req, &memcached, log, typeLabels); err != nil || res != (ctrl.Result{}) {
return res, err
}
op, err = k8sutils.CreateOrUpdate(ctx, r, podMonitor, func() error {
return builders.PodMonitor(podMonitor, &memcached, r.Scheme).
Labels(typeLabels).
Selector(map[string]string{
"app.kubernetes.io/name": "memcached",
}).
PodMetricsEndpoints(
builders.PodMetricsEndpoint().
Port("metrics").
Path("/metrics").
Interval("15s"),
).Build()
})
if err != nil {
return ctrl.Result{}, err
}
log.WithValues("resource", "podmonitor").WithValues("op", op).Info("Reconciled")
// Pods
pods := &corev1.PodList{}
err = r.List(ctx, pods, client.InNamespace(req.Namespace), client.MatchingLabels(labels))
@ -249,3 +223,36 @@ func (r *MemcachedReconciler) SetupWithManager(mgr ctrl.Manager) error {
Owns(&monitoringv1.PrometheusRule{}).
Complete(r)
}
// ReconcilePodMonitor reconciles the podMonitor
func (r *MemcachedReconciler) ReconcilePodMonitor(ctx context.Context, req ctrl.Request, memcached *infrastructurev1alpha1.Memcached, log logr.Logger, labels map[string]string) (ctrl.Result, error) {
podMonitor := &monitoringv1.PodMonitor{
TypeMeta: metav1.TypeMeta{
APIVersion: "monitoring.coreos.com/v1",
Kind: "PodMonitor",
},
ObjectMeta: metav1.ObjectMeta{
Namespace: req.Namespace,
Name: "memcached-podmonitor",
},
}
op, err := k8sutils.CreateOrUpdate(ctx, r, podMonitor, func() error {
return builders.PodMonitor(podMonitor, memcached, r.Scheme).
Labels(labels).
Selector(map[string]string{
"app.kubernetes.io/name": "memcached",
}).
PodMetricsEndpoints(
builders.PodMetricsEndpoint().
Port("metrics").
Path("/metrics").
Interval("15s"),
).Build()
})
if err != nil {
return ctrl.Result{}, err
}
log.WithValues("resource", "podmonitor").WithValues("op", op).Info("Reconciled")
return ctrl.Result{}, nil
}

View File

@ -105,36 +105,10 @@ func (r *RabbitmqReconciler) Reconcile(req ctrl.Request) (ctrl.Result, error) {
log.WithValues("resource", "Deployment").WithValues("op", op).Info("Reconciled")
// PodMonitor
podMonitor := &monitoringv1.PodMonitor{
TypeMeta: metav1.TypeMeta{
APIVersion: "monitoring.coreos.com/v1",
Kind: "PodMonitor",
},
ObjectMeta: metav1.ObjectMeta{
Namespace: req.Namespace,
Name: "rabbitmq-podmonitor",
},
if res, err := r.ReconcilePodMonitor(ctx, req, &Rabbitmq, log, typeLabels); err != nil || res != (ctrl.Result{}) {
return res, err
}
op, err = k8sutils.CreateOrUpdate(ctx, r, podMonitor, func() error {
return builders.PodMonitor(podMonitor, &Rabbitmq, r.Scheme).
Labels(typeLabels).
Selector(map[string]string{
"app.kubernetes.io/name": "rabbitmq",
}).
PodMetricsEndpoints(
builders.PodMetricsEndpoint().
Port("metrics").
Path("/metrics").
Interval("15s"),
).Build()
})
if err != nil {
return ctrl.Result{}, err
}
log.WithValues("resource", "rabbitmq-podmonitor").WithValues("op", op).Info("Reconciled")
// Alertrule
alertRule := &monitoringv1.PrometheusRule{
ObjectMeta: metav1.ObjectMeta{
@ -215,3 +189,35 @@ func (r *RabbitmqReconciler) ReconcileService(ctx context.Context, req ctrl.Requ
log.WithValues("resource", "Service").WithValues("op", op).Info("Reconciled")
return ctrl.Result{}, nil
}
// ReconcilePodMonitor reconciles the podMonitor
func (r *RabbitmqReconciler) ReconcilePodMonitor(ctx context.Context, req ctrl.Request, rabbitmq *infrastructurev1alpha1.Rabbitmq, log logr.Logger, labels map[string]string) (ctrl.Result, error) {
podMonitor := &monitoringv1.PodMonitor{
TypeMeta: metav1.TypeMeta{
APIVersion: "monitoring.coreos.com/v1",
Kind: "PodMonitor",
},
ObjectMeta: metav1.ObjectMeta{
Namespace: req.Namespace,
Name: "rabbitmq-podmonitor",
},
}
op, err := k8sutils.CreateOrUpdate(ctx, r, podMonitor, func() error {
return builders.PodMonitor(podMonitor, rabbitmq, r.Scheme).
Labels(labels).
Selector(map[string]string{
"app.kubernetes.io/name": "rabbitmq",
}).
PodMetricsEndpoints(
builders.PodMetricsEndpoint().
Port("metrics").
Path("/metrics").
Interval("15s"),
).Build()
})
if err != nil {
return ctrl.Result{}, err
}
log.WithValues("resource", "rabbitmq-podmonitor").WithValues("op", op).Info("Reconciled")
return ctrl.Result{}, nil
}