@@ -22,6 +22,7 @@ func (r *BasicAuthenticatorReconciler) Provision(ctx context.Context, req ctrl.R
22
22
r .ensureSecret ,
23
23
r .ensureConfigmap ,
24
24
r .ensureDeployment ,
25
+ r .ensureService ,
25
26
}
26
27
for _ , provisioner := range subProvisioner {
27
28
result , err := provisioner (ctx , req )
@@ -177,7 +178,45 @@ func (r *BasicAuthenticatorReconciler) ensureDeployment(ctx context.Context, req
177
178
return r .createDeploymentAuthenticator (ctx , req , basicAuthenticator , r .configMapName , r .credentialName )
178
179
}
179
180
}
181
+ func (r * BasicAuthenticatorReconciler ) ensureService (ctx context.Context , req ctrl.Request ) (* ctrl.Result , error ) {
182
+ basicAuthenticator := & v1alpha1.BasicAuthenticator {}
183
+
184
+ if r , err := r .getLatestBasicAuthenticator (ctx , req , basicAuthenticator ); subreconciler .ShouldHaltOrRequeue (r , err ) {
185
+ return r , err
186
+ }
187
+ if r .deploymentLabel == nil {
188
+ return subreconciler .ContinueReconciling ()
189
+ }
190
+ newService := createNginxService (ctx , basicAuthenticator , r .deploymentLabel )
191
+ foundService := corev1.Service {}
192
+ err := r .Get (ctx , types.NamespacedName {Name : newService .Name , Namespace : newService .Namespace }, & foundService )
193
+ if errors .IsNotFound (err ) {
194
+ if err := ctrl .SetControllerReference (basicAuthenticator , newService , r .Scheme ); err != nil {
195
+ r .logger .Error (err , "failed to set service owner" )
196
+ return subreconciler .RequeueWithError (err )
197
+ }
198
+ err := r .Create (ctx , newService )
199
+ if err != nil {
200
+ r .logger .Error (err , "failed to create new service" )
201
+ return subreconciler .RequeueWithError (err )
202
+ }
180
203
204
+ } else if err != nil {
205
+ r .logger .Error (err , "failed to fetch service" )
206
+ return subreconciler .RequeueWithError (err )
207
+ } else {
208
+ if ! reflect .DeepEqual (newService .Spec , foundService .Spec ) {
209
+ r .logger .Info ("updating service" )
210
+ foundService .Spec = newService .Spec
211
+ err := r .Update (ctx , & foundService )
212
+ if err != nil {
213
+ r .logger .Error (err , "failed to update service" )
214
+ return subreconciler .RequeueWithError (err )
215
+ }
216
+ }
217
+ }
218
+ return subreconciler .ContinueReconciling ()
219
+ }
181
220
func (r * BasicAuthenticatorReconciler ) createDeploymentAuthenticator (ctx context.Context , req ctrl.Request , basicAuthenticator * v1alpha1.BasicAuthenticator , authenticatorConfigName , secretName string ) (* ctrl.Result , error ) {
182
221
183
222
newDeployment := createNginxDeployment (basicAuthenticator , authenticatorConfigName , secretName , r .CustomConfig )
@@ -203,12 +242,10 @@ func (r *BasicAuthenticatorReconciler) createDeploymentAuthenticator(ctx context
203
242
return subreconciler .RequeueWithError (err )
204
243
}
205
244
r .logger .Info ("created deployment" )
206
-
245
+ r . deploymentLabel = newDeployment . Spec . Selector
207
246
} else if err != nil {
208
- if err != nil {
209
- r .logger .Error (err , "failed to fetch deployment" )
210
- return subreconciler .RequeueWithError (err )
211
- }
247
+ r .logger .Error (err , "failed to fetch deployment" )
248
+ return subreconciler .RequeueWithError (err )
212
249
} else {
213
250
//update deployment
214
251
targetReplica := newDeployment .Spec .Replicas
0 commit comments