mirror of
https://github.com/jpetazzo/container.training.git
synced 2026-02-14 17:49:59 +00:00
169 lines
4.0 KiB
YAML
169 lines
4.0 KiB
YAML
---
|
|
apiVersion: v1
|
|
kind: ConfigMap
|
|
metadata:
|
|
name: filebeat-config
|
|
namespace: eck-demo
|
|
labels:
|
|
k8s-app: filebeat
|
|
data:
|
|
filebeat.yml: |-
|
|
filebeat.inputs:
|
|
- type: container
|
|
paths:
|
|
- /var/log/containers/*.log
|
|
processors:
|
|
- add_kubernetes_metadata:
|
|
host: ${NODE_NAME}
|
|
matchers:
|
|
- logs_path:
|
|
logs_path: "/var/log/containers/"
|
|
|
|
# To enable hints based autodiscover, remove `filebeat.inputs` configuration and uncomment this:
|
|
#filebeat.autodiscover:
|
|
# providers:
|
|
# - type: kubernetes
|
|
# node: ${NODE_NAME}
|
|
# hints.enabled: true
|
|
# hints.default_config:
|
|
# type: container
|
|
# paths:
|
|
# - /var/log/containers/*${data.kubernetes.container.id}.log
|
|
|
|
processors:
|
|
- add_cloud_metadata:
|
|
- add_host_metadata:
|
|
|
|
cloud.id: ${ELASTIC_CLOUD_ID}
|
|
cloud.auth: ${ELASTIC_CLOUD_AUTH}
|
|
|
|
output.elasticsearch:
|
|
hosts: ['${ELASTICSEARCH_HOST:elasticsearch}:${ELASTICSEARCH_PORT:9200}']
|
|
username: ${ELASTICSEARCH_USERNAME}
|
|
password: ${ELASTICSEARCH_PASSWORD}
|
|
---
|
|
apiVersion: apps/v1
|
|
kind: DaemonSet
|
|
metadata:
|
|
name: filebeat
|
|
namespace: eck-demo
|
|
labels:
|
|
k8s-app: filebeat
|
|
spec:
|
|
selector:
|
|
matchLabels:
|
|
k8s-app: filebeat
|
|
template:
|
|
metadata:
|
|
labels:
|
|
k8s-app: filebeat
|
|
spec:
|
|
serviceAccountName: filebeat
|
|
terminationGracePeriodSeconds: 30
|
|
hostNetwork: true
|
|
dnsPolicy: ClusterFirstWithHostNet
|
|
containers:
|
|
- name: filebeat
|
|
image: docker.elastic.co/beats/filebeat:7.5.1
|
|
args: [
|
|
"-c", "/etc/filebeat.yml",
|
|
"-e",
|
|
]
|
|
env:
|
|
- name: ELASTICSEARCH_HOST
|
|
value: demo-es-http
|
|
- name: ELASTICSEARCH_PORT
|
|
value: "9200"
|
|
- name: ELASTICSEARCH_USERNAME
|
|
value: elastic
|
|
- name: ELASTICSEARCH_PASSWORD
|
|
valueFrom:
|
|
secretKeyRef:
|
|
name: demo-es-elastic-user
|
|
key: elastic
|
|
- name: ELASTIC_CLOUD_ID
|
|
value:
|
|
- name: ELASTIC_CLOUD_AUTH
|
|
value:
|
|
- name: NODE_NAME
|
|
valueFrom:
|
|
fieldRef:
|
|
fieldPath: spec.nodeName
|
|
securityContext:
|
|
runAsUser: 0
|
|
# If using Red Hat OpenShift uncomment this:
|
|
#privileged: true
|
|
resources:
|
|
limits:
|
|
memory: 200Mi
|
|
requests:
|
|
cpu: 100m
|
|
memory: 100Mi
|
|
volumeMounts:
|
|
- name: config
|
|
mountPath: /etc/filebeat.yml
|
|
readOnly: true
|
|
subPath: filebeat.yml
|
|
- name: data
|
|
mountPath: /usr/share/filebeat/data
|
|
- name: varlibdockercontainers
|
|
mountPath: /var/lib/docker/containers
|
|
readOnly: true
|
|
- name: varlog
|
|
mountPath: /var/log
|
|
readOnly: true
|
|
volumes:
|
|
- name: config
|
|
configMap:
|
|
defaultMode: 0600
|
|
name: filebeat-config
|
|
- name: varlibdockercontainers
|
|
hostPath:
|
|
path: /var/lib/docker/containers
|
|
- name: varlog
|
|
hostPath:
|
|
path: /var/log
|
|
# data folder stores a registry of read status for all files, so we don't send everything again on a Filebeat pod restart
|
|
- name: data
|
|
hostPath:
|
|
path: /var/lib/filebeat-data
|
|
type: DirectoryOrCreate
|
|
---
|
|
apiVersion: rbac.authorization.k8s.io/v1
|
|
kind: ClusterRoleBinding
|
|
metadata:
|
|
name: filebeat
|
|
subjects:
|
|
- kind: ServiceAccount
|
|
name: filebeat
|
|
namespace: eck-demo
|
|
roleRef:
|
|
kind: ClusterRole
|
|
name: filebeat
|
|
apiGroup: rbac.authorization.k8s.io
|
|
---
|
|
apiVersion: rbac.authorization.k8s.io/v1
|
|
kind: ClusterRole
|
|
metadata:
|
|
name: filebeat
|
|
labels:
|
|
k8s-app: filebeat
|
|
rules:
|
|
- apiGroups: [""] # "" indicates the core API group
|
|
resources:
|
|
- namespaces
|
|
- pods
|
|
verbs:
|
|
- get
|
|
- watch
|
|
- list
|
|
---
|
|
apiVersion: v1
|
|
kind: ServiceAccount
|
|
metadata:
|
|
name: filebeat
|
|
namespace: eck-demo
|
|
labels:
|
|
k8s-app: filebeat
|
|
---
|