@@ -69,10 +69,7 @@ func NewCorootReconciler(mgr ctrl.Manager) *CorootReconciler {
6969// +kubebuilder:rbac:groups=coroot.com,resources=coroots,verbs=get;list;watch;create;update;patch;delete
7070// +kubebuilder:rbac:groups=coroot.com,resources=coroots/status,verbs=get;update;patch
7171// +kubebuilder:rbac:groups=coroot.com,resources=coroots/finalizers,verbs=update
72- // +kubebuilder:rbac:groups="",resources=events,verbs=create;patch
73- // +kubebuilder:rbac:groups="",resources=secrets,verbs=get;list;watch;create;update;patch;delete
74- // +kubebuilder:rbac:groups="",resources=namespaces;nodes;pods;endpoints;persistentvolumes,verbs=get;list;watch
75- // +kubebuilder:rbac:groups="",resources=services;persistentvolumeclaims;serviceaccounts,verbs=get;list;watch;create;update;patch;delete
72+ // +kubebuilder:rbac:groups="",resources=namespaces;nodes;pods;services;endpoints;persistentvolumes;persistentvolumeclaims;serviceaccounts;configmaps;secrets;events,verbs=get;list;watch;create;update;patch;delete
7673// +kubebuilder:rbac:groups=apps,resources=deployments;replicasets;daemonsets;statefulsets;cronjobs,verbs=get;list;watch;create;update;patch;delete
7774// +kubebuilder:rbac:groups=batch,resources=cronjobs;jobs,verbs=get;list;watch;create;update;patch;delete
7875// +kubebuilder:rbac:groups=storage.k8s.io,resources=storageclasses;volumeattachments,verbs=get;list;watch;create;update;patch;delete
@@ -129,13 +126,16 @@ func (r *CorootReconciler) Reconcile(ctx context.Context, req ctrl.Request) (ctr
129126 return ctrl.Result {}, nil
130127 }
131128
132- validationErrors := r .validateCoroot (ctx , cr )
129+ configEnvs := ConfigEnvs {}
130+ validationErrors := r .validateCoroot (ctx , cr , configEnvs )
133131
134132 r .CreateOrUpdateServiceAccount (ctx , cr , "coroot" , sccNonroot )
135133 for _ , pvc := range r .corootPVCs (cr ) {
136134 r .CreateOrUpdatePVC (ctx , cr , pvc , cr .Spec .Storage .ReclaimPolicy )
137135 }
138- r .CreateOrUpdateStatefulSet (ctx , cr , r .corootStatefulSet (cr ))
136+ corootConfigMap , corootConfigHash := r .corootConfigMap (ctx , cr )
137+ r .CreateOrUpdateConfigMap (ctx , cr , corootConfigMap )
138+ r .CreateOrUpdateStatefulSet (ctx , cr , r .corootStatefulSet (cr , configEnvs , corootConfigHash ))
139139 r .CreateOrUpdateService (ctx , cr , r .corootService (cr ))
140140 if ! r .deploymentDeleted {
141141 _ = r .Delete (ctx , r .corootDeployment (cr ))
@@ -215,17 +215,17 @@ func (r *CorootReconciler) CreateOrUpdate(ctx context.Context, cr *corootv1.Coro
215215 }
216216}
217217
218- func (r * CorootReconciler ) GetSecret (ctx context.Context , cr * corootv1.Coroot , name , key string ) (string , error ) {
218+ func (r * CorootReconciler ) GetSecret (ctx context.Context , cr * corootv1.Coroot , selector * corev1. SecretKeySelector ) (string , error ) {
219219 s := & corev1.Secret {}
220- s .Name = name
220+ s .Name = selector . Name
221221 s .Namespace = cr .Namespace
222222 err := r .Client .Get (ctx , client .ObjectKeyFromObject (s ), s )
223223 if err != nil {
224224 return "" , err
225225 }
226- data , ok := s .Data [key ]
226+ data , ok := s .Data [selector . Key ]
227227 if ! ok {
228- return "" , fmt .Errorf ("key '%s' not found in secret '%s'" , key , name )
228+ return "" , fmt .Errorf ("key '%s' not found in secret '%s'" , selector . Key , selector . Name )
229229 }
230230 return string (data ), nil
231231}
@@ -254,6 +254,14 @@ func (r *CorootReconciler) CreateOrUpdateSecret(ctx context.Context, cr *corootv
254254 return data
255255}
256256
257+ func (r * CorootReconciler ) CreateOrUpdateConfigMap (ctx context.Context , cr * corootv1.Coroot , cm * corev1.ConfigMap ) {
258+ data := cm .BinaryData
259+ r .CreateOrUpdate (ctx , cr , cm , false , false , func () error {
260+ cm .BinaryData = data
261+ return nil
262+ })
263+ }
264+
257265func (r * CorootReconciler ) CreateOrUpdateDeployment (ctx context.Context , cr * corootv1.Coroot , d * appsv1.Deployment ) {
258266 spec := d .Spec
259267 r .CreateOrUpdate (ctx , cr , d , false , false , func () error {
0 commit comments