Enabling Lens built-in metrics for an RBAC-limited user

This post shows step-by-step how to apply RBAC rules to enable metrics displays for an already RBAC-limited user. This is a continuation of this post on how to set up RBAC in Lens This demonstration uses the Lens Desktop Kube (LDK) cluster, and the Lens built-in metrics but should similarly apply to any cluster/prometheus-based metrics configuration.

For the developer-reader user (service account) from the previous post, because it is limited to pod read access, the built-in metrics are not available, as seen on the details page for a pod:

To enable metrics for developer-reader connect to the LDK cluster via the admin user (where there is more than pod read access possible) and create the following Role.

kind: Role
apiVersion: rbac.authorization.k8s.io/v1
metadata:
  namespace: lens-metrics
  name: read-only-lens-metrics
rules:
- apiGroups:
  - ""
  - "apps"
  resources:
  - pods
  - events
  - services
  verbs:
  - get
  - list
  - watch
- apiGroups:
  - ""
  resources:
  - "services/proxy"
  verbs:
  - create

This role applies only to the lens-metrics namespace and doesn’t impact the access that developer-reader has in the rest of the cluster. As before, this Role resource can be created in Lens:

Finally, a RoleBinding is required to associate this Role with the developer-reader user:

kind: RoleBinding
apiVersion: rbac.authorization.k8s.io/v1
metadata:
  annotations:
  namespace: lens-metrics
  name: read-metrics
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: Role
  name: read-only-lens-metrics
subjects:
- kind: ServiceAccount
  name: developer-reader
  namespace: default

Once it is created in Lens, return to the LDK-RO cluster (which is the developer-reader context). Disconnect and reconnect to ensure that the roles and bindings are picked up, and observe the details page for a pod now includes metrics:

1 Like