@@ -151,7 +151,7 @@ func (r *groupReconciler) reconcile(ctx context.Context, req reconcile.Request)
151
151
return errmetrics .NewErrorWithMetrics (controllerName , "add_group_finalizer_error" , err , r .metricsCollector )
152
152
}
153
153
154
- _ , lb , err := r .buildAndDeployModel (ctx , ingGroup )
154
+ _ , lb , frontendNlb , err := r .buildAndDeployModel (ctx , ingGroup )
155
155
if err != nil {
156
156
return err
157
157
}
@@ -164,7 +164,14 @@ func (r *groupReconciler) reconcile(ctx context.Context, req reconcile.Request)
164
164
if statusErr != nil {
165
165
return
166
166
}
167
- statusErr = r .updateIngressGroupStatus (ctx , ingGroup , lbDNS )
167
+ var frontendNlbDNS string
168
+ if frontendNlb != nil {
169
+ frontendNlbDNS , statusErr = frontendNlb .DNSName ().Resolve (ctx )
170
+ if statusErr != nil {
171
+ return
172
+ }
173
+ }
174
+ statusErr = r .updateIngressGroupStatus (ctx , ingGroup , lbDNS , frontendNlbDNS )
168
175
if statusErr != nil {
169
176
r .recordIngressGroupEvent (ctx , ingGroup , corev1 .EventTypeWarning , k8s .IngressEventReasonFailedUpdateStatus ,
170
177
fmt .Sprintf ("Failed update status due to %v" , statusErr ))
@@ -191,38 +198,40 @@ func (r *groupReconciler) reconcile(ctx context.Context, req reconcile.Request)
191
198
return nil
192
199
}
193
200
194
- func (r * groupReconciler ) buildAndDeployModel (ctx context.Context , ingGroup ingress.Group ) (core.Stack , * elbv2model.LoadBalancer , error ) {
201
+ func (r * groupReconciler ) buildAndDeployModel (ctx context.Context , ingGroup ingress.Group ) (core.Stack , * elbv2model.LoadBalancer , * elbv2model. LoadBalancer , error ) {
195
202
var stack core.Stack
196
203
var lb * elbv2model.LoadBalancer
197
204
var secrets []types.NamespacedName
198
205
var backendSGRequired bool
199
206
var err error
207
+ var frontendNlbTargetGroupDesiredState * core.FrontendNlbTargetGroupDesiredState
208
+ var frontendNlb * elbv2model.LoadBalancer
200
209
buildModelFn := func () {
201
- stack , lb , secrets , backendSGRequired , err = r .modelBuilder .Build (ctx , ingGroup , r .metricsCollector )
210
+ stack , lb , secrets , backendSGRequired , frontendNlbTargetGroupDesiredState , frontendNlb , err = r .modelBuilder .Build (ctx , ingGroup , r .metricsCollector )
202
211
}
203
212
r .metricsCollector .ObserveControllerReconcileLatency (controllerName , "build_model" , buildModelFn )
204
213
if err != nil {
205
214
r .recordIngressGroupEvent (ctx , ingGroup , corev1 .EventTypeWarning , k8s .IngressEventReasonFailedBuildModel , fmt .Sprintf ("Failed build model due to %v" , err ))
206
- return nil , nil , errmetrics .NewErrorWithMetrics (controllerName , "build_model_error" , err , r .metricsCollector )
215
+ return nil , nil , nil , errmetrics .NewErrorWithMetrics (controllerName , "build_model_error" , err , r .metricsCollector )
207
216
}
208
217
stackJSON , err := r .stackMarshaller .Marshal (stack )
209
218
if err != nil {
210
219
r .recordIngressGroupEvent (ctx , ingGroup , corev1 .EventTypeWarning , k8s .IngressEventReasonFailedBuildModel , fmt .Sprintf ("Failed build model due to %v" , err ))
211
- return nil , nil , err
220
+ return nil , nil , nil , err
212
221
}
213
222
r .logger .Info ("successfully built model" , "model" , stackJSON )
214
223
215
224
deployModelFn := func () {
216
- err = r .stackDeployer .Deploy (ctx , stack , r .metricsCollector , "ingress" )
225
+ err = r .stackDeployer .Deploy (ctx , stack , r .metricsCollector , "ingress" , frontendNlbTargetGroupDesiredState )
217
226
}
218
227
r .metricsCollector .ObserveControllerReconcileLatency (controllerName , "deploy_model" , deployModelFn )
219
228
if err != nil {
220
229
var requeueNeededAfter * runtime.RequeueNeededAfter
221
230
if errors .As (err , & requeueNeededAfter ) {
222
- return nil , nil , err
231
+ return nil , nil , nil , err
223
232
}
224
233
r .recordIngressGroupEvent (ctx , ingGroup , corev1 .EventTypeWarning , k8s .IngressEventReasonFailedDeployModel , fmt .Sprintf ("Failed deploy model due to %v" , err ))
225
- return nil , nil , errmetrics .NewErrorWithMetrics (controllerName , "deploy_model_error" , err , r .metricsCollector )
234
+ return nil , nil , nil , errmetrics .NewErrorWithMetrics (controllerName , "deploy_model_error" , err , r .metricsCollector )
226
235
}
227
236
r .logger .Info ("successfully deployed model" , "ingressGroup" , ingGroup .ID )
228
237
r .secretsManager .MonitorSecrets (ingGroup .ID .String (), secrets )
@@ -232,9 +241,9 @@ func (r *groupReconciler) buildAndDeployModel(ctx context.Context, ingGroup ingr
232
241
inactiveResources = append (inactiveResources , k8s .ToSliceOfNamespacedNames (ingGroup .Members )... )
233
242
}
234
243
if err := r .backendSGProvider .Release (ctx , networkingpkg .ResourceTypeIngress , inactiveResources ); err != nil {
235
- return nil , nil , errmetrics .NewErrorWithMetrics (controllerName , "release_auto_generated_backend_sg_error" , err , r .metricsCollector )
244
+ return nil , nil , nil , errmetrics .NewErrorWithMetrics (controllerName , "release_auto_generated_backend_sg_error" , err , r .metricsCollector )
236
245
}
237
- return stack , lb , nil
246
+ return stack , lb , frontendNlb , nil
238
247
}
239
248
240
249
func (r * groupReconciler ) recordIngressGroupEvent (_ context.Context , ingGroup ingress.Group , eventType string , reason string , message string ) {
@@ -243,16 +252,16 @@ func (r *groupReconciler) recordIngressGroupEvent(_ context.Context, ingGroup in
243
252
}
244
253
}
245
254
246
- func (r * groupReconciler ) updateIngressGroupStatus (ctx context.Context , ingGroup ingress.Group , lbDNS string ) error {
255
+ func (r * groupReconciler ) updateIngressGroupStatus (ctx context.Context , ingGroup ingress.Group , lbDNS string , frontendNLBDNS string ) error {
247
256
for _ , member := range ingGroup .Members {
248
- if err := r .updateIngressStatus (ctx , lbDNS , member .Ing ); err != nil {
257
+ if err := r .updateIngressStatus (ctx , lbDNS , frontendNLBDNS , member .Ing ); err != nil {
249
258
return err
250
259
}
251
260
}
252
261
return nil
253
262
}
254
263
255
- func (r * groupReconciler ) updateIngressStatus (ctx context.Context , lbDNS string , ing * networking.Ingress ) error {
264
+ func (r * groupReconciler ) updateIngressStatus (ctx context.Context , lbDNS string , frontendNLBDNS string , ing * networking.Ingress ) error {
256
265
if len (ing .Status .LoadBalancer .Ingress ) != 1 ||
257
266
ing .Status .LoadBalancer .Ingress [0 ].IP != "" ||
258
267
ing .Status .LoadBalancer .Ingress [0 ].Hostname != lbDNS {
@@ -262,6 +271,11 @@ func (r *groupReconciler) updateIngressStatus(ctx context.Context, lbDNS string,
262
271
Hostname : lbDNS ,
263
272
},
264
273
}
274
+ if frontendNLBDNS != "" {
275
+ ing .Status .LoadBalancer .Ingress = append (ing .Status .LoadBalancer .Ingress , networking.IngressLoadBalancerIngress {
276
+ Hostname : frontendNLBDNS ,
277
+ })
278
+ }
265
279
if err := r .k8sClient .Status ().Patch (ctx , ing , client .MergeFrom (ingOld )); err != nil {
266
280
return errors .Wrapf (err , "failed to update ingress status: %v" , k8s .NamespacedName (ing ))
267
281
}
0 commit comments