Экспериментальная версия. Функциональность может сильно измениться. Совместимость с будущими версиями не гарантируется.
Конвертация существующих дашбордов из GrafanaDashboardDefinition
Для перехода со старого формата дашбордов (GrafanaDashboardDefinition
) на новый (ObservabilityDashboard
, ClusterObservabilityDashboard
), необходимо вручную адаптировать манифесты. Обратите внимание на следующие отличия:
Старый формат | Новый формат | |
---|---|---|
spec.folder |
Поле отсутствует. Папка задаётся с помощью аннотации: observability.deckhouse.io/category |
|
Название дашборда берется из поля Title дашборда | Название задаётся с помощью аннотации: observability.deckhouse.io/title . Если аннотация отсутствует — используется поле title из JSON дашборда |
Пример конвертации
Старый формат:
1apiVersion: deckhouse.io/v1
2kind: GrafanaDashboardDefinition
3metadata:
4 name: example-dashboard
5spec:
6 folder: "Apps"
7 json: '{
8 "title": "Example Dashboard",
9 ...
10 }'
Новый формат (ObservabilityDashboard
):
1apiVersion: observability.deckhouse.io/v1alpha1
2kind: ObservabilityDashboard
3metadata:
4 name: example-dashboard
5 namespace: my-namespace
6 annotations:
7 metadata.deckhouse.io/category: "Apps"
8 metadata.deckhouse.io/title: "Example Dashboard"
9spec:
10 definition: |
11 {
12 "title": "Example Dashboard",
13 ...
14 }
Новый формат (ClusterObservabilityDashboard
):
1apiVersion: observability.deckhouse.io/v1alpha1
2kind: ClusterObservabilityDashboard
3metadata:
4 name: example-dashboard
5 annotations:
6 metadata.deckhouse.io/category: "Apps"
7 metadata.deckhouse.io/title: "Example Dashboard"
8spec:
9 definition: |
10 {
11 "title": "Example Dashboard",
12 ...
13 }
Как предоставить права на метрики и дашборды в конкретном пространстве имен
Для предоставления доступа к метрикам и дашбордам в конкретном пространстве имён необходимо создать ресурсы ClusterRole
и RoleBinding
, которые будут определять права пользователя.
Доступ к метрикам и дашбордам предоставляется отдельно:
- Метрики — проверяется наличие права
get
на ресурсmetrics.observability.deckhouse.io
. - Дашборды — проверяется наличие прав на ресурс
observabilitydashboards.observability.deckhouse.io
:get
— просмотр дашбордов;create
— создание, изменение и удаление дашбордов.
Пример ClusterRole и RoleBinding для доступа к метрикам и дашбордам только на чтение
1apiVersion: rbac.authorization.k8s.io/v1
2kind: ClusterRole
3metadata:
4 name: observability-viewer
5rules:
6 - apiGroups: ["observability.deckhouse.io"]
7 resources: ["metrics", "observabilitydashboards"]
8 verbs: ["get", "list", "watch"]
9---
10apiVersion: rbac.authorization.k8s.io/v1
11kind: RoleBinding
12metadata:
13 name: bind-observability-viewer
14 namespace: my-namespace
15roleRef:
16 apiGroup: rbac.authorization.k8s.io
17 kind: ClusterRole
18 name: observability-viewer
19subjects:
20 - kind: User
21 name: user@example.com
22 apiGroup: rbac.authorization.k8s.io
Пример ClusterRole и RoleBinding для доступа к метрикам и дашбордам на чтение и редактирование
1apiVersion: rbac.authorization.k8s.io/v1
2kind: ClusterRole
3metadata:
4 name: observability-editor
5rules:
6 - apiGroups: ["observability.deckhouse.io"]
7 resources: ["metrics", "observabilitydashboards"]
8 verbs: ["get", "list", "watch"]
9 - apiGroups: ["observability.deckhouse.io"]
10 resources: ["observabilitydashboards"]
11 verbs: ["create", "update", "delete"]
12---
13apiVersion: rbac.authorization.k8s.io/v1
14kind: RoleBinding
15metadata:
16 name: bind-observability-editor
17 namespace: my-namespace
18roleRef:
19 apiGroup: rbac.authorization.k8s.io
20 kind: ClusterRole
21 name: observability-editor
22subjects:
23 - kind: User
24 name: user@example.com
25 apiGroup: rbac.authorization.k8s.io
Как предоставить доступ к системным метрикам и дашбордам
Для предоставления доступа к системным метрикам и дашбордам необходимо создать ClusterRole
и ClusterRoleBinding
, которые будут определять права пользователя.
Доступ к метрикам и дашбордам предоставляется отдельно:
- Метрики — проверяется наличие права
get
на ресурсclustermetrics.observability.deckhouse.io
. - Дашборды — проверяется наличие прав на ресурс
clusterobservabilitydashboards.observability.deckhouse.io
:get
— просмотр дашбордов;create
— создание, изменение и удаление дашбордов.
Пример ClusterRole и ClusterRoleBinding для просмотра системных метрик и дашбордов
1apiVersion: rbac.authorization.k8s.io/v1
2kind: ClusterRole
3metadata:
4 name: observability-cluster-viewer
5rules:
6 - apiGroups: ["observability.deckhouse.io"]
7 resources: ["clustermetrics", "clusterobservabilitydashboards"]
8 verbs: ["get", "list", "watch"]
9---
10apiVersion: rbac.authorization.k8s.io/v1
11kind: ClusterRoleBinding
12metadata:
13 name: bind-observability-cluster-viewer
14roleRef:
15 apiGroup: rbac.authorization.k8s.io
16 kind: ClusterRole
17 name: observability-cluster-viewer
18subjects:
19 - kind: User
20 name: user@example.com
21 apiGroup: rbac.authorization.k8s.io
Пример ClusterRole и ClusterRoleBinding для доступа к метрикам и дашбордам на чтение и редактирование
1apiVersion: rbac.authorization.k8s.io/v1
2kind: ClusterRole
3metadata:
4 name: observability-cluster-editor
5rules:
6 - apiGroups: ["observability.deckhouse.io"]
7 resources: ["clustermetrics", "clusterobservabilitydashboards"]
8 verbs: ["get", "list", "watch"]
9 - apiGroups: ["observability.deckhouse.io"]
10 resources: ["clusterobservabilitydashboards"]
11 verbs: ["create", "update", "delete"]
12---
13apiVersion: rbac.authorization.k8s.io/v1
14kind: ClusterRoleBinding
15metadata:
16 name: bind-observability-cluster-editor
17roleRef:
18 apiGroup: rbac.authorization.k8s.io
19 kind: ClusterRole
20 name: observability-cluster-editor
21subjects:
22 - kind: User
23 name: user@example.com
24 apiGroup: rbac.authorization.k8s.io
Как предоставить полный доступ ко всем метрикам и дашбордам
Для предоставления полного доступа ко всем метрикам и дашбордам в Deckhouse необходимо создать роль ClusterRole
, которая будет включать все необходимые права, и используйте ClusterRoleBinding
для назначения этой роли.
Пример ClusterRole
1apiVersion: rbac.authorization.k8s.io/v1
2kind: ClusterRole
3metadata:
4 name: observability-admin
5rules:
6 - apiGroups: ["observability.deckhouse.io"]
7 resources:
8 - metrics
9 - clustermetrics
10 - observabilitydashboards
11 - clusterobservabilitydashboards
12 - clusterobservabilitypropagateddashboards
13 verbs: ["get", "list", "watch", "create", "update", "delete"]
14---
15apiVersion: rbac.authorization.k8s.io/v1
16kind: ClusterRoleBinding
17metadata:
18 name: bind-observability-admin
19roleRef:
20 apiGroup: rbac.authorization.k8s.io
21 kind: ClusterRole
22 name: observability-admin
23subjects:
24 - kind: User
25 name: user@example.com
26 apiGroup: rbac.authorization.k8s.io
Можно использовать готовую роль
cluster-admin
, однако её следует применять с осторожностью, так как она предоставляет полный доступ ко всем ресурсам кластера.
Как выдать доступ при использовании RBAC 2.0
Если включена экспериментальная ролевая модель, права назначаются через ресурсы UserRole
и ClusterUserRole
.
Пример доступа к метрикам и дашбордам в конкретном пространстве имён
Для предоставления пользователю доступа к пространству имён myapp
с возможностью просмотра метрик и дашбордов, можно использовать следующий манифест:
1apiVersion: rbac.authorization.k8s.io/v1
2kind: RoleBinding
3metadata:
4 name: myapp-developer
5 namespace: myapp
6subjects:
7 - kind: User
8 name: user@example.com
9 apiGroup: rbac.authorization.k8s.io
10roleRef:
11 kind: ClusterRole
12 name: d8:use:role:user
13 apiGroup: rbac.authorization.k8s.io
Данный пример предоставляет права не только для доступа к дашбордам и метрикам. Описание данной роли можно найти в документации модуля user-authz.