@@ -40,13 +40,15 @@ type RouteSyncController struct {
40
40
routeName string
41
41
isHealthCheckEnabled bool
42
42
// clients
43
- operatorClient v1helpers.OperatorClient
44
- routeClient routeclientv1.RoutesGetter
45
- operatorConfigLister operatorv1listers.ConsoleLister
46
- ingressConfigLister configlistersv1.IngressLister
47
- secretLister corev1listers.SecretLister
48
- infrastructureConfigLister configlistersv1.InfrastructureLister
49
- clusterVersionLister configlistersv1.ClusterVersionLister
43
+ operatorClient v1helpers.OperatorClient
44
+ routeClient routeclientv1.RoutesGetter
45
+ operatorConfigLister operatorv1listers.ConsoleLister
46
+ ingressConfigLister configlistersv1.IngressLister
47
+ ingressControllerLister operatorv1listers.IngressControllerLister
48
+ secretLister corev1listers.SecretLister
49
+ ingressControllerSecretLister corev1listers.SecretLister
50
+ infrastructureConfigLister configlistersv1.InfrastructureLister
51
+ clusterVersionLister configlistersv1.ClusterVersionLister
50
52
}
51
53
52
54
func NewRouteSyncController (
@@ -59,6 +61,7 @@ func NewRouteSyncController(
59
61
routev1Client routeclientv1.RoutesGetter ,
60
62
// informers
61
63
operatorConfigInformer v1.ConsoleInformer ,
64
+ ingressControllerInformer v1.IngressControllerInformer ,
62
65
secretInformer coreinformersv1.SecretInformer ,
63
66
routeInformer routesinformersv1.RouteInformer ,
64
67
// events
@@ -70,6 +73,7 @@ func NewRouteSyncController(
70
73
operatorClient : operatorClient ,
71
74
operatorConfigLister : operatorConfigInformer .Lister (),
72
75
ingressConfigLister : configInformer .Config ().V1 ().Ingresses ().Lister (),
76
+ ingressControllerLister : ingressControllerInformer .Lister (),
73
77
routeClient : routev1Client ,
74
78
secretLister : secretInformer .Lister (),
75
79
infrastructureConfigLister : configInformer .Config ().V1 ().Infrastructures ().Lister (),
@@ -86,6 +90,9 @@ func NewRouteSyncController(
86
90
configV1Informers .Ingresses ().Informer (),
87
91
).WithInformers (
88
92
secretInformer .Informer (),
93
+ ).WithFilteredEventsInformers (
94
+ util .IncludeNamesFilter (api .DefaultIngressController ),
95
+ ingressControllerInformer .Informer (),
89
96
).WithFilteredEventsInformers ( // route
90
97
util .IncludeNamesFilter (routeName , routesub .GetCustomRouteName (routeName )),
91
98
routeInformer .Informer (),
@@ -135,6 +142,11 @@ func (c *RouteSyncController) Sync(ctx context.Context, controllerContext factor
135
142
return statusHandler .FlushAndReturn (err )
136
143
}
137
144
145
+ ingressControllerConfig , err := c .ingressControllerLister .IngressControllers (api .IngressControllerNamespace ).Get (api .DefaultIngressController )
146
+ if err != nil {
147
+ return statusHandler .FlushAndReturn (err )
148
+ }
149
+
138
150
clusterVersionConfig , err := c .clusterVersionLister .Get ("version" )
139
151
if err != nil {
140
152
return statusHandler .FlushAndReturn (err )
@@ -157,7 +169,7 @@ func (c *RouteSyncController) Sync(ctx context.Context, controllerContext factor
157
169
// try to sync the custom route first. If the sync fails for any reason, error
158
170
// out the sync loop and inform about this fact instead of putting default
159
171
// route into inaccessible state.
160
- _ , customRouteErrReason , customRouteErr := c .SyncCustomRoute (ctx , routeConfig , controllerContext )
172
+ _ , customRouteErrReason , customRouteErr := c .SyncCustomRoute (ctx , routeConfig , ingressControllerConfig , controllerContext )
161
173
statusHandler .AddConditions (status .HandleProgressingOrDegraded (typePrefix , customRouteErrReason , customRouteErr ))
162
174
statusHandler .AddCondition (status .HandleUpgradable (typePrefix , customRouteErrReason , customRouteErr ))
163
175
if customRouteErr != nil {
@@ -214,7 +226,7 @@ func (c *RouteSyncController) SyncDefaultRoute(ctx context.Context, routeConfig
214
226
// 2. if secret is defined, verify the TLS certificate and key
215
227
// 4. create the custom console route, if custom TLS certificate and key are defined use them
216
228
// 5. apply the custom route
217
- func (c * RouteSyncController ) SyncCustomRoute (ctx context.Context , routeConfig * routesub.RouteConfig , controllerContext factory.SyncContext ) (* routev1.Route , string , error ) {
229
+ func (c * RouteSyncController ) SyncCustomRoute (ctx context.Context , routeConfig * routesub.RouteConfig , ingressControllerConfig * operatorsv1. IngressController , controllerContext factory.SyncContext ) (* routev1.Route , string , error ) {
218
230
if ! routeConfig .IsCustomHostnameSet () {
219
231
if err := c .removeRoute (ctx , routesub .GetCustomRouteName (c .routeName )); err != nil {
220
232
return nil , "FailedDeleteCustomRoutes" , err
@@ -228,7 +240,7 @@ func (c *RouteSyncController) SyncCustomRoute(ctx context.Context, routeConfig *
228
240
return nil , "" , nil
229
241
}
230
242
231
- if configErr := c .ValidateCustomRouteConfig (ctx , routeConfig ); configErr != nil {
243
+ if configErr := c .ValidateCustomRouteConfig (ctx , routeConfig , ingressControllerConfig ); configErr != nil {
232
244
return nil , "InvalidCustomRouteConfig" , configErr
233
245
}
234
246
@@ -284,7 +296,13 @@ func (c *RouteSyncController) GetDefaultRouteTLSSecret(ctx context.Context, rout
284
296
return secret , nil
285
297
}
286
298
287
- func (c * RouteSyncController ) ValidateCustomRouteConfig (ctx context.Context , routeConfig * routesub.RouteConfig ) error {
299
+ func (c * RouteSyncController ) ValidateCustomRouteConfig (ctx context.Context , routeConfig * routesub.RouteConfig , ingressControllerConfig * operatorsv1.IngressController ) error {
300
+ // Check if the default cetrificate is set in the ingress controller config.
301
+ // If it is, then the custom route TLS secret is optional.
302
+ if ingressControllerConfig .Spec .DefaultCertificate != nil {
303
+ return nil
304
+ }
305
+
288
306
// Check if the custom hostname has cluster domain suffix, which indicates
289
307
// if a secret that contains TLS certificate and key needs to exist in the
290
308
// `openshift-config` namespace and referenced in the operator config.
0 commit comments