aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorinnokentii <innokentii@yandex-team.com>2023-07-28 12:31:59 +0300
committerinnokentii <innokentii@yandex-team.com>2023-07-28 12:31:59 +0300
commit29c67a1aedcd498a58201621cfeba510f4533a97 (patch)
tree7f0e3745b00a1dff79b5f9fd2df89b3814a24402
parent25f2ddf85baedafe4a8e149002c510443bc56f0b (diff)
downloadydb-29c67a1aedcd498a58201621cfeba510f4533a97.tar.gz
DynamicConfig Docs
-rw-r--r--ydb/docs/ru/core/cluster/toc_i.yaml16
-rw-r--r--ydb/docs/ru/core/deploy/configuration/config.md14
-rw-r--r--ydb/docs/ru/core/maintenance/manual/_assets/config-chart-1.pngbin0 -> 86993 bytes
-rw-r--r--ydb/docs/ru/core/maintenance/manual/_assets/config-chart-2.pngbin0 -> 87774 bytes
-rw-r--r--ydb/docs/ru/core/maintenance/manual/_assets/config-chart.drawio295
-rw-r--r--ydb/docs/ru/core/maintenance/manual/cms.md6
-rw-r--r--ydb/docs/ru/core/maintenance/manual/config-overview.md35
-rw-r--r--ydb/docs/ru/core/maintenance/manual/dynamic-config-selectors.md357
-rw-r--r--ydb/docs/ru/core/maintenance/manual/dynamic-config-volatile-config.md61
-rw-r--r--ydb/docs/ru/core/maintenance/manual/dynamic-config.md136
-rw-r--r--ydb/docs/ru/core/maintenance/toc_i.yaml16
-rw-r--r--ydb/docs/ru/core/reference/ydb-cli/configs.md160
-rw-r--r--ydb/docs/ru/core/reference/ydb-cli/toc_i.yaml4
13 files changed, 1088 insertions, 12 deletions
diff --git a/ydb/docs/ru/core/cluster/toc_i.yaml b/ydb/docs/ru/core/cluster/toc_i.yaml
index dbfa5a536b..060345b0b8 100644
--- a/ydb/docs/ru/core/cluster/toc_i.yaml
+++ b/ydb/docs/ru/core/cluster/toc_i.yaml
@@ -23,5 +23,17 @@ items:
# href: ../administration/rolling-restart.md
- name: Изменение конфигурации актор-системы
href: ../maintenance/manual/change_actorsystem_configs.md
-- name: Изменение конфигураций через CMS
- href: ../maintenance/manual/cms.md
+- name: Управление конфигурацией кластера
+ items:
+ - name: Обзор конфигурации
+ href: ../maintenance/manual/config-overview.md
+ - name: Статическая конфигурация кластера
+ href: ../deploy/configuration/config.md
+ - name: Динамическая конфигурация кластера
+ href: ../maintenance/manual/dynamic-config.md
+ - name: DSL конфигурации кластера
+ href: ../maintenance/manual/dynamic-config-selectors.md
+ - name: Временная конфигурация
+ href: ../maintenance/manual/dynamic-config-volatile-config.md
+ - name: Изменение конфигураций через CMS
+ href: ../maintenance/manual/cms.md
diff --git a/ydb/docs/ru/core/deploy/configuration/config.md b/ydb/docs/ru/core/deploy/configuration/config.md
index c571bf3c44..17432b7156 100644
--- a/ydb/docs/ru/core/deploy/configuration/config.md
+++ b/ydb/docs/ru/core/deploy/configuration/config.md
@@ -1,6 +1,6 @@
-# Конфигурация кластера
+# Статическая конфигурация кластера
-Конфигурация кластера задается в YAML-файле, передаваемом в параметре `--yaml-config` при запуске узлов кластера.
+Статическая конфигурация кластера задается в YAML-файле, передаваемом в параметре `--yaml-config` при запуске узлов кластера.
В статье приведено описание основных групп конфигурируемых параметров в данном файле.
@@ -18,7 +18,7 @@ host_configs:
type: <type>
- path: ...
- host_config_id: 2
- ...
+ ...
```
Атрибут `host_config_id` задает числовой идентификатор конфигурации. В атрибуте `drive` содержится коллекция описаний подключенных дисков. Каждое описание состоит из двух атрибутов:
@@ -94,7 +94,7 @@ hosts:
data_center: <строка с идентификатором зоны доступности>
rack: <строка с идентификатором стойки>
- host: <DNS-имя хоста>
- ...
+ # ...
```
**Примеры**
@@ -171,7 +171,7 @@ domains_config:
- type: <тип устройства для сопоставления с указанным в host_configs.drive.type>
vdisk_kind: Default
- kind: <имя пула хранения>
- ...
+ # ...
```
Каждой базе данных в кластере назначается как минимум один из доступных пулов хранения, выбираемый в операции создания базы данных. Имена пулов хранения среди назначенных могут быть использованы в атрибуте `DATA` при определении групп колонок в операторах YQL [`CREATE TABLE`](../../yql/reference/syntax/create_table.md#column-family)/[`ALTER TABLE`](../../yql/reference/syntax/alter_table.md#column-family).
@@ -182,7 +182,7 @@ State Storage (хранилище состояний) -- это независи
Обычно State Storage не требует масштабирования в целях повышения производительности, поэтому количество узлов в нём следует делать как можно меньшим с учетом необходимого уровня отказоустойчивости.
-Доступность State Storage является ключевой для кластера YDB, так как влияет на все базы данных, независимо от того какие пулы хранения в них используются.Для обеспечения отказоустойчивости State Storate его узлы должны быть выбраны таким образом, чтобы гарантировать рабочее большинство в случае ожидаемых отказов.
+Доступность State Storage является ключевой для кластера YDB, так как влияет на все базы данных, независимо от того какие пулы хранения в них используются.Для обеспечения отказоустойчивости State Storate его узлы должны быть выбраны таким образом, чтобы гарантировать рабочее большинство в случае ожидаемых отказов.
Для выбора узлов State Storage можно воспользоваться следующими рекомендациями:
@@ -472,7 +472,7 @@ blob_storage_config:
- node_id: 1
path: /dev/disk/by-partlabel/ydb_disk_ssd_02
pdisk_category: SSD
-....
+# ...
```
Для конфигурации расположенной в 3 AZ необходимо указать 3 кольца. Для конфигураций, расположенных в одной AZ, указывается ровно одно кольцо.
diff --git a/ydb/docs/ru/core/maintenance/manual/_assets/config-chart-1.png b/ydb/docs/ru/core/maintenance/manual/_assets/config-chart-1.png
new file mode 100644
index 0000000000..7af01b94fb
--- /dev/null
+++ b/ydb/docs/ru/core/maintenance/manual/_assets/config-chart-1.png
Binary files differ
diff --git a/ydb/docs/ru/core/maintenance/manual/_assets/config-chart-2.png b/ydb/docs/ru/core/maintenance/manual/_assets/config-chart-2.png
new file mode 100644
index 0000000000..9c68a72c11
--- /dev/null
+++ b/ydb/docs/ru/core/maintenance/manual/_assets/config-chart-2.png
Binary files differ
diff --git a/ydb/docs/ru/core/maintenance/manual/_assets/config-chart.drawio b/ydb/docs/ru/core/maintenance/manual/_assets/config-chart.drawio
new file mode 100644
index 0000000000..c3b10caf4e
--- /dev/null
+++ b/ydb/docs/ru/core/maintenance/manual/_assets/config-chart.drawio
@@ -0,0 +1,295 @@
+<mxfile host="drawio.yandex-team.ru" modified="2023-06-19T13:22:21.291Z" agent="Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:109.0) Gecko/20100101 Firefox/113.0" etag="667dN1Zzu17pTJfA-IbK" version="21.1.8" type="device" pages="2">
+ <diagram name="Page-1" id="6AZyvDMRXw_DgrmPejTI">
+ <mxGraphModel dx="1434" dy="826" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="850" pageHeight="1100" math="0" shadow="0">
+ <root>
+ <mxCell id="0" />
+ <mxCell id="1" parent="0" />
+ <mxCell id="gzmF63YaM1NmiDmxzHxj-1" value="dynamic node 1" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#d5e8d4;strokeColor=#82b366;" parent="1" vertex="1">
+ <mxGeometry x="160" y="200" width="120" height="80" as="geometry" />
+ </mxCell>
+ <mxCell id="gzmF63YaM1NmiDmxzHxj-2" value="dynamic node 2" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#d5e8d4;strokeColor=#82b366;" parent="1" vertex="1">
+ <mxGeometry x="320" y="200" width="120" height="80" as="geometry" />
+ </mxCell>
+ <mxCell id="gzmF63YaM1NmiDmxzHxj-3" value="dynamic node n" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#d5e8d4;strokeColor=#82b366;" parent="1" vertex="1">
+ <mxGeometry x="560" y="200" width="120" height="80" as="geometry" />
+ </mxCell>
+ <mxCell id="gzmF63YaM1NmiDmxzHxj-4" value="" style="endArrow=none;dashed=1;html=1;dashPattern=1 3;strokeWidth=2;rounded=0;" parent="1" edge="1">
+ <mxGeometry width="50" height="50" relative="1" as="geometry">
+ <mxPoint x="480" y="240" as="sourcePoint" />
+ <mxPoint x="520" y="240" as="targetPoint" />
+ </mxGeometry>
+ </mxCell>
+ <mxCell id="gzmF63YaM1NmiDmxzHxj-5" value="static node 1" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#dae8fc;strokeColor=#6c8ebf;" parent="1" vertex="1">
+ <mxGeometry x="160" y="440" width="120" height="80" as="geometry" />
+ </mxCell>
+ <mxCell id="gzmF63YaM1NmiDmxzHxj-6" value="static node 2" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#dae8fc;strokeColor=#6c8ebf;" parent="1" vertex="1">
+ <mxGeometry x="320" y="440" width="120" height="80" as="geometry" />
+ </mxCell>
+ <mxCell id="gzmF63YaM1NmiDmxzHxj-7" value="static node m" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#dae8fc;strokeColor=#6c8ebf;" parent="1" vertex="1">
+ <mxGeometry x="560" y="440" width="120" height="80" as="geometry" />
+ </mxCell>
+ <mxCell id="gzmF63YaM1NmiDmxzHxj-8" value="" style="endArrow=none;dashed=1;html=1;dashPattern=1 3;strokeWidth=2;rounded=0;" parent="1" edge="1">
+ <mxGeometry width="50" height="50" relative="1" as="geometry">
+ <mxPoint x="480" y="480" as="sourcePoint" />
+ <mxPoint x="520" y="480" as="targetPoint" />
+ </mxGeometry>
+ </mxCell>
+ <mxCell id="gzmF63YaM1NmiDmxzHxj-18" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;" parent="1" source="gzmF63YaM1NmiDmxzHxj-9" target="gzmF63YaM1NmiDmxzHxj-5" edge="1">
+ <mxGeometry relative="1" as="geometry" />
+ </mxCell>
+ <mxCell id="gzmF63YaM1NmiDmxzHxj-9" value="config.yaml" style="shape=note;whiteSpace=wrap;html=1;backgroundOutline=1;darkOpacity=0.05;fillColor=#fff2cc;strokeColor=#d6b656;" parent="1" vertex="1">
+ <mxGeometry x="180" y="560" width="80" height="80" as="geometry" />
+ </mxCell>
+ <mxCell id="gzmF63YaM1NmiDmxzHxj-19" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;" parent="1" source="gzmF63YaM1NmiDmxzHxj-10" target="gzmF63YaM1NmiDmxzHxj-6" edge="1">
+ <mxGeometry relative="1" as="geometry" />
+ </mxCell>
+ <mxCell id="gzmF63YaM1NmiDmxzHxj-10" value="config.yaml" style="shape=note;whiteSpace=wrap;html=1;backgroundOutline=1;darkOpacity=0.05;fillColor=#fff2cc;strokeColor=#d6b656;" parent="1" vertex="1">
+ <mxGeometry x="340" y="560" width="80" height="80" as="geometry" />
+ </mxCell>
+ <mxCell id="gzmF63YaM1NmiDmxzHxj-20" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;" parent="1" source="gzmF63YaM1NmiDmxzHxj-11" target="gzmF63YaM1NmiDmxzHxj-7" edge="1">
+ <mxGeometry relative="1" as="geometry" />
+ </mxCell>
+ <mxCell id="gzmF63YaM1NmiDmxzHxj-11" value="config.yaml" style="shape=note;whiteSpace=wrap;html=1;backgroundOutline=1;darkOpacity=0.05;fillColor=#fff2cc;strokeColor=#d6b656;" parent="1" vertex="1">
+ <mxGeometry x="580" y="560" width="80" height="80" as="geometry" />
+ </mxCell>
+ <mxCell id="gzmF63YaM1NmiDmxzHxj-15" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;" parent="1" source="gzmF63YaM1NmiDmxzHxj-12" target="gzmF63YaM1NmiDmxzHxj-1" edge="1">
+ <mxGeometry relative="1" as="geometry" />
+ </mxCell>
+ <mxCell id="gzmF63YaM1NmiDmxzHxj-12" value="config.yaml" style="shape=note;whiteSpace=wrap;html=1;backgroundOutline=1;darkOpacity=0.05;fillColor=#fff2cc;strokeColor=#d6b656;" parent="1" vertex="1">
+ <mxGeometry x="180" y="320" width="80" height="80" as="geometry" />
+ </mxCell>
+ <mxCell id="gzmF63YaM1NmiDmxzHxj-16" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;" parent="1" source="gzmF63YaM1NmiDmxzHxj-13" target="gzmF63YaM1NmiDmxzHxj-2" edge="1">
+ <mxGeometry relative="1" as="geometry" />
+ </mxCell>
+ <mxCell id="gzmF63YaM1NmiDmxzHxj-13" value="config.yaml" style="shape=note;whiteSpace=wrap;html=1;backgroundOutline=1;darkOpacity=0.05;fillColor=#fff2cc;strokeColor=#d6b656;" parent="1" vertex="1">
+ <mxGeometry x="340" y="320" width="80" height="80" as="geometry" />
+ </mxCell>
+ <mxCell id="gzmF63YaM1NmiDmxzHxj-17" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;" parent="1" source="gzmF63YaM1NmiDmxzHxj-14" target="gzmF63YaM1NmiDmxzHxj-3" edge="1">
+ <mxGeometry relative="1" as="geometry" />
+ </mxCell>
+ <mxCell id="gzmF63YaM1NmiDmxzHxj-14" value="config.yaml" style="shape=note;whiteSpace=wrap;html=1;backgroundOutline=1;darkOpacity=0.05;fillColor=#fff2cc;strokeColor=#d6b656;" parent="1" vertex="1">
+ <mxGeometry x="580" y="320" width="80" height="80" as="geometry" />
+ </mxCell>
+ <mxCell id="gzmF63YaM1NmiDmxzHxj-22" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0.5;entryY=1;entryDx=0;entryDy=0;entryPerimeter=0;" parent="1" source="gzmF63YaM1NmiDmxzHxj-21" target="gzmF63YaM1NmiDmxzHxj-14" edge="1">
+ <mxGeometry relative="1" as="geometry">
+ <mxPoint x="720" y="420" as="targetPoint" />
+ <Array as="points">
+ <mxPoint x="720" y="480" />
+ <mxPoint x="720" y="420" />
+ <mxPoint x="620" y="420" />
+ </Array>
+ </mxGeometry>
+ </mxCell>
+ <mxCell id="gzmF63YaM1NmiDmxzHxj-23" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;" parent="1" source="gzmF63YaM1NmiDmxzHxj-21" target="gzmF63YaM1NmiDmxzHxj-13" edge="1">
+ <mxGeometry relative="1" as="geometry">
+ <Array as="points">
+ <mxPoint x="720" y="480" />
+ <mxPoint x="720" y="420" />
+ <mxPoint x="380" y="420" />
+ </Array>
+ </mxGeometry>
+ </mxCell>
+ <mxCell id="gzmF63YaM1NmiDmxzHxj-24" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;" parent="1" source="gzmF63YaM1NmiDmxzHxj-21" target="gzmF63YaM1NmiDmxzHxj-12" edge="1">
+ <mxGeometry relative="1" as="geometry">
+ <Array as="points">
+ <mxPoint x="720" y="480" />
+ <mxPoint x="720" y="420" />
+ <mxPoint x="220" y="420" />
+ </Array>
+ </mxGeometry>
+ </mxCell>
+ <mxCell id="gzmF63YaM1NmiDmxzHxj-25" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;" parent="1" source="gzmF63YaM1NmiDmxzHxj-21" target="gzmF63YaM1NmiDmxzHxj-11" edge="1">
+ <mxGeometry relative="1" as="geometry">
+ <Array as="points">
+ <mxPoint x="720" y="480" />
+ <mxPoint x="720" y="680" />
+ <mxPoint x="620" y="680" />
+ </Array>
+ </mxGeometry>
+ </mxCell>
+ <mxCell id="gzmF63YaM1NmiDmxzHxj-26" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;" parent="1" source="gzmF63YaM1NmiDmxzHxj-21" target="gzmF63YaM1NmiDmxzHxj-10" edge="1">
+ <mxGeometry relative="1" as="geometry">
+ <Array as="points">
+ <mxPoint x="720" y="480" />
+ <mxPoint x="720" y="680" />
+ <mxPoint x="380" y="680" />
+ </Array>
+ </mxGeometry>
+ </mxCell>
+ <mxCell id="gzmF63YaM1NmiDmxzHxj-27" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;" parent="1" source="gzmF63YaM1NmiDmxzHxj-21" target="gzmF63YaM1NmiDmxzHxj-9" edge="1">
+ <mxGeometry relative="1" as="geometry">
+ <Array as="points">
+ <mxPoint x="720" y="480" />
+ <mxPoint x="720" y="680" />
+ <mxPoint x="220" y="680" />
+ </Array>
+ </mxGeometry>
+ </mxCell>
+ <mxCell id="gzmF63YaM1NmiDmxzHxj-21" value="administrator" style="shape=umlActor;verticalLabelPosition=bottom;verticalAlign=top;html=1;outlineConnect=0;" parent="1" vertex="1">
+ <mxGeometry x="800" y="440" width="40" height="80" as="geometry" />
+ </mxCell>
+ <mxCell id="ysdPkgQMItkxEn6_Y6la-1" value="" style="endArrow=classic;html=1;rounded=0;" parent="1" edge="1">
+ <mxGeometry width="50" height="50" relative="1" as="geometry">
+ <mxPoint x="760" y="240" as="sourcePoint" />
+ <mxPoint x="840" y="240" as="targetPoint" />
+ </mxGeometry>
+ </mxCell>
+ <mxCell id="ysdPkgQMItkxEn6_Y6la-2" value="config delivered by administrator" style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" parent="1" vertex="1">
+ <mxGeometry x="740" y="250" width="130" height="30" as="geometry" />
+ </mxCell>
+ </root>
+ </mxGraphModel>
+ </diagram>
+ <diagram id="pD0FnZRgLJUxYaRfmEEt" name="Page-2">
+ <mxGraphModel dx="1434" dy="826" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="850" pageHeight="1100" math="0" shadow="0">
+ <root>
+ <mxCell id="0" />
+ <mxCell id="1" parent="0" />
+ <mxCell id="LG2FzYKowvd94eDzYkV2-1" value="dynamic node 1" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#d5e8d4;strokeColor=#82b366;" parent="1" vertex="1">
+ <mxGeometry x="160" y="200" width="120" height="80" as="geometry" />
+ </mxCell>
+ <mxCell id="LG2FzYKowvd94eDzYkV2-2" value="dynamic node 2" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#d5e8d4;strokeColor=#82b366;" parent="1" vertex="1">
+ <mxGeometry x="320" y="200" width="120" height="80" as="geometry" />
+ </mxCell>
+ <mxCell id="LG2FzYKowvd94eDzYkV2-3" value="dynamic node n" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#d5e8d4;strokeColor=#82b366;" parent="1" vertex="1">
+ <mxGeometry x="560" y="200" width="120" height="80" as="geometry" />
+ </mxCell>
+ <mxCell id="LG2FzYKowvd94eDzYkV2-4" value="" style="endArrow=none;dashed=1;html=1;dashPattern=1 3;strokeWidth=2;rounded=0;" parent="1" edge="1">
+ <mxGeometry width="50" height="50" relative="1" as="geometry">
+ <mxPoint x="480" y="240" as="sourcePoint" />
+ <mxPoint x="520" y="240" as="targetPoint" />
+ </mxGeometry>
+ </mxCell>
+ <mxCell id="LG2FzYKowvd94eDzYkV2-5" value="static node 1" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#dae8fc;strokeColor=#6c8ebf;" parent="1" vertex="1">
+ <mxGeometry x="160" y="440" width="120" height="80" as="geometry" />
+ </mxCell>
+ <mxCell id="LG2FzYKowvd94eDzYkV2-6" value="static node 2" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#dae8fc;strokeColor=#6c8ebf;" parent="1" vertex="1">
+ <mxGeometry x="320" y="440" width="120" height="80" as="geometry" />
+ </mxCell>
+ <mxCell id="LG2FzYKowvd94eDzYkV2-7" value="static node m" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#dae8fc;strokeColor=#6c8ebf;" parent="1" vertex="1">
+ <mxGeometry x="560" y="440" width="120" height="80" as="geometry" />
+ </mxCell>
+ <mxCell id="LG2FzYKowvd94eDzYkV2-8" value="" style="endArrow=none;dashed=1;html=1;dashPattern=1 3;strokeWidth=2;rounded=0;" parent="1" edge="1">
+ <mxGeometry width="50" height="50" relative="1" as="geometry">
+ <mxPoint x="480" y="480" as="sourcePoint" />
+ <mxPoint x="520" y="480" as="targetPoint" />
+ </mxGeometry>
+ </mxCell>
+ <mxCell id="LG2FzYKowvd94eDzYkV2-9" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;" parent="1" source="LG2FzYKowvd94eDzYkV2-10" target="LG2FzYKowvd94eDzYkV2-5" edge="1">
+ <mxGeometry relative="1" as="geometry" />
+ </mxCell>
+ <mxCell id="LG2FzYKowvd94eDzYkV2-10" value="config.yaml" style="shape=note;whiteSpace=wrap;html=1;backgroundOutline=1;darkOpacity=0.05;fillColor=#fff2cc;strokeColor=#d6b656;" parent="1" vertex="1">
+ <mxGeometry x="180" y="560" width="80" height="80" as="geometry" />
+ </mxCell>
+ <mxCell id="LG2FzYKowvd94eDzYkV2-11" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;" parent="1" source="LG2FzYKowvd94eDzYkV2-12" target="LG2FzYKowvd94eDzYkV2-6" edge="1">
+ <mxGeometry relative="1" as="geometry" />
+ </mxCell>
+ <mxCell id="LG2FzYKowvd94eDzYkV2-12" value="config.yaml" style="shape=note;whiteSpace=wrap;html=1;backgroundOutline=1;darkOpacity=0.05;fillColor=#fff2cc;strokeColor=#d6b656;" parent="1" vertex="1">
+ <mxGeometry x="340" y="560" width="80" height="80" as="geometry" />
+ </mxCell>
+ <mxCell id="LG2FzYKowvd94eDzYkV2-13" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;" parent="1" source="LG2FzYKowvd94eDzYkV2-14" target="LG2FzYKowvd94eDzYkV2-7" edge="1">
+ <mxGeometry relative="1" as="geometry" />
+ </mxCell>
+ <mxCell id="LG2FzYKowvd94eDzYkV2-14" value="config.yaml" style="shape=note;whiteSpace=wrap;html=1;backgroundOutline=1;darkOpacity=0.05;fillColor=#fff2cc;strokeColor=#d6b656;" parent="1" vertex="1">
+ <mxGeometry x="580" y="560" width="80" height="80" as="geometry" />
+ </mxCell>
+ <mxCell id="LG2FzYKowvd94eDzYkV2-24" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;" parent="1" source="LG2FzYKowvd94eDzYkV2-27" target="LG2FzYKowvd94eDzYkV2-14" edge="1">
+ <mxGeometry relative="1" as="geometry">
+ <Array as="points">
+ <mxPoint x="820" y="680" />
+ <mxPoint x="620" y="680" />
+ </Array>
+ </mxGeometry>
+ </mxCell>
+ <mxCell id="LG2FzYKowvd94eDzYkV2-25" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;" parent="1" source="LG2FzYKowvd94eDzYkV2-27" target="LG2FzYKowvd94eDzYkV2-12" edge="1">
+ <mxGeometry relative="1" as="geometry">
+ <Array as="points">
+ <mxPoint x="820" y="680" />
+ <mxPoint x="380" y="680" />
+ </Array>
+ </mxGeometry>
+ </mxCell>
+ <mxCell id="LG2FzYKowvd94eDzYkV2-26" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;" parent="1" source="LG2FzYKowvd94eDzYkV2-27" target="LG2FzYKowvd94eDzYkV2-10" edge="1">
+ <mxGeometry relative="1" as="geometry">
+ <Array as="points">
+ <mxPoint x="820" y="680" />
+ <mxPoint x="220" y="680" />
+ </Array>
+ </mxGeometry>
+ </mxCell>
+ <mxCell id="LG2FzYKowvd94eDzYkV2-30" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;strokeColor=#000000;" parent="1" source="LG2FzYKowvd94eDzYkV2-27" target="LG2FzYKowvd94eDzYkV2-29" edge="1">
+ <mxGeometry relative="1" as="geometry">
+ <Array as="points">
+ <mxPoint x="760" y="480" />
+ <mxPoint x="760" y="660" />
+ <mxPoint x="500" y="660" />
+ </Array>
+ </mxGeometry>
+ </mxCell>
+ <mxCell id="50GlqhVncXtl4h4N9La8-1" value="ydb-cli admin config replace &amp;lt;...&amp;gt;" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" parent="LG2FzYKowvd94eDzYkV2-30" vertex="1" connectable="0">
+ <mxGeometry x="0.068" y="-1" relative="1" as="geometry">
+ <mxPoint x="7" as="offset" />
+ </mxGeometry>
+ </mxCell>
+ <mxCell id="LG2FzYKowvd94eDzYkV2-27" value="administrator" style="shape=umlActor;verticalLabelPosition=bottom;verticalAlign=top;html=1;outlineConnect=0;" parent="1" vertex="1">
+ <mxGeometry x="800" y="440" width="40" height="80" as="geometry" />
+ </mxCell>
+ <mxCell id="LG2FzYKowvd94eDzYkV2-32" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;strokeColor=#82B366;" parent="1" source="LG2FzYKowvd94eDzYkV2-28" target="LG2FzYKowvd94eDzYkV2-1" edge="1">
+ <mxGeometry relative="1" as="geometry">
+ <Array as="points">
+ <mxPoint x="380" y="360" />
+ <mxPoint x="220" y="360" />
+ </Array>
+ </mxGeometry>
+ </mxCell>
+ <mxCell id="LG2FzYKowvd94eDzYkV2-33" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;strokeColor=#82B366;" parent="1" source="LG2FzYKowvd94eDzYkV2-28" target="LG2FzYKowvd94eDzYkV2-2" edge="1">
+ <mxGeometry relative="1" as="geometry">
+ <Array as="points">
+ <mxPoint x="380" y="340" />
+ <mxPoint x="380" y="340" />
+ </Array>
+ </mxGeometry>
+ </mxCell>
+ <mxCell id="LG2FzYKowvd94eDzYkV2-34" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;strokeColor=#82B366;" parent="1" source="LG2FzYKowvd94eDzYkV2-28" target="LG2FzYKowvd94eDzYkV2-3" edge="1">
+ <mxGeometry relative="1" as="geometry">
+ <Array as="points">
+ <mxPoint x="380" y="360" />
+ <mxPoint x="620" y="360" />
+ </Array>
+ </mxGeometry>
+ </mxCell>
+ <mxCell id="LG2FzYKowvd94eDzYkV2-28" value="Console" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#e1d5e7;strokeColor=#9673a6;" parent="1" vertex="1">
+ <mxGeometry x="330" y="490" width="100" height="20" as="geometry" />
+ </mxCell>
+ <mxCell id="LG2FzYKowvd94eDzYkV2-31" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=1;entryY=0.5;entryDx=0;entryDy=0;strokeColor=#82B366;" parent="1" source="LG2FzYKowvd94eDzYkV2-29" target="LG2FzYKowvd94eDzYkV2-28" edge="1">
+ <mxGeometry relative="1" as="geometry">
+ <Array as="points">
+ <mxPoint x="500" y="500" />
+ </Array>
+ </mxGeometry>
+ </mxCell>
+ <mxCell id="LG2FzYKowvd94eDzYkV2-29" value="dynconfig.yaml" style="shape=note;whiteSpace=wrap;html=1;backgroundOutline=1;darkOpacity=0.05;fillColor=#b0e3e6;strokeColor=#0e8088;" parent="1" vertex="1">
+ <mxGeometry x="460" y="560" width="80" height="80" as="geometry" />
+ </mxCell>
+ <mxCell id="wVVEwfBdDmv9Ek4i4r_U-1" value="" style="endArrow=classic;html=1;rounded=0;" parent="1" edge="1">
+ <mxGeometry width="50" height="50" relative="1" as="geometry">
+ <mxPoint x="760" y="240" as="sourcePoint" />
+ <mxPoint x="840" y="240" as="targetPoint" />
+ </mxGeometry>
+ </mxCell>
+ <mxCell id="wVVEwfBdDmv9Ek4i4r_U-2" value="config delivered by administrator" style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" parent="1" vertex="1">
+ <mxGeometry x="740" y="250" width="130" height="30" as="geometry" />
+ </mxCell>
+ <mxCell id="wVVEwfBdDmv9Ek4i4r_U-3" value="" style="endArrow=classic;html=1;rounded=0;strokeColor=#82B366;" parent="1" edge="1">
+ <mxGeometry width="50" height="50" relative="1" as="geometry">
+ <mxPoint x="760" y="320" as="sourcePoint" />
+ <mxPoint x="840" y="320" as="targetPoint" />
+ </mxGeometry>
+ </mxCell>
+ <mxCell id="wVVEwfBdDmv9Ek4i4r_U-4" value="config delivered by YDB" style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" parent="1" vertex="1">
+ <mxGeometry x="740" y="330" width="130" height="30" as="geometry" />
+ </mxCell>
+ </root>
+ </mxGraphModel>
+ </diagram>
+</mxfile>
diff --git a/ydb/docs/ru/core/maintenance/manual/cms.md b/ydb/docs/ru/core/maintenance/manual/cms.md
index 865220d861..f9e135fde2 100644
--- a/ydb/docs/ru/core/maintenance/manual/cms.md
+++ b/ydb/docs/ru/core/maintenance/manual/cms.md
@@ -1,5 +1,11 @@
# Изменение конфигураций через CMS
+{% note info %}
+
+Данный способ изменения конфигурации является устаревшим. Рекомендуемый способ конфигурирования описан в разделе [динамическая конфигурация кластера](./dynamic-config.md).
+
+{% endnote %}
+
## Получить текущие настройки
Следующая команда позволит получить текущие настройки по кластеру или по тенанту.
diff --git a/ydb/docs/ru/core/maintenance/manual/config-overview.md b/ydb/docs/ru/core/maintenance/manual/config-overview.md
new file mode 100644
index 0000000000..c84af8e828
--- /dev/null
+++ b/ydb/docs/ru/core/maintenance/manual/config-overview.md
@@ -0,0 +1,35 @@
+# Обзор конфигурации
+
+Для запуска узла {{ ydb-short-name }} требуется конфигурация. Существуют два типа конфигурации:
+* **статическая** — файл в формате YAML, хранящийся на локальном диске узла.
+* **динамическая** — документ в формате YAML, хранящийся в хранилище конфигурации YDB.
+
+Статические узлы кластера используют статическую конфигурацию. Динамические узлы могут использовать статическую конфигурацию, динамическую конфигурацию или их комбинацию.
+
+## Статическая конфигурация
+
+Статическая конфигурация представляет собой YAML файл, хранимый на узлах кластера. В этом файле перечислены все настройки системы. Путь к файлу передается на вход процессу ydbd при запуске через параметр командной строки. Распространение статической конфигурации по кластеру и поддержка её в консистентном состоянии на всех узлах — ответственность администратора кластера. Подробности по использованию статической конфигурации можно найти в разделе [{#T}](../../deploy/configuration/config.md). Эта конфигурация **необходима** для запуска статических узлов.
+
+![data tab](_assets/config-chart-1.png "static configs")
+
+### Базовый сценарий использования
+
+1. Скопировать [стандартную конфигурацию](https://github.com/ydb-platform/ydb/tree/main/ydb/deploy/yaml_config_examples/) из github.
+2. Изменить конфигурацию в соответствии с вашими требованиями.
+3. Разместить идентичные файлы конфигурации на всех узлах кластера.
+4. Запустить все узлы кластера, указав путь к файлу конфигурации явно, используя аргумент командной строки `--yaml-config`.
+
+## Динамическая конфигурация
+
+Динамическая конфигурация является YAML документом, надёжно сохранённом в кластере в [таблетке](../../concepts/cluster/common_scheme_ydb.md#tablets) Console. В отличие от статической её достаточно загрузить в кластер, так как за её распространение и поддержание в консистетном состоянии будет отвечать {{ ydb-short-name }}. При этом динамическая конфигурация при помощи селекторов позволяет обрабатывать, в том числе, сложные сценарии, оставаясь при этом в рамках одного файла конфигурации. Описание динамической конфигурации представлено в разделе [{#T}](./dynamic-config.md).
+
+![data tab](_assets/config-chart-2.png "static and dynamic configs")
+
+### Базовый сценарий использования
+
+1. Скопировать [стандартную конфигурацию](https://github.com/ydb-platform/ydb/tree/main/ydb/deploy/yaml_config_examples/) из github.
+2. Изменить конфигурацию в соответствии с вашими требованиями.
+3. Разместить идентичные файлы конфигурации на всех статических узлах кластера.
+4. Запустить все статические узлы кластера, указав путь к файлу конфигурации явно, используя аргумент командной строки `--yaml-config`.
+5. Дополнить файл конфигурации до [формата динамической конфигурации](./dynamic-config.md#example).
+6. Загрузить на кластер полученную конфигурацию при помощи `{{ ydb-cli }} admin config replace -f dynconfig.yaml`.
diff --git a/ydb/docs/ru/core/maintenance/manual/dynamic-config-selectors.md b/ydb/docs/ru/core/maintenance/manual/dynamic-config-selectors.md
new file mode 100644
index 0000000000..7dd3eb9c47
--- /dev/null
+++ b/ydb/docs/ru/core/maintenance/manual/dynamic-config-selectors.md
@@ -0,0 +1,357 @@
+# DSL конфигурации кластера
+
+## Селекторы {#selectors-intro}
+
+Основной сущностью DSL являются **селекторы**. Они позволяют переопределять часть конфигурации или конфигурацию целиком для определенных узлов или групп узлов. Например, они могут быть использованы для включения экспериментальной функциональности узлов определенной базы данных.
+Каждый селектор представляет собой массив переопределений и расширений основной конфигурации. У каждого селектора есть поле `description`, которое может использоваться для хранения произвольной строки описания. Поле `selector` представляет собой набор правил, по которым определяется, должен ли данный селектор применяться для определенного узла, то есть для какого-либо набора лейблов. Поле `config` описывает правила переопределения.
+Селекторы применяются в порядке их описания.
+
+## Лейблы {#labels}
+
+Лейблы — это особые метки, с помощью которых можно пометить узлы или группы узлов. Каждый узел имеет набор автоматически задаваемых лейблов:
+* `node_id` — внутренний идентификатор узла в системе;
+* `node_host` — `hostname` узла получаемый при старте;
+* `tenant` — база данных обслуживаемая данным узлом;
+* `dynamic` — является ли данный узел динамическим (true/false).
+
+И, опционально, какие-либо дополнительные лейблы, явно определённые пользователем при запуске процесса `ydbd` на узле при помощи аргументов командной строки. Например: `--label example=test`.
+
+## Пример использования селекторов {#selectors-example}
+
+В примере ниже определяется общая конфигурация актор-системы и конфигурация для тенанта `large_tenant`. По умолчанию при такой конфигурации актор-система считает, что на узле 4 ядра, а на узлах тенанта `large_tenant` по 16 ядер, при этом также переопределяется тип узлов для актор-системы на `COMPUTE`.
+
+```yaml
+metadata:
+ cluster: ""
+ version: 8
+config:
+ actor_system_config:
+ use_auto_config: true
+ node_type: STORAGE
+ cpu_count: 4
+
+# Раздел используется как хинт при генерации возможных конфигураций при помощи команды resolve
+allowed_labels:
+ dynamic:
+ type: string
+
+selector_config:
+- description: large_tenant has bigger nodes with 16 cpu # произвольная строка с описанием
+ selector: # селектор для всех узлов тенанта large_tenant
+ tenant: large_tenant
+ config:
+ actor_system_config: !inherit # переиспользуем исходный actor_system_config, семантика !inherit описана в разделе ниже
+ # в данном случае !inherit позволяет управлять параметром actor_system_config.use_auto_config одновременно для всего кластера изменяя лишь базовую настройку
+ cpu_count: 16
+ node_type: COMPUTE
+```
+
+## Допустимые лейблы
+
+Отображение, в котором можно задать допустимые значения для лейблов. Раздел используется как хинт при генерации возможных конфигураций при помощи команды resolve. При запуске узлов значения не валидируются.
+
+Доступно два типа лейблов:
+* string;
+* enum.
+
+### string
+Может принимать любые значения, или быть не задан.
+
+Пример:
+```yaml
+dynamic:
+ type: string
+host_name:
+ type: string
+```
+
+### enum
+Может принимать значения из списка `values`, или быть не задан.
+
+Пример:
+```yaml
+flavour:
+ type: enum
+ values:
+ ? small
+ ? medium
+ ? big
+```
+
+
+## Поведение селекторов
+
+Селекторы представляют простой язык предикатов. Селекторы по каждому лейблу объединяются через условие **И**.
+
+### Простой селектор
+
+Следующий селектор выберет узлы, на которых значение лейбла `label1` равно `value1` **и** лейбла `label2` равно `value2`:
+```yaml
+selector:
+ label1: value1
+ label2: value2
+```
+
+Следующий селектор выберет **ВСЕ** узлы в кластере, т.к. никаких условий не задано:
+```yaml
+selector: {}
+```
+
+### In
+
+Данный оператор позволяет выбирать узлы с значением лейблов из списка.
+
+Следующий селектор выберет все узлы, где лейбл `label1` равен `value1` **или** `value2`:
+```yaml
+selector:
+ label1:
+ in:
+ - value1
+ - value2
+```
+
+### NotIn
+
+Данный оператор позволяет выбирать узлы, у которых выбранный лейбл не равен значению из списка.
+
+Следующий селектор выберет все узлы, где лейбл `label1` равен `value1` **и** `label2` не равен `value2` **и** `value3`:
+```yaml
+selector:
+ label1: value1
+ label2:
+ not_in:
+ - value2
+ - value3
+```
+
+## Дополнительные теги в YAML
+
+Теги необходимы для частичного или полного переиспользования конфигураций предыдущих селекторов. С помощью них можно объеденить, расширить, удалить и полностью переопределить параметры, заданные в предыдущих селекторах и основной конфигурации.
+
+### !inherit
+
+**Область применения:** [YAML mapping](https://yaml.org/spec/1.2.2/#mapping)
+**Действие:** аналогично [merge-тегу](https://yaml.org/type/merge.html) в YAML, скопировать все дочерние элементы из родительского отображения и объеденить с текущими с перезаписью
+**Пример:**
+
+#|
+|| Изначальная конфигурация | Переопределение | Результирующая конфигурация ||
+||
+```yaml
+config:
+ some_config:
+ first_entry: 1
+ second_entry: 2
+ third_entry: 3
+```
+|
+```yaml
+config:
+ some_config: !inherit
+ second_entry: 100
+```
+|
+```yaml
+config:
+ some_config:
+ first_entry: 1
+ second_entry: 100
+ third_entry: 3
+```
+||
+|#
+
+### !inherit:\<key\>
+
+**Область применения:** [YAML sequence](https://yaml.org/spec/1.2.2/#sequence)
+**Действие:** скопировать элементы родительского массива и переписать, трактуя объект key в элементах как ключ, дописывая новые ключи в конец
+**Пример:**
+
+#|
+|| Изначальная конфигурация | Переопределение | Результирующая конфигурация ||
+||
+```yaml
+config:
+ some_config:
+ array:
+ - abc: 2
+ value: 10
+ - abc: 1
+ value: 20
+ another_value: test
+```
+|
+```yaml
+config:
+ some_config: !inherit
+ array: !inherit:abc
+ - abc: 1
+ value: 30
+ - abc: 3
+ value: 40
+```
+|
+```yaml
+config:
+ some_config:
+ array:
+ - abc: 2
+ value: 10
+ - abc: 1
+ value: 30
+ - abc: 3
+ value: 40
+```
+||
+|#
+
+### !remove
+
+**Область применения:** YAML sequence element под !inherit:\<key\>
+**Действие:** удалить элемент с соотвествующим ключом.
+**Пример:**
+
+#|
+|| Изначальная конфигурация | Переопределение | Результирующая конфигурация ||
+||
+```yaml
+config:
+ some_config:
+ array:
+ - abc: 2
+ value: 10
+ - abc: 1
+ value: 20
+ another_value: test
+```
+|
+```yaml
+config:
+ some_config: !inherit
+ array: !inherit:abc
+ - !remove
+ abc: 1
+```
+|
+```yaml
+config:
+ some_config:
+ array:
+ - abc: 2
+ value: 10
+```
+||
+|#
+### !append
+
+**Область применения:** [YAML sequence](https://yaml.org/spec/1.2.2/#sequence)
+**Действие:** скопировать элементы родительского массива и дописать новые в конец
+**Пример:**
+
+#|
+|| Изначальная конфигурация | Переопределение | Результирующая конфигурация ||
+||
+```yaml
+config:
+ some_config:
+ array:
+ - abc: 2
+ value: 10
+ - abc: 1
+ value: 20
+ another_value: test
+```
+|
+```yaml
+config:
+ some_config: !inherit
+ array: !append
+ - abc: 1
+ value: 30
+ - abc: 3
+ value: 40
+```
+|
+```yaml
+config:
+ some_config:
+ array:
+ - abc: 2
+ value: 10
+ - abc: 1
+ value: 20
+ another_value: test
+ - abc: 1
+ value: 30
+ - abc: 3
+ value: 40
+```
+||
+|#
+
+## Генерация конечных конфигураций {#selectors-resolve}
+
+Конфигурации могут содержать сложные наборы переопределений. С помощью [{{ ydb-short-name }} CLI](../../reference/ydb-cli/index.md) существует возможность посмотреть конечные конфигурации для:
+* конкретных узлов;
+* наборов лейблов;
+* все возможные комбинации для текущей конфигурации.
+
+```bash
+# Сгенерировать все возможные конечные конфигурации для cluster.yaml
+{{ ydb-cli }} admin config resolve --all -f cluster.yaml
+# Сгенерировать конфигурацию для cluster.yaml при лейблах tenant=/Root/test и canary=true
+{{ ydb-cli }} admin config resolve -f cluster.yaml --label tenant=/Root/test --label canary=true
+# Сгенерировать конфигурацию для cluster.yaml при лейблах аналогичных текущим на узле 1001
+{{ ydb-cli }} admin config resolve -f cluster.yaml --node_id 1001
+# Взять текущую конфигурацию кластера и сгенерировать для него финальную конфигурацию при лейблах аналогичных текущим на узле 1001
+{{ ydb-cli }} admin config resolve --from-cluster --node_id 1001
+```
+
+Более подробно команда преобразования конфигурации описана в разделе [{#T}](../../reference/ydb-cli/configs.md).
+
+Пример вывода `{{ ydb-cli }} admin config resolve --all -f cluster.yaml` для следующего файла конфигурации:
+```yaml
+metadata:
+ cluster: ""
+ version: 8
+config:
+ actor_system_config:
+ use_auto_config: true
+ node_type: STORAGE
+ cpu_count: 4
+allowed_labels:
+ dynamic:
+ type: string
+selector_config:
+- description: Actorsystem for dynnodes # произвольная строка с описанием
+ selector: # селектор для всех узлов с лейблом dynamic = true
+ dynamic: true
+ config:
+ actor_system_config: !inherit # переиспользуем исходный actor_system_config, семантика !inherit описана в разделе ниже
+ node_type: COMPUTE
+ cpu_count: 8
+```
+Вывод:
+```yaml
+---
+label_sets: # наборы лейблов, для которых сгенерирована конфигурация
+- dynamic:
+ type: NOT_SET # один из трех типов лейбла: NOT_SET | COMMON | EMPTY
+config: # сгенерированная конфигурация
+ invalid: 1
+ actor_system_config:
+ use_auto_config: true
+ node_type: STORAGE
+ cpu_count: 4
+---
+label_sets:
+- dynamic:
+ type: COMMON
+ value: true # значение лейбла
+config:
+ invalid: 1
+ actor_system_config:
+ use_auto_config: true
+ node_type: COMPUTE
+ cpu_count: 8
+```
diff --git a/ydb/docs/ru/core/maintenance/manual/dynamic-config-volatile-config.md b/ydb/docs/ru/core/maintenance/manual/dynamic-config-volatile-config.md
new file mode 100644
index 0000000000..3fa846b5c3
--- /dev/null
+++ b/ydb/docs/ru/core/maintenance/manual/dynamic-config-volatile-config.md
@@ -0,0 +1,61 @@
+# Временные конфигурации
+
+Временные конфигурации — это специальный вид конфигураций, которые дополняют динамическую и при этом не являются персистентными. Т.е. данные конфигурации сбрасываются при переезде или рестарте [таблетки](../../concepts/cluster/common_scheme_ydb.md#tablets) Console, а так же при обновлении основной конфигурации.
+
+Основные сценарии использования:
+- временное изменение конфигурации для отладки или тестирования;
+- пробное включение потенциально опасных настроек. В случае падения или рестарта кластера данные настройки будут автоматически отключены.
+
+Данные конфигурации добавляются в конец набора селекторов, синтаксис описания идентичен [синтаксису селекторов](./dynamic-config-selectors.md).
+
+```bash
+# Получить все временные конфигурации загруженные на кластер
+{{ ydb-cli }} admin config volatile fetch --all --output-directory <dir>
+# Получить временную конфигурацию с id=1
+{{ ydb-cli }} admin config volatile fetch --id 1
+# Применить временную конфигурацию volatile.yaml на кластер
+{{ ydb-cli }} admin config volatile add -f volatile.yaml
+# Удалить временные конфигурации с id=1 и id=3 на кластере
+{{ ydb-cli }} admin config volatile drop --id 1 --id 3
+# Удалить все временные конфигурации на кластере
+{{ ydb-cli }} admin config volatile drop --all
+```
+
+## Пример работы с временной конфигурацией
+
+Временное включение настроек журналирования компонента `blobstorage` в `DEBUG` на узле `host1.example.com`:
+```bash
+# Запрос текущих метаданных, чтобы сформировать корректный заголовок временной конфигурации
+$ {{ ydb-cli }} admin config describe --all
+---
+kind: MainConfig
+cluster: "example-cluster-name"
+version: 2
+---
+kind: VolatileConfig
+cluster: "example-cluster-name"
+version: 2
+id: 1
+# Загрузка конфигурации с версией 2, именем кластера example-cluster-name и идентификатором 2
+$ {{ ydb-cli }} admin config volatile add -f - <<<EOF
+metadata:
+ kind: VolatileConfig
+ cluster: "example-cluster-name"
+ version: 2
+ id: 2
+selector_config:
+- description: Set blobstorage logging level to DEBUG
+ selector:
+ node_host: host1.example.com
+ config:
+ log_config: !inherit
+ entry: !inherit_key:component
+ - component: BLOBSTORAGE
+ level: 8
+EOF
+# ...
+# анализ журнала
+# ...
+# Удаление конфигурации
+$ {{ ydb-cli }} admin config volatile drop --id 2
+```
diff --git a/ydb/docs/ru/core/maintenance/manual/dynamic-config.md b/ydb/docs/ru/core/maintenance/manual/dynamic-config.md
new file mode 100644
index 0000000000..eeb4b0e130
--- /dev/null
+++ b/ydb/docs/ru/core/maintenance/manual/dynamic-config.md
@@ -0,0 +1,136 @@
+## Динамическая конфигурация кластера
+
+Динамическая конфигурация позволяет запускать динамические [узлы](../../concepts/cluster/common_scheme_ydb#nodes), сконфигурировав их централизованно, без необходимости раскладывать файлы по узлам вручную. {{ ydb-short-name }} выступает в роли системы управления конфигурациями, предоставляя инструменты для надёжного хранения, версионирования и доставки конфигурации, а так же [DSL (Domain Specific Language)](./dynamic-config-selectors.md) для переопределения её частей для определённых групп узлов. Конфигурация представляет собой YAML документ. Он является расширенной версией статической конфигурацией:
+* описание конфигурации вынесено в поле `config`;
+* добавлено поле `metadata`, необходимое для валидации и версионирования;
+* добавлены поля `allowed_labels` и `selector_config` для гранулярного переопределения настроек.
+Эта конфигурация загружается в кластер, где надёжно сохраняется и доставляется до каждого динамического узла при его старте. [Определенные настройки](#dynamic-kinds) обновляются на лету, без перезапуска узлов. С помощью динамической конфигурации можно централизованно решить следующие задачи:
+* переключение настроек журналирования компонентов как для всего кластера, так и для отдельных групп узлов;
+* включать экспериментальную функциональность (feature flags) на отдельных базах;
+* изменить настройки акторной системы на отдельно узле или на групе узлов;
+* и т.д.
+
+### Примеры конфигурации {#example}
+
+Пример минимальной динамической конфигурации для однодатацентрового кластера:
+```yaml
+# Метаданные конфигурации.
+# Поле управляется сервером
+metadata:
+ # Имя кластера из параметра cluster_uuid, выставляемом при установке кластера, или "", если параметр не выставлен
+ cluster: unknown
+ # Идентификатор конфигурационного файла, всегда возрастает на 1 и начинается с 1.
+ # Увеличивается автоматически при загрузке новой конфигурации на сервер.
+ version: 1
+# Основная конфигурация кластера, все значения из него применяются по-умолчанию, пока не переопределены селекторами.
+# Содержание аналогично статической конфигурации кластера
+config:
+# должен быть всегда выставлен в true для использования yaml конфигурации
+ yaml_config_enabled: true
+# конфигурация актор-системы, т.к. по-умолчанию данная секция используется только дин-нодами
+# выставлена конфигурация именно для ни
+ actor_system_config:
+# автоматический подбор конфигурации для ноды на основе типа и количества доступных ядер
+ use_auto_config: true
+# HYBRID || COMPUTE || STORAGE — тип ноды
+ node_type: COMPUTE
+# число ядер
+ cpu_count: 4
+# конфигурация корневого домена кластера {{ ydb-short-name }}
+ domains_config:
+ domain:
+ - name: Root
+ storage_pool_types:
+ - kind: ssd
+ pool_config:
+ box_id: 1
+ erasure_species: none
+ kind: ssd
+ pdisk_filter:
+ - property:
+ - type: SSD
+ vdisk_kind: Default
+ explicit_mediators: [72075186232426497, 72075186232426498, 72075186232426499]
+ explicit_coordinators: [72075186232360961, 72075186232360962, 72075186232360963]
+ explicit_allocators: [72075186232492033, 72075186232492034, 72075186232492035]
+ state_storage:
+ - ssid: 1
+ ring:
+ nto_select: 5
+ node: [1, 2, 3, 4, 5, 6, 7, 8]
+ hive_config:
+ - hive_uid: 1
+ hive: 72057594037968897
+# конфигурация профилей каналов таблеток
+ channel_profile_config:
+ profile:
+ - profile_id: 0
+ channel:
+ - &default_channel
+ erasure_species: block-4-2
+ pdisk_category: 1
+ vdisk_category: Default
+ - *default_channel
+ - *default_channel
+allowed_labels: {}
+selector_config: []
+```
+
+Подробнее параметры конфигурации описаны на странице [{#T}](../../deploy/configuration/config.md).
+
+По умолчанию конфигурация кластера является пустой и имеет версию 1. При применении новой конфигурации версия загружаемой конфигурации сравнивается и автоматически увеличивается на единицу.
+
+### Обновление динамической конфигурации
+
+```bash
+# Получить конфигурацию кластера
+{{ ydb-cli }} admin config fetch > dynconfig.yaml
+# Отредактировать при помощи любого текстового редактора
+vim dynconfig.yaml
+# Применить конфигурационный файл dynconfig.yaml на кластер
+{{ ydb-cli }} admin config replace -f dynconfig.yaml
+```
+
+Дополнительные возможности конфигурирования описаны на страницах [селекторы](./dynamic-config-selectors.md) и [временная конфигурация](./dynamic-config-volatile-config.md).
+Все команды для работы с конфигурацией описаны в разделе [{#T}](../../reference/ydb-cli/configs.md).
+
+### Механизм работы
+
+#### Обновление конфигурации c точки зрения администратора
+
+1. Конфигурационный файл загружается пользователем при помощи [grpc-вызова](https://github.com/ydb-platform/ydb/blob/5251c9ace0a7617c25d50f1aa4d0f13e3d56f985/ydb/public/api/grpc/draft/ydb_dynamic_config_v1.proto#L22) или [{{ ydb-short-name }} CLI](../../reference/ydb-cli/index.md) в кластер.
+2. Файл проверяется на валидность, проверяются базовые ограничения, корректность версии, корректность имени кластера, корректность конфигураций полученных после преобразования DSL.
+3. Версия конфигурации в файле увеличивается на единицу.
+4. Файл надёжно сохраняется в кластере [таблеткой](../../concepts/cluster/common_scheme_ydb.md#tablets) Console.
+5. Обновления файла рассылаются по узлам кластера.
+
+#### Обновление конфигурации с точки зрения узла кластера
+
+1. Каждый узел при старте запрашивает полную конфигурацию.
+2. Получив конфигурацию, узел [генерирует конечную конфигурацию](./dynamic-config-selectors.md#selectors-resolve) для своего набора [лейблов](./dynamic-config-selectors.md#selectors-intro).
+3. Узел подписывается на обновления конфигурации, регистрируясь в таблетке Console.
+4. В случае обновления конфигурации локальный сервис получает его и преобразует для лейблов узла.
+5. Все локальные сервисы, подписанные на обновления, получают обновлённую конфигурацию.
+
+Пункты 1,2 выполняются только для динамических узлов кластера.
+
+#### Версионирование конфигурации
+
+Данный механизм позволяет избежать конкурентной модификации конфигурации и сделать её обновление идемпотентным. При получении запроса на модификацию конфигурации сервер сравнивает версию полученной модификации с сохраненной. Если версия меньше на единицу, то конфигурации сравниваются — если они одинаковы, значит пользователь пытается загрузить конфигурацию повторно, пользователь получает ОК, а конфигурация на кластере не обновляется. Если версия равна текущей на кластере, то конфигурация заменяется на новую, при этом поле версии увеличивается на единицу. Во всех остальных случаях пользователь получает ошибку.
+
+### Динамически обновляемые настройки {#dynamic-kinds}
+
+Часть настроек системы обновляется без перезапуска узлов. Для их изменения достаточно загрузить новую конфигурацию и дождаться её распространения по кластеру.
+
+Список динамически обновляемых настроек:
+* `log_config`;
+* `immediate_controls_config`;
+* `table_service_config`;
+* `monitoring_config`.
+
+В будущем список может быть расширен.
+
+### Ограничения
+
+* Использование более 30 различных [лейблов](./dynamic-config-selectors.md) в [селекторах](./dynamic-config-selectors.md) может привести к задержкам при валидации конфигурации в десятки секунд, т.к. {{ ydb-short-name }} необходимо проверить валидность каждой возможной конечной конфигурации. При этом количество значений одного лейбла влияет намного меньше.
+* Использование объемных файлов (более 500KiB для кластера в 1000 узлов), конфигурации может привести к росту сетевого трафика в кластере при обновлении конфигурации. Объем трафика прямо пропорционален количеству нод и объему конфигурации.
diff --git a/ydb/docs/ru/core/maintenance/toc_i.yaml b/ydb/docs/ru/core/maintenance/toc_i.yaml
index 01fd204572..30b3414b4f 100644
--- a/ydb/docs/ru/core/maintenance/toc_i.yaml
+++ b/ydb/docs/ru/core/maintenance/toc_i.yaml
@@ -11,5 +11,17 @@ items:
include: { mode: link, path: manual/toc_p.yaml }
- name: Изменение конфигурации актор-системы
href: manual/change_actorsystem_configs.md
- - name: Изменение конфигураций через CMS
- href: manual/cms.md
+ - name: Управление конфигурацией кластера
+ items:
+ - name: Обзор конфигурации
+ href: manual/config-overview.md
+ - name: Статическая конфигурация кластера
+ href: ../deploy/configuration/config.md
+ - name: Динамическая конфигурация кластера
+ href: manual/dynamic-config.md
+ - name: DSL конфигурации кластера
+ href: manual/dynamic-config-selectors.md
+ - name: Временная конфигурация
+ href: manual/dynamic-config-volatile-config.md
+ - name: Изменение конфигураций через CMS
+ href: manual/cms.md
diff --git a/ydb/docs/ru/core/reference/ydb-cli/configs.md b/ydb/docs/ru/core/reference/ydb-cli/configs.md
new file mode 100644
index 0000000000..7ca0161827
--- /dev/null
+++ b/ydb/docs/ru/core/reference/ydb-cli/configs.md
@@ -0,0 +1,160 @@
+## Работа с конфигурацией
+
+### Общие флаги для команд
+
+* `-f, --filename <filename.yaml>` — считать input из файла, `-` для STDIN. Для команд принимающих n файлов (прим. resolve) можно указать несколько раз, тип файла будет определён по полю metadata
+* `-k, --directory <dir>` — считать input из директории
+* `--output-directory <dir>` — сдампить/порезолвить файлы в директорию
+* `-o, --output <json-stream|json|yaml>` — изменить формат вывода, по-умолчанию yaml
+* `-s, --strip-metadata` — выкинуть поле metadata из вывода
+* `-a, --all` — расширяет вывод команд до всей конфигурации (см. продвинутое конфигурирование)
+
+
+```bash
+# Применить конфигурацию dynconfig.yaml на кластер
+{{ ydb-cli }} admin config replace -f dynconfig.yaml
+# Проверить возможно ли применить конфигурацию dynconfig.yaml на кластер (проверить все валидаторы, совпадение версий и кластера)
+{{ ydb-cli }} admin config replace -f dynconfig.yaml --dry-run
+# Применить конфигурацию dynconfig.yaml на кластер игнорирую проверку версий и кластера (версия и кластер всё равно будут перезаписаны на корректные)
+{{ ydb-cli }} admin config replace -f dynconfig.yaml --force
+# Получить основную конфигурацию кластера
+{{ ydb-cli }} admin config fetch
+# Получить все текущие конфигурационные файлы кластера
+{{ ydb-cli }} admin config fetch --all
+# Получить метаинформацию о конфигурациях кластера
+{{ ydb-cli }} admin config describe
+# Сгенерировать все возможные конечные конфигурации для dynconfig.yaml
+{{ ydb-cli }} admin config resolve --all -f dynconfig.yaml
+# Сгенерировать конечную конфигурацию для dynconfig.yaml при лейблах tenant=/Root/test и canary=true
+{{ ydb-cli }} admin config resolve -f dynconfig.yaml --label tenant=/Root/test --label canary=true
+# Сгенерировать конечную конфигурацию для dynconfig.yaml для лейблов с узла 1003
+{{ ydb-cli }} admin config resolve -f dynconfig.yaml --node-id 1003
+# Получить все временные конфигурации кластера
+{{ ydb-cli }} admin config volatile fetch --all --output-directory <dir>
+# Получить временную конфигурацию с id 1 с кластера
+{{ ydb-cli }} admin config volatile fetch --id 1
+# Применить временную конфигурацию volatile.yaml на кластер
+{{ ydb-cli }} admin config volatile add -f volatile.yaml
+# Удалить временные конфигурации с id 1 и 3 на кластере
+{{ ydb-cli }} admin config volatile drop --id 1 --id 3
+# Удалить все временные конфигурации на кластере
+{{ ydb-cli }} admin config volatile drop --all
+```
+
+## Сценарии
+
+### Обновить основную конфигурацию кластера
+ ```bash
+# Получить конфигурацию кластера
+{{ ydb-cli }} admin config fetch > dynconfig.yaml
+# Отредактировать конфигурацию вашим любимым редактором
+vim dynconfig.yaml
+# Применить конфигурацию dynconfig.yaml на кластер
+{{ ydb-cli }} admin config replace -f dynconfig.yaml
+```
+аналогично в одну строчку:
+```bash
+{{ ydb-cli }} admin config fetch | yq '.config.actor_system_config.scheduler.resolution = 128' | {{ ydb-cli }} admin config replace -f -
+```
+вывод команды:
+```
+OK
+```
+### Посмотреть конфигурацию для определённого набора лейблов
+```bash
+{{ ydb-cli }} admin config resolve --remote --label tenant=/Root/db1 --label canary=true
+```
+вывод команды:
+```yaml
+---
+label_sets:
+- dynamic:
+ type: COMMON
+ value: true
+config:
+ actor_system_config:
+ use_auto_config: true
+ node_type: COMPUTE
+ cpu_count: 4
+```
+
+### Посмотреть конфигурацию для определённого узла
+```bash
+{{ ydb-cli }} admin config resolve --remote --node-id <node_id>
+```
+вывод команды:
+```yaml
+---
+label_sets:
+- dynamic:
+ type: COMMON
+ value: true
+config:
+ actor_system_config:
+ use_auto_config: true
+ node_type: COMPUTE
+ cpu_count: 4
+```
+
+### Сохранить все конфигурации локально
+```bash
+{{ ydb-cli }} admin config fetch --all --output-directory <configs_dir>
+ls <configs_dir>
+```
+вывод команды:
+```
+dynconfig.yaml volatile_1.yaml volatile_3.yaml
+```
+
+### Посмотреть все конфигурации локально
+```bash
+{{ ydb-cli }} admin config fetch --all
+```
+вывод команды:
+```yaml
+---
+metadata:
+ kind: main
+ cluster: unknown
+ version: 1
+config:
+ actor_system_config:
+ use_auto_config: true
+ node_type: COMPUTE
+ cpu_count: 4
+allowed_labels: {}
+selector_config: []
+---
+metadata:
+ kind: volatile
+ cluster: unknown
+ version: 1
+ id: 1
+# some comment example
+selectors:
+- description: test
+ selector:
+ tenant: /Root/db1
+ config:
+ actor_system_config: !inheirt
+ use_auto_config: true
+ cpu_count: 12
+```
+
+### Посмотреть конечную конфигурацию для определённого узла из сохраненной локально исходной конфигурации
+```bash
+{{ ydb-cli }} admin config resolve -k <configs_dir> --node-id <node_id>
+```
+вывод команды:
+```yaml
+---
+label_sets:
+- dynamic:
+ type: COMMON
+ value: true
+config:
+ actor_system_config:
+ use_auto_config: true
+ node_type: COMPUTE
+ cpu_count: 4
+```
diff --git a/ydb/docs/ru/core/reference/ydb-cli/toc_i.yaml b/ydb/docs/ru/core/reference/ydb-cli/toc_i.yaml
index 7f32e94776..0c1cddda41 100644
--- a/ydb/docs/ru/core/reference/ydb-cli/toc_i.yaml
+++ b/ydb/docs/ru/core/reference/ydb-cli/toc_i.yaml
@@ -69,7 +69,7 @@ items:
- name: Запись в топик
href: topic-write.md
- name: Конвейерная обработка сообщений
- href: topic-pipeline.md
+ href: topic-pipeline.md
- name: Выполнение YQL
items:
- name: Обзор
@@ -122,3 +122,5 @@ items:
href: workload-topic.md
- name: TPC-H нагрузка
href: workload-tpch.md
+ - name: Работа с конфигурацией
+ href: configs.md