Skip to content

Commit e75355d

Browse files
joshuabairdmarcofranssen
authored andcommitted
Fix ClusterParser namespace filtering bug (fluent#1778)
ClusterParsers and ClusterMultilineParsers are cluster-scoped resources and should not be filtered by namespace. This bug was introduced in commit 30cd0c3 (PR fluent#1708) where the code was refactored to use a listNamespacedResources helper function that incorrectly added namespace filtering for cluster-scoped resources. This caused ClusterParsers referenced from namespace-scoped Filters to not be generated in parsers.conf with their hash-suffixed names, leading to fluent-bit pods crashlooping with 'requested parser not found' errors. The fix: 1. Changes the function to use listClusterResources (which doesn't filter by namespace) for ClusterParsers and ClusterMultilineParsers. 2. Renames ListNamespacedResources to ListFluentBitConfigResources to better reflect that it lists both namespaced and cluster-scoped resources needed by a FluentBitConfig. Note: The original code (pre-refactor) also had a bug where ClusterMultilineParsers were incorrectly filtered by namespace. Fixes fluent#1778 Signed-off-by: Josh Baird <[email protected]>
1 parent e94ce95 commit e75355d

File tree

1 file changed

+6
-16
lines changed

1 file changed

+6
-16
lines changed

controllers/fluentbitconfig_controller.go

Lines changed: 6 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -245,7 +245,7 @@ func (r *FluentBitConfigReconciler) processNamespacedFluentBitCfgs(
245245
for _, cfg := range nsCfgs.Items {
246246
filterList, outputList, parserList,
247247
clusterParserList, multilineParsersList,
248-
clusterMultilineParsersList, err := r.ListNamespacedResources(
248+
clusterMultilineParsersList, err := r.ListFluentBitConfigResources(
249249
ctx, cfg,
250250
)
251251
if err != nil {
@@ -299,7 +299,9 @@ func listNamespacedResources[T client.ObjectList](
299299
return nil
300300
}
301301

302-
func (r *FluentBitConfigReconciler) ListNamespacedResources(
302+
// ListFluentBitConfigResources lists all resources (both namespaced and cluster-scoped)
303+
// needed by the given FluentBitConfig.
304+
func (r *FluentBitConfigReconciler) ListFluentBitConfigResources(
303305
ctx context.Context, cfg fluentbitv1alpha2.FluentBitConfig,
304306
) (
305307
fluentbitv1alpha2.FilterList,
@@ -324,13 +326,7 @@ func (r *FluentBitConfigReconciler) ListNamespacedResources(
324326
return filters, outputs, parsers, clusterParsers, multipleParsers, clusterMultipleParsers, err
325327
}
326328

327-
if err := listNamespacedResources(
328-
ctx,
329-
r.Client,
330-
&clusterParsers,
331-
cfg.Namespace,
332-
&cfg.Spec.ClusterParserSelector,
333-
); err != nil {
329+
if err := listClusterResources(ctx, r.Client, &cfg.Spec.ClusterParserSelector, &clusterParsers); err != nil {
334330
return filters, outputs, parsers, clusterParsers, multipleParsers, clusterMultipleParsers, err
335331
}
336332

@@ -344,13 +340,7 @@ func (r *FluentBitConfigReconciler) ListNamespacedResources(
344340
return filters, outputs, parsers, clusterParsers, multipleParsers, clusterMultipleParsers, err
345341
}
346342

347-
if err := listNamespacedResources(
348-
ctx,
349-
r.Client,
350-
&clusterMultipleParsers,
351-
cfg.Namespace,
352-
&cfg.Spec.ClusterMultilineParserSelector,
353-
); err != nil {
343+
if err := listClusterResources(ctx, r.Client, &cfg.Spec.ClusterMultilineParserSelector, &clusterMultipleParsers); err != nil {
354344
return filters, outputs, parsers, clusterParsers, multipleParsers, clusterMultipleParsers, err
355345
}
356346

0 commit comments

Comments
 (0)