在 OpenShift 上部署 Grafana Alloy
您可以在 Red Hat OpenShift Container Platform (OCP) 上部署 Alloy。
开始之前
- 这些步骤假设您拥有一个可用的 OCP 环境。
- 您可以根据您的具体需求和安全策略调整建议的策略和配置。
配置 RBAC
您必须配置基于角色的访问控制 (RBAC),以允许安全访问 Kubernetes 和 OCP 资源。
- 下载 rbac.yaml 配置文件。此配置文件定义了 Alloy 在 OCP 中的动词和权限。
- 审查
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 配置
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 定义
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:
设置为部署所需的卷。例如volumes: - configMap - downwardAPI - emptyDir - persistentVolumeClaim - secret
有关在您的环境中部署 Alloy 的更多信息,请参阅 部署 Grafana Alloy。