自动创建所需的 RBAC 资源
Alauda Build of OpenTelemetry v2 Operator 会在某些 Collector 组件需要访问整个集群中的 Kubernetes 资源时,自动创建所需的集群级 RBAC 资源。对于某些组件,例如 k8s_attributes processor 或 k8s_objects receiver,除了默认的 Operator 范围之外,还需要额外的 RBAC 权限。
自动创建 RBAC
当 OpenTelemetry Collector 配置包含需要集群范围访问权限的组件时,Operator 可以自动创建所需的 ClusterRole 和 ClusterRoleBinding 资源。
要启用自动创建 RBAC 的能力,您必须完成下面 操作步骤 部分中的步骤,以授予 Operator 管理集群级 RBAC 资源所需的权限。
以下是通常需要额外 RBAC 权限的组件示例:
k8s_attributesprocessor:需要权限来查询 Pod、Namespace、Node、ReplicaSet 和 Deployment 资源,以使用 Kubernetes 元数据丰富 telemetry 数据。k8s_objectsreceiver:需要权限来 watch 和 list Kubernetes 资源,例如 Events、Pods 和 Nodes。kubelet_statsreceiver:需要权限访问 kubelet 端点,以获取 node 和 pod 指标。resource_detectionprocessor:需要权限访问 Node 资源,以进行资源检测。
创建 Collector 的用户所需权限
自动创建 RBAC 会经过权限提升检查。当 Operator 为 OpenTelemetryCollector 资源生成 ClusterRole 时,它会验证提交该资源的用户是否也拥有所授予的权限。如果用户不具备这些权限,则该资源会被准入 webhook 拒绝。
- 当 Collector 使用由 Operator 创建的
ServiceAccount时,会针对提交用户检查生成的全部权限集。 - 当 Collector 通过
spec.serviceAccount重用现有的ServiceAccount时,仅检查该账户缺失的权限。
如果尽管 Operator 本身已正确授权,但创建 Collector 仍因权限错误而失败,请为提交用户授予与 Collector 所需相同的权限,或者由已经拥有这些权限的用户创建该资源。
操作步骤
-
创建
ClusterRole: -
创建
ClusterRoleBinding: -
(可选) 重启 Alauda Build of OpenTelemetry v2 Operator,以获取新的 RBAC 权限:
TIP仅当 Operator 在您创建
ClusterRole和ClusterRoleBinding之前已经运行时,才需要执行此步骤。如果您是在安装 Operator 之前 创建了它们,则可以跳过此步骤。
删除 RBAC 资源
当您不再需要 Operator 自动创建集群级 RBAC 资源时,请删除在 操作步骤 部分创建的 ClusterRole 和 ClusterRoleBinding,以释放已授予的权限。
在删除这些权限之前,请先删除依赖自动创建 RBAC 的 OpenTelemetryCollector 资源。一旦 Operator 失去这些权限,它就无法再回收为这些 Collector 生成的集群级 RBAC 资源,这些资源将会留在集群中。
操作步骤
执行以下命令以删除 RBAC 资源: