# Руководство по утилите KDT

**Дата обновления:** 14.07.2026

**<span class="qwen-markdown-text">KDT (Kaspersky Deployment Tool)</span>**<span class="qwen-markdown-text"> - это основной инструмент командной строки для установки, обновления, настройки и обслуживания компонентов Kaspersky XDR Expert в кластере Kubernetes.</span>

---

### <span class="qwen-markdown-text" data-spm-anchor-id="a2ty_o01.29997173.0.i6.275b55fbOQI302">1. Основы и глобальное поведение</span>

<div class="qwen-markdown-paragraph" id="bkmrk-%D0%9F%D1%80%D0%B5%D0%B6%D0%B4%D0%B5-%D1%87%D0%B5%D0%BC-%D0%B7%D0%B0%D0%BF%D1%83%D1%81%D0%BA%D0%B0%D1%82%D1%8C"><span class="qwen-markdown-text">Прежде чем запускать команды, важно понимать, как работает KDT. Глобальные флаги указываются </span>**<span class="qwen-markdown-text">перед</span>**<span class="qwen-markdown-text" data-spm-anchor-id="a2ty_o01.29997173.0.i7.275b55fbOQI302"> основной командой:</span></div>```bash
./kdt [ГЛОБАЛЬНЫЕ_ФЛАГИ] <команда> [ФЛАГИ_КОМАНДЫ]
```

<div class="qwen-markdown-paragraph" id="bkmrk-%D0%9F%D0%BE%D0%BB%D0%B5%D0%B7%D0%BD%D1%8B%D0%B5-%D0%B3%D0%BB%D0%BE%D0%B1%D0%B0%D0%BB%D1%8C%D0%BD%D1%8B%D0%B5-">**<span class="qwen-markdown-text" data-spm-anchor-id="a2ty_o01.29997173.0.i9.275b55fbOQI302">Полезные глобальные флаги:</span>**</div>- `-v`<span class="qwen-markdown-text"> (</span>`--version`<span class="qwen-markdown-text">): Показать версию и завершить работу.</span>
- `-p`<span class="qwen-markdown-text"> (</span>`--keep-log`<span class="qwen-markdown-text">): Сохранить временные файлы логов (полезно для отладки).</span>
- `--no-progress`<span class="qwen-markdown-text">: Скрыть индикатор прогресса (удобно для CI/CD пайплайнов).</span>

<div class="qwen-markdown-paragraph" id="bkmrk-%D0%92%D0%B0%D0%B6%D0%BD%D1%8B%D0%B5-%D0%BE%D1%81%D0%BE%D0%B1%D0%B5%D0%BD%D0%BD%D0%BE%D1%81%D1%82%D0%B8%3A">**<span class="qwen-markdown-text">Важные особенности:</span>**</div>1. **<span class="qwen-markdown-text">Предварительные проверки</span>**<span class="qwen-markdown-text">: Перед выполнением большинства команд KDT проверяет аппаратное обеспечение, ОС, сеть и наличие установленного Bootstrap.</span>
2. **<span class="qwen-markdown-text">Коды возврата</span>**<span class="qwen-markdown-text">:</span>
    - `0`<span class="qwen-markdown-text"> — успех.</span>
    - `1`<span class="qwen-markdown-text"> — общая ошибка или провал валидации.</span>
    - `2`<span class="qwen-markdown-text"> — прерывание по сигналу SIGINT (Ctrl+C). </span>*<span class="qwen-markdown-text">Обратите внимание: в KDT используется код </span>`2`<span class="qwen-markdown-text">, а не стандартный </span>`130`*<span class="qwen-markdown-text">.</span>
    - `12`<span class="qwen-markdown-text"> — ошибка драйвера выполнения контейнеров.</span>

---

### <span class="qwen-markdown-text">2. Сценарий первоначального развертывания</span>

