Skip to content

Commit 155287b

Browse files
authored
feat: option to disable config reload (#522)
* scan event time fields for non-zero fields. we sometimes have timestamp 0001-01-01 * group imports * option to disable config reload since it causes memory issues on clusters with a high number of configmaps
1 parent 45c74c7 commit 155287b

6 files changed

Lines changed: 28 additions & 6 deletions

File tree

controllers/config/config_controller.go

Lines changed: 11 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -157,6 +157,7 @@ func (r *Reconciler) SetupWithManager(mgr ctrl.Manager) error {
157157
namespace := os.Getenv(cnst.EnvPodNamespace)
158158
cmName := os.Getenv(cnst.EnvConfigMapName)
159159
podName := os.Getenv(cnst.EnvPodName)
160+
configReload := os.Getenv(cnst.EnvConfigReload)
160161

161162
if err := r.setupEventLoggerImage(types.NamespacedName{
162163
Namespace: namespace,
@@ -172,12 +173,16 @@ func (r *Reconciler) SetupWithManager(mgr ctrl.Manager) error {
172173
return err
173174
}
174175

175-
return ctrl.NewControllerManagedBy(mgr).
176-
For(&corev1.ConfigMap{}).WithEventFilter(filter.NamePredicate{
177-
Namespace: namespace,
178-
Names: []string{cmName},
179-
},
180-
).Complete(r)
176+
if configReload == "true" {
177+
return ctrl.NewControllerManagedBy(mgr).
178+
For(&corev1.ConfigMap{}).WithEventFilter(filter.NamePredicate{
179+
Namespace: namespace,
180+
Names: []string{cmName},
181+
},
182+
).Complete(r)
183+
}
184+
185+
return nil
181186
}
182187

183188
type Cfg struct {

controllers/logging/event_controller.go

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ import (
2525
"github.com/go-logr/logr"
2626
corev1 "k8s.io/api/core/v1"
2727
"k8s.io/apimachinery/pkg/api/errors"
28+
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
2829
"k8s.io/apimachinery/pkg/apis/meta/v1/unstructured"
2930
"k8s.io/apimachinery/pkg/runtime"
3031
ctrl "sigs.k8s.io/controller-runtime"
@@ -160,6 +161,14 @@ func (p *loggingPredicate) logEvent(e runtime.Object) bool {
160161
if p.Config.filter.Match(evt) {
161162
var eventLogger logr.Logger
162163
if len(p.Config.logFields) == 0 {
164+
ts := evt.LastTimestamp
165+
if ts.IsZero() {
166+
ts = evt.FirstTimestamp
167+
}
168+
if ts.IsZero() {
169+
ts = metav1.Time{Time: evt.EventTime.Time}
170+
}
171+
163172
eventLogger = eventLog.WithValues(
164173
"namespace", evt.Namespace,
165174
"name", evt.Name,

helm/README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ helm install my-k8s-event-logger-operator bakito/k8s-event-logger-operator --ver
2424
| Key | Type | Default | Description |
2525
|-----|------|---------|-------------|
2626
| affinity | object | `{}` | Assign custom [affinity] rules to the deployment |
27+
| eventLogger.configReload | bool | `true` | Watch the configmap for changes. |
2728
| eventLogger.leaderElection | bool | `true` | Enable leader election for the controller |
2829
| eventLogger.leaderElectionResourceLock | string | `nil` | Leader election lock type |
2930
| eventLogger.resources | object | `{"limits":{"cpu":"200m","memory":"256Mi"},"requests":{"cpu":"100m","memory":"64Mi"}}` | Resource limits and requests for the logger pods. |

helm/templates/deployment.yaml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,8 @@ spec:
5353
fieldPath: metadata.namespace
5454
- name: 'CONFIG_MAP_NAME'
5555
value: '{{ include "k8s-event-logger-operator.fullname" . }}'
56+
- name: 'CONFIG_RELOAD'
57+
value: '{{ .Values.eventLogger.configReload }}'
5658
- name: 'ENABLE_WEBHOOKS'
5759
value: '{{ .Values.webhook.enabled }}'
5860
{{- if .Values.eventLogger.leaderElectionResourceLock }}

helm/values.yaml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,8 @@ eventLogger:
2828
memory: 256Mi
2929
# -- Security Context for the logger pods.
3030
securityContext: {}
31+
# -- Watch the configmap for changes.
32+
configReload: true
3133

3234
logging: # see https://github.com/operator-framework/operator-sdk/blob/master/doc/user/logging.md
3335
# -- Log level

pkg/constants/constants.go

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,9 @@ const (
5353
// EnvConfigMapName the name of the configmap
5454
EnvConfigMapName = "CONFIG_MAP_NAME"
5555

56+
// EnvConfigReload watch the configmap for changes
57+
EnvConfigReload = "CONFIG_RELOAD"
58+
5659
// ConfigKeyContainerTemplate pod template config key
5760
ConfigKeyContainerTemplate = "container_template.yaml"
5861
)

0 commit comments

Comments
 (0)