Enabled with `logging.fileMode`: true - disables elasticsearch, kibana and ingress - only enables fluentd to write logs in the node's volume - lightweight logging into files (in JSON format and compressed in gzip) - log file rotation (default: rotating files every 4 hours, retention 3 days)
		
			
				
	
	
		
			199 lines
		
	
	
		
			6.0 KiB
		
	
	
	
		
			YAML
		
	
	
	
	
	
			
		
		
	
	
			199 lines
		
	
	
		
			6.0 KiB
		
	
	
	
		
			YAML
		
	
	
	
	
	
| {{- 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
 | |
| 
 | |
|     <match **>
 | |
|       @type file
 | |
|       path /var/log/fluentd/btrix.log
 | |
|       time_slice_format %Y%m%d%H%M%S
 | |
|       time_slice_wait 10m
 | |
|       compress gzip
 | |
| 
 | |
|       <format>
 | |
|         @type json
 | |
|       </format>
 | |
| 
 | |
|       <buffer>
 | |
|         @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
 | |
|       </buffer>
 | |
|       
 | |
|       <rotate>
 | |
|         @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
 | |
|       </rotate>
 | |
|     </match>    
 | |
| ---
 | |
| 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: /^(?<time>.+) (?<stream>stdout|stderr)( (?<logtag>.))? (?<log>.*)$/
 | |
|           {{ end }}
 | |
|         resources:
 | |
|           limits:
 | |
|             cpu: {{ .Values.logging.fluentd.cpu | default "60m" }}
 | |
|             memory: {{ .Values.logging.fluentd.mem | default "200Mi" }}
 | |
|           requests:
 | |
|             cpu: {{ .Values.logging.fluentd.cpu | default "60m" }}
 | |
|             memory: {{ .Values.logging.fluentd.mem | default "200Mi" }}
 | |
|         volumeMounts:
 | |
|         {{ if .Values.logging.fileMode }}
 | |
|         - name: config-volume
 | |
|           mountPath: /fluentd/etc/fluent.conf
 | |
|           subPath: fluent.conf
 | |
|           readOnly: true
 | |
|         {{ end }}
 | |
|         - name: varlog
 | |
|           mountPath: {{ .Values.logging.fluentd.logVar | default "/var/log" }}
 | |
|         # When actual pod logs in /var/lib/docker/containers, the following lines should be used.
 | |
|         - name: dockercontainerlogdirectory
 | |
|           mountPath: {{ .Values.logging.fluentd.logPathContainers | default "/var/lib/docker/containers" }}
 | |
|           readOnly: true
 | |
|         # When actual pod logs in /var/log/pods, the following lines should be used.
 | |
|         - name: dockercontainerlogdirectory2
 | |
|           mountPath: /var/log/pods
 | |
|           readOnly: true
 | |
|       terminationGracePeriodSeconds: 30
 | |
|       volumes:
 | |
|       {{ if .Values.logging.fileMode }}
 | |
|       - name: config-volume
 | |
|         configMap:
 | |
|           name: fluentd-config      
 | |
|       {{ end }}
 | |
|       - name: varlog
 | |
|         hostPath:
 | |
|           path: {{ .Values.logging.fluentd.logVar | default "/var/log" }}
 | |
|       # When actual pod logs in /var/lib/docker/containers, the following lines should be used.
 | |
|       - name: dockercontainerlogdirectory
 | |
|         hostPath:
 | |
|           path: {{ .Values.logging.fluentd.logPathContainers | default "/var/lib/docker/containers" }}
 | |
|       # When actual pod logs in /var/log/pods, the following lines should be used.
 | |
|       - name: dockercontainerlogdirectory2
 | |
|         hostPath:
 | |
|           path: /var/log/pods
 | |
| {{- end -}} |