name: k8s_openbao service_id: 151 service_display_name: Vault service_short_name: k8sOpenbao service_man: '# Инструкция по развертыванию Хранилища секретов через платформу

## 1. Общая информация
Хранилище секретов — сервис централизованного и защищённого хранения чувствительных данных (секретов, ключей, конфигураций). Предназначен для использования приложениями и сервисами в Kubernetes с управлением доступом на основе ролей.
В качестве приложения используется открытый проект OpenBao с поддержкой кластерного режима RAFT.

### Доступные операции
**create** — Создание хранилища секретов и инициализация кластера.
**delete** — Удаление хранилища секретов с полной очисткой всех связанных сущностей.
**modify** — Изменение параметров развернутого хранилища секретов.
**suspend** — Приостановка работы кластера без удаления Persistent Volume.
**resume** — Возобновление работы кластера с автоматическим unseal всех нод.
**restart** — Поочередный перезапуск нод с последующим подключением в кластер.
**create_kv** — Создание Key/Value хранилища версии V2.
**delete_kv** — Удаление Key/Value хранилища со всеми содержащимися секретами.
**create_secrets** — Создание секрета внутри Key/Value хранилища.
**delete_secrets** — Удаление секрета из Key/Value хранилища.
**update_secrets** — Обновление значения секрета.
**recovery_secrets** — Откат секрета к указанной версии.
**create_role** — Создание роли для управления Key/Value хранилищем или секретами.
**update_role** — Обновление параметров роли.
**delete_role** — Удаление роли доступа.

---

## 2. Параметры развертывания

Параметры входных данных операции **create**:

### Платформа для развертывания
Описание: Кластер Kubernetes, в котором будет развернуто приложение.
Формат значения: имя Kubernetes-кластера.

### Имя домена
Описание: Доменное имя сервиса. При указании полного FQDN выполняется проверка DNS A-записи или добавляется А-запись в техническую зону.
Формат значения: secrets.domain.com / mysecretdomain.

### Кол-во реплик
Описание: Количество узлов в кластере.
Формат значения: целое число.

### Квота ядра пода
Описание: Лимит CPU для одного узла. Указывается в milicores (1000 milicores = 1 CPU).
Формат значения: целое число.

### Квота памяти пода
Описание: Лимит оперативной памяти для одного узла. Указывается в megabytes.
Формат значения: целое число.

### Размер диска под хранение секретов
Описание: Объем диска для хранения данных. Фактический объем равен значению, умноженному на количество реплик. Указывается в Gigabytes
Формат значения: целое число.

### Версия OpenBao
Описание: Версия OpenBao для развертывания сервиса.
Формат значения: выбор из предоставленного списка версий.

---

## 3. Рекомендованные характеристики

### Тестовое окружение
Кол-во реплик: 2.
Квота ядра пода: 200.
Квота памяти пода: 256.
Размер диска под хранение секретов: 1.
Версия OpenBao: актуальная стабильная версия.

### Промышленное окружение
Кол-во реплик: от 3.
Квота ядра пода: от 1000.
Квота памяти пода: от 1024.
Размер диска под хранение секретов: от 10.
Версия OpenBao: актуальная стабильная версия.

---

## 4. Выходные параметры
Настройки внутри хранилища (kv/secrets/roles) — конфигурации Key/Value, секретов и ролей, созданные соответствующими операциями.
Настройки самого хранилище (сайзинг, объемы) — параметры ресурсов и хранилища данных, примененные к сервису.
Статус кластера (running / suspended) — текущее состояние работы кластера.
url для подключения к веб — адрес веб-интерфейса сервиса.

---

