@@ -69,7 +69,7 @@ func NewCorootReconciler(mgr ctrl.Manager) *CorootReconciler {
6969// +kubebuilder:rbac:groups=coroot.com,resources=coroots/status,verbs=get;update;patch
7070// +kubebuilder:rbac:groups=coroot.com,resources=coroots/finalizers,verbs=update
7171// +kubebuilder:rbac:groups="",resources=events,verbs=create;patch
72- // +kubebuilder:rbac:groups="",resources=secrets,verbs=get;list;watch;create
72+ // +kubebuilder:rbac:groups="",resources=secrets,verbs=get;list;watch;create;update;patch;delete
7373// +kubebuilder:rbac:groups="",resources=namespaces;nodes;pods;endpoints;persistentvolumes,verbs=get;list;watch
7474// +kubebuilder:rbac:groups="",resources=services;persistentvolumeclaims;serviceaccounts,verbs=get;list;watch;create;update;patch;delete
7575// +kubebuilder:rbac:groups=apps,resources=deployments;replicasets;daemonsets;statefulsets;cronjobs,verbs=get;list;watch;create;update;patch;delete
@@ -123,10 +123,8 @@ func (r *CorootReconciler) Reconcile(ctx context.Context, req ctrl.Request) (ctr
123123 return ctrl.Result {}, nil
124124 }
125125
126- if cr .Spec .Replicas > 1 && cr .Spec .Postgres == nil {
127- logger .Error (fmt .Errorf ("postgres not configured" ), "Coroot requires Postgres to run multiple replicas (will run only one replica)" )
128- cr .Spec .Replicas = 1
129- }
126+ r .corootValidate (ctx , cr )
127+
130128 r .CreateOrUpdateServiceAccount (ctx , cr , "coroot" , sccNonroot )
131129 for _ , pvc := range r .corootPVCs (cr ) {
132130 r .CreateOrUpdatePVC (ctx , cr , pvc , cr .Spec .Storage .ReclaimPolicy )
@@ -149,7 +147,7 @@ func (r *CorootReconciler) Reconcile(ctx context.Context, req ctrl.Request) (ctr
149147 }
150148
151149 if cr .Spec .ExternalClickhouse == nil {
152- r .CreateSecret (ctx , cr , r . clickhouseSecret ( cr ) )
150+ r .CreateOrUpdateSecret (ctx , cr , "clickhouse" , fmt . Sprintf ( "%s-clickhouse" , cr . Name ), "password" , 16 )
153151
154152 r .CreateOrUpdateServiceAccount (ctx , cr , "clickhouse-keeper" , sccNonroot )
155153 r .CreateOrUpdateService (ctx , cr , r .clickhouseKeeperServiceHeadless (cr ))
@@ -204,8 +202,28 @@ func (r *CorootReconciler) CreateOrUpdate(ctx context.Context, cr *corootv1.Coro
204202 }
205203}
206204
207- func (r * CorootReconciler ) CreateSecret (ctx context.Context , cr * corootv1.Coroot , s * corev1.Secret ) {
208- r .CreateOrUpdate (ctx , cr , s , false , false , nil )
205+ func (r * CorootReconciler ) CreateOrUpdateSecret (ctx context.Context , cr * corootv1.Coroot , component , name , key string , length int ) string {
206+ s := & corev1.Secret {
207+ ObjectMeta : metav1.ObjectMeta {
208+ Name : name ,
209+ Namespace : cr .Namespace ,
210+ Labels : Labels (cr , component ),
211+ },
212+ }
213+ var data string
214+ r .CreateOrUpdate (ctx , cr , s , false , false , func () error {
215+ if s .Data == nil {
216+ s .Data = map [string ][]byte {}
217+ }
218+ if d , ok := s .Data [key ]; ok {
219+ data = string (d )
220+ } else {
221+ data = RandomString (length )
222+ s .Data [key ] = []byte (data )
223+ }
224+ return nil
225+ })
226+ return data
209227}
210228
211229func (r * CorootReconciler ) CreateOrUpdateDeployment (ctx context.Context , cr * corootv1.Coroot , d * appsv1.Deployment ) {
0 commit comments