github.com/banzaicloud/operator-tools@v0.28.10/pkg/reconciler/README.md (about)

     1  
     2  ## ResourceReconciler
     3  
     4  `ResourceReconciler` reconciles a single Kubernetes object against the API Server.
     5  
     6  It creates the object if it doesn't exist or removes it in case its desired state is absent.
     7  
     8  It uses the [ObjectMatcher](https://github.com/banzaicloud/k8s-objectmatcher) library to be able to tell if an already
     9  existing object needs to be updated or not.
    10  
    11  It depends on [logr](github.com/go-logr/logr) logger and the [controller-runtime](sigs.k8s.io/controller-runtime) client
    12  that is available in a typical [kubebuilder](https://github.com/kubernetes-sigs/kubebuilder) or [operator-sdk](https://github.com/operator-framework/operator-sdk) project.
    13  
    14  Example:
    15  ```go
    16  package main
    17  
    18  import (
    19  	corev1 "k8s.io/api/core/v1"
    20  	github.com/go-logr/logr
    21  	"github.com/banzaicloud/operator-tools/pkg/reconciler"
    22  	runtimeClient "sigs.k8s.io/controller-runtime/pkg/client"
    23  )
    24  
    25  func example(client runtimeClient.Client, logger logr.Logger) {
    26    resourceReconciler := reconciler.NewReconcilerWith(client, reconciler.WithLog(logger))
    27    
    28    serviceObject := &corev1.Service{
    29      Spec: corev1.ServiceSpec{
    30        ...
    31      },
    32    }
    33    
    34    result, err := resourceReconciler.ReconcileResource(serviceObject, reconciler.StatePresent)
    35  }
    36  
    37  ```