diff --git a/apis/fluentbit/v1alpha2/plugins/configmap_types.go b/apis/fluentbit/v1alpha2/plugins/configmap_types.go index 0d328f41b..a2aa7506e 100644 --- a/apis/fluentbit/v1alpha2/plugins/configmap_types.go +++ b/apis/fluentbit/v1alpha2/plugins/configmap_types.go @@ -24,7 +24,8 @@ func NewConfigMapLoader(c client.Client, ns string) ConfigMapLoader { func (cl ConfigMapLoader) LoadConfigMap(selector v1.ConfigMapKeySelector, namespace string) (string, error) { var configMap v1.ConfigMap - if err := cl.client.Get(context.Background(), client.ObjectKey{Name: selector.Name, Namespace: namespace}, &configMap); err != nil { + ctx := context.Background() + if err := cl.client.Get(ctx, client.ObjectKey{Name: selector.Name, Namespace: namespace}, &configMap); err != nil { return "", err } diff --git a/apis/fluentbit/v1alpha2/plugins/secret_types.go b/apis/fluentbit/v1alpha2/plugins/secret_types.go index ed185538c..355901c5d 100644 --- a/apis/fluentbit/v1alpha2/plugins/secret_types.go +++ b/apis/fluentbit/v1alpha2/plugins/secret_types.go @@ -38,7 +38,8 @@ func NewSecretLoader(c client.Client, ns string) SecretLoader { func (sl SecretLoader) LoadSecret(s Secret) (string, error) { var secret corev1.Secret - if err := sl.Client.Get(context.Background(), client.ObjectKey{Name: s.ValueFrom.SecretKeyRef.Name, Namespace: sl.namespace}, &secret); err != nil { + ctx := context.Background() + if err := sl.Client.Get(ctx, client.ObjectKey{Name: s.ValueFrom.SecretKeyRef.Name, Namespace: sl.namespace}, &secret); err != nil { return "", err } diff --git a/apis/fluentd/v1alpha1/plugins/configmap_types.go b/apis/fluentd/v1alpha1/plugins/configmap_types.go index c407340c7..320de8c1d 100644 --- a/apis/fluentd/v1alpha1/plugins/configmap_types.go +++ b/apis/fluentd/v1alpha1/plugins/configmap_types.go @@ -24,7 +24,8 @@ func NewConfigMapLoader(c client.Client, ns string) ConfigMapLoader { func (cl ConfigMapLoader) LoadConfigMap(selector v1.ConfigMapKeySelector) (string, error) { var configMap v1.ConfigMap - if err := cl.client.Get(context.Background(), client.ObjectKey{Name: selector.Name, Namespace: cl.namespace}, &configMap); err != nil { + ctx := context.Background() + if err := cl.client.Get(ctx, client.ObjectKey{Name: selector.Name, Namespace: cl.namespace}, &configMap); err != nil { return "", err } diff --git a/apis/fluentd/v1alpha1/plugins/secret_types.go b/apis/fluentd/v1alpha1/plugins/secret_types.go index 6a2609031..a85dfe51a 100644 --- a/apis/fluentd/v1alpha1/plugins/secret_types.go +++ b/apis/fluentd/v1alpha1/plugins/secret_types.go @@ -41,7 +41,8 @@ func NewSecretLoader(c client.Client, ns string, l logr.Logger) SecretLoader { func (sl SecretLoaderStruct) LoadSecret(s Secret) (string, error) { var secret corev1.Secret - if err := sl.client.Get(context.Background(), client.ObjectKey{Name: s.ValueFrom.SecretKeyRef.Name, Namespace: sl.namespace}, &secret); err != nil { + ctx := context.Background() + if err := sl.client.Get(ctx, client.ObjectKey{Name: s.ValueFrom.SecretKeyRef.Name, Namespace: sl.namespace}, &secret); err != nil { return "", err } diff --git a/cmd/doc-gen/main.go b/cmd/doc-gen/main.go index 0107d6e83..9b09ace54 100644 --- a/cmd/doc-gen/main.go +++ b/cmd/doc-gen/main.go @@ -380,7 +380,7 @@ func wrapInLink(text, link string) string { func fieldName(field *ast.Field) string { jsonTag := "" if field.Tag != nil { - jsonTag = reflect.StructTag(field.Tag.Value[1 : len(field.Tag.Value)-1]).Get("json") // Delete first and last quotation + jsonTag = reflect.StructTag(strings.Trim(field.Tag.Value, "`")).Get("json") if strings.Contains(jsonTag, "inline") { return "-" } diff --git a/cmd/fluent-manager/main.go b/cmd/fluent-manager/main.go index dfdb646d5..2c9191f5d 100644 --- a/cmd/fluent-manager/main.go +++ b/cmd/fluent-manager/main.go @@ -78,20 +78,27 @@ func main() { var disabledControllers string var tlsOpts []func(*tls.Config) - flag.StringVar(&watchNamespaces, "watch-namespaces", "", "Optional comma separated list of namespaces to watch for resources in. Defaults to cluster scope.") - flag.StringVar(&metricsAddr, "metrics-bind-address", "0", "The address the metrics endpoint binds to. "+ - "Use :8443 for HTTPS or :8080 for HTTP, or leave as 0 to disable the metrics service.") + flag.StringVar(&watchNamespaces, "watch-namespaces", "", + "Optional comma separated list of namespaces to watch for resources in. Defaults to cluster scope.") + flag.StringVar(&metricsAddr, "metrics-bind-address", "0", + "The address the metrics endpoint binds to. Use :8443 for HTTPS or :8080 for HTTP, or leave as 0 to disable the metrics service.") flag.BoolVar(&enableLeaderElection, "leader-elect", false, "Enable leader election for controller manager. "+ "Enabling this will ensure there is only one active controller manager.") - flag.BoolVar(&secureMetrics, "metrics-secure", true, "If set, the metrics endpoint is served securely via HTTPS. Use --metrics-secure=false to use HTTP instead.") - flag.StringVar(&webhookCertPath, "webhook-cert-path", "", "The directory that contains the webhook certificate.") - flag.StringVar(&webhookCertName, "webhook-cert-name", "tls.crt", "The name of the webhook certificate file.") + flag.BoolVar(&secureMetrics, "metrics-secure", true, + "If set, the metrics endpoint is served securely via HTTPS. Use --metrics-secure=false to use HTTP instead.") + flag.StringVar(&webhookCertPath, "webhook-cert-path", "", + "The directory that contains the webhook certificate.") + flag.StringVar(&webhookCertName, "webhook-cert-name", "tls.crt", + "The name of the webhook certificate file.") flag.StringVar(&webhookCertKey, "webhook-cert-key", "tls.key", "The name of the webhook key file.") - flag.StringVar(&metricsCertPath, "metrics-cert-path", "", "The directory that contains the metrics server certificate.") - flag.StringVar(&metricsCertName, "metrics-cert-name", "tls.crt", "The name of the metrics server certificate file.") + flag.StringVar(&metricsCertPath, "metrics-cert-path", "", + "The directory that contains the metrics server certificate.") + flag.StringVar(&metricsCertName, "metrics-cert-name", "tls.crt", + "The name of the metrics server certificate file.") flag.StringVar(&metricsCertKey, "metrics-cert-key", "tls.key", "The name of the metrics server key file.") - flag.BoolVar(&enableHTTP2, "enable-http2", false, "If set, HTTP/2 will be enabled for the metrics and webhook servers") + flag.BoolVar(&enableHTTP2, "enable-http2", false, + "If set, HTTP/2 will be enabled for the metrics and webhook servers") flag.StringVar(&probeAddr, "health-probe-bind-address", ":8081", "The address the probe endpoint binds to.") flag.StringVar(&disabledControllers, "disable-component-controllers", "", "Optional argument that accepts two values: fluent-bit and fluentd. "+ @@ -240,7 +247,8 @@ func main() { case fluentdName: fluentdEnabled = false default: - setupLog.Error(errors.New("incorrect value for `-disable-component-controllers` and it will not be proceeded (possible values are: fluent-bit, fluentd)"), "") + err := errors.New("incorrect value for disable-component-controllers flag") + setupLog.Error(err, "it will not be proceeded (possible values are: fluent-bit, fluentd)") } } diff --git a/cmd/fluent-watcher/fluentbit/main.go b/cmd/fluent-watcher/fluentbit/main.go index b585e4d6a..3b3bd5802 100644 --- a/cmd/fluent-watcher/fluentbit/main.go +++ b/cmd/fluent-watcher/fluentbit/main.go @@ -49,27 +49,30 @@ func main() { flag.BoolVar(&exitOnFailure, "exit-on-failure", false, "Deprecated: This has no effect anymore.") flag.DurationVar(&flbTerminationTimeout, "flb-timeout", 0, "Deprecated: This has no effect anymore.") - signalCtx, cancel := signal.NotifyContext(context.Background(), os.Interrupt, syscall.SIGTERM) + ctx := context.Background() + signalCtx, cancel := signal.NotifyContext(ctx, os.Interrupt, syscall.SIGTERM) defer cancel() - logger := log.NewLogfmtLogger(os.Stdout) - logger = log.With(logger, "time", log.TimestampFormat(time.Now, time.RFC3339)) + l := log.NewLogfmtLogger(os.Stdout) + l = log.With(l, "time", log.TimestampFormat(time.Now, time.RFC3339)) // check the config file format _, err := os.Stat(defaultSecretYamlPath) if os.IsNotExist(err) { - _ = level.Info(logger).Log("msg", "No fluent-bit secret yaml found, using classic one.") + _ = level.Info(l).Log("msg", "No fluent-bit secret yaml found, using classic one.") flag.StringVar(&configPath, "c", defaultCfgPath, "The classic config file path.") } else { - _ = level.Info(logger).Log("msg", "fluent-bit secret yaml found, using yaml one.") + _ = level.Info(l).Log("msg", "fluent-bit secret yaml found, using yaml one.") flag.StringVar(&configPath, "c", defaultYamlCfgPath, "The yaml config file path.") } if exitOnFailure { - _ = level.Warn(logger).Log("--exit-on-failure is deprecated. The process will exit no matter what if fluent-bit exits so this can safely be removed.") + _ = level.Warn(l). + Log("--exit-on-failure is deprecated. The process will exit no matter what if fluent-bit exits so this can safely be removed.") } if flbTerminationTimeout > 0 { - _ = level.Warn(logger).Log("--flb-timeout is deprecated. Consider setting the terminationGracePeriod field on the `(Cluster)FluentBit` instance.") + _ = level.Warn(l). + Log("--flb-timeout is deprecated. Consider setting the terminationGracePeriod field on the `(Cluster)FluentBit` instance.") } flag.Parse() @@ -83,12 +86,12 @@ func main() { cmd.Stdout = os.Stdout cmd.Stderr = os.Stderr if err := cmd.Start(); err != nil { - _ = level.Error(logger).Log("msg", "failed to start fluent-bit", "error", err) + _ = level.Error(l).Log("msg", "failed to start fluent-bit", "error", err) os.Exit(1) } - _ = level.Info(logger).Log("msg", "fluent-bit watcher started") + _ = level.Info(l).Log("msg", "fluent-bit watcher started") - grp, grpCtx := errgroup.WithContext(context.Background()) + grp, grpCtx := errgroup.WithContext(ctx) grp.Go(func() error { // Watch the process. If it exits, we want to crash immediately. defer cancel() @@ -124,7 +127,7 @@ func main() { if !isValidEvent(event) { continue } - _ = level.Info(logger).Log("msg", "Config file changed, reloading...") + _ = level.Info(l).Log("msg", "Config file changed, reloading...") if err := cmd.Process.Signal(syscall.SIGHUP); err != nil { return fmt.Errorf("failed to reload config: %w", err) } @@ -142,12 +145,12 @@ func main() { // Always try to gracefully shut down fluent-bit. This will allow `cmd.Wait` above to finish // and thus allow `grp.Wait` below to return. if err := cmd.Process.Signal(syscall.SIGTERM); err != nil && !errors.Is(err, os.ErrProcessDone) { - _ = level.Error(logger).Log("msg", "Failed to send SIGTERM to fluent-bit", "error", err) + _ = level.Error(l).Log("msg", "Failed to send SIGTERM to fluent-bit", "error", err) // Do not exit on error here. The process might've died and that's okay. } if err := grp.Wait(); err != nil { - _ = level.Error(logger).Log("msg", "Failure during the run time of fluent-bit", "error", err) + _ = level.Error(l).Log("msg", "Failure during the run time of fluent-bit", "error", err) os.Exit(1) } } diff --git a/cmd/fluent-watcher/fluentd/main.go b/cmd/fluent-watcher/fluentd/main.go index f919f7ee1..395de99e0 100644 --- a/cmd/fluent-watcher/fluentd/main.go +++ b/cmd/fluent-watcher/fluentd/main.go @@ -70,13 +70,13 @@ func main() { flag.Parse() logger = log.NewLogfmtLogger(os.Stdout) - - timerCtx, timerCancel = context.WithCancel(context.Background()) + ctx := context.Background() + timerCtx, timerCancel = context.WithCancel(ctx) var g run.Group { // Termination handler. - g.Add(run.SignalHandler(context.Background(), os.Interrupt, syscall.SIGTERM)) + g.Add(run.SignalHandler(ctx, os.Interrupt, syscall.SIGTERM)) } { // Watch the Fluentd, if the Fluentd not exists or stopped, restart it. @@ -100,7 +100,7 @@ func main() { return err } - timerCtx, timerCancel = context.WithCancel(context.Background()) + timerCtx, timerCancel = context.WithCancel(ctx) // After the fluentd exit, fluentd watcher restarts it with an exponential // back-off delay (1s, 2s, 4s, ...), that is capped at five minutes. diff --git a/controllers/collector_controller.go b/controllers/collector_controller.go index f55d3e73d..86dc6986e 100644 --- a/controllers/collector_controller.go +++ b/controllers/collector_controller.go @@ -85,7 +85,8 @@ func (r *CollectorReconciler) Reconcile(ctx context.Context, req ctrl.Request) ( // Check if Secret exists and requeue when not found var sec corev1.Secret - if err := r.Get(ctx, client.ObjectKey{Namespace: co.Namespace, Name: co.Spec.FluentBitConfigName}, &sec); err != nil { + objKey := client.ObjectKey{Namespace: co.Namespace, Name: co.Spec.FluentBitConfigName} + if err := r.Get(ctx, objKey, &sec); err != nil { if errors.IsNotFound(err) { return ctrl.Result{Requeue: true}, nil } @@ -93,7 +94,13 @@ func (r *CollectorReconciler) Reconcile(ctx context.Context, req ctrl.Request) ( } // Install RBAC resources for the filter plugin kubernetes - cr, sa, crb := operator.MakeRBACObjects(co.Name, co.Namespace, "collector", co.Spec.RBACRules, co.Spec.ServiceAccountAnnotations) + cr, sa, crb := operator.MakeRBACObjects( + co.Name, + co.Namespace, + "collector", + co.Spec.RBACRules, + co.Spec.ServiceAccountAnnotations, + ) // Deploy Fluent Bit Collector ClusterRole if _, err := controllerutil.CreateOrPatch(ctx, r.Client, cr, r.mutate(cr, &co)); err != nil { return ctrl.Result{}, err @@ -127,14 +134,24 @@ func (r *CollectorReconciler) Reconcile(ctx context.Context, req ctrl.Request) ( func (r *CollectorReconciler) mutate(obj client.Object, co *fluentbitv1alpha2.Collector) controllerutil.MutateFn { switch o := obj.(type) { case *rbacv1.ClusterRole: - expected, _, _ := operator.MakeRBACObjects(co.Name, co.Namespace, "collector", co.Spec.RBACRules, co.Spec.ServiceAccountAnnotations) + expected, _, _ := operator.MakeRBACObjects(co.Name, + co.Namespace, "collector", + co.Spec.RBACRules, + co.Spec.ServiceAccountAnnotations, + ) return func() error { o.Rules = expected.Rules return nil } case *corev1.ServiceAccount: - _, expected, _ := operator.MakeRBACObjects(co.Name, co.Namespace, "collector", co.Spec.RBACRules, co.Spec.ServiceAccountAnnotations) + _, expected, _ := operator.MakeRBACObjects( + co.Name, + co.Namespace, + "collector", + co.Spec.RBACRules, + co.Spec.ServiceAccountAnnotations, + ) return func() error { o.Annotations = expected.Annotations @@ -144,7 +161,12 @@ func (r *CollectorReconciler) mutate(obj client.Object, co *fluentbitv1alpha2.Co return nil } case *rbacv1.ClusterRoleBinding: - _, _, expected := operator.MakeRBACObjects(co.Name, co.Namespace, "collector", co.Spec.RBACRules, co.Spec.ServiceAccountAnnotations) + _, _, expected := operator.MakeRBACObjects(co.Name, + co.Namespace, + "collector", + co.Spec.RBACRules, + co.Spec.ServiceAccountAnnotations, + ) return func() error { o.RoleRef = expected.RoleRef @@ -220,35 +242,40 @@ func (r *CollectorReconciler) delete(ctx context.Context, co *fluentbitv1alpha2. } func (r *CollectorReconciler) SetupWithManager(mgr ctrl.Manager) error { - if err := mgr.GetFieldIndexer().IndexField(context.Background(), &corev1.ServiceAccount{}, collectorOwnerKey, func(rawObj client.Object) []string { - // grab the job object, extract the owner. - sa := rawObj.(*corev1.ServiceAccount) - owner := metav1.GetControllerOf(sa) - if owner == nil { - return nil - } - // Make sure it's a FluentBit. If so, return it. - if owner.APIVersion != fluentbitApiGVStr || owner.Kind != "Collector" { - return nil - } - return []string{owner.Name} - }); err != nil { + ctx := context.Background() + if err := mgr.GetFieldIndexer().IndexField( + ctx, &corev1.ServiceAccount{}, collectorOwnerKey, + func(rawObj client.Object) []string { + // grab the job object, extract the owner. + sa := rawObj.(*corev1.ServiceAccount) + owner := metav1.GetControllerOf(sa) + if owner == nil { + return nil + } + // Make sure it's a FluentBit. If so, return it. + if owner.APIVersion != fluentbitApiGVStr || owner.Kind != "Collector" { + return nil + } + return []string{owner.Name} + }); err != nil { return err } - if err := mgr.GetFieldIndexer().IndexField(context.Background(), &appsv1.StatefulSet{}, collectorOwnerKey, func(rawObj client.Object) []string { - // grab the job object, extract the owner. - sts := rawObj.(*appsv1.StatefulSet) - owner := metav1.GetControllerOf(sts) - if owner == nil { - return nil - } - // Make sure it's a FluentBit. If so, return it. - if owner.APIVersion != fluentbitApiGVStr || owner.Kind != "Collector" { - return nil - } - return []string{owner.Name} - }); err != nil { + if err := mgr.GetFieldIndexer().IndexField( + ctx, &appsv1.StatefulSet{}, collectorOwnerKey, + func(rawObj client.Object) []string { + // grab the job object, extract the owner. + sts := rawObj.(*appsv1.StatefulSet) + owner := metav1.GetControllerOf(sts) + if owner == nil { + return nil + } + // Make sure it's a FluentBit. If so, return it. + if owner.APIVersion != fluentbitApiGVStr || owner.Kind != "Collector" { + return nil + } + return []string{owner.Name} + }); err != nil { return err } diff --git a/controllers/fluent_controller_finalizer.go b/controllers/fluent_controller_finalizer.go index e07f8a810..0715ab5e7 100644 --- a/controllers/fluent_controller_finalizer.go +++ b/controllers/fluent_controller_finalizer.go @@ -121,7 +121,13 @@ func (r *FluentdReconciler) mutate(obj client.Object, fd *fluentdv1alpha1.Fluent return nil } case *corev1.ServiceAccount: - _, expected, _ := operator.MakeRBACObjects(fd.Name, fd.Namespace, "fluentd", fd.Spec.RBACRules, fd.Spec.ServiceAccountAnnotations) + _, expected, _ := operator.MakeRBACObjects( + fd.Name, + fd.Namespace, + "fluentd", + fd.Spec.RBACRules, + fd.Spec.ServiceAccountAnnotations, + ) return func() error { o.Labels = expected.Labels @@ -132,7 +138,13 @@ func (r *FluentdReconciler) mutate(obj client.Object, fd *fluentdv1alpha1.Fluent return nil } case *rbacv1.ClusterRoleBinding: - _, _, expected := operator.MakeRBACObjects(fd.Name, fd.Namespace, "fluentd", fd.Spec.RBACRules, fd.Spec.ServiceAccountAnnotations) + _, _, expected := operator.MakeRBACObjects( + fd.Name, + fd.Namespace, + "fluentd", + fd.Spec.RBACRules, + fd.Spec.ServiceAccountAnnotations, + ) return func() error { o.RoleRef = expected.RoleRef diff --git a/controllers/fluentbit_controller.go b/controllers/fluentbit_controller.go index afa485153..0f46233f6 100644 --- a/controllers/fluentbit_controller.go +++ b/controllers/fluentbit_controller.go @@ -102,9 +102,19 @@ func (r *FluentBitReconciler) Reconcile(ctx context.Context, req ctrl.Request) ( // Install RBAC resources for the filter plugin kubernetes var role, sa, binding client.Object if r.Namespaced { - role, sa, binding = operator.MakeScopedRBACObjects(fb.Name, fb.Namespace, fb.Spec.ServiceAccountAnnotations) + role, sa, binding = operator.MakeScopedRBACObjects( + fb.Name, + fb.Namespace, + fb.Spec.ServiceAccountAnnotations, + ) } else { - role, sa, binding = operator.MakeRBACObjects(fb.Name, fb.Namespace, "fluent-bit", fb.Spec.RBACRules, fb.Spec.ServiceAccountAnnotations) + role, sa, binding = operator.MakeRBACObjects( + fb.Name, + fb.Namespace, + "fluent-bit", + fb.Spec.RBACRules, + fb.Spec.ServiceAccountAnnotations, + ) } if _, err := controllerutil.CreateOrPatch(ctx, r.Client, role, r.mutate(role, &fb)); err != nil { return ctrl.Result{}, err @@ -196,7 +206,12 @@ func (r *FluentBitReconciler) mutate(obj client.Object, fb *fluentbitv1alpha2.Fl return nil } case *rbacv1.ClusterRole: - expected, _, _ := operator.MakeRBACObjects(fb.Name, fb.Namespace, "fluent-bit", fb.Spec.RBACRules, fb.Spec.ServiceAccountAnnotations) + expected, _, _ := operator.MakeRBACObjects(fb.Name, + fb.Namespace, + "fluent-bit", + fb.Spec.RBACRules, + fb.Spec.ServiceAccountAnnotations, + ) return func() error { o.Rules = expected.Rules return nil @@ -222,7 +237,13 @@ func (r *FluentBitReconciler) mutate(obj client.Object, fb *fluentbitv1alpha2.Fl return nil } case *rbacv1.ClusterRoleBinding: - _, _, expected := operator.MakeRBACObjects(fb.Name, fb.Namespace, "fluent-bit", fb.Spec.RBACRules, fb.Spec.ServiceAccountAnnotations) + _, _, expected := operator.MakeRBACObjects( + fb.Name, + fb.Namespace, + "fluent-bit", + fb.Spec.RBACRules, + fb.Spec.ServiceAccountAnnotations, + ) return func() error { o.Subjects = expected.Subjects o.RoleRef = expected.RoleRef @@ -293,35 +314,40 @@ func (r *FluentBitReconciler) delete(ctx context.Context, fb *fluentbitv1alpha2. } func (r *FluentBitReconciler) SetupWithManager(mgr ctrl.Manager) error { - if err := mgr.GetFieldIndexer().IndexField(context.Background(), &corev1.ServiceAccount{}, fluentbitOwnerKey, func(rawObj client.Object) []string { - // grab the job object, extract the owner. - sa := rawObj.(*corev1.ServiceAccount) - owner := metav1.GetControllerOf(sa) - if owner == nil { - return nil - } - // Make sure it's a FluentBit. If so, return it. - if owner.APIVersion != fluentbitApiGVStr || owner.Kind != "FluentBit" { - return nil - } - return []string{owner.Name} - }); err != nil { + ctx := context.Background() + if err := mgr.GetFieldIndexer().IndexField( + ctx, &corev1.ServiceAccount{}, fluentbitOwnerKey, + func(rawObj client.Object) []string { + // grab the job object, extract the owner. + sa := rawObj.(*corev1.ServiceAccount) + owner := metav1.GetControllerOf(sa) + if owner == nil { + return nil + } + // Make sure it's a FluentBit. If so, return it. + if owner.APIVersion != fluentbitApiGVStr || owner.Kind != "FluentBit" { + return nil + } + return []string{owner.Name} + }); err != nil { return err } - if err := mgr.GetFieldIndexer().IndexField(context.Background(), &appsv1.DaemonSet{}, fluentbitOwnerKey, func(rawObj client.Object) []string { - // grab the job object, extract the owner. - ds := rawObj.(*appsv1.DaemonSet) - owner := metav1.GetControllerOf(ds) - if owner == nil { - return nil - } - // Make sure it's a FluentBit. If so, return it. - if owner.APIVersion != fluentbitApiGVStr || owner.Kind != "FluentBit" { - return nil - } - return []string{owner.Name} - }); err != nil { + if err := mgr.GetFieldIndexer().IndexField( + ctx, &appsv1.DaemonSet{}, fluentbitOwnerKey, + func(rawObj client.Object) []string { + // grab the job object, extract the owner. + ds := rawObj.(*appsv1.DaemonSet) + owner := metav1.GetControllerOf(ds) + if owner == nil { + return nil + } + // Make sure it's a FluentBit. If so, return it. + if owner.APIVersion != fluentbitApiGVStr || owner.Kind != "FluentBit" { + return nil + } + return []string{owner.Name} + }); err != nil { return err } diff --git a/controllers/fluentbitconfig_controller.go b/controllers/fluentbitconfig_controller.go index 703d63020..59ffeef5c 100644 --- a/controllers/fluentbitconfig_controller.go +++ b/controllers/fluentbitconfig_controller.go @@ -121,7 +121,9 @@ func (r *FluentBitConfigReconciler) Reconcile(ctx context.Context, req ctrl.Requ } // List all the namespace level resources if they exist and generate configs to mutate tags - nsFilterLists, nsOutputLists, nsParserLists, nsClusterParserLists, nsMultilineParserLists, nsClusterMultilineParserLists, rewriteTagConfigs, err := r.processNamespacedFluentBitCfgs( + nsFilterLists, nsOutputLists, nsParserLists, + nsClusterParserLists, nsMultilineParserLists, nsClusterMultilineParserLists, + rewriteTagConfigs, err := r.processNamespacedFluentBitCfgs( ctx, fb, inputs, ) @@ -241,11 +243,15 @@ func (r *FluentBitConfigReconciler) processNamespacedFluentBitCfgs( // Form a slice of list of resources per namespace for _, cfg := range nsCfgs.Items { - filterList, outputList, parserList, clusterParserList, multilineParsersList, clusterMultilineParsersList, err := r.ListNamespacedResources( + filterList, outputList, parserList, + clusterParserList, multilineParsersList, + clusterMultilineParsersList, err := r.ListNamespacedResources( ctx, cfg, ) if err != nil { - return filters, outputs, parsers, clusterParsers, multilineParsers, clusterMultilineParsers, nil, err + return filters, outputs, parsers, + clusterParsers, multilineParsers, clusterMultilineParsers, + nil, err } filters = append(filters, filterList) outputs = append(outputs, outputList) @@ -393,8 +399,9 @@ func (r *FluentBitConfigReconciler) generateRewriteTagConfig( } func (r *FluentBitConfigReconciler) SetupWithManager(mgr ctrl.Manager) error { + ctx := context.Background() if err := mgr.GetFieldIndexer().IndexField( - context.Background(), &corev1.Secret{}, fluentbitOwnerKey, func(rawObj client.Object) []string { + ctx, &corev1.Secret{}, fluentbitOwnerKey, func(rawObj client.Object) []string { // Grab the job object, extract the owner. sec := rawObj.(*corev1.Secret) owner := metav1.GetControllerOf(sec) diff --git a/controllers/fluentd_controller.go b/controllers/fluentd_controller.go index 2b8db8b8f..7a69e7a7a 100644 --- a/controllers/fluentd_controller.go +++ b/controllers/fluentd_controller.go @@ -158,67 +158,76 @@ func (r *FluentdReconciler) Reconcile(ctx context.Context, req ctrl.Request) (ct } func (r *FluentdReconciler) SetupWithManager(mgr ctrl.Manager) error { - if err := mgr.GetFieldIndexer().IndexField(context.Background(), &corev1.Secret{}, fluentdOwnerKey, func(rawObj client.Object) []string { - // Grab the job object, extract the owner. - sec := rawObj.(*corev1.Secret) - owner := metav1.GetControllerOf(sec) - if owner == nil { - return nil - } + ctx := context.Background() + if err := mgr.GetFieldIndexer().IndexField( + ctx, &corev1.Secret{}, fluentdOwnerKey, + func(rawObj client.Object) []string { + // Grab the job object, extract the owner. + sec := rawObj.(*corev1.Secret) + owner := metav1.GetControllerOf(sec) + if owner == nil { + return nil + } - if owner.APIVersion != fluentdApiGVStr || owner.Kind != fluentd { - return nil - } - return []string{owner.Name} - }); err != nil { + if owner.APIVersion != fluentdApiGVStr || owner.Kind != fluentd { + return nil + } + return []string{owner.Name} + }); err != nil { return err } - if err := mgr.GetFieldIndexer().IndexField(context.Background(), &appsv1.DaemonSet{}, fluentdOwnerKey, func(rawObj client.Object) []string { - // grab the job object, extract the owner. - ds := rawObj.(*appsv1.DaemonSet) - owner := metav1.GetControllerOf(ds) - if owner == nil { - return nil - } + if err := mgr.GetFieldIndexer().IndexField( + ctx, &appsv1.DaemonSet{}, fluentdOwnerKey, + func(rawObj client.Object) []string { + // grab the job object, extract the owner. + ds := rawObj.(*appsv1.DaemonSet) + owner := metav1.GetControllerOf(ds) + if owner == nil { + return nil + } - if owner.APIVersion != fluentdApiGVStr || owner.Kind != fluentd { - return nil - } - return []string{owner.Name} - }); err != nil { + if owner.APIVersion != fluentdApiGVStr || owner.Kind != fluentd { + return nil + } + return []string{owner.Name} + }); err != nil { return err } - if err := mgr.GetFieldIndexer().IndexField(context.Background(), &appsv1.StatefulSet{}, fluentdOwnerKey, func(rawObj client.Object) []string { - // grab the job object, extract the owner. - sts := rawObj.(*appsv1.StatefulSet) - owner := metav1.GetControllerOf(sts) - if owner == nil { - return nil - } + if err := mgr.GetFieldIndexer().IndexField( + ctx, &appsv1.StatefulSet{}, fluentdOwnerKey, + func(rawObj client.Object) []string { + // grab the job object, extract the owner. + sts := rawObj.(*appsv1.StatefulSet) + owner := metav1.GetControllerOf(sts) + if owner == nil { + return nil + } - if owner.APIVersion != fluentdApiGVStr || owner.Kind != fluentd { - return nil - } - return []string{owner.Name} - }); err != nil { + if owner.APIVersion != fluentdApiGVStr || owner.Kind != fluentd { + return nil + } + return []string{owner.Name} + }); err != nil { return err } - if err := mgr.GetFieldIndexer().IndexField(context.Background(), &corev1.Service{}, fluentdOwnerKey, func(rawObj client.Object) []string { - // grab the job object, extract the owner. - svc := rawObj.(*corev1.Service) - owner := metav1.GetControllerOf(svc) - if owner == nil { - return nil - } + if err := mgr.GetFieldIndexer().IndexField( + ctx, &corev1.Service{}, fluentdOwnerKey, + func(rawObj client.Object) []string { + // grab the job object, extract the owner. + svc := rawObj.(*corev1.Service) + owner := metav1.GetControllerOf(svc) + if owner == nil { + return nil + } - if owner.APIVersion != fluentdApiGVStr || owner.Kind != fluentd { - return nil - } - return []string{owner.Name} - }); err != nil { + if owner.APIVersion != fluentdApiGVStr || owner.Kind != fluentd { + return nil + } + return []string{owner.Name} + }); err != nil { return err } diff --git a/controllers/fluentdconfig_controller.go b/controllers/fluentdconfig_controller.go index 1c5960fa4..881dff545 100644 --- a/controllers/fluentdconfig_controller.go +++ b/controllers/fluentdconfig_controller.go @@ -594,19 +594,22 @@ func (r *FluentdConfigReconciler) PatchObjects(ctx context.Context, obj client.O // SetupWithManager sets up the controller with the Manager func (r *FluentdConfigReconciler) SetupWithManager(mgr ctrl.Manager) error { - if err := mgr.GetFieldIndexer().IndexField(context.Background(), &corev1.ServiceAccount{}, fluentdOwnerKey, func(rawObj client.Object) []string { - // grab the job object, extract the owner - sa := rawObj.(*corev1.ServiceAccount) - owner := metav1.GetControllerOf(sa) - if owner == nil { - return nil - } - // Make sure it's a Fluentd. If so, return it - if owner.APIVersion != fluentdApiGVStr || owner.Kind != "Fluentd" { - return nil - } - return []string{owner.Name} - }); err != nil { + ctx := context.Background() + if err := mgr.GetFieldIndexer().IndexField( + ctx, &corev1.ServiceAccount{}, fluentdOwnerKey, + func(rawObj client.Object) []string { + // grab the job object, extract the owner + sa := rawObj.(*corev1.ServiceAccount) + owner := metav1.GetControllerOf(sa) + if owner == nil { + return nil + } + // Make sure it's a Fluentd. If so, return it + if owner.APIVersion != fluentdApiGVStr || owner.Kind != "Fluentd" { + return nil + } + return []string{owner.Name} + }); err != nil { return err } diff --git a/pkg/operator/collector-statefulset.go b/pkg/operator/collector-statefulset.go index 5d484aa00..2de822fdd 100644 --- a/pkg/operator/collector-statefulset.go +++ b/pkg/operator/collector-statefulset.go @@ -22,7 +22,7 @@ func MakefbStatefulset(co fluentbitv1alpha2.Collector) *appsv1.StatefulSet { replicas = *co.Spec.Replicas } - statefulset := appsv1.StatefulSet{ + sts := appsv1.StatefulSet{ ObjectMeta: metav1.ObjectMeta{ Name: co.Name, Namespace: co.Namespace, @@ -104,32 +104,34 @@ func MakefbStatefulset(co fluentbitv1alpha2.Collector) *appsv1.StatefulSet { }, } + specTemplateSpec := &sts.Spec.Template.Spec if co.Spec.RuntimeClassName != "" { - statefulset.Spec.Template.Spec.RuntimeClassName = &co.Spec.RuntimeClassName + specTemplateSpec.RuntimeClassName = &co.Spec.RuntimeClassName } if co.Spec.PriorityClassName != "" { - statefulset.Spec.Template.Spec.PriorityClassName = co.Spec.PriorityClassName + specTemplateSpec.PriorityClassName = co.Spec.PriorityClassName } if co.Spec.SchedulerName != "" { - statefulset.Spec.Template.Spec.SchedulerName = co.Spec.SchedulerName + specTemplateSpec.SchedulerName = co.Spec.SchedulerName } if co.Spec.Volumes != nil { - statefulset.Spec.Template.Spec.Volumes = append(statefulset.Spec.Template.Spec.Volumes, co.Spec.Volumes...) + specTemplateSpec.Volumes = append(specTemplateSpec.Volumes, co.Spec.Volumes...) } + ctr := &specTemplateSpec.Containers[0] if co.Spec.VolumesMounts != nil { - statefulset.Spec.Template.Spec.Containers[0].VolumeMounts = append(statefulset.Spec.Template.Spec.Containers[0].VolumeMounts, co.Spec.VolumesMounts...) + ctr.VolumeMounts = append(ctr.VolumeMounts, co.Spec.VolumesMounts...) } if co.Spec.Ports != nil { - statefulset.Spec.Template.Spec.Containers[0].Ports = append(statefulset.Spec.Template.Spec.Containers[0].Ports, co.Spec.Ports...) + ctr.Ports = append(ctr.Ports, co.Spec.Ports...) } // Mount Secrets for _, secret := range co.Spec.Secrets { - statefulset.Spec.Template.Spec.Volumes = append(statefulset.Spec.Template.Spec.Volumes, corev1.Volume{ + specTemplateSpec.Volumes = append(specTemplateSpec.Volumes, corev1.Volume{ Name: secret, VolumeSource: corev1.VolumeSource{ Secret: &corev1.SecretVolumeSource{ @@ -137,7 +139,7 @@ func MakefbStatefulset(co fluentbitv1alpha2.Collector) *appsv1.StatefulSet { }, }, }) - statefulset.Spec.Template.Spec.Containers[0].VolumeMounts = append(statefulset.Spec.Template.Spec.Containers[0].VolumeMounts, corev1.VolumeMount{ + specTemplateSpec.Containers[0].VolumeMounts = append(specTemplateSpec.Containers[0].VolumeMounts, corev1.VolumeMount{ Name: secret, ReadOnly: true, MountPath: fmt.Sprintf("/fluent-bit/secrets/%s", secret), @@ -145,13 +147,13 @@ func MakefbStatefulset(co fluentbitv1alpha2.Collector) *appsv1.StatefulSet { } // Bind pvc - statefulset.Spec.VolumeClaimTemplates = append(statefulset.Spec.VolumeClaimTemplates, MakeFluentbitPVC(co)) - statefulset.Spec.Template.Spec.Containers[0].VolumeMounts = append(statefulset.Spec.Template.Spec.Containers[0].VolumeMounts, corev1.VolumeMount{ + sts.Spec.VolumeClaimTemplates = append(sts.Spec.VolumeClaimTemplates, MakeFluentbitPVC(co)) + specTemplateSpec.Containers[0].VolumeMounts = append(specTemplateSpec.Containers[0].VolumeMounts, corev1.VolumeMount{ Name: fmt.Sprintf("%s-buffer-pvc", co.Name), MountPath: FluentbitBufferMountPath(co), }) - return &statefulset + return &sts } func MakeFluentbitPVC(co fluentbitv1alpha2.Collector) corev1.PersistentVolumeClaim { @@ -179,7 +181,9 @@ func MakeFluentbitPVC(co fluentbitv1alpha2.Collector) corev1.PersistentVolumeCla func makeDefaultFluentbitPVC(co fluentbitv1alpha2.Collector) corev1.PersistentVolumeClaim { r := corev1.VolumeResourceRequirements{ - Requests: corev1.ResourceList(map[corev1.ResourceName]resource.Quantity{corev1.ResourceStorage: resource.MustParse("1Gi")}), + Requests: corev1.ResourceList(map[corev1.ResourceName]resource.Quantity{ + corev1.ResourceStorage: resource.MustParse("1Gi"), + }), } fsmode := corev1.PersistentVolumeFilesystem diff --git a/pkg/operator/daemonset.go b/pkg/operator/daemonset.go index 8bb7b5141..32d6e5e2e 100644 --- a/pkg/operator/daemonset.go +++ b/pkg/operator/daemonset.go @@ -100,52 +100,53 @@ func MakeDaemonSet(fb fluentbitv1alpha2.FluentBit, logPath string) *appsv1.Daemo }, } + specTemplateSpec := &ds.Spec.Template.Spec if fb.Spec.Args != nil { - ds.Spec.Template.Spec.Containers[0].Args = fb.Spec.Args + specTemplateSpec.Containers[0].Args = fb.Spec.Args } if fb.Spec.Command != nil { - ds.Spec.Template.Spec.Containers[0].Command = fb.Spec.Command + specTemplateSpec.Containers[0].Command = fb.Spec.Command } if fb.Spec.Ports != nil { - ds.Spec.Template.Spec.Containers[0].Ports = append(ds.Spec.Template.Spec.Containers[0].Ports, fb.Spec.Ports...) + specTemplateSpec.Containers[0].Ports = append(specTemplateSpec.Containers[0].Ports, fb.Spec.Ports...) } if fb.Spec.EnvVars != nil { - ds.Spec.Template.Spec.Containers[0].Env = append(ds.Spec.Template.Spec.Containers[0].Env, fb.Spec.EnvVars...) + specTemplateSpec.Containers[0].Env = append(specTemplateSpec.Containers[0].Env, fb.Spec.EnvVars...) } if fb.Spec.RuntimeClassName != "" { - ds.Spec.Template.Spec.RuntimeClassName = &fb.Spec.RuntimeClassName + specTemplateSpec.RuntimeClassName = &fb.Spec.RuntimeClassName } if fb.Spec.DNSPolicy != "" { - ds.Spec.Template.Spec.DNSPolicy = fb.Spec.DNSPolicy + specTemplateSpec.DNSPolicy = fb.Spec.DNSPolicy } if fb.Spec.PriorityClassName != "" { - ds.Spec.Template.Spec.PriorityClassName = fb.Spec.PriorityClassName + specTemplateSpec.PriorityClassName = fb.Spec.PriorityClassName } if fb.Spec.SchedulerName != "" { - ds.Spec.Template.Spec.SchedulerName = fb.Spec.SchedulerName + specTemplateSpec.SchedulerName = fb.Spec.SchedulerName } // Mount Position DB if fb.Spec.PositionDB != (corev1.VolumeSource{}) { - ds.Spec.Template.Spec.Volumes = append(ds.Spec.Template.Spec.Volumes, corev1.Volume{ + specTemplateSpec.Volumes = append(specTemplateSpec.Volumes, corev1.Volume{ Name: "positions", VolumeSource: fb.Spec.PositionDB, }) - ds.Spec.Template.Spec.Containers[0].VolumeMounts = append(ds.Spec.Template.Spec.Containers[0].VolumeMounts, corev1.VolumeMount{ + specTemplateSpec.Containers[0].VolumeMounts = append(specTemplateSpec.Containers[0].VolumeMounts, corev1.VolumeMount{ Name: "positions", MountPath: "/fluent-bit/tail", }) } // Mount Secrets for _, secret := range fb.Spec.Secrets { - ds.Spec.Template.Spec.Volumes = append(ds.Spec.Template.Spec.Volumes, corev1.Volume{ + specTemplateSpec.Volumes = append(specTemplateSpec.Volumes, corev1.Volume{ Name: secret, VolumeSource: corev1.VolumeSource{ Secret: &corev1.SecretVolumeSource{ @@ -153,7 +154,7 @@ func MakeDaemonSet(fb fluentbitv1alpha2.FluentBit, logPath string) *appsv1.Daemo }, }, }) - ds.Spec.Template.Spec.Containers[0].VolumeMounts = append(ds.Spec.Template.Spec.Containers[0].VolumeMounts, corev1.VolumeMount{ + specTemplateSpec.Containers[0].VolumeMounts = append(specTemplateSpec.Containers[0].VolumeMounts, corev1.VolumeMount{ Name: secret, ReadOnly: true, MountPath: fmt.Sprintf("/fluent-bit/secrets/%s", secret), @@ -210,7 +211,6 @@ func makeVolumeMounts(fb fluentbitv1alpha2.FluentBit, logPath string) []corev1.V } func makeVolumes(fb fluentbitv1alpha2.FluentBit, logPath string) []corev1.Volume { - volumes := []corev1.Volume{ { Name: "config", diff --git a/pkg/operator/fluentd-daemonset.go b/pkg/operator/fluentd-daemonset.go index ae267bf4b..7ec3d3b50 100644 --- a/pkg/operator/fluentd-daemonset.go +++ b/pkg/operator/fluentd-daemonset.go @@ -28,7 +28,7 @@ func MakeFluentdDaemonSet(fd fluentdv1alpha1.Fluentd) *appsv1.DaemonSet { } } - daemonSet := appsv1.DaemonSet{ + ds := appsv1.DaemonSet{ ObjectMeta: metav1.ObjectMeta{ Name: fd.Name, Namespace: fd.Namespace, @@ -120,44 +120,46 @@ func MakeFluentdDaemonSet(fd fluentdv1alpha1.Fluentd) *appsv1.DaemonSet { }, } + specTemplateSpec := &ds.Spec.Template.Spec if fd.Spec.RuntimeClassName != "" { - daemonSet.Spec.Template.Spec.RuntimeClassName = &fd.Spec.RuntimeClassName + specTemplateSpec.RuntimeClassName = &fd.Spec.RuntimeClassName } if fd.Spec.PriorityClassName != "" { - daemonSet.Spec.Template.Spec.PriorityClassName = fd.Spec.PriorityClassName + specTemplateSpec.PriorityClassName = fd.Spec.PriorityClassName } if fd.Spec.Volumes != nil { - daemonSet.Spec.Template.Spec.Volumes = append(daemonSet.Spec.Template.Spec.Volumes, fd.Spec.Volumes...) + specTemplateSpec.Volumes = append(specTemplateSpec.Volumes, fd.Spec.Volumes...) } + ctr := &specTemplateSpec.Containers[0] if fd.Spec.VolumeMounts != nil { - daemonSet.Spec.Template.Spec.Containers[0].VolumeMounts = append(daemonSet.Spec.Template.Spec.Containers[0].VolumeMounts, fd.Spec.VolumeMounts...) + ctr.VolumeMounts = append(ctr.VolumeMounts, fd.Spec.VolumeMounts...) } if fd.Spec.EnvVars != nil { - daemonSet.Spec.Template.Spec.Containers[0].Env = append(daemonSet.Spec.Template.Spec.Containers[0].Env, fd.Spec.EnvVars...) + ctr.Env = append(ctr.Env, fd.Spec.EnvVars...) } if fd.Spec.EnvFrom != nil { - daemonSet.Spec.Template.Spec.Containers[0].EnvFrom = append(daemonSet.Spec.Template.Spec.Containers[0].EnvFrom, fd.Spec.EnvFrom...) + ctr.EnvFrom = append(ctr.EnvFrom, fd.Spec.EnvFrom...) } if fd.Spec.SecurityContext != nil { - daemonSet.Spec.Template.Spec.SecurityContext = fd.Spec.SecurityContext + specTemplateSpec.SecurityContext = fd.Spec.SecurityContext } if fd.Spec.SchedulerName != "" { - daemonSet.Spec.Template.Spec.SchedulerName = fd.Spec.SchedulerName + specTemplateSpec.SchedulerName = fd.Spec.SchedulerName } if fd.Spec.PositionDB != (corev1.VolumeSource{}) { - daemonSet.Spec.Template.Spec.Volumes = append(daemonSet.Spec.Template.Spec.Volumes, corev1.Volume{ + specTemplateSpec.Volumes = append(specTemplateSpec.Volumes, corev1.Volume{ Name: "positions", VolumeSource: fd.Spec.PositionDB, }) - daemonSet.Spec.Template.Spec.Containers[0].VolumeMounts = append(daemonSet.Spec.Template.Spec.Containers[0].VolumeMounts, corev1.VolumeMount{ + specTemplateSpec.Containers[0].VolumeMounts = append(specTemplateSpec.Containers[0].VolumeMounts, corev1.VolumeMount{ Name: "positions", MountPath: "/fluentd/tail", }) @@ -168,35 +170,35 @@ func MakeFluentdDaemonSet(fd fluentdv1alpha1.Fluentd) *appsv1.DaemonSet { bufferpv := fd.Spec.BufferVolume if bufferpv.HostPath != nil { - daemonSet.Spec.Template.Spec.Volumes = append(daemonSet.Spec.Template.Spec.Volumes, corev1.Volume{ + specTemplateSpec.Volumes = append(specTemplateSpec.Volumes, corev1.Volume{ Name: bufferVolName, VolumeSource: corev1.VolumeSource{ HostPath: bufferpv.HostPath, }, }) - daemonSet.Spec.Template.Spec.Containers[0].VolumeMounts = append(daemonSet.Spec.Template.Spec.Containers[0].VolumeMounts, corev1.VolumeMount{ + specTemplateSpec.Containers[0].VolumeMounts = append(specTemplateSpec.Containers[0].VolumeMounts, corev1.VolumeMount{ Name: bufferVolName, MountPath: BufferMountPath, }) - return &daemonSet + return &ds } if bufferpv.EmptyDir != nil { - daemonSet.Spec.Template.Spec.Volumes = append(daemonSet.Spec.Template.Spec.Volumes, corev1.Volume{ + specTemplateSpec.Volumes = append(specTemplateSpec.Volumes, corev1.Volume{ Name: bufferVolName, VolumeSource: corev1.VolumeSource{ EmptyDir: bufferpv.EmptyDir, }, }) - daemonSet.Spec.Template.Spec.Containers[0].VolumeMounts = append(daemonSet.Spec.Template.Spec.Containers[0].VolumeMounts, corev1.VolumeMount{ + specTemplateSpec.Containers[0].VolumeMounts = append(specTemplateSpec.Containers[0].VolumeMounts, corev1.VolumeMount{ Name: bufferVolName, MountPath: BufferMountPath, }) - return &daemonSet + return &ds } } - return &daemonSet + return &ds } diff --git a/pkg/operator/pvc.go b/pkg/operator/pvc.go index 49906bb86..d55601dd2 100644 --- a/pkg/operator/pvc.go +++ b/pkg/operator/pvc.go @@ -47,7 +47,9 @@ func makeDefaultFluentdPVC(fd fluentdv1alpha1.Fluentd) *corev1.PersistentVolumeC } r := corev1.VolumeResourceRequirements{ - Requests: corev1.ResourceList(map[corev1.ResourceName]resource.Quantity{corev1.ResourceStorage: resource.MustParse("1Gi")}), + Requests: corev1.ResourceList(map[corev1.ResourceName]resource.Quantity{ + corev1.ResourceStorage: resource.MustParse("1Gi"), + }), } fsmode := corev1.PersistentVolumeFilesystem diff --git a/pkg/operator/rbac.go b/pkg/operator/rbac.go index 144013ca9..c2e1536ea 100644 --- a/pkg/operator/rbac.go +++ b/pkg/operator/rbac.go @@ -8,7 +8,11 @@ import ( metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" ) -func MakeRBACObjects(name, namespace, component string, additionalRules []rbacv1.PolicyRule, saAnnotations map[string]string) (*rbacv1.ClusterRole, *corev1.ServiceAccount, *rbacv1.ClusterRoleBinding) { +func MakeRBACObjects( + name, namespace, component string, + additionalRules []rbacv1.PolicyRule, + saAnnotations map[string]string, +) (*rbacv1.ClusterRole, *corev1.ServiceAccount, *rbacv1.ClusterRoleBinding) { crName, saName, crbName := MakeRBACNames(name, component) cr := rbacv1.ClusterRole{ ObjectMeta: metav1.ObjectMeta{ @@ -56,7 +60,11 @@ func MakeRBACObjects(name, namespace, component string, additionalRules []rbacv1 return &cr, &sa, &crb } -func MakeScopedRBACObjects(name, namespace string, saAnnotations map[string]string) (*rbacv1.Role, *corev1.ServiceAccount, *rbacv1.RoleBinding) { +func MakeScopedRBACObjects( + name, + namespace string, + saAnnotations map[string]string, +) (*rbacv1.Role, *corev1.ServiceAccount, *rbacv1.RoleBinding) { rName, saName, rbName := MakeScopedRBACNames(name) r := rbacv1.Role{ ObjectMeta: metav1.ObjectMeta{ diff --git a/pkg/operator/sts.go b/pkg/operator/sts.go index 20efd9863..0ada150af 100644 --- a/pkg/operator/sts.go +++ b/pkg/operator/sts.go @@ -124,20 +124,22 @@ func MakeStatefulSet(fd fluentdv1alpha1.Fluentd) *appsv1.StatefulSet { }, } + specTemplateSpec := &sts.Spec.Template.Spec if fd.Spec.RuntimeClassName != "" { - sts.Spec.Template.Spec.RuntimeClassName = &fd.Spec.RuntimeClassName + specTemplateSpec.RuntimeClassName = &fd.Spec.RuntimeClassName } if fd.Spec.PriorityClassName != "" { - sts.Spec.Template.Spec.PriorityClassName = fd.Spec.PriorityClassName + specTemplateSpec.PriorityClassName = fd.Spec.PriorityClassName } if fd.Spec.Volumes != nil { - sts.Spec.Template.Spec.Volumes = append(sts.Spec.Template.Spec.Volumes, fd.Spec.Volumes...) + specTemplateSpec.Volumes = append(specTemplateSpec.Volumes, fd.Spec.Volumes...) } + ctr := &specTemplateSpec.Containers[0] if fd.Spec.VolumeMounts != nil { - sts.Spec.Template.Spec.Containers[0].VolumeMounts = append(sts.Spec.Template.Spec.Containers[0].VolumeMounts, fd.Spec.VolumeMounts...) + ctr.VolumeMounts = append(ctr.VolumeMounts, fd.Spec.VolumeMounts...) } if fd.Spec.VolumeClaimTemplates != nil { @@ -145,19 +147,19 @@ func MakeStatefulSet(fd fluentdv1alpha1.Fluentd) *appsv1.StatefulSet { } if fd.Spec.EnvVars != nil { - sts.Spec.Template.Spec.Containers[0].Env = append(sts.Spec.Template.Spec.Containers[0].Env, fd.Spec.EnvVars...) + specTemplateSpec.Containers[0].Env = append(specTemplateSpec.Containers[0].Env, fd.Spec.EnvVars...) } if fd.Spec.EnvFrom != nil { - sts.Spec.Template.Spec.Containers[0].EnvFrom = append(sts.Spec.Template.Spec.Containers[0].EnvFrom, fd.Spec.EnvFrom...) + specTemplateSpec.Containers[0].EnvFrom = append(specTemplateSpec.Containers[0].EnvFrom, fd.Spec.EnvFrom...) } if fd.Spec.SecurityContext != nil { - sts.Spec.Template.Spec.SecurityContext = fd.Spec.SecurityContext + specTemplateSpec.SecurityContext = fd.Spec.SecurityContext } if fd.Spec.SchedulerName != "" { - sts.Spec.Template.Spec.SchedulerName = fd.Spec.SchedulerName + specTemplateSpec.SchedulerName = fd.Spec.SchedulerName } // Mount host or emptydir VolumeSource @@ -166,14 +168,14 @@ func MakeStatefulSet(fd fluentdv1alpha1.Fluentd) *appsv1.StatefulSet { bufferpv := fd.Spec.BufferVolume if bufferpv.HostPath != nil { - sts.Spec.Template.Spec.Volumes = append(sts.Spec.Template.Spec.Volumes, corev1.Volume{ + specTemplateSpec.Volumes = append(specTemplateSpec.Volumes, corev1.Volume{ Name: bufferVolName, VolumeSource: corev1.VolumeSource{ HostPath: bufferpv.HostPath, }, }) - sts.Spec.Template.Spec.Containers[0].VolumeMounts = append(sts.Spec.Template.Spec.Containers[0].VolumeMounts, corev1.VolumeMount{ + specTemplateSpec.Containers[0].VolumeMounts = append(specTemplateSpec.Containers[0].VolumeMounts, corev1.VolumeMount{ Name: bufferVolName, MountPath: BufferMountPath, }) @@ -181,14 +183,14 @@ func MakeStatefulSet(fd fluentdv1alpha1.Fluentd) *appsv1.StatefulSet { } if bufferpv.EmptyDir != nil { - sts.Spec.Template.Spec.Volumes = append(sts.Spec.Template.Spec.Volumes, corev1.Volume{ + specTemplateSpec.Volumes = append(specTemplateSpec.Volumes, corev1.Volume{ Name: bufferVolName, VolumeSource: corev1.VolumeSource{ EmptyDir: bufferpv.EmptyDir, }, }) - sts.Spec.Template.Spec.Containers[0].VolumeMounts = append(sts.Spec.Template.Spec.Containers[0].VolumeMounts, corev1.VolumeMount{ + specTemplateSpec.Containers[0].VolumeMounts = append(specTemplateSpec.Containers[0].VolumeMounts, corev1.VolumeMount{ Name: bufferVolName, MountPath: BufferMountPath, }) @@ -200,11 +202,12 @@ func MakeStatefulSet(fd fluentdv1alpha1.Fluentd) *appsv1.StatefulSet { if fd.Spec.BufferVolume == nil || !fd.Spec.BufferVolume.DisableBufferVolume { sts.Spec.VolumeClaimTemplates = append(sts.Spec.VolumeClaimTemplates, *MakeFluentdPVC(fd)) - sts.Spec.Template.Spec.Containers[0].VolumeMounts = append(sts.Spec.Template.Spec.Containers[0].VolumeMounts, corev1.VolumeMount{ + specTemplateSpec.Containers[0].VolumeMounts = append(specTemplateSpec.Containers[0].VolumeMounts, corev1.VolumeMount{ Name: fmt.Sprintf("%s-buffer-pvc", fd.Name), MountPath: BufferMountPath, }) } + return &sts }