# ⚠️ Repo Archive Notice As of Nov 13, 2020, charts in this repo will no longer be updated. For more information, see the Helm Charts [Deprecation and Archive Notice](https://github.com/helm/charts#%EF%B8%8F-deprecation-and-archive-notice), and [Update](https://helm.sh/blog/charts-repo-deprecation/). # Fluent-Bit Chart [Fluent Bit](http://fluentbit.io/) is an open source and multi-platform Log Forwarder. ## DEPRECATION NOTICE This chart is deprecated and no longer supported. ## Chart Details This chart will do the following: * Install a configmap for Fluent Bit * Install a daemonset that provisions Fluent Bit [per-host architecture] ## Installing the Chart To install the chart with the release name `my-release`: ```bash $ helm install --name my-release stable/fluent-bit ``` When installing this chart on [Minikube](https://kubernetes.io/docs/getting-started-guides/minikube/), it's required to specify that so the DaemonSet will be able to mount the log files properly, make sure to append the _--set on\_minikube=true_ option at the end of the _helm_ command, e.g: ```bash $ helm install --name my-release stable/fluent-bit --set on_minikube=true ``` ## Configuration The following table lists the configurable parameters of the Fluent-Bit chart and the default values. | Parameter | Description | Default | | ----------------------- | ---------------------------------- | ----------------------- | | **Backend Selection** | | `backend.type` | Set the backend to which Fluent-Bit should flush the information it gathers | `forward` | | **Forward Backend** | | `backend.forward.host` | Target host where Fluent-Bit or Fluentd are listening for Forward messages | `fluentd` | | `backend.forward.port` | TCP Port of the target service | `24284` | | `backend.forward.shared_key` | A key string known by the remote Fluentd used for authorization. | `` | | `backend.forward.tls` | Enable or disable TLS support | `off` | | `backend.forward.tls_verify` | Force certificate validation | `on` | | `backend.forward.tls_debug` | Set TLS debug verbosity level. It accept the following values: 0-4 | `1` | | **ElasticSearch Backend** | | `backend.es.host` | IP address or hostname of the target Elasticsearch instance | `elasticsearch` | | `backend.es.port` | TCP port of the target Elasticsearch instance. | `9200` | | `backend.es.index` | Elastic Index name | `kubernetes_cluster` | | `backend.es.type` | Elastic Type name | `flb_type` | | `backend.es.retry_limit` | Max number of retries to attempt (False == no limit) | `False` | | `backend.es.time_key` | Elastic Time Key | `@timestamp` | | `backend.es.logstash_format` | Enable Logstash format compatibility. | `On` | | `backend.es.logstash_prefix` | Index Prefix. If Logstash_Prefix is equal to 'mydata' your index will become 'mydata-YYYY.MM.DD'. | `kubernetes_cluster` | | `backend.es.logstash_prefix_key` | Index Prefix key. When included, the value in the record that belongs to the key will be looked up and overwrite `Logstash_Prefix` for index generation. If `Logstash_Prefix_Key` = 'mydata' the index becomes 'mydata-YYYY.MM.DD'. | `` | | `backend.es.logstash_dateformat` | Time format (based on strftime) to generate the second part of the Index name. Fluent-bit by default use %Y.%m.%d | `` | | `backend.es.replace_dots` | Enable/Disable Replace_Dots option. | `On` | | `backend.es.http_user` | Optional username credential for Elastic X-Pack access. | `` | | `backend.es.http_passwd` | Password for user defined in HTTP_User. | `` | | `backend.es.http_passwd_secret` | Secret name for password for user defined in HTTP_User. | `` | | `backend.es.http_passwd_secret_key` | Secret key for password for user defined in HTTP_User. | `` | | `backend.es.tls` | Enable or disable TLS support | `off` | | `backend.es.tls_verify` | Force certificate validation | `on` | | `backend.es.tls_secret` | Existing secret storing TLS CA certificate for the Elastic instance. Specify if tls: on. Overrides `backend.es.tls_ca` | `` | | `backend.es.tls_secret_ca_key` | Existing secret key storing TLS CA certificate for the Elastic instance. Specify if tls: on. | `` | | `backend.es.tls_ca` | TLS CA certificate for the Elastic instance (in PEM format). Specify if tls: on. | `` | | `backend.es.tls_debug` | Set TLS debug verbosity level. It accept the following values: 0-4 | `1` | | **HTTP Backend** | | `backend.http.host` | IP address or hostname of the target HTTP Server | `127.0.0.1` | | `backend.http.port` | TCP port of the target HTTP Server | `80` | | `backend.http.uri` | Specify an optional HTTP URI for the target web server, e.g: /something | `"/"` | `backend.http.http_user` | Optional username credential for Basic Authentication. | `` | | `backend.http.http_passwd:` | Password for user defined in HTTP_User. | `` | | `backend.http.format` | Specify the data format to be used in the HTTP request body, by default it uses msgpack, optionally it can be set to json. | `msgpack` | | `backend.http.json_date_format` | Specify the format of the date. Supported formats are double and iso8601 | `double` | | `backend.http.headers` | HTTP Headers | `[]` | | `backend.http.tls` | Enable or disable TLS support | `off` | | `backend.http.tls_verify` | Force certificate validation | `on` | | `backend.http.tls_debug` | Set TLS debug verbosity level. It accept the following values: 0-4 | `1` | | **Splunk Backend** | | `backend.splunk.host` | IP address or hostname of the target Splunk Server | `127.0.0.1` | | `backend.splunk.port` | TCP port of the target Splunk Server | `8088` | | `backend.splunk.token` | Specify the Authentication Token for the HTTP Event Collector interface. | `` | | `backend.splunk.send_raw` | If enabled, record keys and values are set in the main map. | `off` | | `backend.splunk.tls` | Enable or disable TLS support | `on` | | `backend.splunk.tls_verify` | Force TLS certificate validation | `off` | | `backend.splunk.tls_debug` | Set TLS debug verbosity level. It accept the following values: 0-4 | `1` | | `backend.splunk.message_key` | Tag applied to all incoming logs | `kubernetes` | | **Stackdriver Backend** | | `backend.stackdriver.google_service_credentials` | Contents of a Google Cloud credentials JSON file. | `` | | `backend.stackdriver.service_account_email` | Account email associated to the service. Only available if no credentials file has been provided. | `` | | `backend.stackdriver.service_account_secret` | Private key content associated with the service account. Only available if no credentials file has been provided. | `` | | **Parsers** | | `parsers.enabled` | Enable custom parsers | `false` | | `parsers.regex` | List of regex parsers | `NULL` | | `parsers.json` | List of json parsers | `NULL` | | `parsers.logfmt` | List of logfmt parsers | `NULL` | | **General** | | `annotations` | Optional deamonset set annotations | `NULL` | | `audit.enable` | Enable collection of audit logs | `false` | | `audit.input.memBufLimit` | Specify Mem_Buf_Limit in tail input | `35mb` | | `audit.input.parser` | Specify Parser in tail input | `docker` | | `audit.input.tag` | Specify Tag in tail input | `audit.*` | | `audit.input.path` | Specify log file(s) through the use of common wildcards | `/var/log/kube-apiserver-audit.log` | | `audit.input.bufferChunkSize` | Specify Buffer_Chunk_Size in tail | `2MB` | | `audit.input.bufferMaxSize` | Specify Buffer_Max_Size in tail | `10MB` | | `audit.input.skipLongLines` | Specify Skip_Long_Lines in tail | `On` | | `audit.input.key` | Specify Key in tail | `kubernetes-audit` | | `podAnnotations` | Optional pod annotations | `NULL` | | `podLabels` | Optional pod labels | `NULL` | | `fullConfigMap` | User has provided entire config (parsers + system) | `false` | | `existingConfigMap` | ConfigMap override | `` | | `extraEntries.input` | Extra entries for existing [INPUT] section | `` | | `extraEntries.filter` | Extra entries for existing [FILTER] section | `` | | `extraEntries.output` | Extra entries for existing [OUPUT] section | `` | | `extraEntries.service` | Extra entries for existing [SERVICE] section | `` | | `extraPorts` | List of extra ports | | | `extraVolumeMounts` | Mount an extra volume, required to mount ssl certificates when elasticsearch has tls enabled | | | `extraVolume` | Extra volume | | | `initContainers` | Init containers | `{}` | | `service.flush` | Interval to flush output (seconds) | `1` | | `service.logLevel` | Diagnostic level (error/warning/info/debug/trace) | `info` | | `filter.enableExclude` | Enable the use of monitoring for a pod annotation of `fluentbit.io/exclude: true`. If present, discard logs from that pod. | `true` | | `filter.enableParser` | Enable the use of monitoring for a pod annotation of `fluentbit.io/parser: parser_name`. parser_name must be the name of a parser contained within parsers.conf | `true` | | `filter.kubeURL` | Optional custom configmaps | `https://kubernetes.default.svc:443` | | `filter.kubeCAFile` | Optional custom configmaps | `/var/run/secrets/kubernetes.io/serviceaccount/ca.crt` | | `filter.kubeTokenFile` | Optional custom configmaps | `/var/run/secrets/kubernetes.io/serviceaccount/token` | | `filter.kubeTag` | Optional top-level tag for matching in filter | `kube` | | `filter.kubeTagPrefix` | Optional tag prefix used by Tail | `kube.var.log.containers.` | | `filter.mergeJSONLog` | If the log field content is a JSON string map, append the map fields as part of the log structure | `true` | | `filter.mergeLogKey` | If set, append the processed log keys under a new root key specified by this variable. | `nil` | | `filter.useJournal` | If true, the filter reads logs coming in Journald format. | `false` | | `image.fluent_bit.repository` | Image | `fluent/fluent-bit` | | `image.fluent_bit.tag` | Image tag | `1.3.7` | | `image.pullPolicy` | Image pull policy | `Always` | | `image.pullSecrets` | Image pull secrets | `nil` | | `nameOverride` | Override name of app | `nil` | | `fullnameOverride` | Override full name of app | `nil` | | `image.pullSecrets` | Specify image pull secrets | `nil` | | `input.tail.memBufLimit` | Specify Mem_Buf_Limit in tail input | `5MB` | | `input.tail.parser` | Specify Parser in tail input. | `docker` | | `input.tail.path` | Specify log file(s) through the use of common wildcards. | `/var/log/containers/*.log` | | `input.tail.ignore_older` | Ignores files that have been last modified before this time in seconds. Supports m,h,d (minutes, hours,days) syntax. | `` | | `input.tail.dockerMode` | Recombine split Docker log lines before passing them to the parser. | `false` | | `input.tail.dockerModeFlush` | Wait period time in seconds to flush queued unfinished split lines in docker mode. | `4` | | `input.tail.exclude_path` | Exclude paths from tail input (`Exclude_Path` configuration parameter). | `` | | `input.systemd.enabled` | [Enable systemd input](https://docs.fluentbit.io/manual/input/systemd) | `false` | | `input.systemd.filters.systemdUnit` | Please see https://docs.fluentbit.io/manual/input/systemd | `[docker.service, kubelet.service`, `node-problem-detector.service]` | | `input.systemd.maxEntries` | Please see https://docs.fluentbit.io/manual/input/systemd | `1000` | | `input.systemd.readFromTail` | Please see https://docs.fluentbit.io/manual/input/systemd | `true` | | `input.systemd.stripUnderscores` | Please see https://docs.fluentbit.io/manual/input/systemd | `false` | | `input.systemd.tag` | Please see https://docs.fluentbit.io/manual/input/systemd | `host.*` | | `rbac.create` | Specifies whether RBAC resources should be created. | `true` | | `rbac.pspEnabled` | Specifies whether a PodSecurityPolicy should be created. | `false` | | `serviceAccount.create` | Specifies whether a ServiceAccount should be created. | `true` | | `serviceAccount.name` | The name of the ServiceAccount to use. | `NULL` | | `serviceAccount.annotations` | Annotations to add to the service account. | `{}` | | `rawConfig` | Raw contents of fluent-bit.conf | `@INCLUDE fluent-bit-service.conf`
`@INCLUDE fluent-bit-input.conf`
`@INCLUDE fluent-bit-filter.conf`
` @INCLUDE fluent-bit-output.conf` | | `resources` | Pod resource requests & limits | `{}` | | `securityContext` | [Security settings for a container](https://kubernetes.io/docs/concepts/policy/security-context) | `{}` | | `podSecurityContext` | [Security settings for a pod](https://kubernetes.io/docs/concepts/policy/security-context) | `{}` | | `hostNetwork` | Use host's network | `false` | | `dnsPolicy` | Specifies the dnsPolicy to use | `ClusterFirst` | | `dnsConfig` | Specifies the custom dnsConfig to use | `NULL` | | `priorityClassName` | Specifies the priorityClassName to use | `NULL` | | `tolerations` | Optional daemonset tolerations | `NULL` | | `nodeSelector` | Node labels for fluent-bit pod assignment | `NULL` | | `affinity` | Expressions for affinity | `NULL` | | `metrics.enabled` | Specifies whether a service for metrics should be exposed | `false` | | `metrics.service.annotations` | Optional metrics service annotations | `NULL` | | `metrics.service.labels` | Additional labels for the fluent-bit metrics service definition, specified as a map. | None | | `metrics.service.port` | Port on where metrics should be exposed | `2020` | | `metrics.service.type` | Service type for metrics | `ClusterIP` | | `metrics.serviceMonitor.enabled` | Set this to `true` to create ServiceMonitor for Prometheus operator | `false` | | `metrics.serviceMonitor.additionalLabels` | Additional labels that can be used so ServiceMonitor will be discovered by Prometheus | `{}` | | `metrics.serviceMonitor.namespace` | Optional namespace in which to create ServiceMonitor | `nil` | | `metrics.serviceMonitor.interval` | Scrape interval. If not set, the Prometheus default scrape interval is used | `nil` | | `metrics.serviceMonitor.scrapeTimeout` | Scrape timeout. If not set, the Prometheus default scrape timeout is used | `nil` | | `trackOffsets` | Specify whether to track the file offsets for tailing docker logs. This allows fluent-bit to pick up where it left after pod restarts but requires access to a `hostPath` | `false` | | `testFramework.enabled` | Set `false` to disable tests | `true` | | `testFramework.image` | `test-framework` image repository | `dduportal/bats` | | `testFramework.pullSecrets` | `test-framework` image pull secrets | `nil` | | `testFramework.tag` | `test-framework` image tag | `0.4.0` | | `testFramework.curlJq.image` | Image repository for curl/jq tests | `dwdraju/alpine-curl-jq` | | `testFramework.curlJq.tag` | Image tag for curl/jq tests | `latest` | | `testFramework.fluentd.image` | Image repository for fluentd tests | `fluent/fluentd` | | `testFramework.fluentd.tag` | Image tag for fluentd tests | `v1.4-debian-1` | Specify each parameter using the `--set key=value[,key=value]` argument to `helm install`. Alternatively, a YAML file that specifies the values for the parameters can be provided while installing the chart. For example, ```bash $ helm install --name my-release -f values.yaml stable/fluent-bit ``` > **Tip**: You can use the default [values.yaml](values.yaml) ## Upgrading ### From < 1.0.0 To >= 1.0.0 Values `extraInputs`, `extraFilters` and `extraOutputs` have been removed in version `1.0.0` of the fluent-bit chart. To add additional entries to the existing sections, please use the `extraEntries.input`, `extraEntries.filter` and `extraEntries.output` values. For entire sections, please use the `rawConfig` value, inserting blocks of text as desired. ### From < 1.8.0 to >= 1.8.0 Version `1.8.0` introduces the use of release name as full name if it contains the chart name(fluent-bit in this case). E.g. with a release name of `fluent-bit`, this renames the DaemonSet from `fluent-bit-fluent-bit` to `fluent-bit`. The suggested approach is to delete the release and reinstall it.