{{- define "fluentd.install" -}}
---
apiVersion: v1
kind: ServiceAccount
metadata:
  name: fluentd
  namespace: {{ .Values.logging.namespace | default "btrix-admin" }}
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
  name: fluentd
rules:
- apiGroups:
  - ""
  resources:
  - pods
  - namespaces
  verbs:
  - get
  - list
  - watch
---
kind: ClusterRoleBinding
apiVersion: rbac.authorization.k8s.io/v1
metadata:
  name: fluentd
roleRef:
  kind: ClusterRole
  name: fluentd
  apiGroup: rbac.authorization.k8s.io
subjects:
- kind: ServiceAccount
  name: fluentd
  namespace: {{ .Values.logging.namespace | default "btrix-admin" }}
---
apiVersion: v1
kind: ConfigMap
metadata:
  name: fluentd-config
  namespace: {{ .Values.logging.namespace | default "btrix-admin" }}
  labels:
    k8s-app: fluentd-logging
data:
  fluent.conf: |
    @include "#{ENV['FLUENTD_SYSTEMD_CONF'] || 'systemd'}.conf"
    @include "#{ENV['FLUENTD_PROMETHEUS_CONF'] || 'prometheus'}.conf"
    @include kubernetes.conf
    @include conf.d/*.conf
    
      @type file
      path /var/log/fluentd/btrix.log
      time_slice_format %Y%m%d%H%M%S
      time_slice_wait 10m
      compress gzip
      
        @type json
      
      
        @type file
        path /var/log/fluentd/buffer
        flush_thread_count 2
        flush_interval 5s
        chunk_limit_size 1m
        queue_limit_length 64
        overflow_action block
      
      
      
        @type time
        timekey %Y%m%d%H%M
        # How often rotate a file. 14400 means 4 hour. default is 86400 seconds (1 day)
        interval 14400
        # How long to keep rotated files. 0 means forever. default is 7 days
        keep 3
      
    
---
apiVersion: apps/v1
kind: DaemonSet
metadata:
  name: fluentd
  namespace: {{ .Values.logging.namespace | default "btrix-admin" }}
  labels:
    k8s-app: fluentd-logging
    version: v1
spec:
  selector:
    matchLabels:
      k8s-app: fluentd-logging
      version: v1
  template:
    metadata:
      labels:
        k8s-app: fluentd-logging
        version: v1
    spec:
      serviceAccount: fluentd
      serviceAccountName: fluentd
      tolerations:
      - key: node-role.kubernetes.io/control-plane
        effect: NoSchedule
      - key: node-role.kubernetes.io/master
        effect: NoSchedule
      - key: "nodeType"
        operator: "Equal"
        value: "crawling"
        effect: "NoSchedule"
      containers:
      - name: fluentd
        image: fluent/fluentd-kubernetes-daemonset:v1-debian-elasticsearch
        env:
          - name: K8S_NODE_NAME
            valueFrom:
              fieldRef:
                fieldPath: spec.nodeName
          {{ if not .Values.logging.fileMode }}
          - name:  FLUENT_ELASTICSEARCH_HOST
            value: "btrixlog-es-http.{{ .Values.logging.namespace | default "btrix-admin" }}.svc.cluster.local"
          - name:  FLUENT_ELASTICSEARCH_PORT
            value: "9200"
          - name: FLUENT_ELASTICSEARCH_SCHEME
            value: "https"
          # Option to configure elasticsearch plugin with self signed certs
          # ================================================================
          - name: FLUENT_ELASTICSEARCH_SSL_VERIFY
            value: "false"
          # Option to configure elasticsearch plugin with tls
          # ================================================================
          - name: FLUENT_ELASTICSEARCH_SSL_VERSION
            value: "TLSv1_2"
          - name: FLUENTD_SYSTEMD_CONF
            value: 'disable'
          # X-Pack Authentication
          # =====================
          - name: FLUENT_ELASTICSEARCH_USER
            value: "elastic"
          - name: FLUENT_ELASTICSEARCH_PASSWORD
            valueFrom:
              secretKeyRef:
                name: btrixlog-es-elastic-user
                key: elastic
          {{ end }}
          # =====================
          - name: FLUENT_CONTAINER_TAIL_EXCLUDE_PATH
            value: /var/log/containers/fluent*
          {{ if not .Values.logging.kibana.local }}
          - name: FLUENT_CONTAINER_TAIL_PARSER_TYPE
            value: /^(?