Fluentd is a popular open-source data collector. The Fluentd Helm chart automates the deployment and configuration of Fluentd in Kubernetes clusters.
Prerequisites
- A subscription to the Minimus images included in the chart
- A running Kubernetes cluster (v1.21 or higher is recommended)
kubectl installed and configured
- Helm v3.8 or higher for OCI support (Installation instructions)
- Cluster Admin privileges
Try It Out
In this example we will deploy Fluentd on a Minikube cluster using the Minimus Helm chart. To test the pod, we will send a log string from a BusyBox container to the Fluentd pod in Kubernetes and review the string in the pod logs.
Step 1: Start Cluster
If you have a cluster to work with, skip this step. Otherwise, start a Minikube cluster. Deployment instructions
Step 2: Create Namespace
Create a namespace:
kubectl create ns fluentd
Step 3: Create Flunetd Values File
Save the code below to a file named fluentd-values.yaml:
forwarder:
enabled: false
aggregator:
enabled: true
extraVolumes:
- name: fluentd-config
configMap:
name: fluentd-config
extraVolumeMounts:
- name: fluentd-config
mountPath: /opt/bitnami/fluentd/conf/fluentd.conf
subPath: fluentd.conf
extraConfigmapMounts:
- name: fluentd-config
configMap: fluentd-config
mountPath: /opt/bitnami/fluentd/conf/fluentd.conf
subPath: fluentd.conf
readOnly: true
Note that for the purpose of this test we disabled the forwarder value as we are using a minikube cluster with one node.
Step 4: Create Fluentd Service File
Save the code below to a file named service.yaml:
apiVersion: v1
kind: Service
metadata:
name: fluentd-external
spec:
type: NodePort
selector:
app.kubernetes.io/instance: my-fluentd
app.kubernetes.io/component: aggregator
ports:
- name: tcp
protocol: TCP
port: 24224
targetPort: 24224
nodePort: 32424
Step 5: Create Fluentd ConfigMap
Run the following command to configure the Fluentd ConfigMap to forward all logs:
cat <<EOF | kubectl apply -n fluentd -f -
apiVersion: v1
kind: ConfigMap
metadata:
name: fluentd-config
data:
fluentd.conf: |
<source>
@type tcp
port 24224
bind 0.0.0.0
tag test.log
</source>
<match **>
@type stdout
</match>
EOF
Check that the ConfigMap named fluentd-config was successfully created:
kubectl get configmap -n fluentd fluentd-config
Step 6: Deploy the Helm Chart
Run the following command:
helm install my-fluentd oci://helm.mini.dev/fluentd \
--version 0.5.3 \
-f fluentd-values.yaml
To check that the pod was successfully created run:
kubectl get po my-fluentd-0
Step 7: Create a Service
Next we will create a service for our Fluentd setup so we will be able to send a string to it. Run the following command:
kubectl apply -f service.yaml
Check that the service was successfully created:
kubectl get service fluentd-external
Step 8: Print Fluentd Logs
Monitor the logs for the Fluentd pod:
kubectl logs -f my-fluentd-0
Check that Fluentd is running properly and check for the following log strings:
2025-08-13 11:21:58 +0000 [warn]: #0 define <match fluent.**> to capture fluentd logs in top level is deprecated. Use <label @FLUENT_LOG> instead
2025-08-13 11:21:58 +0000 [info]: #0 starting fluentd worker pid=35 ppid=1 worker=0
2025-08-13 11:21:59 +0000 [info]: #0 listening port port=24224 bind="0.0.0.0"
2025-08-13 11:21:59 +0000 [info]: #0 fluentd worker is now running worker=0
Step 9: Send String from BusyBox to the Fluentd Service
Run a BusyBox container to send a string to the Fluentd service on the minikube node. Open another terminal window and run the following command:
docker run \
--log-driver=fluentd \
--log-opt \
fluentd-address=NODE_IP_ADDRESS:32424 \
reg.mini.dev/busybox:latest echo "Hello Fluentd"
You can check the internal IP address of the node:
kubectl describe node minikube | grep IP
You should see a log with the container name and the "Hello Fluentd" message as in the example below:
2025-08-13 12:52:07.000000000 +0000 bf1d4a219426: {"container_name":"/modest_gauss","source":"stdout","log":"Hello Fluentd","container_id":"bf1d4a2194269c1cf619d9869ca26e939e46c1c9da87e2ed8b4444649a22ad37"}
Step 10: Clean Up
Uninstall the chart and delete the namespace to remove all resources:
helm uninstall my-fluentd -n fluentd
kubectl delete namespace fluentd
Terms & Info
Trademark
This catalog is published by Minimus. All product names, logos, and marks, other than those belonging to Minimus, shown are owned by their respective rights holders and appear here only to identify the open source software each image contains. Minimus claims no ownership of those marks and implies no affiliation with, endorsement by, certification by, or sponsorship by any rights holder.
Disclaimer
Images are provided "as-is" without warranty of any kind. "Hardened" refers to the security configuration applied at the time of build and does not constitute a guarantee of ongoing security or absence of vulnerabilities. The free tier is provided without support, SLA, or guaranteed patching timelines. Security updates may be applied to paid subscriptions before or instead of free tier images. By pulling or using any image you agree to our Terms of Use.