<div class="qwen-markdown-paragraph" id="bkmrk-%D0%A0%D0%B5%D0%BA%D0%BE%D0%BC%D0%B5%D0%BD%D0%B4%D1%83%D0%B5%D0%BC%D1%8B%D0%B9-%D0%BF%D1%83%D1%82%D1%8C-%D1%83"><span class="qwen-markdown-text">Рекомендуемый путь установки состоит из двух этапов: генерация конфигурации и ее применение.</span></div><div class="qwen-markdown-space" id="bkmrk--2">  
</div>#### <span class="qwen-markdown-text">Шаг 1: Интерактивный мастер (</span>`wizard`<span class="qwen-markdown-text">)</span>

<div class="qwen-markdown-paragraph" id="bkmrk-%D0%92%D0%BC%D0%B5%D1%81%D1%82%D0%BE-%D1%80%D1%83%D1%87%D0%BD%D0%BE%D0%B3%D0%BE-%D0%BD%D0%B0%D0%BF%D0%B8%D1%81" style="text-align: justify;"><span class="qwen-markdown-text">Вместо ручного написания YAML-файла используйте встроенный мастер. Он задаст все необходимые вопросы: от топологии узлов (primary/worker) и SSH-ключей до строки подключения к PostgreSQL и требований к паролю администратора.</span></div>```bash
./kdt wizard -k xdr-2.1.tar -o deployment.yaml
```

<div class="qwen-markdown-paragraph" id="bkmrk-%D0%A2%D1%80%D0%B5%D0%B1%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D1%8F-%D0%BA-%D0%BF%D0%B0%D1%80%D0%BE%D0%BB%D1%8E-" style="text-align: justify;">*<span class="qwen-markdown-text">Требования к паролю администратора XDR:</span>*<span class="qwen-markdown-text"> 10–256 символов, минимум 3 категории (верхний/нижний регистр, цифры, спецсимволы), без пробелов и комбинации </span>`.@`<span class="qwen-markdown-text">.</span></div><div class="qwen-markdown-space" id="bkmrk--3">  
</div>#### <span class="qwen-markdown-text">Шаг 2: Применение конфигурации (</span>`apply`<span class="qwen-markdown-text">)</span>

<div class="qwen-markdown-paragraph" id="bkmrk-%D0%9F%D0%BE%D1%81%D0%BB%D0%B5-%D0%B3%D0%B5%D0%BD%D0%B5%D1%80%D0%B0%D1%86%D0%B8%D0%B8-%D1%84%D0%B0%D0%B9%D0%BB" style="text-align: justify;"><span class="qwen-markdown-text">После генерации файла запустите развертывание. Флаг </span>`--accept-eula`<span class="qwen-markdown-text"> позволяет выполнить установку в полностью автоматическом (неинтерактивном) режиме.</span></div>```bash
./kdt apply -k xdr-2.1.tar -i deployment.yaml --accept-eula
```

---

### <span class="qwen-markdown-text">3. Повседневное администрирование</span>

<div class="qwen-markdown-paragraph" id="bkmrk-%D0%9F%D0%BE%D1%81%D0%BB%D0%B5-%D1%83%D1%81%D0%BF%D0%B5%D1%88%D0%BD%D0%BE%D0%B9-%D1%83%D1%81%D1%82%D0%B0%D0%BD"><span class="qwen-markdown-text">После успешной установки вам потребуются команды для управления состоянием системы.</span></div><div class="qwen-markdown-space" id="bkmrk--5">  
</div>#### <span class="qwen-markdown-text">Проверка состояния и логи</span>

