Модуль доступен только в Deckhouse Enterprise Edition.
Предварительная подготовка
Перед установкой Deckhouse Observability Platform необходимо выполнить несколько подготовительных шагов.
Создание ModuleUpdatePolicy
В первую очередь необходимо определить политику обновления модуля observability-platform
, которая задаёт параметры и источники обновления, с помощью ресурса ModuleUpdatePolicy
:
-
Создайте файл
dop-mup.yaml
со следующим содержимым:--- apiVersion: deckhouse.io/v1alpha1 kind: ModuleUpdatePolicy metadata: name: observability-platform spec: moduleReleaseSelector: labelSelector: matchExpressions: - key: module operator: In values: - observability-platform - key: source operator: In values: - deckhouse releaseChannel: Alpha # Укажите нужный канал обновления: Alpha, Beta или Stable. update: mode: Auto # Укажите желаемый режим обновления: Auto или Manual.
В этом файле важно указать:
- нужный канал обновления в поле
releaseChannel
; - режим обновления в поле
mode
(Auto
илиManual
).
- нужный канал обновления в поле
-
Примените файл в кластере, выполнив команду:
kubectl apply -f dop-mup.yaml
Подробнее о политике обновления модулей и доступных параметрах можно узнать в документации Deckhouse.
Включение модуля operator-ceph
Для корректной работы Deckhouse Observability Platform требуется обязательно активировать модуль operator-ceph
.
В зависимости от выбранных настроек и конфигураций могут потребоваться и другие модули из Deckhouse Kubernetes Platform. Подробнее об этом будет в соответствующих разделах документации.
- Создайте файл
dop-ceph-mc.yaml
со следующим содержимым:--- apiVersion: deckhouse.io/v1alpha1 kind: ModuleConfig metadata: name: operator-ceph spec: enabled: true
- Примените файл в кластере, выполнив команду:
kubectl apply -f dop-ceph-mc.yaml
Включение дополнительных модулей
operator-postgres
Этот модуль предназначен для развертывания базы данных PostgreSQL внутри кластера под управлением Deckhouse Kubernetes Platform. Установка модуля требуется, если планируется использовать запущенную внутри кластера базу данных PostgreSQL для Deckhouse Observability Platform.
- Создайте файл
dop-postgres-mc.yaml
со следующим содержимым:--- apiVersion: deckhouse.io/v1alpha1 kind: ModuleConfig metadata: name: operator-postgres spec: enabled: true
- Примените файл в кластере, выполнив команду:
kubectl apply -f dop-postgres-mc.yaml
sds
Этот модуль необходим для создания постоянных хранилищ (PV) на базе физических дисков и используется для организации долгосрочного хранилища с использованием Ceph. Его активация требуется в случаях, когда Deckhouse Observability Platform разворачивается в Deckhouse Kubernetes Platform, работающей на bare metal или виртуальных машинах, где невозможно заказать облачные PV.
-
Создайте файл
dop-sds-mc.yaml
со следующим содержимым:--- apiVersion: deckhouse.io/v1alpha1 kind: ModuleConfig metadata: name: sds-node-configurator spec: enabled: true version: 1 --- apiVersion: deckhouse.io/v1alpha1 kind: ModuleConfig metadata: name: sds-local-volume spec: enabled: true version: 1
-
Примените файл в кластере, выполнив команду:
kubectl apply -f dop-sds-mc.yaml
Настройка групп узлов (NodeGroups) и меток (labels)
Компоненты Deckhouse Observability Platform автоматически назначаются для запуска на узлы, основываясь на названии групп узлов (NodeGoup) и установленных на них метках (labels). Алгоритм выбора происходит следующим образом: сначала ищутся группы узлов с подходящими именами, затем проверяются группы узлов с подходящими метками. Если подходящие узлы не найдены, запуск компонентов будет отложен до тех пор, пока не будут созданы необходимые группы узлов или не будут установлены нужные метки на уже существующих группах.
Именование групп узлов
Минимальная конфигурация требует определения группы узлов с именем observability
. Все компоненты платформы будут запущены на узлах этой группы. Для более детального распределения компонентов также можно создать дополнительные группы узлов. Возможны следующие варианты:
observability
– для компонентов интерфейса пользователя (UI) и других, если для них не создана отдельная группа;observability-ceph
– для размещения компонентов Ceph;observability-metrics
– для размещения компонентов, отвечающих за сбор и обработку метрик;observability-logs
— для размещения компонентов, отвечающих за сбор и обработку логов.
Настройка групп узлов с помощью меток
Альтернативный способ распределения компонентов — использование меток. Установите метку dedicated/observability: ""
на группу узлов. Возможные варианты меток:
dedicated/observability: ""
– для компонентов интерфейса пользователя (UI) и других компонентов, если для них не выделена отдельная группа;dedicated/observability-ceph: ""
– для размещения компонентов Ceph;dedicated/observability-metrics: ""
– для размещения компонентов, отвечающих за сбор и обработку метрик;dedicated/observability-logs: ""
– для размещения компонентов, отвечающих за сбор и обработку логов.
Установка меток на существующую группу узлов
Чтобы установить метку на уже существующую группу узлов, используйте следующую команду:
kubectl patch ng worker -p '{"spec":{"nodeTemplate": {"labels": {"dedicated/observability": ""}}}}' --type=merge
Эта команда добавит необходимые метки, обеспечивая корректное распределение компонентов по узлам.
Настройка StorageClass stateful-компонентов
Компоненты Deckhouse Observability Platform, которые работают в stateful-режиме, требуют использования постоянных хранилищ (PV). В случаях, когда Deckhouse Observability Platform разворачивается на кластерах bare metal или виртуальных машинах без возможности использования облачных PV, рекомендуется применять LocalPathProvisioner
. Он позволяет использовать локальные диски узлов кластера для создания PV, обеспечивая быстрое и эффективное управление локальным хранилищем.
Настройка LocalPathProvisioner
Для корректной работы некоторых компонентов Deckhouse Observability Platform, которые используют Persistent Volumes (PV) и являются stateful, необходимо настроить LocalPathProvisioner
.
Подготовка блочного устройства
На всех узлах NodeGroup, на которых будут размещаться компоненты Deckhouse Observability Platform, убедитесь, что в директории /opt/local-path-provisioner
смонтировано блочное устройство необходимого размера. Это устройство будет использоваться для хранения данных, поэтому важно, чтобы его объем соответствовал вашим требованиям.
Создание и применение LocalPathProvisioner
-
Создайте файл
local-path-provisioner.yaml
со следующим содержимым:--- apiVersion: deckhouse.io/v1alpha1 kind: LocalPathProvisioner metadata: name: localpath-node spec: nodeGroups: - observability path: /opt/local-path-provisioner reclaimPolicy: Delete
-
Примените файл в кластере, выполнив команду:
kubectl apply -f local-path-provisioner.yaml
LocalPathProvisioner
должен быть создан для всех групп узлов (NodeGroup), которые подходят по имени или наличию лейбла. Например, это могут быть observability-metrics
, observability-logs
или любые NodeGroups с лейблом dedicated/observability.*
. Убедитесь, что вы указали все необходимые группы узлов в поле nodeGroups.
Настройка Storage Class для компонентов долгосрочного хранения
Компоненты долгосрочного хранения в Deckhouse Observability Platform требуют использования постоянных хранилищ (PV). В ситуации, когда Deckhouse Observability Platform устанавливается в Deckhouse Kubernetes Platform, работающей на bare metal или виртуальных машинах без доступа к облачным PV, необходимо использовать модуль sds
. Этот модуль выключен по умолчанию и должен быть активирован в соответствии с инструкциями из раздела о подключении необходимых модулей.
-
Установите лейбл на NodeGroup для размещения компонентов Ceph:
Выполните команду:
kubectl patch ng worker -p '{"spec":{"nodeTemplate": {"labels": {"storage.deckhouse.io/sds-local-volume-node": ""}}}}' --type=merge
Эта команда добавит метки, которые необходимы для работы
sds-local-volume
. -
Проверьте наличие доступных блочных устройств:
Выполните команду:
kubectl get bd
Убедитесь, что в выводе команды присутствуют устройства с флагом
consumable=true
. Например:NAME NODE CONSUMABLE SIZE PATH AGE dev-44587ffa2c48e7e403db6abc699cc3b809489c1d dop-bare-metal01 true 331093016Ki /dev/sda 3h dev-5f61dadefe049b620c6fc5433046cf02a80247a0 dop-bare-metal02 true 331093016Ki /dev/sda 3h2m dev-665628749db2e1c93a74f3c224bb98502111fdd6 dop-bare-metal03 true 331093016Ki /dev/sda 175m
-
Создайте
LvmVolumeGroups
из доступных блочных устройств на всех узлах:Выполните следующую команду:
kubectl get bd -o json | jq '.items | map(select(.status.consumable == true)) | reduce .[] as $bd ({}; .[$bd.status.nodeName] += [$bd.metadata.name] | .) | to_entries | reduce .[] as {$key, $value} ({apiVersion: "v1", kind: "List", items: []}; .items += [{apiVersion: "storage.deckhouse.io/v1alpha1", kind: "LvmVolumeGroup", metadata: {name: ("dop-ceph-" + $key)}, spec: {type: "Local", actualVGNameOnTheNode: "dop-ceph", blockDeviceNames: $value}}])' | kubectl apply -f -
Проверьте успешность создания с помощью:
kubectl get lvg
Пример вывода:
NAME HEALTH NODE SIZE ALLOCATED SIZE VG AGE dop-ceph-dop-bare-metal01 Operational dop-bare-metal01 329054Mi 0 dop-ceph 37s dop-ceph-dop-bare-metal02 Operational dop-bare-metal02 329054Mi 0 dop-ceph 37s dop-ceph-dop-bare-metal03 Operational dop-bare-metal03 329054Mi 0 dop-ceph 37s
-
Создайте
LocalStorageClass
:Выполните команду:
kubectl get lvg -o json | jq 'reduce .items[].metadata.name as $name ({apiVersion: "storage.deckhouse.io/v1alpha1", kind: "LocalStorageClass", metadata: {name: "dop-ceph"}, spec: {reclaimPolicy: "Delete", volumeBindingMode: "WaitForFirstConsumer", lvm: {type: "Thick"}}}; .spec.lvm.lvmVolumeGroups += [{name: $name}])' | kubectl apply -f -
-
Подтвердите успешное создание StorageClass:
Убедитесь, что в выводе команды:
kubectl get sc
появился StorageClass с именем
dop-ceph
.
Установка с использованием внешней аутентификации
Deckhouse Observability Platform поддерживает интеграцию с различными внешними системами аутентификации. Напрямую поддерживаются системы Keycloak и Okta. Для подключения к другим системам, таким как LDAP или GitLab, используется промежуточное решение — Dex, который является частью Deckhouse Kubernetes Platform. Полный список поддерживаемых систем можно найти в документации.
Подключение Dex для аутентификации
Для подключения, например, LDAP необходимо сначала создать DexProvider. Это позволит системе корректно взаимодействовать с внешним сервисом аутентификации.
Рассмотрим пример настройки подключения к LDAP:
-
Создайте конфигурационный файл
dop-dex-provider.yaml
со следующим содержимым:apiVersion: deckhouse.io/v1 kind: DexProvider metadata: name: dop-active-directory spec: displayName: Active Directory ldap: bindDN: cn=admin,dc=example,dc=org bindPW: admin groupSearch: baseDN: ou=dop,dc=example,dc=org filter: (objectClass=groupOfNames) nameAttr: cn userMatchers: - groupAttr: member userAttr: DN host: ad.example.com::389 insecureNoSSL: true insecureSkipVerify: true startTLS: false userSearch: baseDN: ou=dop,dc=example,dc=org emailAttr: mail filter: (objectClass=inetOrgPerson) idAttr: uidNumber nameAttr: cn username: mail usernamePrompt: Email Address type: LDAP
Обратите внимание, что в примере необходимо заменить указанные данные на реальные значения вашей системы.
-
Примените файл в кластере, выполнив команду:
kubectl apply -f dop-dex-provider.yaml
Дополнительные примеры настройки провайдеров можно найти в документации Deckhouse Observability Platform.
Важно: на текущий момент невозможно настроить явное сопоставление между DexProvider и конкретными приложениями, которые его используют. Если в Deckhouse Kubernetes Platform уже настроены DexProviders, пользователи Deckhouse Observability Platform увидят их в списке доступных методов аутентификации.
Установка в облачных средах
В данном примере используется база данных PostgreSQL, развернутая внутри кластера. Активируйте модуль operator-postgres
для обеспечения корректной работы. Следуйте шагам ниже, чтобы развернуть платформу в Yandex Cloud.
Шаги по установке в Yandex Cloud
-
Подготовка конфигурационного файла
Создайте файл
dop-mc.yaml
с настройками. Убедитесь, что все изменяемые параметры, такие как доменное имя, количество ресурсов и идентификаторы (random-string
), заменены на фактические значения вашей среды:apiVersion: deckhouse.io/v1alpha1 kind: ModuleConfig metadata: name: observability-platform spec: enabled: true settings: general: baseDomain: dop.example.com clusterName: dc1 tls: issuer: letsencrypt storage: ceph: configOverride: | [osd] osd_memory_cache_min = 1Gi bluestore_cache_autotune = true bluestore_min_alloc_size = 4096 osd_pool_default_pg_autoscale_mode = off mon: storageClass: network-ssd-nonreplicated storageSize: 10Gi osd: count: 3 storageClass: network-ssd-nonreplicated storageSize: 80Gi metrics: defaultStorageClass: network-ssd etcd: storageSize: 5Gi ingester: resources: limits: memory: 4Gi requests: cpu: 1 memory: 4Gi storageSize: 10Gi storeGateway: storageSize: 10Gi ui: auth: mode: default clusterBootstrapToken: random-string postgres: backup: enabled: false internal: resources: limits: cpu: "1" memory: 1Gi requests: cpu: 500m memory: 1Gi storage: class: network-ssd size: 10Gi mode: Internal secretKeyBase: random-string tenantHashSalt: random-string version: 1
-
Применение конфигурации
Примените файл в кластере, выполнив команду:
kubectl apply -f dop-mc.yaml
-
Результат установки
Deckhouse Observability Platform будет развернута в Deckhouse Kubernetes Platform с включенным хранилищем для метрик. Все необходимые ресурсы будут заказаны в облаке, а база данных будет работать в кластере.
Установка на bare-metal-серверах
Для использования на bare-metal-серверах, где невозможно создать облачные PV, следуйте дальнейшим шагам.
Необходимо активировать модуль sds
и произвести настройку StorageClass и LocalPathProvisioner.
Выполните следующие действия:
-
Создайте и настройте файл
dop-mc.yaml
, учитывая вашу реальную среду:apiVersion: deckhouse.io/v1alpha1 kind: ModuleConfig metadata: name: observability-platform spec: enabled: true settings: general: baseDomain: dop.example.com clusterName: dc1 tls: issuer: letsencrypt storage: ceph: configOverride: | [osd] osd_memory_cache_min = 1Gi bluestore_cache_autotune = true bluestore_min_alloc_size = 4096 osd_pool_default_pg_autoscale_mode = off mon: storageClass: dop-ceph storageSize: 10Gi osd: count: 3 storageClass: dop-ceph storageSize: 80Gi metrics: defaultStorageClass: localpath-node etcd: storageSize: 5Gi ingester: resources: limits: memory: 4Gi requests: cpu: 1 memory: 4Gi storageSize: 10Gi storeGateway: storageSize: 10Gi ui: auth: mode: default clusterBootstrapToken: random-string postgres: backup: enabled: false external: db: dop-db host: db.local port: "5432" user: user password: password mode: External secretKeyBase: random-string tenantHashSalt: random-string version: 1
-
Примените файл в кластере, выполнив команду:
kubectl apply -f dop-mc.yaml
Платформа будет развернута с активированным хранилищем для метрик и использованием соответствующих ресурсов.
Проверка работоспособности
-
Убедитесь, что все поды в
d8-observability-platform
находятся в состоянииRunning
:kubectl -n d8-observability-platform get po
-
Проверьте доступность пользовательского интерфейса (UI) по адресу
https://dop.domain.my
, гдеdomain.my
– шаблон DNS-имён кластера, указанный вpublicDomainTemplate
.Для входа воспользуйтесь учетными данными:
- Имя пользователя:
admin@deckhouse.ru
; - Пароль:
password
.
Обратите внимание, что при первом входе потребуется изменить пароль.
- Имя пользователя: