Another way to keep your custom file’s content tailed aside of the host file tailer
service, is to configure and use the file tailer webhook
service.
While the containers of the host file tailers
run in a separated pod, file tailer webhook
uses a different approach: if a pod has a specific annotation, the webhook injects a sidecar container for every tailed file into the pod.
Triggering the webhook 🔗︎
File tailer webhook
is based on a Mutating Admission Webhook
which gets called every time when a pod starts, and will be triggered when a pod specification contains an annotation with the sidecar.logging-extensions.banzaicloud.io/tail
key. The value of the annotation is the file (including path) you want to tail. For example:
apiVersion: v1
kind: Pod
metadata:
name: test-pod
annotations: {"sidecar.logging-extensions.banzaicloud.io/tail": "/var/log/date"}
spec:
containers:
- image: debian
name: sample-container
command: ["/bin/sh", "-c"]
args:
- while true; do
date >> /var/log/date;
sleep 1;
done
- image: debian
name: sample-container2
...
To tail multiple files, add only one annotation, and separate the filenames with commas, for example:
...
metadata:
name: test-pod
annotations: {"sidecar.logging-extensions.banzaicloud.io/tail": "/var/log/date,/var/log/mycustomfile"}
spec:
...
Note: if the pod contains multiple containers, see Multi-container pods.
About the File Tailer Webhook annotation 🔗︎
The basic format of a file tailer webhook
annotation is the following:
Key | sidecar.logging-extensions.banzaicloud.io/tail |
Value | Files to be tailed separated by commas |
For example:
...
metadata:
name: test-pod
annotations: {"sidecar.logging-extensions.banzaicloud.io/tail": "/var/log/date,/var/log/mycustomfile"}
spec:
...
Multi-container pods 🔗︎
In some cases you have multiple containers in your pod and you want to distinguish which file annotation belongs to which container. You can order every file annotations to particular container by prefixing the annotation with a ${ContainerName}:
container key. For example:
...
metadata:
name: test-pod
annotations: {"sidecar.logging-extensions.banzaicloud.io/tail": "sample-container:/var/log/date,sample-container2:/var/log/anotherfile,/var/log/mycustomfile,foobarbaz:/foo/bar/baz"}
spec:
...
CAUTION:
- Annotations without containername prefix: the file gets tailed on the default container (container 0)
- Annotations with invalid containername: file tailer annotation gets discarded
Annotation | Explanation |
---|---|
sample-container:/var/log/date | tails file /var/log/date in sample-container |
sample-container2:/var/log/anotherfile | tails file /var/log/anotherfile in sample-container2 |
/var/log/mycustomfile | tails file /var/log/mycustomfile in default container (sample-container) |
foobarbaz:/foo/bar/baz | will be discarded due to non-existing container name |