apiVersion: v1
kind: ConfigMap
metadata:
  name: {{ template "fluent-bit-loki.fullname" . }}
  namespace: {{ .Release.Namespace }}
  labels:
    app: {{ template "fluent-bit-loki.name" . }}
    chart: {{ template "fluent-bit-loki.chart" . }}
    release: {{ .Release.Name }}
    heritage: {{ .Release.Service }}
data:
  fluent-bit.conf: |-
    [SERVICE]
        HTTP_Server    On
        HTTP_Listen    0.0.0.0
        HTTP_PORT      {{ .Values.config.port }}
        Flush          1
        Daemon         Off
        Log_Level      {{ .Values.config.loglevel }}
        Parsers_File   parsers.conf
    [INPUT]
        Name           tail
        Tag            kube.*
        Path           /var/log/containers/*.log
        Parser         docker
        DB             /run/fluent-bit/flb_kube.db
        Mem_Buf_Limit  5MB
        Refresh_Interval 10
    [INPUT]
        Name              systemd
        Tag               host.*
        Path              /var/log/journal
        Systemd_Filter    _SYSTEMD_UNIT=docker.service
        Systemd_Filter    _SYSTEMD_UNIT=kubelet.service
        Systemd_Filter    _SYSTEMD_UNIT=containerd.service
        Systemd_Filter    _SYSTEMD_UNIT=cloud-init.service
        DB                /run/fluent-bit/flb_kube.db
        Mem_Buf_Limit     5MB
        Parser        docker
    [FILTER]
        Name           kubernetes
        Match          kube.*
        Kube_URL       https://kubernetes.default.svc:443
        # only used for when have json format log
        Merge_Log Off
        K8S-Logging.Parser {{ .Values.config.k8sLoggingParser }}
    [Output]
        Name null
        Match *
    {{- range $extraOutput := .Values.config.extraOutputs }}
    [OUTPUT]
    {{- range $key,$value := $extraOutput }}
        {{ $key }} {{ $value }}
    {{- end }}
    {{- end }}
  parsers.conf: |-
    [PARSER]
        Name        docker
        Format      json
        Time_Key    time
        Time_Format %Y-%m-%dT%H:%M:%S.%L
    {{- range $parser:= .Values.config.parsers }}
    [PARSER]
    {{- range $key,$value := $parser }}
        {{ $key }} {{ $value }}
    {{- end }}
    {{- end }}

  labelmap.json: |-
    {{- .Values.config.labelMap | toPrettyJson | nindent 4}}

