Categories
程式開發

Filebeat配置部署指南


在本文中,我們將了解如何配置Filebeat作為DaemonSet在我們的Kubernetes集群中運行,以便將日誌運送到Elasticsearch後端。我們使用Filebeat而不是FluentD或FluentBit,因為它是一個非常輕量級的實用程序,並且對Kubernetes有一流的支持,因此這是十分適合生產的配置。

部署架構

Filebeat將在我們的Kubernetes集群中作為DaemonSet運行。它將會:

  • 部署在一個名為logging的單獨的命名空間內
  • Pod將會在Master節點和Worker節點被調度
  • master節點pods將轉發api-server日誌,用於審計和集群管理。
  • 客戶端節點Pods將轉發工作負載相關的日誌,用於應用程序可觀察性

創建Filebeat 服務賬戶和ClusterRole

部署以下manifest以創建Filebeat pod所需的權限:

apiVersion: v1
kind: Namespace
metadata:
  name: logging
---
apiVersion: v1
kind: ServiceAccount
metadata:
  name: filebeat
  namespace: logging
  labels:
    k8s-app: filebeat
---
apiVersion: rbac.authorization.k8s.io/v1beta1
kind: ClusterRole
metadata:
  name: filebeat
  namespace: logging
  labels:
    k8s-app: filebeat
rules:
- apiGroups: [""] # "" indicates the core API group
  resources:
  - namespaces
  - pods
  verbs:
  - get
  - watch
  - list
---
apiVersion: rbac.authorization.k8s.io/v1beta1
kind: ClusterRoleBinding
metadata:
  name: filebeat
  namespace: logging
subjects:
- kind: ServiceAccount
  name: filebeat
  namespace: kube-system
roleRef:
  kind: ClusterRole
  name: filebeat
  apiGroup: rbac.authorization.k8s.io

我們應該從安全的角度出發,確保ClusterRole的權限盡可能地受到限制。如果與該服務賬戶相關聯的任何一個pod被洩露,那麼攻擊者將無法獲得對整個集群或其中運行的應用程序的訪問權限。

創建Filebeat ConfigMap

原文鏈接:【https://www.infoq.cn/article/0ATtUVqlxtV4sPUJWE4W】。未經作者許可,禁止轉載。