## 5. Дополнительная информация
При удалении хранилища все данные и настройки безвозвратно удаляются.
При использовании доменного имени требуется корректная настройка DNS.
Операции управления секретами и ролями выполняются только после успешного создания хранилища.
Удаление кластера производится через операцию `suspend`, а удаление становится доступно через 14 дней после остановки кластера
Правило выше не относится к операции `delete_kv` / `delete_secrets` / `delete_role`' lifecycle: suspendOnDestroyDefault: true adoptExistingOnCreateDefault: false operations: - svcOperationId: 210 operation: create kind: instance action: create - svcOperationId: 212 operation: create_kv kind: subresource action: create - svcOperationId: 237 operation: create_policy kind: subresource action: create - svcOperationId: 214 operation: create_secrets kind: subresource action: create - svcOperationId: 231 operation: delete kind: instance action: delete - svcOperationId: 213 operation: delete_kv kind: subresource action: delete - svcOperationId: 239 operation: delete_policy kind: subresource action: delete - svcOperationId: 233 operation: delete_secrets kind: subresource action: delete - svcOperationId: 211 operation: modify kind: instance action: modify - svcOperationId: 236 operation: reconcile kind: action action: reconcile - svcOperationId: 232 operation: recovery_secrets kind: subresource action: recovery - svcOperationId: 234 operation: restart kind: action action: restart - svcOperationId: 216 operation: resume kind: instance action: resume - svcOperationId: 215 operation: suspend kind: instance action: suspend - svcOperationId: 238 operation: update_policy kind: subresource action: update - svcOperationId: 230 operation: update_secrets kind: subresource action: update stateOut: kvs: {} policies: {} secrets: {} cfsParams: - svcOperationCfsParamId: 663 svcOperationCfsParam: resourceRealm dataType: string isRequired: true defaultValue: '' isModifiable: false valueList: - k8s-3-sandbox-nubes-ru - k8s-4-sandbox-nubes-ru - svcOperationCfsParamId: 664 svcOperationCfsParam: resourceCPU dataType: integer > 0 isRequired: true defaultValue: '500' isModifiable: true - svcOperationCfsParamId: 665 svcOperationCfsParam: resourceInstances dataType: integer > 0 isRequired: true defaultValue: '3' isModifiable: true - svcOperationCfsParamId: 666 svcOperationCfsParam: resourceMemory dataType: integer > 0 isRequired: true defaultValue: '512' isModifiable: true - svcOperationCfsParamId: 667 svcOperationCfsParam: resourceDisk dataType: integer > 0 isRequired: true defaultValue: '10' isModifiable: true - svcOperationCfsParamId: 668 svcOperationCfsParam: appVersion dataType: string isRequired: true defaultValue: 2.5.2 isModifiable: true valueList: - 2.5.2 - svcOperationCfsParamId: 669 svcOperationCfsParam: domain dataType: string isRequired: true defaultValue: bao-onbcvsgk isModifiable: false - svcOperationCfsParamId: 675 svcOperationCfsParam: kvName dataType: string isRequired: true defaultValue: kvname-9e9wvkt2 isModifiable: false - svcOperationCfsParamId: 728 svcOperationCfsParam: policySettings dataType: array-map-fixed isRequired: true defaultValue: '' isModifiable: false dataDescriptor: capabilities: dataType: json defaultValue: '["read", "list"]' isRequired: true isModifiable: false path: dataType: string defaultValue: '' isRequired: true isModifiable: false - svcOperationCfsParamId: 729 svcOperationCfsParam: policyName dataType: string isRequired: true defaultValue: policy-s0hfjfmn isModifiable: false - svcOperationCfsParamId: 677 svcOperationCfsParam: kvName dataType: string isRequired: true defaultValue: '' isModifiable: false - svcOperationCfsParamId: 678 svcOperationCfsParam: secretPath dataType: string isRequired: true defaultValue: path/to/mysecret isModifiable: false - svcOperationCfsParamId: 679 svcOperationCfsParam: secretData dataType: map isRequired: true defaultValue: '' isModifiable: false - svcOperationCfsParamId: 676 svcOperationCfsParam: kvName dataType: string isRequired: true defaultValue: '' isModifiable: true - svcOperationCfsParamId: 732 svcOperationCfsParam: policyName dataType: string isRequired: true defaultValue: '' isModifiable: true - svcOperationCfsParamId: 726 svcOperationCfsParam: kvName dataType: string isRequired: true defaultValue: '' isModifiable: true - svcOperationCfsParamId: 727 svcOperationCfsParam: secretPath dataType: string isRequired: true defaultValue: '' isModifiable: true - svcOperationCfsParamId: 670 svcOperationCfsParam: resourceInstances dataType: integer > 0 isRequired: true defaultValue: '' isModifiable: true - svcOperationCfsParamId: 671 svcOperationCfsParam: resourceCPU dataType: integer > 0 isRequired: true defaultValue: '500' isModifiable: true - svcOperationCfsParamId: 672 svcOperationCfsParam: resourceMemory dataType: integer > 0 isRequired: true defaultValue: '512' isModifiable: true - svcOperationCfsParamId: 673 svcOperationCfsParam: resourceDisk dataType: integer > 0 isRequired: true defaultValue: '' isModifiable: true - svcOperationCfsParamId: 674 svcOperationCfsParam: appVersion dataType: string isRequired: true defaultValue: '' isModifiable: true valueList: - 2.5.2 - svcOperationCfsParamId: 723 svcOperationCfsParam: kvName dataType: string isRequired: true defaultValue: '' isModifiable: true - svcOperationCfsParamId: 724 svcOperationCfsParam: secretPath dataType: string isRequired: true defaultValue: '' isModifiable: true - svcOperationCfsParamId: 725 svcOperationCfsParam: secretVersion dataType: string isRequired: true defaultValue: '' isModifiable: true - svcOperationCfsParamId: 730 svcOperationCfsParam: policyName dataType: string isRequired: true defaultValue: '' isModifiable: true - svcOperationCfsParamId: 731 svcOperationCfsParam: policySettings dataType: array-map-fixed isRequired: true defaultValue: '' isModifiable: true dataDescriptor: capabilities: dataType: string defaultValue: '' isRequired: true isModifiable: false path: dataType: string defaultValue: '' isRequired: true isModifiable: false - svcOperationCfsParamId: 719 svcOperationCfsParam: kvName dataType: string isRequired: true defaultValue: '' isModifiable: true - svcOperationCfsParamId: 720 svcOperationCfsParam: secretPath dataType: string isRequired: true defaultValue: '' isModifiable: true - svcOperationCfsParamId: 721 svcOperationCfsParam: needFullUpdateSecret dataType: boolean isRequired: true defaultValue: 'false' isModifiable: true valueList: - 'false' - 'true' - svcOperationCfsParamId: 722 svcOperationCfsParam: secretData dataType: map isRequired: true defaultValue: '' isModifiable: true cfsParamsByOp: 210: - 663 - 664 - 665 - 666 - 667 - 668 - 669 212: - 675 237: - 728 - 729 214: - 677 - 678 - 679 231: [] 213: - 676 239: - 732 233: - 726 - 727 211: - 670 - 671 - 672 - 673 - 674 236: [] 232: - 723 - 724 - 725 234: [] 216: [] 215: [] 238: - 730 - 731 230: - 719 - 720 - 721 - 722 stateParams: resourceRealm: '' resourceCPU: '500' resourceInstances: '3' resourceMemory: '512' resourceDisk: '10' appVersion: 2.5.2 domain: bao-onbcvsgk