From 89803642fc70c0b262d58b2bbe8caa66ea27f985 Mon Sep 17 00:00:00 2001 From: Bence Csati Date: Fri, 11 Oct 2024 14:15:15 +0200 Subject: [PATCH] feat: enhance buffer-metrics sidecar Signed-off-by: Bence Csati feat: enhance buffer-metrics sidecar Signed-off-by: Bence Csati --- ...ogging.banzaicloud.io_fluentbitagents.yaml | 81 +++++ ...logging.banzaicloud.io_fluentdconfigs.yaml | 81 +++++ .../crds/logging.banzaicloud.io_loggings.yaml | 276 ++++++++++++++++++ ...ogging.banzaicloud.io_syslogngconfigs.yaml | 114 ++++++++ ...ogging.banzaicloud.io_fluentbitagents.yaml | 81 +++++ ...logging.banzaicloud.io_fluentdconfigs.yaml | 81 +++++ .../logging.banzaicloud.io_loggings.yaml | 276 ++++++++++++++++++ ...ogging.banzaicloud.io_syslogngconfigs.yaml | 114 ++++++++ .../crds/v1beta1/fluentbit_types.md | 3 + .../crds/v1beta1/fluentd_types.md | 3 + .../crds/v1beta1/syslogng_types.md | 6 + pkg/resources/fluentbit/daemonset.go | 1 + pkg/resources/fluentd/statefulset.go | 1 + pkg/resources/syslogng/statefulset.go | 12 +- .../logging/api/v1beta1/fluentbit_types.go | 39 +-- pkg/sdk/logging/api/v1beta1/fluentd_types.go | 9 +- pkg/sdk/logging/api/v1beta1/logging_types.go | 8 +- pkg/sdk/logging/api/v1beta1/syslogng_types.go | 16 + .../api/v1beta1/zz_generated.deepcopy.go | 16 + 19 files changed, 1181 insertions(+), 37 deletions(-) diff --git a/charts/logging-operator/crds/logging.banzaicloud.io_fluentbitagents.yaml b/charts/logging-operator/crds/logging.banzaicloud.io_fluentbitagents.yaml index 8b0013970..2dd646375 100644 --- a/charts/logging-operator/crds/logging.banzaicloud.io_fluentbitagents.yaml +++ b/charts/logging-operator/crds/logging.banzaicloud.io_fluentbitagents.yaml @@ -698,6 +698,87 @@ spec: tag: type: string type: object + bufferVolumeLivenessProbe: + properties: + exec: + properties: + command: + items: + type: string + type: array + x-kubernetes-list-type: atomic + type: object + failureThreshold: + format: int32 + type: integer + grpc: + properties: + port: + format: int32 + type: integer + service: + default: "" + type: string + required: + - port + type: object + httpGet: + properties: + host: + type: string + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + x-kubernetes-list-type: atomic + path: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + scheme: + type: string + required: + - port + type: object + initialDelaySeconds: + format: int32 + type: integer + periodSeconds: + format: int32 + type: integer + successThreshold: + format: int32 + type: integer + tcpSocket: + properties: + host: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + required: + - port + type: object + terminationGracePeriodSeconds: + format: int64 + type: integer + timeoutSeconds: + format: int32 + type: integer + type: object bufferVolumeMetrics: properties: interval: diff --git a/charts/logging-operator/crds/logging.banzaicloud.io_fluentdconfigs.yaml b/charts/logging-operator/crds/logging.banzaicloud.io_fluentdconfigs.yaml index b12b8fb45..58d116334 100644 --- a/charts/logging-operator/crds/logging.banzaicloud.io_fluentdconfigs.yaml +++ b/charts/logging-operator/crds/logging.banzaicloud.io_fluentdconfigs.yaml @@ -688,6 +688,87 @@ spec: tag: type: string type: object + bufferVolumeLivenessProbe: + properties: + exec: + properties: + command: + items: + type: string + type: array + x-kubernetes-list-type: atomic + type: object + failureThreshold: + format: int32 + type: integer + grpc: + properties: + port: + format: int32 + type: integer + service: + default: "" + type: string + required: + - port + type: object + httpGet: + properties: + host: + type: string + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + x-kubernetes-list-type: atomic + path: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + scheme: + type: string + required: + - port + type: object + initialDelaySeconds: + format: int32 + type: integer + periodSeconds: + format: int32 + type: integer + successThreshold: + format: int32 + type: integer + tcpSocket: + properties: + host: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + required: + - port + type: object + terminationGracePeriodSeconds: + format: int64 + type: integer + timeoutSeconds: + format: int32 + type: integer + type: object bufferVolumeMetrics: properties: interval: diff --git a/charts/logging-operator/crds/logging.banzaicloud.io_loggings.yaml b/charts/logging-operator/crds/logging.banzaicloud.io_loggings.yaml index b660972b4..dcb6c5a32 100644 --- a/charts/logging-operator/crds/logging.banzaicloud.io_loggings.yaml +++ b/charts/logging-operator/crds/logging.banzaicloud.io_loggings.yaml @@ -1745,6 +1745,87 @@ spec: tag: type: string type: object + bufferVolumeLivenessProbe: + properties: + exec: + properties: + command: + items: + type: string + type: array + x-kubernetes-list-type: atomic + type: object + failureThreshold: + format: int32 + type: integer + grpc: + properties: + port: + format: int32 + type: integer + service: + default: "" + type: string + required: + - port + type: object + httpGet: + properties: + host: + type: string + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + x-kubernetes-list-type: atomic + path: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + scheme: + type: string + required: + - port + type: object + initialDelaySeconds: + format: int32 + type: integer + periodSeconds: + format: int32 + type: integer + successThreshold: + format: int32 + type: integer + tcpSocket: + properties: + host: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + required: + - port + type: object + terminationGracePeriodSeconds: + format: int64 + type: integer + timeoutSeconds: + format: int32 + type: integer + type: object bufferVolumeMetrics: properties: interval: @@ -4324,6 +4405,87 @@ spec: tag: type: string type: object + bufferVolumeLivenessProbe: + properties: + exec: + properties: + command: + items: + type: string + type: array + x-kubernetes-list-type: atomic + type: object + failureThreshold: + format: int32 + type: integer + grpc: + properties: + port: + format: int32 + type: integer + service: + default: "" + type: string + required: + - port + type: object + httpGet: + properties: + host: + type: string + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + x-kubernetes-list-type: atomic + path: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + scheme: + type: string + required: + - port + type: object + initialDelaySeconds: + format: int32 + type: integer + periodSeconds: + format: int32 + type: integer + successThreshold: + format: int32 + type: integer + tcpSocket: + properties: + host: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + required: + - port + type: object + terminationGracePeriodSeconds: + format: int64 + type: integer + timeoutSeconds: + format: int32 + type: integer + type: object bufferVolumeMetrics: properties: interval: @@ -12768,6 +12930,39 @@ spec: type: boolean syslogNG: properties: + bufferMetricsResources: + properties: + claims: + items: + properties: + name: + type: string + request: + type: string + required: + - name + type: object + type: array + x-kubernetes-list-map-keys: + - name + x-kubernetes-list-type: map + limits: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + requests: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + type: object bufferVolumeMetrics: properties: interval: @@ -13027,6 +13222,87 @@ spec: tag: type: string type: object + bufferVolumeMetricsLivenessProbe: + properties: + exec: + properties: + command: + items: + type: string + type: array + x-kubernetes-list-type: atomic + type: object + failureThreshold: + format: int32 + type: integer + grpc: + properties: + port: + format: int32 + type: integer + service: + default: "" + type: string + required: + - port + type: object + httpGet: + properties: + host: + type: string + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + x-kubernetes-list-type: atomic + path: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + scheme: + type: string + required: + - port + type: object + initialDelaySeconds: + format: int32 + type: integer + periodSeconds: + format: int32 + type: integer + successThreshold: + format: int32 + type: integer + tcpSocket: + properties: + host: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + required: + - port + type: object + terminationGracePeriodSeconds: + format: int64 + type: integer + timeoutSeconds: + format: int32 + type: integer + type: object bufferVolumeMetricsService: properties: metadata: diff --git a/charts/logging-operator/crds/logging.banzaicloud.io_syslogngconfigs.yaml b/charts/logging-operator/crds/logging.banzaicloud.io_syslogngconfigs.yaml index a2700ef3c..e4a4defc1 100644 --- a/charts/logging-operator/crds/logging.banzaicloud.io_syslogngconfigs.yaml +++ b/charts/logging-operator/crds/logging.banzaicloud.io_syslogngconfigs.yaml @@ -28,6 +28,39 @@ spec: type: object spec: properties: + bufferMetricsResources: + properties: + claims: + items: + properties: + name: + type: string + request: + type: string + required: + - name + type: object + type: array + x-kubernetes-list-map-keys: + - name + x-kubernetes-list-type: map + limits: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + requests: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + type: object bufferVolumeMetrics: properties: interval: @@ -287,6 +320,87 @@ spec: tag: type: string type: object + bufferVolumeMetricsLivenessProbe: + properties: + exec: + properties: + command: + items: + type: string + type: array + x-kubernetes-list-type: atomic + type: object + failureThreshold: + format: int32 + type: integer + grpc: + properties: + port: + format: int32 + type: integer + service: + default: "" + type: string + required: + - port + type: object + httpGet: + properties: + host: + type: string + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + x-kubernetes-list-type: atomic + path: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + scheme: + type: string + required: + - port + type: object + initialDelaySeconds: + format: int32 + type: integer + periodSeconds: + format: int32 + type: integer + successThreshold: + format: int32 + type: integer + tcpSocket: + properties: + host: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + required: + - port + type: object + terminationGracePeriodSeconds: + format: int64 + type: integer + timeoutSeconds: + format: int32 + type: integer + type: object bufferVolumeMetricsService: properties: metadata: diff --git a/config/crd/bases/logging.banzaicloud.io_fluentbitagents.yaml b/config/crd/bases/logging.banzaicloud.io_fluentbitagents.yaml index 8b0013970..2dd646375 100644 --- a/config/crd/bases/logging.banzaicloud.io_fluentbitagents.yaml +++ b/config/crd/bases/logging.banzaicloud.io_fluentbitagents.yaml @@ -698,6 +698,87 @@ spec: tag: type: string type: object + bufferVolumeLivenessProbe: + properties: + exec: + properties: + command: + items: + type: string + type: array + x-kubernetes-list-type: atomic + type: object + failureThreshold: + format: int32 + type: integer + grpc: + properties: + port: + format: int32 + type: integer + service: + default: "" + type: string + required: + - port + type: object + httpGet: + properties: + host: + type: string + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + x-kubernetes-list-type: atomic + path: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + scheme: + type: string + required: + - port + type: object + initialDelaySeconds: + format: int32 + type: integer + periodSeconds: + format: int32 + type: integer + successThreshold: + format: int32 + type: integer + tcpSocket: + properties: + host: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + required: + - port + type: object + terminationGracePeriodSeconds: + format: int64 + type: integer + timeoutSeconds: + format: int32 + type: integer + type: object bufferVolumeMetrics: properties: interval: diff --git a/config/crd/bases/logging.banzaicloud.io_fluentdconfigs.yaml b/config/crd/bases/logging.banzaicloud.io_fluentdconfigs.yaml index b12b8fb45..58d116334 100644 --- a/config/crd/bases/logging.banzaicloud.io_fluentdconfigs.yaml +++ b/config/crd/bases/logging.banzaicloud.io_fluentdconfigs.yaml @@ -688,6 +688,87 @@ spec: tag: type: string type: object + bufferVolumeLivenessProbe: + properties: + exec: + properties: + command: + items: + type: string + type: array + x-kubernetes-list-type: atomic + type: object + failureThreshold: + format: int32 + type: integer + grpc: + properties: + port: + format: int32 + type: integer + service: + default: "" + type: string + required: + - port + type: object + httpGet: + properties: + host: + type: string + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + x-kubernetes-list-type: atomic + path: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + scheme: + type: string + required: + - port + type: object + initialDelaySeconds: + format: int32 + type: integer + periodSeconds: + format: int32 + type: integer + successThreshold: + format: int32 + type: integer + tcpSocket: + properties: + host: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + required: + - port + type: object + terminationGracePeriodSeconds: + format: int64 + type: integer + timeoutSeconds: + format: int32 + type: integer + type: object bufferVolumeMetrics: properties: interval: diff --git a/config/crd/bases/logging.banzaicloud.io_loggings.yaml b/config/crd/bases/logging.banzaicloud.io_loggings.yaml index b660972b4..dcb6c5a32 100644 --- a/config/crd/bases/logging.banzaicloud.io_loggings.yaml +++ b/config/crd/bases/logging.banzaicloud.io_loggings.yaml @@ -1745,6 +1745,87 @@ spec: tag: type: string type: object + bufferVolumeLivenessProbe: + properties: + exec: + properties: + command: + items: + type: string + type: array + x-kubernetes-list-type: atomic + type: object + failureThreshold: + format: int32 + type: integer + grpc: + properties: + port: + format: int32 + type: integer + service: + default: "" + type: string + required: + - port + type: object + httpGet: + properties: + host: + type: string + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + x-kubernetes-list-type: atomic + path: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + scheme: + type: string + required: + - port + type: object + initialDelaySeconds: + format: int32 + type: integer + periodSeconds: + format: int32 + type: integer + successThreshold: + format: int32 + type: integer + tcpSocket: + properties: + host: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + required: + - port + type: object + terminationGracePeriodSeconds: + format: int64 + type: integer + timeoutSeconds: + format: int32 + type: integer + type: object bufferVolumeMetrics: properties: interval: @@ -4324,6 +4405,87 @@ spec: tag: type: string type: object + bufferVolumeLivenessProbe: + properties: + exec: + properties: + command: + items: + type: string + type: array + x-kubernetes-list-type: atomic + type: object + failureThreshold: + format: int32 + type: integer + grpc: + properties: + port: + format: int32 + type: integer + service: + default: "" + type: string + required: + - port + type: object + httpGet: + properties: + host: + type: string + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + x-kubernetes-list-type: atomic + path: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + scheme: + type: string + required: + - port + type: object + initialDelaySeconds: + format: int32 + type: integer + periodSeconds: + format: int32 + type: integer + successThreshold: + format: int32 + type: integer + tcpSocket: + properties: + host: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + required: + - port + type: object + terminationGracePeriodSeconds: + format: int64 + type: integer + timeoutSeconds: + format: int32 + type: integer + type: object bufferVolumeMetrics: properties: interval: @@ -12768,6 +12930,39 @@ spec: type: boolean syslogNG: properties: + bufferMetricsResources: + properties: + claims: + items: + properties: + name: + type: string + request: + type: string + required: + - name + type: object + type: array + x-kubernetes-list-map-keys: + - name + x-kubernetes-list-type: map + limits: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + requests: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + type: object bufferVolumeMetrics: properties: interval: @@ -13027,6 +13222,87 @@ spec: tag: type: string type: object + bufferVolumeMetricsLivenessProbe: + properties: + exec: + properties: + command: + items: + type: string + type: array + x-kubernetes-list-type: atomic + type: object + failureThreshold: + format: int32 + type: integer + grpc: + properties: + port: + format: int32 + type: integer + service: + default: "" + type: string + required: + - port + type: object + httpGet: + properties: + host: + type: string + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + x-kubernetes-list-type: atomic + path: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + scheme: + type: string + required: + - port + type: object + initialDelaySeconds: + format: int32 + type: integer + periodSeconds: + format: int32 + type: integer + successThreshold: + format: int32 + type: integer + tcpSocket: + properties: + host: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + required: + - port + type: object + terminationGracePeriodSeconds: + format: int64 + type: integer + timeoutSeconds: + format: int32 + type: integer + type: object bufferVolumeMetricsService: properties: metadata: diff --git a/config/crd/bases/logging.banzaicloud.io_syslogngconfigs.yaml b/config/crd/bases/logging.banzaicloud.io_syslogngconfigs.yaml index a2700ef3c..e4a4defc1 100644 --- a/config/crd/bases/logging.banzaicloud.io_syslogngconfigs.yaml +++ b/config/crd/bases/logging.banzaicloud.io_syslogngconfigs.yaml @@ -28,6 +28,39 @@ spec: type: object spec: properties: + bufferMetricsResources: + properties: + claims: + items: + properties: + name: + type: string + request: + type: string + required: + - name + type: object + type: array + x-kubernetes-list-map-keys: + - name + x-kubernetes-list-type: map + limits: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + requests: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + type: object bufferVolumeMetrics: properties: interval: @@ -287,6 +320,87 @@ spec: tag: type: string type: object + bufferVolumeMetricsLivenessProbe: + properties: + exec: + properties: + command: + items: + type: string + type: array + x-kubernetes-list-type: atomic + type: object + failureThreshold: + format: int32 + type: integer + grpc: + properties: + port: + format: int32 + type: integer + service: + default: "" + type: string + required: + - port + type: object + httpGet: + properties: + host: + type: string + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + x-kubernetes-list-type: atomic + path: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + scheme: + type: string + required: + - port + type: object + initialDelaySeconds: + format: int32 + type: integer + periodSeconds: + format: int32 + type: integer + successThreshold: + format: int32 + type: integer + tcpSocket: + properties: + host: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + required: + - port + type: object + terminationGracePeriodSeconds: + format: int64 + type: integer + timeoutSeconds: + format: int32 + type: integer + type: object bufferVolumeMetricsService: properties: metadata: diff --git a/docs/configuration/crds/v1beta1/fluentbit_types.md b/docs/configuration/crds/v1beta1/fluentbit_types.md index 5c92b3cb8..27c4b8a96 100644 --- a/docs/configuration/crds/v1beta1/fluentbit_types.md +++ b/docs/configuration/crds/v1beta1/fluentbit_types.md @@ -59,6 +59,9 @@ FluentbitSpec defines the desired state of FluentbitAgent ### bufferVolumeImage (ImageSpec, optional) {#fluentbitspec-buffervolumeimage} +### bufferVolumeLivenessProbe (*corev1.Probe, optional) {#fluentbitspec-buffervolumelivenessprobe} + + ### bufferVolumeMetrics (*Metrics, optional) {#fluentbitspec-buffervolumemetrics} diff --git a/docs/configuration/crds/v1beta1/fluentd_types.md b/docs/configuration/crds/v1beta1/fluentd_types.md index 08c62e2c5..bc8f0a0f0 100644 --- a/docs/configuration/crds/v1beta1/fluentd_types.md +++ b/docs/configuration/crds/v1beta1/fluentd_types.md @@ -25,6 +25,9 @@ BufferStorageVolume is by default configured as PVC using FluentdPvcSpec [volume ### bufferVolumeImage (ImageSpec, optional) {#fluentdspec-buffervolumeimage} +### bufferVolumeLivenessProbe (*corev1.Probe, optional) {#fluentdspec-buffervolumelivenessprobe} + + ### bufferVolumeMetrics (*Metrics, optional) {#fluentdspec-buffervolumemetrics} diff --git a/docs/configuration/crds/v1beta1/syslogng_types.md b/docs/configuration/crds/v1beta1/syslogng_types.md index 5635bb7ba..8c789356a 100644 --- a/docs/configuration/crds/v1beta1/syslogng_types.md +++ b/docs/configuration/crds/v1beta1/syslogng_types.md @@ -8,12 +8,18 @@ generated_file: true SyslogNGSpec defines the desired state of SyslogNG +### bufferMetricsResources (corev1.ResourceRequirements, optional) {#syslogngspec-buffermetricsresources} + + ### bufferVolumeMetrics (*BufferMetrics, optional) {#syslogngspec-buffervolumemetrics} ### bufferVolumeMetricsImage (*BasicImageSpec, optional) {#syslogngspec-buffervolumemetricsimage} +### bufferVolumeMetricsLivenessProbe (*corev1.Probe, optional) {#syslogngspec-buffervolumemetricslivenessprobe} + + ### bufferVolumeMetricsService (*typeoverride.Service, optional) {#syslogngspec-buffervolumemetricsservice} diff --git a/pkg/resources/fluentbit/daemonset.go b/pkg/resources/fluentbit/daemonset.go index 9a9f7a42c..209409e04 100644 --- a/pkg/resources/fluentbit/daemonset.go +++ b/pkg/resources/fluentbit/daemonset.go @@ -330,6 +330,7 @@ func (r *Reconciler) bufferMetricsSidecarContainer() *corev1.Container { }, Resources: r.fluentbitSpec.BufferVolumeResources, SecurityContext: r.fluentbitSpec.Security.SecurityContext, + LivenessProbe: r.fluentbitSpec.BufferVolumeLivenessProbe, } } return nil diff --git a/pkg/resources/fluentd/statefulset.go b/pkg/resources/fluentd/statefulset.go index 8ab31dfcd..8f719818e 100644 --- a/pkg/resources/fluentd/statefulset.go +++ b/pkg/resources/fluentd/statefulset.go @@ -433,6 +433,7 @@ func (r *Reconciler) bufferMetricsSidecarContainer() *corev1.Container { }, Resources: r.fluentdSpec.BufferVolumeResources, SecurityContext: r.fluentdSpec.Security.SecurityContext, + LivenessProbe: r.fluentdSpec.BufferVolumeLivenessProbe, } } return nil diff --git a/pkg/resources/syslogng/statefulset.go b/pkg/resources/syslogng/statefulset.go index d7ef00e2c..70c41fae0 100644 --- a/pkg/resources/syslogng/statefulset.go +++ b/pkg/resources/syslogng/statefulset.go @@ -289,16 +289,8 @@ func (r *Reconciler) bufferMetricsSidecarContainer() *corev1.Container { MountPath: BufferPath, }, }, - Resources: corev1.ResourceRequirements{ - Limits: corev1.ResourceList{ - corev1.ResourceMemory: resource.MustParse("10M"), - corev1.ResourceCPU: resource.MustParse("50m"), - }, - Requests: corev1.ResourceList{ - corev1.ResourceMemory: resource.MustParse("10M"), - corev1.ResourceCPU: resource.MustParse("1m"), - }, - }, + Resources: r.syslogNGSpec.BufferMetricsResources, + LivenessProbe: r.syslogNGSpec.BufferVolumeMetricsLivenessProbe, } } return nil diff --git a/pkg/sdk/logging/api/v1beta1/fluentbit_types.go b/pkg/sdk/logging/api/v1beta1/fluentbit_types.go index d828f289d..833976a37 100644 --- a/pkg/sdk/logging/api/v1beta1/fluentbit_types.go +++ b/pkg/sdk/logging/api/v1beta1/fluentbit_types.go @@ -104,25 +104,26 @@ type FluentbitSpec struct { DisableKubernetesFilter *bool `json:"disableKubernetesFilter,omitempty"` BufferStorage BufferStorage `json:"bufferStorage,omitempty"` // +docLink:"volume.KubernetesVolume,https://github.com/cisco-open/operator-tools/tree/master/docs/types" - BufferStorageVolume volume.KubernetesVolume `json:"bufferStorageVolume,omitempty"` - BufferVolumeMetrics *Metrics `json:"bufferVolumeMetrics,omitempty"` - BufferVolumeImage ImageSpec `json:"bufferVolumeImage,omitempty"` - BufferVolumeArgs []string `json:"bufferVolumeArgs,omitempty"` - BufferVolumeResources corev1.ResourceRequirements `json:"bufferVolumeResources,omitempty"` - CustomConfigSecret string `json:"customConfigSecret,omitempty"` - PodPriorityClassName string `json:"podPriorityClassName,omitempty"` - LivenessProbe *corev1.Probe `json:"livenessProbe,omitempty"` - LivenessDefaultCheck bool `json:"livenessDefaultCheck,omitempty"` - ReadinessProbe *corev1.Probe `json:"readinessProbe,omitempty"` - Network *FluentbitNetwork `json:"network,omitempty"` - ForwardOptions *ForwardOptions `json:"forwardOptions,omitempty"` - EnableUpstream bool `json:"enableUpstream,omitempty"` - ServiceAccountOverrides *typeoverride.ServiceAccount `json:"serviceAccount,omitempty"` - DNSPolicy corev1.DNSPolicy `json:"dnsPolicy,omitempty"` - DNSConfig *corev1.PodDNSConfig `json:"dnsConfig,omitempty"` - HostNetwork bool `json:"HostNetwork,omitempty"` - SyslogNGOutput *FluentbitTCPOutput `json:"syslogng_output,omitempty"` - UpdateStrategy appsv1.DaemonSetUpdateStrategy `json:"updateStrategy,omitempty"` + BufferStorageVolume volume.KubernetesVolume `json:"bufferStorageVolume,omitempty"` + BufferVolumeMetrics *Metrics `json:"bufferVolumeMetrics,omitempty"` + BufferVolumeImage ImageSpec `json:"bufferVolumeImage,omitempty"` + BufferVolumeArgs []string `json:"bufferVolumeArgs,omitempty"` + BufferVolumeResources corev1.ResourceRequirements `json:"bufferVolumeResources,omitempty"` + BufferVolumeLivenessProbe *corev1.Probe `json:"bufferVolumeLivenessProbe,omitempty"` + CustomConfigSecret string `json:"customConfigSecret,omitempty"` + PodPriorityClassName string `json:"podPriorityClassName,omitempty"` + LivenessProbe *corev1.Probe `json:"livenessProbe,omitempty"` + LivenessDefaultCheck bool `json:"livenessDefaultCheck,omitempty"` + ReadinessProbe *corev1.Probe `json:"readinessProbe,omitempty"` + Network *FluentbitNetwork `json:"network,omitempty"` + ForwardOptions *ForwardOptions `json:"forwardOptions,omitempty"` + EnableUpstream bool `json:"enableUpstream,omitempty"` + ServiceAccountOverrides *typeoverride.ServiceAccount `json:"serviceAccount,omitempty"` + DNSPolicy corev1.DNSPolicy `json:"dnsPolicy,omitempty"` + DNSConfig *corev1.PodDNSConfig `json:"dnsConfig,omitempty"` + HostNetwork bool `json:"HostNetwork,omitempty"` + SyslogNGOutput *FluentbitTCPOutput `json:"syslogng_output,omitempty"` + UpdateStrategy appsv1.DaemonSetUpdateStrategy `json:"updateStrategy,omitempty"` // Available in Logging operator version 4.2 and later. // Specify a custom parser file to load in addition to the default parsers file. // It must be a valid key in the configmap specified by customConfig. diff --git a/pkg/sdk/logging/api/v1beta1/fluentd_types.go b/pkg/sdk/logging/api/v1beta1/fluentd_types.go index b7b90706c..6196a9950 100644 --- a/pkg/sdk/logging/api/v1beta1/fluentd_types.go +++ b/pkg/sdk/logging/api/v1beta1/fluentd_types.go @@ -80,6 +80,7 @@ type FluentdSpec struct { BufferVolumeImage ImageSpec `json:"bufferVolumeImage,omitempty"` BufferVolumeArgs []string `json:"bufferVolumeArgs,omitempty"` BufferVolumeResources corev1.ResourceRequirements `json:"bufferVolumeResources,omitempty"` + BufferVolumeLivenessProbe *corev1.Probe `json:"bufferVolumeLivenessProbe,omitempty"` Security *Security `json:"security,omitempty"` Scaling *FluentdScaling `json:"scaling,omitempty"` Workers int32 `json:"workers,omitempty"` @@ -245,14 +246,14 @@ func (f *FluentdSpec) SetDefaults() error { } if f.BufferVolumeResources.Limits == nil { f.BufferVolumeResources.Limits = corev1.ResourceList{ - corev1.ResourceMemory: resource.MustParse("10M"), - corev1.ResourceCPU: resource.MustParse("50m"), + corev1.ResourceMemory: resource.MustParse("100M"), + corev1.ResourceCPU: resource.MustParse("10m"), } } if f.BufferVolumeResources.Requests == nil { f.BufferVolumeResources.Requests = corev1.ResourceList{ - corev1.ResourceMemory: resource.MustParse("10M"), - corev1.ResourceCPU: resource.MustParse("1m"), + corev1.ResourceMemory: resource.MustParse("20M"), + corev1.ResourceCPU: resource.MustParse("2m"), } } if f.Resources.Limits == nil { diff --git a/pkg/sdk/logging/api/v1beta1/logging_types.go b/pkg/sdk/logging/api/v1beta1/logging_types.go index 3a90963b6..254e7dd13 100644 --- a/pkg/sdk/logging/api/v1beta1/logging_types.go +++ b/pkg/sdk/logging/api/v1beta1/logging_types.go @@ -314,14 +314,14 @@ func FluentBitDefaults(fluentbitSpec *FluentbitSpec) error { } if fluentbitSpec.BufferVolumeResources.Limits == nil { fluentbitSpec.BufferVolumeResources.Limits = v1.ResourceList{ - v1.ResourceMemory: resource.MustParse("10M"), - v1.ResourceCPU: resource.MustParse("50m"), + v1.ResourceMemory: resource.MustParse("100M"), + v1.ResourceCPU: resource.MustParse("10m"), } } if fluentbitSpec.BufferVolumeResources.Requests == nil { fluentbitSpec.BufferVolumeResources.Requests = v1.ResourceList{ - v1.ResourceMemory: resource.MustParse("10M"), - v1.ResourceCPU: resource.MustParse("1m"), + v1.ResourceMemory: resource.MustParse("20M"), + v1.ResourceCPU: resource.MustParse("2m"), } } if fluentbitSpec.Security.SecurityContext == nil { diff --git a/pkg/sdk/logging/api/v1beta1/syslogng_types.go b/pkg/sdk/logging/api/v1beta1/syslogng_types.go index b57a4bd9c..a3097ef7f 100644 --- a/pkg/sdk/logging/api/v1beta1/syslogng_types.go +++ b/pkg/sdk/logging/api/v1beta1/syslogng_types.go @@ -16,6 +16,8 @@ package v1beta1 import ( "github.com/cisco-open/operator-tools/pkg/typeoverride" + corev1 "k8s.io/api/core/v1" + "k8s.io/apimachinery/pkg/api/resource" "github.com/kube-logging/logging-operator/pkg/sdk/logging/model/syslogng/filter" ) @@ -59,6 +61,8 @@ type SyslogNGSpec struct { MetricsServiceOverrides *typeoverride.Service `json:"metricsService,omitempty"` BufferVolumeMetrics *BufferMetrics `json:"bufferVolumeMetrics,omitempty"` BufferVolumeMetricsServiceOverrides *typeoverride.Service `json:"bufferVolumeMetricsService,omitempty"` + BufferMetricsResources corev1.ResourceRequirements `json:"bufferMetricsResources,omitempty"` + BufferVolumeMetricsLivenessProbe *corev1.Probe `json:"bufferVolumeMetricsLivenessProbe,omitempty"` GlobalOptions *GlobalOptions `json:"globalOptions,omitempty"` JSONKeyPrefix string `json:"jsonKeyPrefix,omitempty"` JSONKeyDelimiter string `json:"jsonKeyDelim,omitempty"` @@ -161,5 +165,17 @@ func (s *SyslogNGSpec) SetDefaults() { Tag: bufferVolumeImageTag, } } + if s.BufferMetricsResources.Limits == nil { + s.BufferMetricsResources.Limits = corev1.ResourceList{ + corev1.ResourceMemory: resource.MustParse("100M"), + corev1.ResourceCPU: resource.MustParse("10m"), + } + } + if s.BufferMetricsResources.Requests == nil { + s.BufferMetricsResources.Requests = corev1.ResourceList{ + corev1.ResourceMemory: resource.MustParse("20M"), + corev1.ResourceCPU: resource.MustParse("2m"), + } + } } } diff --git a/pkg/sdk/logging/api/v1beta1/zz_generated.deepcopy.go b/pkg/sdk/logging/api/v1beta1/zz_generated.deepcopy.go index d0728217a..b29a110df 100644 --- a/pkg/sdk/logging/api/v1beta1/zz_generated.deepcopy.go +++ b/pkg/sdk/logging/api/v1beta1/zz_generated.deepcopy.go @@ -1231,6 +1231,11 @@ func (in *FluentbitSpec) DeepCopyInto(out *FluentbitSpec) { copy(*out, *in) } in.BufferVolumeResources.DeepCopyInto(&out.BufferVolumeResources) + if in.BufferVolumeLivenessProbe != nil { + in, out := &in.BufferVolumeLivenessProbe, &out.BufferVolumeLivenessProbe + *out = new(v1.Probe) + (*in).DeepCopyInto(*out) + } if in.LivenessProbe != nil { in, out := &in.LivenessProbe, &out.LivenessProbe *out = new(v1.Probe) @@ -1597,6 +1602,11 @@ func (in *FluentdSpec) DeepCopyInto(out *FluentdSpec) { copy(*out, *in) } in.BufferVolumeResources.DeepCopyInto(&out.BufferVolumeResources) + if in.BufferVolumeLivenessProbe != nil { + in, out := &in.BufferVolumeLivenessProbe, &out.BufferVolumeLivenessProbe + *out = new(v1.Probe) + (*in).DeepCopyInto(*out) + } if in.Security != nil { in, out := &in.Security, &out.Security *out = new(Security) @@ -3611,6 +3621,12 @@ func (in *SyslogNGSpec) DeepCopyInto(out *SyslogNGSpec) { *out = new(typeoverride.Service) (*in).DeepCopyInto(*out) } + in.BufferMetricsResources.DeepCopyInto(&out.BufferMetricsResources) + if in.BufferVolumeMetricsLivenessProbe != nil { + in, out := &in.BufferVolumeMetricsLivenessProbe, &out.BufferVolumeMetricsLivenessProbe + *out = new(v1.Probe) + (*in).DeepCopyInto(*out) + } if in.GlobalOptions != nil { in, out := &in.GlobalOptions, &out.GlobalOptions *out = new(GlobalOptions)