diff --git a/pkg/controller/controller.go b/pkg/controller/controller.go index 1cedf0bf8..785c0420b 100644 --- a/pkg/controller/controller.go +++ b/pkg/controller/controller.go @@ -66,16 +66,11 @@ func (c *Controller) Run() error { } func (c *Controller) init() error { - err := c.k8sclient.CreateKubernetesCustomResourceDefinition() + crd, err := c.k8sclient.CreateKubernetesCustomResourceDefinition() if err != nil { return err } - err = c.k8sclient.CreateNodeInitDaemonset("default") + return c.k8sclient.CreateNodeInitDaemonset(crd.ObjectMeta.Namespace) - if err != nil { - return err - } - - return nil } diff --git a/pkg/k8sutil/daemonsets.go b/pkg/k8sutil/daemonsets.go index 4ff252035..a808c1457 100644 --- a/pkg/k8sutil/daemonsets.go +++ b/pkg/k8sutil/daemonsets.go @@ -25,6 +25,8 @@ ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT package k8sutil import ( + "fmt" + "github.com/Sirupsen/logrus" "k8s.io/api/core/v1" "k8s.io/api/extensions/v1beta1" @@ -36,6 +38,20 @@ const ( esOperatorSysctlName = "elasticsearch-operator-sysctl" ) +// DeleteNodeInitDaemonset delete the node init daemonset +func (k *K8sutil) DeleteNodeInitDaemonset(namespace string) error { + + ds, err := k.Kclient.ExtensionsV1beta1().DaemonSets(namespace).Get(esOperatorSysctlName, metav1.GetOptions{}) + + if err != nil { + return fmt.Errorf("Could not delete daemonset: %s ", ds.Name) + } + + logrus.Infof("Deleted daemonset: %s", ds.Name) + return nil + +} + // CreateNodeInitDaemonset creates the node init daemonset func (k *K8sutil) CreateNodeInitDaemonset(namespace string) error { @@ -43,7 +59,7 @@ func (k *K8sutil) CreateNodeInitDaemonset(namespace string) error { if err != nil && len(ds.Name) == 0 { - logrus.Infof("Daemonset %s not found, creating...", ds) + logrus.Infof("Daemonset %s not found, creating...", ds.Name) resourceCPU, _ := resource.ParseQuantity("10m") resourceMemory, _ := resource.ParseQuantity("50Mi") diff --git a/pkg/k8sutil/k8sutil.go b/pkg/k8sutil/k8sutil.go index 49af21ec0..f6dde594d 100644 --- a/pkg/k8sutil/k8sutil.go +++ b/pkg/k8sutil/k8sutil.go @@ -158,7 +158,7 @@ func newKubeClient(kubeCfgFile string) (genclient.Interface, kubernetes.Interfac } // CreateKubernetesCustomResourceDefinition checks if ElasticSearch CRD exists. If not, create -func (k *K8sutil) CreateKubernetesCustomResourceDefinition() error { +func (k *K8sutil) CreateKubernetesCustomResourceDefinition() (*apiextensionsv1beta1.CustomResourceDefinition, error) { crd, err := k.KubeExt.ApiextensionsV1beta1().CustomResourceDefinitions().Get(elasticsearchoperator.Name, metav1.GetOptions{}) if err != nil { @@ -208,9 +208,9 @@ func (k *K8sutil) CreateKubernetesCustomResourceDefinition() error { if err != nil { deleteErr := k.KubeExt.ApiextensionsV1beta1().CustomResourceDefinitions().Delete(elasticsearchoperator.Name, nil) if deleteErr != nil { - return errors.NewAggregate([]error{err, deleteErr}) + return nil, errors.NewAggregate([]error{err, deleteErr}) } - return err + return nil, err } logrus.Info("CRD ready!") @@ -221,7 +221,7 @@ func (k *K8sutil) CreateKubernetesCustomResourceDefinition() error { logrus.Infof("SKIPPING: already exists %#v\n", crd.ObjectMeta.Name) } - return nil + return crd, err } // MonitorElasticSearchEvents watches for new or removed clusters diff --git a/pkg/processor/processor.go b/pkg/processor/processor.go index 53c7e1c06..c5a71483e 100644 --- a/pkg/processor/processor.go +++ b/pkg/processor/processor.go @@ -444,6 +444,10 @@ func (p *Processor) deleteElasticSearchCluster(c *myspec.ElasticsearchCluster) { logrus.Errorf("Could not delete storage class %s: %v", c.ObjectMeta.Name, err) } + if err := p.k8sclient.DeleteNodeInitDaemonset(c.ObjectMeta.Name); err != nil { + logrus.Errorf("Could not delete daemonset %s: %v", c.ObjectMeta.Namespace, err) + } + p.clusters[fmt.Sprintf("%s-%s", c.ObjectMeta.Name, c.ObjectMeta.Namespace)].Scheduler.Stop() if !c.Spec.KeepSecretsOnDelete { diff --git a/pkg/snapshot/scheduler.go b/pkg/snapshot/scheduler.go index 5e7dddf2f..5813ed620 100644 --- a/pkg/snapshot/scheduler.go +++ b/pkg/snapshot/scheduler.go @@ -163,6 +163,7 @@ func (s *Scheduler) deleteCronJob(namespace, clusterName string) { func (s *Scheduler) CreateCronJob(namespace, clusterName, action, cronSchedule string) error { snapshotName := getSnapshotname(clusterName, action) + var jobHistorySize int32 = 20 // Check if CronJob exists cronJob, err := s.Kclient.BatchV1beta1().CronJobs(namespace).Get(snapshotName, metav1.GetOptions{}) @@ -187,7 +188,9 @@ func (s *Scheduler) CreateCronJob(namespace, clusterName, action, cronSchedule s }, }, Spec: v1beta1.CronJobSpec{ - Schedule: cronSchedule, + Schedule: cronSchedule, + SuccessfulJobsHistoryLimit: &jobHistorySize, + FailedJobsHistoryLimit: &jobHistorySize, JobTemplate: v1beta1.JobTemplateSpec{ Spec: batchv1.JobSpec{ Template: apicore.PodTemplateSpec{