自动创建所需的 RBAC 资源

Alauda Build of OpenTelemetry v2 Operator 在某些 Collector 组件需要访问整个集群中的 Kubernetes 资源时,会自动创建必要的集群级 RBAC 资源。对于某些组件,例如 k8sattributes processor 或 k8sobjects receiver,除了默认的 Operator 范围之外,还需要额外的 RBAC 权限。

自动创建 RBAC

当 OpenTelemetry Collector 配置中包含需要集群范围访问的组件时,Operator 可以自动创建所需的 ClusterRoleClusterRoleBinding 资源。

NOTE

要启用自动创建 RBAC 的功能,您必须先完成下面 操作步骤 部分中的步骤,以授予 Operator 管理集群级 RBAC 资源所需的权限。

以下是通常需要额外 RBAC 权限的组件示例:

  • k8sattributes processor:需要权限查询 Pod、Namespace、Node、ReplicaSet 和 Deployment 资源,以便使用 Kubernetes 元数据增强遥测数据。
  • k8sobjects receiver:需要权限监视和列出 Kubernetes 资源,例如 Events、Pods 和 Nodes。
  • kubeletstats receiver:需要权限访问 kubelet 端点,以获取节点和 pod 指标。
  • resourcedetection processor:需要权限访问 Node 资源,用于资源检测。

操作步骤

  1. 创建 ClusterRole

    kubectl apply -f - <<EOF
    apiVersion: rbac.authorization.k8s.io/v1
    kind: ClusterRole
    metadata:
      name: generate-processors-rbac
    rules:
    - apiGroups:
      - rbac.authorization.k8s.io
      resources:
      - clusterrolebindings
      - clusterroles
      verbs:
      - create
      - delete
      - get
      - list
      - patch
      - update
      - watch
    EOF
  2. 创建 ClusterRoleBinding

    kubectl apply -f - <<EOF
    apiVersion: rbac.authorization.k8s.io/v1
    kind: ClusterRoleBinding
    metadata:
      name: generate-processors-rbac
    roleRef:
      apiGroup: rbac.authorization.k8s.io
      kind: ClusterRole
      name: generate-processors-rbac
    subjects:
    - kind: ServiceAccount
      name: opentelemetry-operator-controller-manager
      namespace: opentelemetry-operator2
    EOF
  3. (可选) 重启 Alauda Build of OpenTelemetry v2 Operator,以使新的 RBAC 权限生效:

    TIP

    仅当 Operator 在您创建 ClusterRoleClusterRoleBinding 之前已经运行时,才需要执行此步骤。如果您是在安装 Operator 之前 创建它们,则可以跳过此步骤。

    kubectl delete pod -n opentelemetry-operator2 -l app.kubernetes.io/name=opentelemetry-operator