- **<span class="qwen-markdown-text">Список компонентов</span>**<span class="qwen-markdown-text">: </span>`./kdt state --list`<span class="qwen-markdown-text"> (или короткий алиас </span>`./kdt s --list`<span class="qwen-markdown-text">). Добавьте </span>`--with-deps`<span class="qwen-markdown-text">, чтобы увидеть зависимости.</span>
- **<span class="qwen-markdown-text">Детальный лог компонента</span>**<span class="qwen-markdown-text">: </span>`./kdt state --log backup-operator`
- **<span class="qwen-markdown-text">Получение логов контейнеров</span>**<span class="qwen-markdown-text">:</span>```bash
    ./kdt logs get --app kuma --last 24h --destination ./kuma_logs.txt
    # или короткий алиас: ./kdt l --app kuma --last 24h
    ```

#### <span class="qwen-markdown-text">Выполнение действий над компонентами (</span>`invoke`<span class="qwen-markdown-text">)</span>

<div class="qwen-markdown-paragraph" id="bkmrk-%D0%9A%D0%BE%D0%BC%D0%B0%D0%BD%D0%B4%D0%B0-invoke-%D0%BF%D0%BE%D0%B7%D0%B2%D0%BE" style="text-align: justify;"><span class="qwen-markdown-text">Команда </span>`invoke`<span class="qwen-markdown-text"> позволяет вызывать специфичные для компонентов действия (например, изменение размера дисков, настройка бэкапов, смена IP).</span></div><div class="qwen-markdown-space" id="bkmrk--6">  
</div><div class="qwen-markdown-paragraph" id="bkmrk-%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80%D1%8B%3A">**<span class="qwen-markdown-text">Примеры:</span>**</div>```bash
# Настроить NFS-хранилище для бэкапов
./kdt invoke backup-operator -a setBackupStore --param backup_target_url="nfs://storage.local:/backups"

# Создать ручной бэкап с хранением 5 копий
./kdt invoke backup-operator -a createBackup --param backup_retain=5

# Изменить ingress-IP шлюза
./kdt invoke gateway -a changeIngressIP --param ingress_ip="192.168.1.100"

# Увеличить диск KUMA Core
./kdt invoke kuma -a setCorePvcSize --param core_disk_request="500Gi"
```

<div class="qwen-markdown-paragraph" id="bkmrk-%D0%A7%D1%82%D0%BE%D0%B1%D1%8B-%D1%83%D0%B7%D0%BD%D0%B0%D1%82%D1%8C%2C-%D0%BA%D0%B0%D0%BA%D0%B8%D0%B5-">*<span class="qwen-markdown-text">Чтобы узнать, какие действия доступны для компонента, используйте:</span>* `./kdt describe <имя_компонента>`<span class="qwen-markdown-text"> (алиас </span>`./kdt d`<span class="qwen-markdown-text">).</span></div><div class="qwen-markdown-space" id="bkmrk--7">  
</div>#### <span class="qwen-markdown-text">Резервное копирование и восстановление состояния (</span>`state`<span class="qwen-markdown-text">)</span>

<div class="qwen-markdown-paragraph" id="bkmrk-kdt-%D0%BF%D0%BE%D0%B7%D0%B2%D0%BE%D0%BB%D1%8F%D0%B5%D1%82-%D0%B4%D0%B5%D0%BB%D0%B0%D1%82%D1%8C"><span class="qwen-markdown-text">KDT позволяет делать снапшоты внутренней базы данных состояний:</span></div>```bash
# Создание бэкапа состояния
./kdt state --backup state_backup.tar

# Восстановление состояния (с опциональной очисткой старых данных)
./kdt state --restore --from-backup state_backup.tar --wipe

# Ротация ключа шифрования statedb
./kdt state --rotate-secret
```

---

### <span class="qwen-markdown-text">4. Работа в изолированных контурах (Air-Gap)</span>

