在 Kubernetes 上运行 Auditbeat

编辑

Auditbeat 的 Docker 镜像 可用于 Kubernetes 上检查文件完整性。

在 Kubernetes 上运行 Elastic Cloud?请参阅 在 ECK 上运行 Beats

Kubernetes 部署清单

编辑

通过将 Auditbeat 部署为 DaemonSet,我们可以确保在集群的每个节点上都获得一个正在运行的实例。

所有内容都部署在 kube-system 命名空间下,您可以通过更新 YAML 文件来更改它。

要获取清单,只需运行

curl -L -O https://raw.githubusercontent.com/elastic/beats/8.16/deploy/kubernetes/auditbeat-kubernetes.yaml

如果您使用的是 Kubernetes 1.7 或更早版本:Auditbeat 使用 hostPath 卷来持久化内部数据,它位于 /var/lib/auditbeat-data 下。清单使用文件夹自动创建(DirectoryOrCreate),这是在 Kubernetes 1.8 中引入的。您需要从清单中删除 type: DirectoryOrCreate 并自己创建主机文件夹。

设置

编辑

清单中公开了一些参数来配置日志目标,默认情况下它们将使用现有的 Elasticsearch 部署(如果存在),但您可能希望更改此行为,因此只需编辑 YAML 文件并修改它们即可。

- name: ELASTICSEARCH_HOST
  value: elasticsearch
- name: ELASTICSEARCH_PORT
  value: "9200"
- name: ELASTICSEARCH_USERNAME
  value: elastic
- name: ELASTICSEARCH_PASSWORD
  value: changeme
在控制平面节点上运行 Auditbeat
编辑

Kubernetes 控制平面节点可以使用 污点 来限制可以在其上运行的工作负载。要在控制平面节点上运行 Auditbeat,您可能需要更新 Daemonset 规范以包含适当的容忍度。

spec:
 tolerations:
 - key: node-role.kubernetes.io/control-plane
   effect: NoSchedule

部署

编辑

要将 Auditbeat 部署到 Kubernetes,只需运行

kubectl create -f auditbeat-kubernetes.yaml

然后,您应该可以通过运行以下命令来检查状态:

$ kubectl --namespace=kube-system get ds/auditbeat

NAME       DESIRED   CURRENT   READY     UP-TO-DATE   AVAILABLE   NODE-SELECTOR   AGE
auditbeat   32        32        0         32           0           <none>          1m

Auditbeat 能够监控 Pod 中文件的完整性,为此,容器根文件系统所在的目录必须作为卷挂载到 Auditbeat 容器中。例如,使用 containerd 执行的容器的根文件系统位于 /run/containerd 下。 参考清单 包含此示例。