菜单
开源

在 OpenShift 上部署 Grafana Alloy

您可以在 Red Hat OpenShift Container Platform (OCP) 上部署 Alloy。

开始之前

  • 这些步骤假设您拥有一个可用的 OCP 环境。
  • 您可以根据您的具体需求和安全策略调整建议的策略和配置。

配置 RBAC

您必须配置基于角色的访问控制 (RBAC),以允许安全访问 Kubernetes 和 OCP 资源。

  1. 下载 rbac.yaml 配置文件。此配置文件定义了 Alloy 在 OCP 中的动词和权限。
  2. 审查 rbac.yaml 文件并根据您的本地环境进行调整。有关更新和管理 RBAC 配置的更多信息,请参阅 OCP 文档中的 管理基于角色的访问控制 (RBAC) 主题。

以非 root 用户身份运行 Alloy

您必须配置 Alloy 以非 root 用户身份运行。这确保 Alloy 符合您的 OCP 安全策略。

应用安全上下文约束

OCP 使用安全上下文约束 (SCC) 来控制 Pod 权限。有关如何定义和强制执行这些权限的更多信息,请参阅管理安全上下文约束。这确保运行 Alloy 的 Pod 符合 OCP 安全策略。

注意

安全上下文仅在容器级别配置,而非在容器和部署级别配置。

部署 Alloy 时,您可以应用以下 SCC。

注意

并非所有这些 SCC 都适用于所有用例。您可以根据本地要求和需求调整 SCC。

  • RunAsUser: 指定 Alloy 运行的用户 ID。您必须配置此约束以允许非 root 用户 ID。
  • SELinuxContext: 配置容器的 SELinux 上下文。如果您以 root 用户身份运行 Alloy,则必须配置此约束以确保 SELinux 策略不会阻止 Alloy。通常以非 root 用户身份部署 Alloy 时不需要此 SCC。
  • FSGroup: 指定文件系统访问的 fsGroup ID。您必须配置此约束以授予 Alloy 对所需文件的组访问权限。
  • Volumes: 指定用于存储的持久卷。您必须配置此约束以授予 Alloy 对所需卷的访问权限。

DaemonSet 配置示例

以下示例展示了以非 root 用户身份部署 Alloy 的 DaemonSet 配置

yaml
apiVersion: aapps/v1
kind: DaemonSet
metadata:
  name: alloy-logs
  namespace: monitoring
spec:
  selector:
    matchLabels:
      app: alloy-logs
   template:
     metadata:
       labels:
         app: alloy-logs
      spec:
        containers:
        - name: alloy-logs
          image: grafana/alloy:<ALLOY_VERSION>
          ports:
          - containerPort: 12345
          # The security context configuration
          securityContext:
            readOnlyRootFilesystem: true
            allowPrivilegeEscalation: false
            runAsUser: 473
            runAsGroup: 473
            fsGroup: 1000
         volumes:
         - name: log-volume
           emptyDir: {}

替换以下内容

  • <ALLOY_VERSION>: 设置为您正在部署的特定 Alloy 版本。例如,1.5.1

注意

此示例使用了最简单的卷类型 emptyDir。在此示例配置中,如果您的节点重新启动,数据将丢失。在生产环境中,请务必将卷类型设置为持久存储位置。有关更多信息,请参阅 OpenShift 文档中的 使用卷持久化容器数据

SCC 定义示例

以下示例展示了以非 root 用户身份部署 Alloy 的 SCC 定义

yaml
kind: SecurityContextConstraints
apiVersion: security.openshift.io/v1
metadata:
  name: scc-alloy
runAsUser:
  type: MustRunAs
  uid: 473
fsGroup:
  type: MustRunAs
  uid: 1000
volumes: 
- '*'
users:
- my-admin-user
groups:
- my-admin-group
seLinuxContext:
  type: MustRunAs
  user: <SYSTEM_USER>
  role: <SYSTEM_ROLE>
  type: <CONTAINER_TYPE>
  level: <LEVEL>

替换以下内容

  • <SYSTEM_USER>: 您的 SELinux 上下文用户。
  • <SYSTEM_ROLE>: 您的 SELinux 上下文角色。
  • <CONTAINER_TYPE>: 您的 SELinux 上下文容器类型。
  • <LEVEL>: 您的 SELinux 上下文级别。

有关 SELinux 上下文配置的更多信息,请参阅 RedHat 文档中的 SELinux 上下文

注意

此示例将 volumes: 设置为 *。在生产环境中,您应该只将 volumes: 设置为部署所需的卷。例如

yaml
volumes:
  - configMap
  - downwardAPI
  - emptyDir
  - persistentVolumeClaim
  - secret 

有关在您的环境中部署 Alloy 的更多信息,请参阅 部署 Grafana Alloy

下一步