<div class="qwen-markdown-paragraph" id="bkmrk-%D0%94%D0%BB%D1%8F-%D1%81%D1%80%D0%B5%D0%B4-%D0%B1%D0%B5%D0%B7-%D0%B4%D0%BE%D1%81%D1%82%D1%83%D0%BF%D0%B0" style="text-align: justify;"><span class="qwen-markdown-text">Для сред без доступа к интернету используется отдельная утилита </span>`kdt-airgap-preparation`<span class="qwen-markdown-text">. Процесс состоит из трех четких этапов:</span></div><div class="qwen-markdown-space" id="bkmrk--9">  
</div>1. **<span class="qwen-markdown-text">Сканирование (</span>`scan`<span class="qwen-markdown-text">)</span>**<span class="qwen-markdown-text">: Выполняется на целевом изолированном узле. Создает файл инвентаризации с перечнем недостающих пакетов.</span>```bash
    kdt-airgap-preparation scan -k ~/.ssh/id_rsa -c config.yaml --airgap -i nodes-airgap.yaml
    ```
2. **<span class="qwen-markdown-text" data-spm-anchor-id="a2ty_o01.29997173.0.i19.275b55fbOQI302">Загрузка (</span>`pull`<span class="qwen-markdown-text">)</span>**<span class="qwen-markdown-text">: Файл </span>`nodes-airgap.yaml`<span class="qwen-markdown-text"> переносится на машину </span>**<span class="qwen-markdown-text">с интернетом</span>**<span class="qwen-markdown-text">. Утилита скачивает все зависимости и упаковывает их в TAR-архив.</span>```bash
    kdt-airgap-preparation pull -n nodes-airgap.yaml -a airgap-packages.tar
    ```
3. **<span class="qwen-markdown-text" data-spm-anchor-id="a2ty_o01.29997173.0.i20.275b55fbOQI302">Установка (</span>`install`<span class="qwen-markdown-text">)</span>**<span class="qwen-markdown-text">: Архив переносится обратно в изолированный контур и развертывается на целевых узлах через SSH.</span>```bash
    kdt-airgap-preparation install -a airgap-packages.tar -k ~/.ssh/id_rsa
    ```

<div class="qwen-markdown-paragraph" data-spm-anchor-id="a2ty_o01.29997173.0.i21.275b55fbOQI302" id="bkmrk-%D0%9F%D0%BE%D1%81%D0%BB%D0%B5-%D1%8D%D1%82%D0%BE%D0%B3%D0%BE-%D0%BC%D0%BE%D0%B6%D0%BD%D0%BE-%D0%B7%D0%B0"><span class="qwen-markdown-text" data-spm-anchor-id="a2ty_o01.29997173.0.i22.275b55fbOQI302">После этого можно запускать стандартный </span>`./kdt apply`<span class="qwen-markdown-text">.</span></div>---

### <span class="qwen-markdown-text">5. Продвинутые возможности и отладка</span>

#### <span class="qwen-markdown-text">Управление контекстами (</span>`ctx`<span class="qwen-markdown-text">)</span>

<div class="qwen-markdown-paragraph" data-spm-anchor-id="a2ty_o01.29997173.0.i21.275b55fbOQI302" id="bkmrk-%D0%95%D1%81%D0%BB%D0%B8-%D0%B2%D1%8B-%D0%BE%D0%B1%D1%81%D0%BB%D1%83%D0%B6%D0%B8%D0%B2%D0%B0%D0%B5%D1%82%D0%B5"><div class="qwen-markdown-paragraph" style="text-align: justify;"><span class="qwen-markdown-text">Если вы обслуживаете несколько кластеров XDR, KDT позволяет переключаться между ними, подобно </span>`kubectl config use-context`<span class="qwen-markdown-text">:</span></div></div>```bash
./kdt ctx                  # Показать список и активный контекст
./kdt ctx prod-cluster     # Переключиться на prod
./kdt ctx new-cluster --create # Создать новый (завершится после apply)
```

#### <span class="qwen-markdown-text">Распределенная трассировка (</span>`traces`<span class="qwen-markdown-text">)</span>

