77// the Business Source License, use of this software will be governed
88// by the Apache License, Version 2.0
99
10- // Package redpanda is responsible for Reconcile the redpanda.vectorized.io Custom Resource Definition
10+ // Package redpanda contains reconciliation logic for redpanda.vectorized.io CRD
1111package redpanda
1212
1313import (
@@ -32,6 +32,7 @@ import (
3232 "k8s.io/utils/pointer"
3333 ctrl "sigs.k8s.io/controller-runtime"
3434 "sigs.k8s.io/controller-runtime/pkg/client"
35+ "sigs.k8s.io/controller-runtime/pkg/controller/controllerutil"
3536)
3637
3738const (
@@ -91,7 +92,7 @@ func (r *ClusterReconciler) Reconcile(
9192 if errors .IsNotFound (err ) {
9293 log .V (debugLevel ).Info ("Creating headless service" )
9394
94- if err = r .createHeadlessService (ctx , & redpandaCluster ); err != nil {
95+ if err = r .createHeadlessService (ctx , & redpandaCluster , r . Scheme ); err != nil {
9596 log .Error (err , "Failed to create new service" ,
9697 "Service.Namespace" , redpandaCluster .Namespace ,
9798 "Service.Name" , redpandaCluster .Name )
@@ -112,7 +113,7 @@ func (r *ClusterReconciler) Reconcile(
112113 if errors .IsNotFound (err ) {
113114 log .V (debugLevel ).Info ("Creating seed redpanda ConfigMap" )
114115
115- if err = r .createBootstrapConfigMap (ctx , & redpandaCluster ); err != nil {
116+ if err = r .createBootstrapConfigMap (ctx , & redpandaCluster , r . Scheme ); err != nil {
116117 log .Error (err , "Failed to create new seed redpanda ConfigMap" ,
117118 "Configmap.Namespace" , redpandaCluster .Namespace ,
118119 "Configmap.Name" , redpandaCluster .Name + seedSuffix )
@@ -133,7 +134,7 @@ func (r *ClusterReconciler) Reconcile(
133134 if errors .IsNotFound (err ) {
134135 log .V (debugLevel ).Info ("Creating bootstrap StatefulSet" )
135136
136- if err = r .createBootstrapStatefulSet (ctx , & redpandaCluster ); err != nil {
137+ if err = r .createBootstrapStatefulSet (ctx , & redpandaCluster , r . Scheme ); err != nil {
137138 log .Error (err , "Failed to create new bootstrap StatefulSet" ,
138139 "Configmap.Namespace" , redpandaCluster .Namespace , "StatefulSet.Name" , redpandaCluster .Name + seedSuffix )
139140
@@ -181,9 +182,11 @@ func (r *ClusterReconciler) Reconcile(
181182}
182183
183184func (r * ClusterReconciler ) createHeadlessService (
184- ctx context.Context , clusterSpec * redpandav1alpha1.Cluster ,
185+ ctx context.Context ,
186+ clusterSpec * redpandav1alpha1.Cluster ,
187+ scheme * runtime.Scheme ,
185188) error {
186- return r . Create ( ctx , & corev1.Service {
189+ svc := & corev1.Service {
187190 ObjectMeta : metav1.ObjectMeta {
188191 Namespace : clusterSpec .Namespace ,
189192 Name : clusterSpec .Name ,
@@ -201,11 +204,18 @@ func (r *ClusterReconciler) createHeadlessService(
201204 },
202205 Selector : clusterSpec .Labels ,
203206 },
204- })
207+ }
208+ err := controllerutil .SetControllerReference (clusterSpec , svc , scheme )
209+ if err != nil {
210+ return err
211+ }
212+ return r .Create (ctx , svc )
205213}
206214
207215func (r * ClusterReconciler ) createBootstrapConfigMap (
208- ctx context.Context , cluster * redpandav1alpha1.Cluster ,
216+ ctx context.Context ,
217+ cluster * redpandav1alpha1.Cluster ,
218+ scheme * runtime.Scheme ,
209219) error {
210220 cfg := config .Default ()
211221 cfg .Redpanda = copyConfig (& cluster .Spec .Configuration , & cfg .Redpanda )
@@ -225,7 +235,7 @@ func (r *ClusterReconciler) createBootstrapConfigMap(
225235 return err
226236 }
227237
228- return r . Create ( ctx , & corev1.ConfigMap {
238+ cm := & corev1.ConfigMap {
229239 ObjectMeta : metav1.ObjectMeta {
230240 Namespace : cluster .Namespace ,
231241 Name : cluster .Name + seedSuffix ,
@@ -234,7 +244,13 @@ func (r *ClusterReconciler) createBootstrapConfigMap(
234244 Data : map [string ]string {
235245 "redpanda.yaml" : string (cfgBytes ),
236246 },
237- })
247+ }
248+ err = controllerutil .SetControllerReference (cluster , cm , scheme )
249+ if err != nil {
250+ return err
251+ }
252+
253+ return r .Create (ctx , cm )
238254}
239255
240256func copyConfig (
@@ -276,14 +292,16 @@ func copyConfig(
276292
277293// nolint:funlen // The definition needs further refinement
278294func (r * ClusterReconciler ) createBootstrapStatefulSet (
279- ctx context.Context , cluster * redpandav1alpha1.Cluster ,
295+ ctx context.Context ,
296+ cluster * redpandav1alpha1.Cluster ,
297+ scheme * runtime.Scheme ,
280298) error {
281299 memory , exist := cluster .Spec .Resources .Limits ["memory" ]
282300 if ! exist {
283301 memory = resource .MustParse ("2Gi" )
284302 }
285303
286- return r . Create ( ctx , & appsv1.StatefulSet {
304+ ss := & appsv1.StatefulSet {
287305 ObjectMeta : metav1.ObjectMeta {
288306 Namespace : cluster .Namespace ,
289307 Name : cluster .Name + seedSuffix ,
@@ -405,7 +423,14 @@ func (r *ClusterReconciler) createBootstrapStatefulSet(
405423 },
406424 },
407425 },
408- })
426+ }
427+
428+ err := controllerutil .SetControllerReference (cluster , ss , scheme )
429+ if err != nil {
430+ return err
431+ }
432+
433+ return r .Create (ctx , ss )
409434}
410435
411436// SetupWithManager sets up the controller with the Manager.
0 commit comments