From 6a2dee979eee9b4682728c47151d98b968c85377 Mon Sep 17 00:00:00 2001 From: Michael H <86672176+mh013370@users.noreply.github.com> Date: Thu, 30 Mar 2023 08:43:50 +0100 Subject: [PATCH] Added nifi-cluster Helm chart (#141) * updated CI to publish nifi-cluster chart update changelog add dependency update to helm-package task in makefile add controllerUserIdentity to nifi cluster template add NifiNodeGroupAutoscaler template update changelog add horizontal pod autoscaler template * update zookeeper chart to latest, updated all nifikop api versions to v1, updated chart docs * remove extraneous line from changelog * update default nifi initContainerImage to bash --- CHANGELOG.md | 2 + Makefile | 12 +- helm/README.md | 10 + helm/generate_docs.sh | 4 + helm/nifi-cluster/.helmignore | 23 + helm/nifi-cluster/Chart.lock | 6 + helm/nifi-cluster/Chart.yaml | 36 + helm/nifi-cluster/README.md | 86 ++ .../nifi-cluster/charts/zookeeper/.helmignore | 21 + helm/nifi-cluster/charts/zookeeper/Chart.lock | 6 + helm/nifi-cluster/charts/zookeeper/Chart.yaml | 24 + helm/nifi-cluster/charts/zookeeper/README.md | 527 +++++++++++ .../zookeeper/charts/common/.helmignore | 22 + .../charts/zookeeper/charts/common/Chart.yaml | 23 + .../charts/zookeeper/charts/common/README.md | 350 +++++++ .../charts/common/templates/_affinities.tpl | 98 ++ .../charts/common/templates/_capabilities.tpl | 154 +++ .../charts/common/templates/_errors.tpl | 23 + .../charts/common/templates/_images.tpl | 76 ++ .../charts/common/templates/_ingress.tpl | 68 ++ .../charts/common/templates/_labels.tpl | 18 + .../charts/common/templates/_names.tpl | 70 ++ .../charts/common/templates/_secrets.tpl | 165 ++++ .../charts/common/templates/_storage.tpl | 23 + .../charts/common/templates/_tplvalues.tpl | 13 + .../charts/common/templates/_utils.tpl | 62 ++ .../charts/common/templates/_warnings.tpl | 14 + .../templates/validations/_cassandra.tpl | 72 ++ .../common/templates/validations/_mariadb.tpl | 103 +++ .../common/templates/validations/_mongodb.tpl | 108 +++ .../common/templates/validations/_mysql.tpl | 103 +++ .../templates/validations/_postgresql.tpl | 129 +++ .../common/templates/validations/_redis.tpl | 76 ++ .../templates/validations/_validations.tpl | 46 + .../zookeeper/charts/common/values.yaml | 5 + .../charts/zookeeper/templates/NOTES.txt | 76 ++ .../charts/zookeeper/templates/_helpers.tpl | 361 ++++++++ .../charts/zookeeper/templates/configmap.yaml | 17 + .../zookeeper/templates/extra-list.yaml | 4 + .../zookeeper/templates/metrics-svc.yaml | 29 + .../zookeeper/templates/networkpolicy.yaml | 41 + .../charts/zookeeper/templates/pdb.yaml | 26 + .../zookeeper/templates/prometheusrule.yaml | 27 + .../templates/scripts-configmap.yaml | 98 ++ .../charts/zookeeper/templates/secrets.yaml | 77 ++ .../zookeeper/templates/serviceaccount.yaml | 21 + .../zookeeper/templates/servicemonitor.yaml | 53 ++ .../zookeeper/templates/statefulset.yaml | 542 +++++++++++ .../zookeeper/templates/svc-headless.yaml | 42 + .../charts/zookeeper/templates/svc.yaml | 71 ++ .../zookeeper/templates/tls-secrets.yaml | 55 ++ .../nifi-cluster/charts/zookeeper/values.yaml | 874 ++++++++++++++++++ helm/nifi-cluster/config/logback.xml | 205 ++++ helm/nifi-cluster/templates/NOTES.txt | 8 + helm/nifi-cluster/templates/_helpers.tpl | 51 + .../templates/extra-manifests.yaml | 4 + .../templates/horizontal-pod-autoscaler.yaml | 26 + helm/nifi-cluster/templates/ingress.yaml | 60 ++ helm/nifi-cluster/templates/log-flow.yaml | 12 + helm/nifi-cluster/templates/nifi-cluster.yaml | 127 +++ .../templates/nifi-config-sc.yaml | 18 + .../nifi-cluster/templates/nifi-dataflow.yaml | 26 + .../templates/nifi-node-group-autoscaler.yaml | 23 + .../templates/nifi-parameter-context.yaml | 19 + .../templates/nifi-registry-client.yaml | 16 + .../templates/nifi-user-group.yaml | 15 + helm/nifi-cluster/templates/nifi-user.yaml | 27 + .../templates/service-monitor.yaml | 19 + .../templates/tests/test-connection.yaml | 15 + .../nifi-cluster/update_chart_dependencies.sh | 4 + helm/nifi-cluster/values.yaml | 410 ++++++++ tools/publish_helm_github_packages.sh | 13 +- 72 files changed, 6083 insertions(+), 7 deletions(-) create mode 100644 helm/README.md create mode 100755 helm/generate_docs.sh create mode 100644 helm/nifi-cluster/.helmignore create mode 100644 helm/nifi-cluster/Chart.lock create mode 100644 helm/nifi-cluster/Chart.yaml create mode 100644 helm/nifi-cluster/README.md create mode 100644 helm/nifi-cluster/charts/zookeeper/.helmignore create mode 100644 helm/nifi-cluster/charts/zookeeper/Chart.lock create mode 100644 helm/nifi-cluster/charts/zookeeper/Chart.yaml create mode 100644 helm/nifi-cluster/charts/zookeeper/README.md create mode 100644 helm/nifi-cluster/charts/zookeeper/charts/common/.helmignore create mode 100644 helm/nifi-cluster/charts/zookeeper/charts/common/Chart.yaml create mode 100644 helm/nifi-cluster/charts/zookeeper/charts/common/README.md create mode 100644 helm/nifi-cluster/charts/zookeeper/charts/common/templates/_affinities.tpl create mode 100644 helm/nifi-cluster/charts/zookeeper/charts/common/templates/_capabilities.tpl create mode 100644 helm/nifi-cluster/charts/zookeeper/charts/common/templates/_errors.tpl create mode 100644 helm/nifi-cluster/charts/zookeeper/charts/common/templates/_images.tpl create mode 100644 helm/nifi-cluster/charts/zookeeper/charts/common/templates/_ingress.tpl create mode 100644 helm/nifi-cluster/charts/zookeeper/charts/common/templates/_labels.tpl create mode 100644 helm/nifi-cluster/charts/zookeeper/charts/common/templates/_names.tpl create mode 100644 helm/nifi-cluster/charts/zookeeper/charts/common/templates/_secrets.tpl create mode 100644 helm/nifi-cluster/charts/zookeeper/charts/common/templates/_storage.tpl create mode 100644 helm/nifi-cluster/charts/zookeeper/charts/common/templates/_tplvalues.tpl create mode 100644 helm/nifi-cluster/charts/zookeeper/charts/common/templates/_utils.tpl create mode 100644 helm/nifi-cluster/charts/zookeeper/charts/common/templates/_warnings.tpl create mode 100644 helm/nifi-cluster/charts/zookeeper/charts/common/templates/validations/_cassandra.tpl create mode 100644 helm/nifi-cluster/charts/zookeeper/charts/common/templates/validations/_mariadb.tpl create mode 100644 helm/nifi-cluster/charts/zookeeper/charts/common/templates/validations/_mongodb.tpl create mode 100644 helm/nifi-cluster/charts/zookeeper/charts/common/templates/validations/_mysql.tpl create mode 100644 helm/nifi-cluster/charts/zookeeper/charts/common/templates/validations/_postgresql.tpl create mode 100644 helm/nifi-cluster/charts/zookeeper/charts/common/templates/validations/_redis.tpl create mode 100644 helm/nifi-cluster/charts/zookeeper/charts/common/templates/validations/_validations.tpl create mode 100644 helm/nifi-cluster/charts/zookeeper/charts/common/values.yaml create mode 100644 helm/nifi-cluster/charts/zookeeper/templates/NOTES.txt create mode 100644 helm/nifi-cluster/charts/zookeeper/templates/_helpers.tpl create mode 100644 helm/nifi-cluster/charts/zookeeper/templates/configmap.yaml create mode 100644 helm/nifi-cluster/charts/zookeeper/templates/extra-list.yaml create mode 100644 helm/nifi-cluster/charts/zookeeper/templates/metrics-svc.yaml create mode 100644 helm/nifi-cluster/charts/zookeeper/templates/networkpolicy.yaml create mode 100644 helm/nifi-cluster/charts/zookeeper/templates/pdb.yaml create mode 100644 helm/nifi-cluster/charts/zookeeper/templates/prometheusrule.yaml create mode 100644 helm/nifi-cluster/charts/zookeeper/templates/scripts-configmap.yaml create mode 100644 helm/nifi-cluster/charts/zookeeper/templates/secrets.yaml create mode 100644 helm/nifi-cluster/charts/zookeeper/templates/serviceaccount.yaml create mode 100644 helm/nifi-cluster/charts/zookeeper/templates/servicemonitor.yaml create mode 100644 helm/nifi-cluster/charts/zookeeper/templates/statefulset.yaml create mode 100644 helm/nifi-cluster/charts/zookeeper/templates/svc-headless.yaml create mode 100644 helm/nifi-cluster/charts/zookeeper/templates/svc.yaml create mode 100644 helm/nifi-cluster/charts/zookeeper/templates/tls-secrets.yaml create mode 100644 helm/nifi-cluster/charts/zookeeper/values.yaml create mode 100644 helm/nifi-cluster/config/logback.xml create mode 100644 helm/nifi-cluster/templates/NOTES.txt create mode 100644 helm/nifi-cluster/templates/_helpers.tpl create mode 100644 helm/nifi-cluster/templates/extra-manifests.yaml create mode 100644 helm/nifi-cluster/templates/horizontal-pod-autoscaler.yaml create mode 100644 helm/nifi-cluster/templates/ingress.yaml create mode 100644 helm/nifi-cluster/templates/log-flow.yaml create mode 100644 helm/nifi-cluster/templates/nifi-cluster.yaml create mode 100644 helm/nifi-cluster/templates/nifi-config-sc.yaml create mode 100644 helm/nifi-cluster/templates/nifi-dataflow.yaml create mode 100644 helm/nifi-cluster/templates/nifi-node-group-autoscaler.yaml create mode 100644 helm/nifi-cluster/templates/nifi-parameter-context.yaml create mode 100644 helm/nifi-cluster/templates/nifi-registry-client.yaml create mode 100644 helm/nifi-cluster/templates/nifi-user-group.yaml create mode 100644 helm/nifi-cluster/templates/nifi-user.yaml create mode 100644 helm/nifi-cluster/templates/service-monitor.yaml create mode 100644 helm/nifi-cluster/templates/tests/test-connection.yaml create mode 100755 helm/nifi-cluster/update_chart_dependencies.sh create mode 100644 helm/nifi-cluster/values.yaml diff --git a/CHANGELOG.md b/CHANGELOG.md index d5a927ff07..eaf4209cb8 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,8 @@ ### Added - [PR #244](https://github.com/konpyutaika/nifikop/pull/244) - **[Operator]** Updated the go version in nifikop to 1.20. +- [PR #141](https://github.com/konpyutaika/nifikop/pull/141) - **[Helm Chart]** Added nifi-cluster helm chart. + ### Changed ### Fixed Bugs diff --git a/Makefile b/Makefile index a138516dbe..f8060adb3b 100644 --- a/Makefile +++ b/Makefile @@ -233,17 +233,23 @@ bundle-build: .PHONY: helm-package helm-package: - @echo Packaging $(CHART_VERSION) +# package operator chart + @echo Packaging NiFiKop $(CHART_VERSION) ifdef CHART_VERSION echo $(CHART_VERSION) helm package --version $(CHART_VERSION) helm/nifikop + helm dependency update helm/nifi-cluster + helm package --version $(CHART_VERSION) helm/nifi-cluster else - CHART_VERSION=$(HELM_VERSION) - helm package helm/nifikop + CHART_VERSION=$(HELM_VERSION) helm package helm/nifikop + helm dependency update helm/nifi-cluster + CHART_VERSION=$(HELM_VERSION) helm package helm/nifi-cluster endif mv nifikop-$(CHART_VERSION).tgz $(HELM_TARGET_DIR) + mv nifi-cluster-$(CHART_VERSION).tgz $(HELM_TARGET_DIR) helm repo index $(HELM_TARGET_DIR)/ + # Push the docker image .PHONY: docker-push docker-push: diff --git a/helm/README.md b/helm/README.md new file mode 100644 index 0000000000..f9295726e3 --- /dev/null +++ b/helm/README.md @@ -0,0 +1,10 @@ +## Chart Documentation +Versioned chart `README.md` documentation is generated via the following command from the project root: + +``` +docker run --rm --volume "$(pwd):/helm-docs" -u $(id -u) jnorwood/helm-docs:latest +``` + +Or just run the `./generate_docs.sh` script + +source: https://github.com/norwoodj/helm-docs \ No newline at end of file diff --git a/helm/generate_docs.sh b/helm/generate_docs.sh new file mode 100755 index 0000000000..f25eeceec9 --- /dev/null +++ b/helm/generate_docs.sh @@ -0,0 +1,4 @@ +#!/bin/bash + +# only generate docs for nifi-cluster to avoid stomping on the existing nifikop chart docs +docker run --rm --volume "$(pwd)/nifi-cluster:/helm-docs" -u $(id -u) jnorwood/helm-docs:latest \ No newline at end of file diff --git a/helm/nifi-cluster/.helmignore b/helm/nifi-cluster/.helmignore new file mode 100644 index 0000000000..0e8a0eb36f --- /dev/null +++ b/helm/nifi-cluster/.helmignore @@ -0,0 +1,23 @@ +# Patterns to ignore when building packages. +# This supports shell glob matching, relative path matching, and +# negation (prefixed with !). Only one pattern per line. +.DS_Store +# Common VCS dirs +.git/ +.gitignore +.bzr/ +.bzrignore +.hg/ +.hgignore +.svn/ +# Common backup files +*.swp +*.bak +*.tmp +*.orig +*~ +# Various IDEs +.project +.idea/ +*.tmproj +.vscode/ diff --git a/helm/nifi-cluster/Chart.lock b/helm/nifi-cluster/Chart.lock new file mode 100644 index 0000000000..2a4bdfe1c4 --- /dev/null +++ b/helm/nifi-cluster/Chart.lock @@ -0,0 +1,6 @@ +dependencies: +- name: zookeeper + repository: https://charts.bitnami.com/bitnami + version: 10.2.5 +digest: sha256:74a2e779d9bc5f1d6d4bc965f4a6585278f0bff332fc0ca070b12c48effaf29c +generated: "2022-12-01T08:46:27.417633Z" diff --git a/helm/nifi-cluster/Chart.yaml b/helm/nifi-cluster/Chart.yaml new file mode 100644 index 0000000000..2dab4454ed --- /dev/null +++ b/helm/nifi-cluster/Chart.yaml @@ -0,0 +1,36 @@ +apiVersion: v2 +name: nifi-cluster +description: A Helm chart for deploying NiFi clusters in Kubernetes +home: https://github.com/konpyutaika/nifikop +sources: + - https://github.com/konpyutaika/nifikop + +keywords: + - nifi + - nifikop + - data + - nifi-cluster + +dependencies: + - name: zookeeper + version: 10.2.5 + repository: https://charts.bitnami.com/bitnami + condition: zookeeper.enabled + +# A chart can be either an 'application' or a 'library' chart. +# +# Application charts are a collection of templates that can be packaged into versioned archives +# to be deployed. +# +# Library charts provide useful utilities or functions for the chart developer. They're included as +# a dependency of application charts to inject those utilities and functions into the rendering +# pipeline. Library charts do not define any templates and therefore cannot be deployed. +type: application + +# This is the chart version. This version number should be incremented each time you make changes +# to the chart and its templates, including the app version. +# Versions are expected to follow Semantic Versioning (https://semver.org/) +version: 1.0.0 + +# This is the NiFi version to be deployed +appVersion: "1.19.0" diff --git a/helm/nifi-cluster/README.md b/helm/nifi-cluster/README.md new file mode 100644 index 0000000000..4853b842d3 --- /dev/null +++ b/helm/nifi-cluster/README.md @@ -0,0 +1,86 @@ +# nifi-cluster + +![Version: 1.0.0](https://img.shields.io/badge/Version-1.0.0-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: 1.19.0](https://img.shields.io/badge/AppVersion-1.19.0-informational?style=flat-square) + +A Helm chart for deploying NiFi clusters in Kubernetes + +**Homepage:** + +## Source Code + +* + +## Requirements + +| Repository | Name | Version | +|------------|------|---------| +| https://charts.bitnami.com/bitnami | zookeeper | 10.2.5 | + +## Values + +| Key | Type | Default | Description | +|-----|------|---------|-------------| +| cluster.additionalSharedEnvs | list | `[]` | list of additional environment variables to attach to all init containers and the nifi container https://konpyutaika.github.io/nifikop/docs/5_references/1_nifi_cluster/2_read_only_config#readonlyconfig | +| cluster.bootstrapProperties | object | `{"nifiJvmMemory":"512m","overrideConfigs":"java.arg.4=-Djava.net.preferIPv4Stack=true\njava.arg.log4shell=-Dlog4j2.formatMsgNoLookups=true\n"}` | You can override individual properties in config/bootstrap.properties https://nifi.apache.org/docs/nifi-docs/html/administration-guide.html#bootstrap_properties | +| cluster.disruptionBudget | object | `{}` | see https://konpyutaika.github.io/nifikop/docs/5_references/1_nifi_cluster/1_nifi_cluster#disruptionbudget | +| cluster.externalServices[0].metadata.annotations | object | `{}` | | +| cluster.externalServices[0].metadata.labels | object | `{}` | | +| cluster.externalServices[0].name | string | `"nifi-cluster-ip"` | | +| cluster.externalServices[0].spec.portConfigs[0].internalListenerName | string | `"http"` | | +| cluster.externalServices[0].spec.portConfigs[0].port | int | `8080` | | +| cluster.externalServices[0].spec.type | string | `"ClusterIP"` | | +| cluster.fullnameOverride | string | `""` | | +| cluster.image.repository | string | `"apache/nifi"` | | +| cluster.image.tag | string | `""` | Only set this if you want to override the chart AppVersion | +| cluster.initContainerImage.repository | string | `"busybox"` | | +| cluster.initContainerImage.tag | string | `"latest"` | | +| cluster.initContainers | list | `[]` | list of init containers to run prior to the deployment | +| cluster.ldapConfiguration | object | `{}` | see https://konpyutaika.github.io/nifikop/docs/5_references/1_nifi_cluster/1_nifi_cluster#ldapconfiguration | +| cluster.listenersConfig | object | `{"internalListeners":[{"containerPort":8080,"name":"http","type":"http"},{"containerPort":6007,"name":"cluster","type":"cluster"},{"containerPort":10000,"name":"s2s","type":"s2s"},{"containerPort":9090,"name":"prometheus","type":"prometheus"}],"sslSecrets":null}` | https://konpyutaika.github.io/nifikop/docs/5_references/1_nifi_cluster/6_listeners_config | +| cluster.logbackConfig.configPath | string | `"config/logback.xml"` | | +| cluster.logbackConfig.replaceConfigMap | object | `{}` | A ConfigMap ref to override the default logback configuration see https://konpyutaika.github.io/nifikop/docs/5_references/1_nifi_cluster/2_read_only_config#logbackconfig | +| cluster.logbackConfig.replaceSecretConfig | object | `{}` | A Secret ref to override the default logback configuration see https://konpyutaika.github.io/nifikop/docs/5_references/1_nifi_cluster/2_read_only_config#logbackconfig | +| cluster.managedAdminUsers | list | `[]` | see https://konpyutaika.github.io/nifikop/docs/5_references/1_nifi_cluster/1_nifi_cluster#managedusers | +| cluster.managedReaderUsers | list | `[]` | see https://konpyutaika.github.io/nifikop/docs/5_references/1_nifi_cluster/1_nifi_cluster#managedusers | +| cluster.maximumEventDrivenThreadCount | int | `10` | MaximumEventDrivenThreadCount defines the maximum number of threads for timer driven processors available to the system. This is a feature enabled by the following PR and should not be used unless you're running nifkop with this PR applied: https://github.com/Orange-OpenSource/nifikop/pull/184 | +| cluster.maximumTimerDrivenThreadCount | int | `10` | MaximumTimerDrivenThreadCount defines the maximum number of threads for timer driven processors available to the system. | +| cluster.nameOverride | string | `"nifi-cluster"` | the full name of the cluster. This is used to set a portion of the name of various nifikop resources | +| cluster.nifiProperties | object | `{"needClientAuth":false,"overrideConfigs":"nifi.web.proxy.context.path=/nifi-cluster\n","webProxyHosts":""}` | You can override the individual properties via the overrideConfigs attribute. These will be provided to all pods via secrets. https://nifi.apache.org/docs/nifi-docs/html/administration-guide.html#system_properties | +| cluster.nifiProperties.needClientAuth | bool | `false` | Nifi security client auth | +| cluster.nifiProperties.webProxyHosts | string | `""` | A comma separated list of allowed HTTP Host header values to consider when NiFi is running securely and will be receiving requests to a different host[:port] than it is bound to. https://nifi.apache.org/docs/nifi-docs/html/administration-guide.html#web-properties | +| cluster.nodeConfigGroups | object | `{}` | see https://konpyutaika.github.io/nifikop/docs/5_references/1_nifi_cluster/3_node_config | +| cluster.nodes | list | `[{"id":1,"nodeConfigGroup":"default-group"}]` | see https://konpyutaika.github.io/nifikop/docs/5_references/1_nifi_cluster/1_nifi_cluster#nificlusterspec | +| cluster.oneNifiNodePerNode | bool | `false` | whether or not to only deploy one nifi pod per node in this cluster | +| cluster.pod.annotations | object | `{}` | Annotations to apply to every pod | +| cluster.pod.hostAlises | list | `[]` | host aliases to assign to each pod | +| cluster.pod.labels | object | `{}` | Labels to apply to every pod | +| cluster.propagateLabels | bool | `true` | | +| cluster.retryDurationMinutes | int | `10` | The number of minutes the operator should wait for the cluster to be successfully deployed before retrying | +| cluster.service | object | `{"annotations":{},"headlessEnabled":true,"labels":{}}` | the template to use to create nodes. see https://konpyutaika.github.io/nifikop/docs/5_references/1_nifi_cluster/1_nifi_cluster#nificlusterspec nodeUserIdentityTemplate: n-%d | +| cluster.service.annotations | object | `{}` | Annotations to apply to each nifi service | +| cluster.service.headlessEnabled | bool | `true` | Whether or not to create a headless service | +| cluster.service.labels | object | `{}` | Labels to apply to each nifi service | +| cluster.zkAddress | string | `"nifi-cluster-zookeeper:2181"` | the hostname and port of the zookeeper service | +| cluster.zkPath | string | `"/cluster"` | the path in zookeeper to store this cluster's state | +| cluster.zookeeperProperties | object | `{"overrideConfigs":"initLimit=15\nautopurge.purgeInterval=24\nsyncLimit=5\ntickTime=2000\ndataDir=./state/zookeeper\nautopurge.snapRetainCount=30\n"}` | This is only for embedded zookeeper configuration. This is ignored if an zookeeper.enabled is true. | +| dataflows | list | `[{"bucketId":"","enabled":false,"flowId":"","flowVersion":1,"name":"My Special Dataflow","parameterContextRef":{"name":"default","namespace":"nifi"},"registryClientRef":{"name":"default","namespace":"nifi"},"skipInvalidComponent":true,"skipInvalidControllerService":true,"syncMode":"always","updateStrategy":"drain"}]` | Versioned dataflow configurations. This is used to configure versioned dataflows to be deployed to this nifi cluster. Any number may be configured. Note that a _registryClient_ and a _parameterContext_ must be enabled & present in order for a dataflow to be deployed to a cluster. See https://konpyutaika.github.io/nifikop/docs/5_references/5_nifi_dataflow | +| extraManifests | list | `[]` | A list of extra templated Kubernetes yamls to apply | +| ingress.annotations | object | `{}` | | +| ingress.className | string | `"nginx"` | | +| ingress.enabled | bool | `false` | | +| ingress.hosts | list | `[]` | | +| ingress.tls | list | `[]` | | +| logging.enabled | bool | `false` | Whether or not log aggregation via the banzai cloud logging operator is enabled. | +| logging.flow | object | `{"filters":[{"parser":{"parse":{"expression":"/^(?