<div class="qwen-markdown-paragraph" id="bkmrk-%D0%94%D0%BB%D1%8F-%D0%B3%D0%BB%D1%83%D0%B1%D0%BE%D0%BA%D0%BE%D0%B9-%D0%B4%D0%B8%D0%B0%D0%B3%D0%BD%D0%BE%D1%81"><span class="qwen-markdown-text">Для глубокой диагностики проблем производительности можно запросить трассировки:</span></div>```bash
./kdt traces find --output traces.json --service-name kuma --min-duration 100ms --num-traces 10
```

#### <span class="qwen-markdown-text">Экспорт текущей конфигурации</span>

<div class="qwen-markdown-paragraph" id="bkmrk-%D0%9E%D1%82%D0%BB%D0%B8%D1%87%D0%BD%D1%8B%D0%B9-%D1%81%D0%BF%D0%BE%D1%81%D0%BE%D0%B1-%D0%B7%D0%B0%D0%B4%D0%BE"><span class="qwen-markdown-text">Отличный способ задокументировать текущее состояние кластера или подготовить базу для миграции:</span></div>```bash
./kdt export-config --filename current_config.yaml
# или короткий алиас:
./kdt ec -e current_config.yaml
```

---

### <span class="qwen-markdown-text">6. Полезные переменные окружения</span>

<div class="qwen-markdown-paragraph" id="bkmrk-%D0%9F%D0%BE%D0%B2%D0%B5%D0%B4%D0%B5%D0%BD%D0%B8%D0%B5-kdt-%D0%BC%D0%BE%D0%B6%D0%BD%D0%BE-"><span class="qwen-markdown-text">Поведение KDT можно гибко настраивать без изменения командной строки:</span></div><div class="qwen-markdown-paragraph" id="bkmrk-%D0%9F%D0%B5%D1%80%D0%B5%D0%BC%D0%B5%D0%BD%D0%BD%D0%B0%D1%8F-%D0%97%D0%BD%D0%B0%D1%87%D0%B5%D0%BD%D0%B8%D0%B5-"><table border="1" style="border-collapse: collapse; width: 100%; height: 267.813px;"><colgroup><col style="width: 33.3333%;"></col><col style="width: 33.3333%;"></col><col style="width: 33.3333%;"></col></colgroup><tbody><tr style="height: 29.7969px;"><td style="height: 29.7969px;">**Переменная**</td><td style="height: 29.7969px;">**Значение по умолчанию**</td><td style="height: 29.7969px;">**Описание**</td></tr><tr style="height: 63.7031px;"><td style="height: 63.7031px;">KDT\_YES</td><td style="height: 63.7031px;">(не задана)</td><td style="height: 63.7031px;"><span class="qwen-markdown-text">Установите </span>`1`<span class="qwen-markdown-text"> для автоматического подтверждения всех запросов (идеально для Ansible/CI/CD).</span></td></tr><tr style="height: 46.5938px;"><td style="height: 46.5938px;">KDT\_HOME</td><td style="height: 46.5938px;">~/.kdt</td><td style="height: 46.5938px;">Позволяет изменить домашнюю директорию утилиты.</td></tr><tr style="height: 46.5938px;"><td style="height: 46.5938px;">KDT\_PARALLELS\_LIMIT</td><td style="height: 46.5938px;">`-1`<span class="qwen-markdown-text"> (авто)</span></td><td style="height: 46.5938px;">Ограничение на количество параллельных операций.</td></tr></tbody></table>

---

</div>**<span class="qwen-markdown-text" data-spm-anchor-id="a2ty_o01.29997173.0.i46.275b55fbOQI302">Рекомендация:</span>**<span class="qwen-markdown-text"> Всегда используйте команду </span>`./kdt describe`<span class="qwen-markdown-text"> перед вызовом новых действий через </span>`invoke`<span class="qwen-markdown-text">, чтобы убедиться в правильности передаваемых параметров, и регулярно экспортируйте конфигурацию (</span>`export-config`<span class="qwen-markdown-text">) после внесения значимых изменений в кластер.</span>