nubes_k8s_openbao — Vault¶
Централизованное защищённое хранилище секретов (ключей, паролей, конфигураций) на базе OpenBao с разграничением доступа по ролям. Отдаёт адрес хранилища и ключи распечатки (unseal) с root-токеном.
Инструкция по сервису Отдельная страница: руководство по сервису.
Специфика Nubes:
destroy≠ удалениеterraform destroyпо умолчанию усыпляет инстанс (suspend), а не удаляет. Подробности — в разделе «Жизненный цикл» и в общем руководстве «Как работает провайдер».
Пример использования¶
Минимальный (обязательные параметры):
resource "nubes_k8s_openbao" "vault" {
resource_name = "my-openbao"
resource_realm = "k8s-4-ext-nubes-ru"
}
Типовой (экономные ресурсы):
resource "nubes_k8s_openbao" "vault" {
resource_name = "my-openbao"
operation_timeout = "20m"
resource_realm = "k8s-4-ext-nubes-ru"
resource_cpu = 250 # 250…8000 (milicores)
resource_memory = 256 # 256…8192 (MB)
resource_disk = 1 # 1…999 (GB)
resource_instances = 1 # 1…7 (по умолчанию 3)
app_version = "2.5.2"
domain = "my-openbao"
}
Argument Reference¶
| Имя | Тип | Обязательный | По умолчанию | Описание | Ограничения |
|---|---|---|---|---|---|
resource_name |
string | да | — | Имя инстанса | — |
resource_realm |
string | да | — | K8s-кластер: k8s-4-ext-nubes-ru, k8s-4-ext-nubes-ru |
список |
resource_cpu |
integer | нет | 500 |
Квота CPU пода (milicores) | 250…8000 |
resource_memory |
integer | нет | 512 |
Квота памяти пода (MB) | 256…8192 |
resource_disk |
integer | нет | 10 |
Квота диска (GB) | 1…999 |
resource_instances |
integer | нет | 3 |
Количество узлов | 1…7 |
app_version |
string | нет | 2.5.2 |
Версия приложения | 2.5.2 |
domain |
string | нет | bao-<случайное> |
FQDN или имя | DNS-имя/FQDN |
Общие атрибуты (есть у всех ресурсов):
| Имя | Тип | Обязательный | По умолчанию | Описание |
|---|---|---|---|---|
operation_timeout |
string | нет | — | Максимальное время ожидания операции (напр. 20m) |
log_level |
string | нет | none |
Логирование стадий: none, info, debug |
suspend_on_destroy |
bool | нет | true |
При destroy — усыпить вместо удаления |
keep_on_destroy |
bool | нет | false |
При destroy — ничего не делать в облаке (state_only) |
adopt_existing_on_create |
bool | нет | false |
Авто-подхват существующего инстанса при apply |
Attribute Reference¶
| Имя | Тип | Описание |
|---|---|---|
id |
string | UUID инстанса |
state_out.connectionUrl |
string | Адрес хранилища: https://<domain>.openbaok8s-<uid>.dev.nubes.ru |
state_out.instanceUid |
string | UUID инстанса |
state_out_flat["monitoring.logs"] |
string | Ссылка на логи (Grafana) |
state_out_flat["monitoring.resourceMetrics"] |
string | Ссылка на метрики (Grafana) |
state_params / state_params_flat |
map | Параметры, отправленные в API |
vault_secrets |
map (sensitive) | Ключи распечатки: unsealKey_0…unsealKey_4, rootKey |
vault_fields |
list | ["unsealKey_0", …, "unsealKey_4", "rootKey"] |
vault_url / vault_user_path |
string | Адрес/путь Vault |
output "openbao_url" { value = nubes_k8s_openbao.vault.state_out_flat["connectionUrl"] }
output "openbao_root" { value = nubes_k8s_openbao.vault.vault_secrets["rootKey"] }
Жизненный цикл ¶
| Флаг | Дефолт | Поведение при destroy |
|---|---|---|
suspend_on_destroy |
true |
Инстанс переводится в suspend (не удаляется) |
suspend_on_destroy |
false |
Выполняется операция delete — инстанс удаляется в облаке |
keep_on_destroy |
false |
Если true — облако не трогается, ресурс только убирается из состояния (state_only); приоритетнее suspend_on_destroy |
Возврат из suspend: повторный terraform apply с adopt_existing_on_create = true
— провайдер найдёт инстанс по имени и выполнит resume (тот же id).
Зачем нужно усыпление
suspend— временная остановка: ресурсы высвобождаются, а инстанс можно вернуть в работу в любой момент повторнымapply.Удаление усыплённого инстанса Удалить усыплённый инстанс можно, когда он пробыл в
suspend14 дней.⚠️ Из Terraform это невозможно — операция
deleteдля усыплённого инстанса недоступна. Удаляйте его вручную в Личном кабинете (ЛК).
- Инстанс в статусе «not created» (после упавшего create) блокирует имя и не удаляется через API — чистится вручную в Личном кабинете.
reconcileзапускается из Terraform ресурсомnubes_service_operation(operation = "reconcile", уникальныйrun_id).
Подресурсы¶
nubes_k8s_openbao_kv¶
| Имя | Тип | Обязательный | По умолчанию | Описание |
|---|---|---|---|---|
k8s_openbao_id |
string (uuid) | да | — | UUID инстанса OpenBao |
kv_name |
string | нет | kvname-<случайное> |
Имя KV-хранилища |
nubes_k8s_openbao_policy¶
| Имя | Тип | Обязательный | По умолчанию | Описание |
|---|---|---|---|---|
k8s_openbao_id |
string (uuid) | да | — | UUID инстанса OpenBao |
policy_name |
string | нет | policy-<случайное> |
Имя политики |
policy_settings |
map (список) | да | — | Правила политики |
policy_settings (элемент списка):
| Имя | Тип | Обязательный | По умолчанию | Описание |
|---|---|---|---|---|
path |
string | да | — | Путь, к которому применяется правило |
capabilities |
string | нет | ["read", "list"] |
Список возможностей (JSON-массив) |
nubes_k8s_openbao_secrets¶
| Имя | Тип | Обязательный | По умолчанию | Описание |
|---|---|---|---|---|
k8s_openbao_id |
string (uuid) | да | — | UUID инстанса OpenBao |
kv_name |
string | да | — | Имя KV-хранилища |
secret_path |
string | нет | path/to/mysecret |
Путь секрета |
secret_data |
map | да | — | Содержимое секрета (ключ → значение) |
Общие атрибуты подресурсов
adopt_existing_on_create,keep_on_destroy,skip_missing_on_delete,operation_timeout,log_level.
Operations¶
| Операция | Доступно из Terraform | Комментарий |
|---|---|---|
create |
✅ apply |
Создание инстанса |
modify |
✅ apply |
Меняются resource_instances, resource_cpu, resource_memory, resource_disk, app_version |
suspend |
✅ destroy (при suspend_on_destroy=true) |
Усыпление |
resume |
✅ apply (при adopt_existing_on_create=true) |
Пробуждение |
delete |
✅ destroy (suspend_on_destroy=false) |
Удаление инстанса в облаке. Только для работающего (running); усыплённый — вручную в ЛК |
create_kv / delete_kv |
✅ через nubes_k8s_openbao_kv |
Управление KV |
create_policy / update_policy / delete_policy |
✅ через nubes_k8s_openbao_policy |
Управление политиками |
create_secrets / update_secrets / delete_secrets / recovery_secrets |
нет | Недоступны из Terraform |
reconcile |
✅ через nubes_service_operation |
Синхронизация состояния (универсальная операция) |