refactor: restructure project — separate tools, config, generated, provider
TOOLS/ — generators + scripts + config + ARCHITECTURE.md ├── yaml-generator/ (code) ├── resource-generator/ (code) ├── docs-generator/ (code) ├── scripts/ (← devops/*.sh) ├── config/ (← devops/profiles/ + devops/config/) │ ├── test/ profile.env, services_list.txt, operation_timeouts.json │ ├── prod/ │ └── dev/ └── ARCHITECTURE.md (← devops/ARCHITECTURE.md) generated/ — pipeline output only (gitignored) ├── test/resources_yaml/, go/, docs/, provider_build/ ├── prod/ └── dev/ provider/ — code only, no generated files resources_yaml/ — DELETED (generated) internal/resources_gen/ — DELETED (generated) devops/ — removed (replaced by TOOLS/scripts + TOOLS/config + generated/) Generators now fail if NUBES_*_DIR not set (no defaults to provider/). Provider requires pipeline to populate resources_gen/ before build.
This commit is contained in:
@@ -0,0 +1,13 @@
|
||||
# Resource nubes_akhq
|
||||
|
||||
Service ID: `119`
|
||||
|
||||
Service Name: Akhq
|
||||
|
||||
[Manual](akhq.md) | [Create params](akhq_params_create.md) | [Modify params](akhq_params_modify.md) | [Output params](akhq_outputs.md) | [Operations](akhq_ops.md) | [Example](akhq_example.md)
|
||||
|
||||
## MAN
|
||||
|
||||
<div class="man-content">
|
||||
# Инструкция по развертыванию Apache Kafka через платформу<br/><br/>---<br/>## 1. Общая информация<br/>AKHQ — это веб-интерфейс для работы с кластерами Apache Kafka.<br/>Позволяет просматривать топики, consumer group'ы, сообщения, ACL, схему безопасности, состояние брокеров и метаданные.<br/>Поддерживает работу с несколькими кластерами Kafka одновременно, включая внутренние и внешние (TLS) подключения.<br/><br/>## Доступные операции<br/>- **create** — Создание ресурса AKHQ<br/>- **suspend** — Остановка ресурса<br/>- **resume** — Возобновление работы ресурса<br/>- **modify** — Модификация настроек<br/>- **delete** — Удаление ресурса<br/><br/>---<br/>## 2. Параметры развертывания кластера<br/>Ниже перечислены параметры, которые необходимо указать при создании ресурса Kafka:<br/><br/>* **Кластер Kafka к которому нужно настроить подключение**<br/>Для использования AKHQ необходимо предварительно развернуть сервис Kafka. Пример: `kafka-external`.<br/><br/>* **Платформа для развертывания:**<br/>Платформа для развертывания (среда, в которой будет развернут кластер). Пример: `k8s-3.ext.nubes.ru`.<br/><br/>* **Количество узлов в сети:**<br/>Количество узлов для работы Akhq. Пример `2`<br/><br/>* **Квота (megabyte) памяти пода:**<br/>Квота памяти пода в мегабайтах. Пример: `512`<br/><br/>* **Квота (millicore ) ядра пода:**<br/>Квота CPU пода в миликорах (1000 mCPU = 1 vCPU). Пример: `500`<br/><br/>* **Имя домена:**<br/>Dns Имя по которому будет происходить обращение к сервису. Указать необходимо уникальное имя до . ( то есть если необходимо получить dns ui) Пример: `kafka-external`<br/><br/>---<br/>## 4. Выходные параметры<br/>После успешного развертывания ресурса Kafka платформа возвращает ряд параметров.<br/>Ключевым из них является:<br/><br/>**connectionUrl**<br/>Это полное доменное имя (FQDN), по которому будет доступен интерфейс AKHQ. После развёртывания подождите несколько минут — UI станет доступен по HTTPS, как только все сервисы полностью запустятся.<br/><br/>**Учетные данные**<br/>Здесь представлены поля для ввода логина и пароля, с помощью которых вы сможете авторизоваться в сервисе.<br/><br/>---<br/>## 5. Дополнительная информация<br/>Учётные записи, созданные для работы с AKHQ, предоставляют доступ только для просмотра данных. Для управления Kafka, пожалуйста, используйте возможности личного кабинета.<br/>---
|
||||
</div>
|
||||
@@ -0,0 +1,50 @@
|
||||
# Resource nubes_akhq
|
||||
|
||||
Service ID: `119`
|
||||
|
||||
Service Name: Akhq
|
||||
|
||||
[Manual](akhq.md) | [Create params](akhq_params_create.md) | [Modify params](akhq_params_modify.md) | [Output params](akhq_outputs.md) | [Operations](akhq_ops.md) | [Example](akhq_example.md)
|
||||
|
||||
## Copy-ready manifest (`akhq_main.tf`)
|
||||
|
||||
```hcl
|
||||
terraform {
|
||||
required_providers {
|
||||
nubes = {
|
||||
source = "terra.k8c.ru/nubes/nubes"
|
||||
version = "2.1.26"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
# Токен доступа api_token к Nubes API — замените на реальный.
|
||||
provider "nubes" {
|
||||
api_token = "token_***"
|
||||
api_endpoint = "https://deck-api.ngcloud.ru/api/v1/index.cfm"
|
||||
}
|
||||
resource "nubes_akhq" "baza" {
|
||||
resource_realm = "TODO" # Выбрать платформу из списка
|
||||
domain = "TODO" # Если будет указан FQDN, то происходят проверки DNS на валидность А-записи, или будет добавлено в зону resourceRealm
|
||||
kafka_uid = "TODO" # Выбрать кластер из списка
|
||||
|
||||
# Параметры, имеющие значение по умолчанию, если не меняете - эти параметры не обязательно прописывать в манифесте
|
||||
resource_memory = 512 # Пример: `1024`
|
||||
resource_cpu = 500 # Пример: `1000`
|
||||
resource_instances = 1
|
||||
}
|
||||
```
|
||||
|
||||
## Outputs usage
|
||||
|
||||
```hcl
|
||||
# Выходные параметры можно использовать как
|
||||
nubes_akhq.baza.state_params["имя_ключа"]
|
||||
nubes_akhq.baza.state_out["имя_ключа"]
|
||||
nubes_akhq.baza.state_params_flat["имя_ключа"]
|
||||
nubes_akhq.baza.state_out_flat["имя_ключа"]
|
||||
nubes_akhq.baza.vault_secrets["имя_ключа"]
|
||||
nubes_akhq.baza.vault_url
|
||||
nubes_akhq.baza.vault_user_path
|
||||
nubes_akhq.baza.vault_fields
|
||||
```
|
||||
@@ -0,0 +1,15 @@
|
||||
# Resource nubes_akhq
|
||||
|
||||
Service ID: `119`
|
||||
|
||||
Service Name: Akhq
|
||||
|
||||
[Manual](akhq.md) | [Create params](akhq_params_create.md) | [Modify params](akhq_params_modify.md) | [Output params](akhq_outputs.md) | [Operations](akhq_ops.md) | [Example](akhq_example.md)
|
||||
|
||||
## Operations
|
||||
|
||||
- `create` — Создание кластера. Параметры: [Create params](akhq_params_create.md)
|
||||
- `delete`
|
||||
- `modify` — Изменение кластера. Параметры: [Modify params](akhq_params_modify.md)
|
||||
- `resume`
|
||||
- `suspend`
|
||||
@@ -0,0 +1,33 @@
|
||||
# Resource nubes_akhq
|
||||
|
||||
Service ID: `119`
|
||||
|
||||
Service Name: Akhq
|
||||
|
||||
[Manual](akhq.md) | [Create params](akhq_params_create.md) | [Modify params](akhq_params_modify.md) | [Output params](akhq_outputs.md) | [Operations](akhq_ops.md) | [Example](akhq_example.md)
|
||||
|
||||
## Output params
|
||||
|
||||
- `state_params` (map) — параметры, отправленные в API при создании/изменении
|
||||
- `state_out` (map) — ответ API с результатами/выходными значениями
|
||||
- `state_params_flat` (map) — параметры в плоском виде (ключи с путями)
|
||||
- `state_out_flat` (map) — ответы в плоском виде (ключи с путями)
|
||||
- `vault_secrets` (map) — секреты, записанные в Vault для ресурса
|
||||
- `vault_url` (string) — адрес Vault для ресурса
|
||||
- `vault_user_path` (string) — путь пользователя в Vault
|
||||
- `vault_fields` (list) — список ключей доступных секретов
|
||||
|
||||
## Реальные поля из облака (running/suspended snapshot)
|
||||
|
||||
Поля ниже получены из реальных инстансов этого сервиса в облаке.
|
||||
Используйте их как готовые ключи для `state_out_flat` и `vault_secrets`.
|
||||
|
||||
### `state_out_flat` ключи
|
||||
|
||||
- `state_out_flat["connectionUrl"]`
|
||||
|
||||
### `vault_secrets` ключи
|
||||
|
||||
- `vault_secrets["pass"]`
|
||||
- `vault_secrets["user"]`
|
||||
|
||||
@@ -0,0 +1,12 @@
|
||||
# Resource nubes_akhq
|
||||
|
||||
Service ID: `119`
|
||||
|
||||
Service Name: Akhq
|
||||
|
||||
[Manual](akhq.md) | [Create params](akhq_params_create.md) | [Modify params](akhq_params_modify.md) | [Output params](akhq_outputs.md) | [Operations](akhq_ops.md) | [Example](akhq_example.md)
|
||||
|
||||
## Parameters
|
||||
|
||||
- [Create params](akhq_params_create.md)
|
||||
- [Modify params](akhq_params_modify.md)
|
||||
@@ -0,0 +1,40 @@
|
||||
# Resource nubes_akhq
|
||||
|
||||
Service ID: `119`
|
||||
|
||||
Service Name: Akhq
|
||||
|
||||
[Manual](akhq.md) | [Create params](akhq_params_create.md) | [Modify params](akhq_params_modify.md) | [Output params](akhq_outputs.md) | [Operations](akhq_ops.md) | [Example](akhq_example.md)
|
||||
|
||||
## Create params
|
||||
|
||||
**Обязательные параметры (вводимые пользователем)**
|
||||
|
||||
<table class="resource-table resource-table-compact resource-table-required">
|
||||
<thead><tr><th>ID</th><th>Code</th><th>Type</th><th>Description</th><th>Constraints</th></tr></thead>
|
||||
<tbody>
|
||||
<tr><td>550</td><td><strong><code class="code-no-wrap">resource_realm</code></strong></td><td><code>string</code></td><td>Выбрать платформу из списка</td><td>func=getAvailableResourceRealms</td></tr>
|
||||
<tr><td>553</td><td><strong><code class="code-no-wrap">domain</code></strong></td><td><code>string</code></td><td>Если будет указан FQDN, то происходят проверки DNS на валидность А-записи, или будет добавлено в зону resourceRealm</td><td>regex=^(?:[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?\.)*[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?$</td></tr>
|
||||
<tr><td>555</td><td><strong><code class="code-no-wrap">kafka_uid</code></strong></td><td><code>uuid</code></td><td>Выбрать кластер из списка</td><td>ref_svc_id=116</td></tr>
|
||||
</tbody></table>
|
||||
|
||||
**Параметры, имеющие значение по умолчанию, если не меняете - эти параметры не обязательно прописывать в манифесте**
|
||||
<table class="resource-table resource-table-compact">
|
||||
<thead><tr><th>ID</th><th>Code</th><th>Type</th><th>Default</th><th>Description</th><th>Constraints</th></tr></thead>
|
||||
<tbody>
|
||||
<tr><td>551</td><td><strong><code class="code-no-wrap">resource_memory</code></strong></td><td><code>integer</code></td><td><code>512</code></td><td>Пример: `1024`</td><td>minvalue=512</td></tr>
|
||||
<tr><td>552</td><td><strong><code class="code-no-wrap">resource_cpu</code></strong></td><td><code>integer</code></td><td><code>500</code></td><td>Пример: `1000`</td><td>minvalue=500</td></tr>
|
||||
<tr><td>554</td><td><strong><code class="code-no-wrap">resource_instances</code></strong></td><td><code>integer</code></td><td><code>1</code></td><td></td><td>minvalue=1</td></tr>
|
||||
</tbody></table>
|
||||
|
||||
<div class="lifecycle-note">
|
||||
<strong>Параметры поведения (кратко)</strong><br/>
|
||||
По умолчанию: `suspend_on_destroy = True`, `adopt_existing_on_create = False`.<br/>
|
||||
При `terraform destroy` или удалении ресурса из манифеста:<br/>
|
||||
- `suspend_on_destroy=true` — инстанс переводится в `Suspend` (не удаляется).<br/>
|
||||
- `suspend_on_destroy=false` — Terraform удаляет ресурс только из state.<br/>
|
||||
При `apply` флаг `adopt_existing_on_create` работает как авто-`import`:<br/>
|
||||
- `false` — если ресурс уже есть, будет ошибка.<br/>
|
||||
- `true` — Terraform может взять существующий инстанс под управление (`running` → adopt, `suspended` → resume+adopt при совпадении параметров).<br/>
|
||||
Важно: один инстанс должен быть только в одном state. Иначе получите конфликт управления.
|
||||
</div>
|
||||
@@ -0,0 +1,15 @@
|
||||
# Resource nubes_akhq
|
||||
|
||||
Service ID: `119`
|
||||
|
||||
Service Name: Akhq
|
||||
|
||||
[Manual](akhq.md) | [Create params](akhq_params_create.md) | [Modify params](akhq_params_modify.md) | [Output params](akhq_outputs.md) | [Operations](akhq_ops.md) | [Example](akhq_example.md)
|
||||
|
||||
## Modify params
|
||||
|
||||
<table class="resource-table resource-table-compact">
|
||||
<thead><tr><th>ID</th><th>Code</th><th>Type</th><th>Description</th><th>Constraints</th></tr></thead>
|
||||
<tbody>
|
||||
<tr><td>565</td><td><strong><code class="code-no-wrap">kafka_uid</code></strong></td><td><code>uuid</code></td><td>Выбрать кластер из списка</td><td>ref_svc_id=116</td></tr>
|
||||
</tbody></table>
|
||||
@@ -0,0 +1,13 @@
|
||||
# Resource nubes_dnsrecord
|
||||
|
||||
Service ID: `111`
|
||||
|
||||
Service Name: DNS запись
|
||||
|
||||
[Manual](dnsrecord.md) | [Create params](dnsrecord_params_create.md) | [Modify params](dnsrecord_params_modify.md) | [Output params](dnsrecord_outputs.md) | [Operations](dnsrecord_ops.md) | [Example](dnsrecord_example.md)
|
||||
|
||||
## MAN
|
||||
|
||||
<div class="man-content">
|
||||
Необходима DNS зона, в которой будет создана DNS запись.<br/>Выберите <br/>* Зону в которой будет создана запись<br/>* Тип записи<br/>* Имя записи<br/>* Значение записи
|
||||
</div>
|
||||
@@ -0,0 +1,49 @@
|
||||
# Resource nubes_dnsrecord
|
||||
|
||||
Service ID: `111`
|
||||
|
||||
Service Name: DNS запись
|
||||
|
||||
[Manual](dnsrecord.md) | [Create params](dnsrecord_params_create.md) | [Modify params](dnsrecord_params_modify.md) | [Output params](dnsrecord_outputs.md) | [Operations](dnsrecord_ops.md) | [Example](dnsrecord_example.md)
|
||||
|
||||
## Copy-ready manifest (`dnsrecord_main.tf`)
|
||||
|
||||
```hcl
|
||||
terraform {
|
||||
required_providers {
|
||||
nubes = {
|
||||
source = "terra.k8c.ru/nubes/nubes"
|
||||
version = "2.1.26"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
# Токен доступа api_token к Nubes API — замените на реальный.
|
||||
provider "nubes" {
|
||||
api_token = "token_***"
|
||||
api_endpoint = "https://deck-api.ngcloud.ru/api/v1/index.cfm"
|
||||
}
|
||||
resource "nubes_dnsrecord" "baza" {
|
||||
zone_uid = "TODO" # UUID экземпляра услуги DNS-зоны
|
||||
record_type = "A" # Тип DNS-записи
|
||||
record_name = "TODO" # Имя записи. Имя зоны в конце проставляется автоматически
|
||||
record_input = "TODO" # Значение. Необходима валидация, в зависимости от типа записи. Должно быть заменено на UUID-внешнийIP
|
||||
|
||||
# Параметры, имеющие значение по умолчанию, если не меняете - эти параметры не обязательно прописывать в манифесте
|
||||
record_ttl = 3600 # Time-to-Leave записи. Раз в какое время запись будет обновлена
|
||||
}
|
||||
```
|
||||
|
||||
## Outputs usage
|
||||
|
||||
```hcl
|
||||
# Выходные параметры можно использовать как
|
||||
nubes_dnsrecord.baza.state_params["имя_ключа"]
|
||||
nubes_dnsrecord.baza.state_out["имя_ключа"]
|
||||
nubes_dnsrecord.baza.state_params_flat["имя_ключа"]
|
||||
nubes_dnsrecord.baza.state_out_flat["имя_ключа"]
|
||||
nubes_dnsrecord.baza.vault_secrets["имя_ключа"]
|
||||
nubes_dnsrecord.baza.vault_url
|
||||
nubes_dnsrecord.baza.vault_user_path
|
||||
nubes_dnsrecord.baza.vault_fields
|
||||
```
|
||||
@@ -0,0 +1,13 @@
|
||||
# Resource nubes_dnsrecord
|
||||
|
||||
Service ID: `111`
|
||||
|
||||
Service Name: DNS запись
|
||||
|
||||
[Manual](dnsrecord.md) | [Create params](dnsrecord_params_create.md) | [Modify params](dnsrecord_params_modify.md) | [Output params](dnsrecord_outputs.md) | [Operations](dnsrecord_ops.md) | [Example](dnsrecord_example.md)
|
||||
|
||||
## Operations
|
||||
|
||||
- `create` — Создание кластера. Параметры: [Create params](dnsrecord_params_create.md)
|
||||
- `delete`
|
||||
- `modify` — Изменение кластера. Параметры: [Modify params](dnsrecord_params_modify.md)
|
||||
@@ -0,0 +1,29 @@
|
||||
# Resource nubes_dnsrecord
|
||||
|
||||
Service ID: `111`
|
||||
|
||||
Service Name: DNS запись
|
||||
|
||||
[Manual](dnsrecord.md) | [Create params](dnsrecord_params_create.md) | [Modify params](dnsrecord_params_modify.md) | [Output params](dnsrecord_outputs.md) | [Operations](dnsrecord_ops.md) | [Example](dnsrecord_example.md)
|
||||
|
||||
## Output params
|
||||
|
||||
- `state_params` (map) — параметры, отправленные в API при создании/изменении
|
||||
- `state_out` (map) — ответ API с результатами/выходными значениями
|
||||
- `state_params_flat` (map) — параметры в плоском виде (ключи с путями)
|
||||
- `state_out_flat` (map) — ответы в плоском виде (ключи с путями)
|
||||
- `vault_secrets` (map) — секреты, записанные в Vault для ресурса
|
||||
- `vault_url` (string) — адрес Vault для ресурса
|
||||
- `vault_user_path` (string) — путь пользователя в Vault
|
||||
- `vault_fields` (list) — список ключей доступных секретов
|
||||
|
||||
## Реальные поля из облака (running/suspended snapshot)
|
||||
|
||||
Поля ниже получены из реальных инстансов этого сервиса в облаке.
|
||||
Используйте их как готовые ключи для `state_out_flat` и `vault_secrets`.
|
||||
|
||||
### `state_out_flat` ключи
|
||||
|
||||
- `state_out_flat["dnsServers"]`
|
||||
- `state_out_flat["record"]`
|
||||
|
||||
@@ -0,0 +1,12 @@
|
||||
# Resource nubes_dnsrecord
|
||||
|
||||
Service ID: `111`
|
||||
|
||||
Service Name: DNS запись
|
||||
|
||||
[Manual](dnsrecord.md) | [Create params](dnsrecord_params_create.md) | [Modify params](dnsrecord_params_modify.md) | [Output params](dnsrecord_outputs.md) | [Operations](dnsrecord_ops.md) | [Example](dnsrecord_example.md)
|
||||
|
||||
## Parameters
|
||||
|
||||
- [Create params](dnsrecord_params_create.md)
|
||||
- [Modify params](dnsrecord_params_modify.md)
|
||||
@@ -0,0 +1,27 @@
|
||||
# Resource nubes_dnsrecord
|
||||
|
||||
Service ID: `111`
|
||||
|
||||
Service Name: DNS запись
|
||||
|
||||
[Manual](dnsrecord.md) | [Create params](dnsrecord_params_create.md) | [Modify params](dnsrecord_params_modify.md) | [Output params](dnsrecord_outputs.md) | [Operations](dnsrecord_ops.md) | [Example](dnsrecord_example.md)
|
||||
|
||||
## Create params
|
||||
|
||||
**Обязательные параметры (вводимые пользователем)**
|
||||
|
||||
<table class="resource-table resource-table-compact resource-table-required">
|
||||
<thead><tr><th>ID</th><th>Code</th><th>Type</th><th>Description</th><th>Constraints</th></tr></thead>
|
||||
<tbody>
|
||||
<tr><td>75</td><td><strong><code class="code-no-wrap">zone_uid</code></strong></td><td><code>uuid</code></td><td>UUID экземпляра услуги DNS-зоны</td><td>ref_svc_id=110</td></tr>
|
||||
<tr><td>76</td><td><strong><code class="code-no-wrap">record_type</code></strong></td><td><code>string</code></td><td>Тип DNS-записи</td><td>value_list=A, AAAA, CNAME, MX, PTR, SOA, SRV, TXT, LUA, NS, SSHFP</td></tr>
|
||||
<tr><td>77</td><td><strong><code class="code-no-wrap">record_name</code></strong></td><td><code>string</code></td><td>Имя записи. Имя зоны в конце проставляется автоматически</td><td>unique_scope=parent</td></tr>
|
||||
<tr><td>78</td><td><strong><code class="code-no-wrap">record_input</code></strong></td><td><code>string</code></td><td>Значение. Необходима валидация, в зависимости от типа записи. Должно быть заменено на UUID-внешнийIP</td><td></td></tr>
|
||||
</tbody></table>
|
||||
|
||||
**Параметры, имеющие значение по умолчанию, если не меняете - эти параметры не обязательно прописывать в манифесте**
|
||||
<table class="resource-table resource-table-compact">
|
||||
<thead><tr><th>ID</th><th>Code</th><th>Type</th><th>Default</th><th>Description</th><th>Constraints</th></tr></thead>
|
||||
<tbody>
|
||||
<tr><td>450</td><td><strong><code class="code-no-wrap">record_ttl</code></strong></td><td><code>integer</code></td><td><code>3600</code></td><td>Time-to-Leave записи. Раз в какое время запись будет обновлена</td><td>minvalue=30; maxvalue=604800</td></tr>
|
||||
</tbody></table>
|
||||
@@ -0,0 +1,15 @@
|
||||
# Resource nubes_dnsrecord
|
||||
|
||||
Service ID: `111`
|
||||
|
||||
Service Name: DNS запись
|
||||
|
||||
[Manual](dnsrecord.md) | [Create params](dnsrecord_params_create.md) | [Modify params](dnsrecord_params_modify.md) | [Output params](dnsrecord_outputs.md) | [Operations](dnsrecord_ops.md) | [Example](dnsrecord_example.md)
|
||||
|
||||
## Modify params
|
||||
|
||||
<table class="resource-table resource-table-compact">
|
||||
<thead><tr><th>ID</th><th>Code</th><th>Type</th><th>Description</th><th>Constraints</th></tr></thead>
|
||||
<tbody>
|
||||
<tr><td>256</td><td><strong><code class="code-no-wrap">record_input</code></strong></td><td><code>string</code></td><td>Запись. Необходима валидация, в зависимости от типа записи. Должно быть заменено на UUID-внешнийIP</td><td></td></tr>
|
||||
</tbody></table>
|
||||
@@ -0,0 +1,13 @@
|
||||
# Resource nubes_dnszone
|
||||
|
||||
Service ID: `110`
|
||||
|
||||
Service Name: DNS зона
|
||||
|
||||
[Manual](dnszone.md) | [Create params](dnszone_params_create.md) | [Modify params](dnszone_params_modify.md) | [Output params](dnszone_outputs.md) | [Operations](dnszone_ops.md) | [Example](dnszone_example.md)
|
||||
|
||||
## MAN
|
||||
|
||||
<div class="man-content">
|
||||
##  Необходимо делегировать зону у регистратора на Авторитетные DNS (Сервера зон)<br/><br/>ns3.ngcloud.ru<br/>``` bash<br/>185.247.187.83<br/>2a10:aa80:0:5::3<br/>```<br/><br/>ns4.ngcloud.ru<br/>``` bash<br/>81.22.46.43<br/>2a10:aa80:0:6::3<br/>```
|
||||
</div>
|
||||
@@ -0,0 +1,52 @@
|
||||
# Resource nubes_dnszone
|
||||
|
||||
Service ID: `110`
|
||||
|
||||
Service Name: DNS зона
|
||||
|
||||
[Manual](dnszone.md) | [Create params](dnszone_params_create.md) | [Modify params](dnszone_params_modify.md) | [Output params](dnszone_outputs.md) | [Operations](dnszone_ops.md) | [Example](dnszone_example.md)
|
||||
|
||||
## Copy-ready manifest (`dnszone_main.tf`)
|
||||
|
||||
```hcl
|
||||
terraform {
|
||||
required_providers {
|
||||
nubes = {
|
||||
source = "terra.k8c.ru/nubes/nubes"
|
||||
version = "2.1.26"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
# Токен доступа api_token к Nubes API — замените на реальный.
|
||||
provider "nubes" {
|
||||
api_token = "token_***"
|
||||
api_endpoint = "https://deck-api.ngcloud.ru/api/v1/index.cfm"
|
||||
}
|
||||
resource "nubes_dnszone" "baza" {
|
||||
zone_email = "TODO" # Контактный e-mail
|
||||
zone_name = "TODO" # Имя зоны
|
||||
resource_realm = "TODO" # Платформа для развертывания
|
||||
|
||||
# Параметры, имеющие значение по умолчанию, если не меняете - эти параметры не обязательно прописывать в манифесте
|
||||
zone_kind = "NATIVE" # Тип зоны
|
||||
zone_time_to_refresh = 86400 # Время ожидания ответа вторичного DNS перед запросом SOA-записи с первичных серверов
|
||||
zone_time_to_retry = 7200 # Время в течение которого сервер повторно попробует синхронизировать информацию с первичных DNS-серверов
|
||||
zone_time_to_expire = 3600000 # Время в течение которого вторичный DNS будет пытаться завершить синхронизацию зоны с первичным
|
||||
zone_time_to_live = 86400 # Время, в течение которого информация будет кешироваться другими DNS-серверами
|
||||
}
|
||||
```
|
||||
|
||||
## Outputs usage
|
||||
|
||||
```hcl
|
||||
# Выходные параметры можно использовать как
|
||||
nubes_dnszone.baza.state_params["имя_ключа"]
|
||||
nubes_dnszone.baza.state_out["имя_ключа"]
|
||||
nubes_dnszone.baza.state_params_flat["имя_ключа"]
|
||||
nubes_dnszone.baza.state_out_flat["имя_ключа"]
|
||||
nubes_dnszone.baza.vault_secrets["имя_ключа"]
|
||||
nubes_dnszone.baza.vault_url
|
||||
nubes_dnszone.baza.vault_user_path
|
||||
nubes_dnszone.baza.vault_fields
|
||||
```
|
||||
@@ -0,0 +1,12 @@
|
||||
# Resource nubes_dnszone
|
||||
|
||||
Service ID: `110`
|
||||
|
||||
Service Name: DNS зона
|
||||
|
||||
[Manual](dnszone.md) | [Create params](dnszone_params_create.md) | [Modify params](dnszone_params_modify.md) | [Output params](dnszone_outputs.md) | [Operations](dnszone_ops.md) | [Example](dnszone_example.md)
|
||||
|
||||
## Operations
|
||||
|
||||
- `create` — Создание кластера. Параметры: [Create params](dnszone_params_create.md)
|
||||
- `delete`
|
||||
@@ -0,0 +1,32 @@
|
||||
# Resource nubes_dnszone
|
||||
|
||||
Service ID: `110`
|
||||
|
||||
Service Name: DNS зона
|
||||
|
||||
[Manual](dnszone.md) | [Create params](dnszone_params_create.md) | [Modify params](dnszone_params_modify.md) | [Output params](dnszone_outputs.md) | [Operations](dnszone_ops.md) | [Example](dnszone_example.md)
|
||||
|
||||
## Output params
|
||||
|
||||
- `state_params` (map) — параметры, отправленные в API при создании/изменении
|
||||
- `state_out` (map) — ответ API с результатами/выходными значениями
|
||||
- `state_params_flat` (map) — параметры в плоском виде (ключи с путями)
|
||||
- `state_out_flat` (map) — ответы в плоском виде (ключи с путями)
|
||||
- `vault_secrets` (map) — секреты, записанные в Vault для ресурса
|
||||
- `vault_url` (string) — адрес Vault для ресурса
|
||||
- `vault_user_path` (string) — путь пользователя в Vault
|
||||
- `vault_fields` (list) — список ключей доступных секретов
|
||||
|
||||
## Реальные поля из облака (running/suspended snapshot)
|
||||
|
||||
Поля ниже получены из реальных инстансов этого сервиса в облаке.
|
||||
Используйте их как готовые ключи для `state_out_flat` и `vault_secrets`.
|
||||
|
||||
### `state_out_flat` ключи
|
||||
|
||||
- `state_out_flat["dnsServers"]`
|
||||
- `state_out_flat["dnsServers.ns1.nubes.ru"]`
|
||||
- `state_out_flat["dnsServers.ns2.nubes.ru"]`
|
||||
- `state_out_flat["zoneSerial"]`
|
||||
- `state_out_flat["zoneSoaServer"]`
|
||||
|
||||
@@ -0,0 +1,12 @@
|
||||
# Resource nubes_dnszone
|
||||
|
||||
Service ID: `110`
|
||||
|
||||
Service Name: DNS зона
|
||||
|
||||
[Manual](dnszone.md) | [Create params](dnszone_params_create.md) | [Modify params](dnszone_params_modify.md) | [Output params](dnszone_outputs.md) | [Operations](dnszone_ops.md) | [Example](dnszone_example.md)
|
||||
|
||||
## Parameters
|
||||
|
||||
- [Create params](dnszone_params_create.md)
|
||||
- [Modify params](dnszone_params_modify.md)
|
||||
@@ -0,0 +1,31 @@
|
||||
# Resource nubes_dnszone
|
||||
|
||||
Service ID: `110`
|
||||
|
||||
Service Name: DNS зона
|
||||
|
||||
[Manual](dnszone.md) | [Create params](dnszone_params_create.md) | [Modify params](dnszone_params_modify.md) | [Output params](dnszone_outputs.md) | [Operations](dnszone_ops.md) | [Example](dnszone_example.md)
|
||||
|
||||
## Create params
|
||||
|
||||
**Обязательные параметры (вводимые пользователем)**
|
||||
|
||||
<table class="resource-table resource-table-compact resource-table-required">
|
||||
<thead><tr><th>ID</th><th>Code</th><th>Type</th><th>Description</th><th>Constraints</th></tr></thead>
|
||||
<tbody>
|
||||
<tr><td>66</td><td><strong><code class="code-no-wrap">zone_email</code></strong></td><td><code>string</code></td><td>Контактный e-mail</td><td></td></tr>
|
||||
<tr><td>67</td><td><strong><code class="code-no-wrap">zone_name</code></strong></td><td><code>string</code></td><td>Имя зоны</td><td>regex=^([a-z0-9-]+\.)+[a-z0-9-]+$</td></tr>
|
||||
<tr><td>69</td><td><strong><code class="code-no-wrap">zone_masters_for_slave</code></strong></td><td><code>string</code></td><td>Использовать если выбран тип SLAVE. IP адреса в формате через пробел для настройки Master-серверов</td><td></td></tr>
|
||||
<tr><td>284</td><td><strong><code class="code-no-wrap">resource_realm</code></strong></td><td><code>string</code></td><td>Платформа для развертывания</td><td>func=getAvailableResourceRealms</td></tr>
|
||||
</tbody></table>
|
||||
|
||||
**Параметры, имеющие значение по умолчанию, если не меняете - эти параметры не обязательно прописывать в манифесте**
|
||||
<table class="resource-table resource-table-compact">
|
||||
<thead><tr><th>ID</th><th>Code</th><th>Type</th><th>Default</th><th>Description</th><th>Constraints</th></tr></thead>
|
||||
<tbody>
|
||||
<tr><td>68</td><td><strong><code class="code-no-wrap">zone_kind</code></strong></td><td><code>string</code></td><td><code>NATIVE</code></td><td>Тип зоны</td><td>value_list=NATIVE, SLAVE</td></tr>
|
||||
<tr><td>70</td><td><strong><code class="code-no-wrap">zone_time_to_refresh</code></strong></td><td><code>string</code></td><td><code>86400</code></td><td>Время ожидания ответа вторичного DNS перед запросом SOA-записи с первичных серверов</td><td></td></tr>
|
||||
<tr><td>71</td><td><strong><code class="code-no-wrap">zone_time_to_retry</code></strong></td><td><code>string</code></td><td><code>7200</code></td><td>Время в течение которого сервер повторно попробует синхронизировать информацию с первичных DNS-серверов</td><td></td></tr>
|
||||
<tr><td>72</td><td><strong><code class="code-no-wrap">zone_time_to_expire</code></strong></td><td><code>string</code></td><td><code>3600000</code></td><td>Время в течение которого вторичный DNS будет пытаться завершить синхронизацию зоны с первичным</td><td></td></tr>
|
||||
<tr><td>73</td><td><strong><code class="code-no-wrap">zone_time_to_live</code></strong></td><td><code>string</code></td><td><code>86400</code></td><td>Время, в течение которого информация будет кешироваться другими DNS-серверами</td><td></td></tr>
|
||||
</tbody></table>
|
||||
@@ -0,0 +1,11 @@
|
||||
# Resource nubes_dnszone
|
||||
|
||||
Service ID: `110`
|
||||
|
||||
Service Name: DNS зона
|
||||
|
||||
[Manual](dnszone.md) | [Create params](dnszone_params_create.md) | [Modify params](dnszone_params_modify.md) | [Output params](dnszone_outputs.md) | [Operations](dnszone_ops.md) | [Example](dnszone_example.md)
|
||||
|
||||
## Modify params
|
||||
|
||||
None.
|
||||
@@ -0,0 +1,13 @@
|
||||
# Resource nubes_dummy
|
||||
|
||||
Service ID: `1`
|
||||
|
||||
Service Name: Болванка
|
||||
|
||||
[Manual](dummy.md) | [Create params](dummy_params_create.md) | [Modify params](dummy_params_modify.md) | [Output params](dummy_outputs.md) | [Operations](dummy_ops.md) | [Example](dummy_example.md)
|
||||
|
||||
## MAN
|
||||
|
||||
<div class="man-content">
|
||||
## Болванка для тестов.<br/><br/>А это просто много букв, чтобы посмотреть, как ведет себя текст при переполнении контейнера. <br/><br/><br/>``` json<br/>{<br/> "iamServiceUrl": "https://auth-api-test.ngcloud.ru/api/v1/user",<br/> "idpResponse": {<br/> "prefix": {<br/> "charset": "",<br/> "status_text": "Request Time-out",<br/> "text": true,<br/> "errordetail": "",<br/> "filecontent": "Connection Timeout",<br/> "responseheader": {},<br/> "header": "",<br/> "statuscode": "408 Request Time-out",<br/> "status_code": 408,<br/> "mimetype": "Unable to determine MIME type of file."<br/> }<br/> }<br/>}<br/>```
|
||||
</div>
|
||||
@@ -0,0 +1,49 @@
|
||||
# Resource nubes_dummy
|
||||
|
||||
Service ID: `1`
|
||||
|
||||
Service Name: Болванка
|
||||
|
||||
[Manual](dummy.md) | [Create params](dummy_params_create.md) | [Modify params](dummy_params_modify.md) | [Output params](dummy_outputs.md) | [Operations](dummy_ops.md) | [Example](dummy_example.md)
|
||||
|
||||
## Copy-ready manifest (`dummy_main.tf`)
|
||||
|
||||
```hcl
|
||||
terraform {
|
||||
required_providers {
|
||||
nubes = {
|
||||
source = "terra.k8c.ru/nubes/nubes"
|
||||
version = "2.1.26"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
# Токен доступа api_token к Nubes API — замените на реальный.
|
||||
provider "nubes" {
|
||||
api_token = "token_***"
|
||||
api_endpoint = "https://deck-api.ngcloud.ru/api/v1/index.cfm"
|
||||
}
|
||||
resource "nubes_dummy" "baza" {
|
||||
resource_realm = "TODO" # Платформа для развертывания
|
||||
|
||||
# Параметры, имеющие значение по умолчанию, если не меняете - эти параметры не обязательно прописывать в манифесте
|
||||
duration_ms = 0 # перед завершением подождать (sleep) столько миллисекунд
|
||||
fail_at_start = false # если true, завершить джоб, ничего не записывая в cmdb
|
||||
fail_in_progress = false # если true, корректно начать выполнение джоба, но в процессе завершить аварийно, ничего не записывая в cmdb
|
||||
where_fail = 1 # принимает 1,2,3. Работает с failInProgress. 1 - упасть в prepare. 2 - упасть внутри блока Data fill. 3 - упасть после vault write
|
||||
}
|
||||
```
|
||||
|
||||
## Outputs usage
|
||||
|
||||
```hcl
|
||||
# Выходные параметры можно использовать как
|
||||
nubes_dummy.baza.state_params["имя_ключа"]
|
||||
nubes_dummy.baza.state_out["имя_ключа"]
|
||||
nubes_dummy.baza.state_params_flat["имя_ключа"]
|
||||
nubes_dummy.baza.state_out_flat["имя_ключа"]
|
||||
nubes_dummy.baza.vault_secrets["имя_ключа"]
|
||||
nubes_dummy.baza.vault_url
|
||||
nubes_dummy.baza.vault_user_path
|
||||
nubes_dummy.baza.vault_fields
|
||||
```
|
||||
@@ -0,0 +1,16 @@
|
||||
# Resource nubes_dummy
|
||||
|
||||
Service ID: `1`
|
||||
|
||||
Service Name: Болванка
|
||||
|
||||
[Manual](dummy.md) | [Create params](dummy_params_create.md) | [Modify params](dummy_params_modify.md) | [Output params](dummy_outputs.md) | [Operations](dummy_ops.md) | [Example](dummy_example.md)
|
||||
|
||||
## Operations
|
||||
|
||||
- `create` — Создание кластера. Параметры: [Create params](dummy_params_create.md)
|
||||
- `delete`
|
||||
- `modify` — Изменение кластера. Параметры: [Modify params](dummy_params_modify.md)
|
||||
- `redeploy`
|
||||
- `resume`
|
||||
- `suspend`
|
||||
@@ -0,0 +1,28 @@
|
||||
# Resource nubes_dummy
|
||||
|
||||
Service ID: `1`
|
||||
|
||||
Service Name: Болванка
|
||||
|
||||
[Manual](dummy.md) | [Create params](dummy_params_create.md) | [Modify params](dummy_params_modify.md) | [Output params](dummy_outputs.md) | [Operations](dummy_ops.md) | [Example](dummy_example.md)
|
||||
|
||||
## Output params
|
||||
|
||||
- `state_params` (map) — параметры, отправленные в API при создании/изменении
|
||||
- `state_out` (map) — ответ API с результатами/выходными значениями
|
||||
- `state_params_flat` (map) — параметры в плоском виде (ключи с путями)
|
||||
- `state_out_flat` (map) — ответы в плоском виде (ключи с путями)
|
||||
- `vault_secrets` (map) — секреты, записанные в Vault для ресурса
|
||||
- `vault_url` (string) — адрес Vault для ресурса
|
||||
- `vault_user_path` (string) — путь пользователя в Vault
|
||||
- `vault_fields` (list) — список ключей доступных секретов
|
||||
|
||||
## Реальные поля из облака (running/suspended snapshot)
|
||||
|
||||
Поля ниже получены из реальных инстансов этого сервиса в облаке.
|
||||
Используйте их как готовые ключи для `state_out_flat` и `vault_secrets`.
|
||||
|
||||
### `vault_secrets` ключи
|
||||
|
||||
- `vault_secrets["someKey"]`
|
||||
|
||||
@@ -0,0 +1,12 @@
|
||||
# Resource nubes_dummy
|
||||
|
||||
Service ID: `1`
|
||||
|
||||
Service Name: Болванка
|
||||
|
||||
[Manual](dummy.md) | [Create params](dummy_params_create.md) | [Modify params](dummy_params_modify.md) | [Output params](dummy_outputs.md) | [Operations](dummy_ops.md) | [Example](dummy_example.md)
|
||||
|
||||
## Parameters
|
||||
|
||||
- [Create params](dummy_params_create.md)
|
||||
- [Modify params](dummy_params_modify.md)
|
||||
@@ -0,0 +1,46 @@
|
||||
# Resource nubes_dummy
|
||||
|
||||
Service ID: `1`
|
||||
|
||||
Service Name: Болванка
|
||||
|
||||
[Manual](dummy.md) | [Create params](dummy_params_create.md) | [Modify params](dummy_params_modify.md) | [Output params](dummy_outputs.md) | [Operations](dummy_ops.md) | [Example](dummy_example.md)
|
||||
|
||||
## Create params
|
||||
|
||||
**Обязательные параметры (вводимые пользователем)**
|
||||
|
||||
<table class="resource-table resource-table-compact resource-table-required">
|
||||
<thead><tr><th>ID</th><th>Code</th><th>Type</th><th>Description</th><th>Constraints</th></tr></thead>
|
||||
<tbody>
|
||||
<tr><td>242</td><td><strong><code class="code-no-wrap">resource_realm</code></strong></td><td><code>string</code></td><td>Наименование ресурсной платформы для подключения</td><td>func=getAvailableResourceRealms</td></tr>
|
||||
<tr><td>286</td><td><strong><code class="code-no-wrap">bodymessage</code></strong></td><td><code>string</code></td><td>Дата, уходящая в Vault</td><td></td></tr>
|
||||
<tr><td>321</td><td><strong><code class="code-no-wrap">map_example</code></strong></td><td><code>map</code></td><td></td><td></td></tr>
|
||||
<tr><td>322</td><td><strong><code class="code-no-wrap">json_example</code></strong></td><td><code>json</code></td><td>Для тестирования интерфейса. Сюда можно писать корректный json</td><td></td></tr>
|
||||
<tr><td>396</td><td><strong><code class="code-no-wrap">nested_ref_example</code></strong></td><td></td><td></td><td></td></tr>
|
||||
<tr><td>447</td><td><strong><code class="code-no-wrap">yaml_example</code></strong></td><td><code>yaml</code></td><td></td><td></td></tr>
|
||||
<tr><td>647</td><td><strong><code class="code-no-wrap">map_fixed</code></strong></td><td><code>map-fixed</code></td><td>Новый тип поля</td><td></td></tr>
|
||||
<tr><td>654</td><td><strong><code class="code-no-wrap">array_map_fixed_example</code></strong></td><td><code>array-map-fixed</code></td><td>Array of map-fixed</td><td></td></tr>
|
||||
</tbody></table>
|
||||
|
||||
**Параметры, имеющие значение по умолчанию, если не меняете - эти параметры не обязательно прописывать в манифесте**
|
||||
<table class="resource-table resource-table-compact">
|
||||
<thead><tr><th>ID</th><th>Code</th><th>Type</th><th>Default</th><th>Description</th><th>Constraints</th></tr></thead>
|
||||
<tbody>
|
||||
<tr><td>198</td><td><strong><code class="code-no-wrap">duration_ms</code></strong></td><td><code>integer</code></td><td><code>0</code></td><td>перед завершением подождать (sleep) столько миллисекунд</td><td></td></tr>
|
||||
<tr><td>199</td><td><strong><code class="code-no-wrap">fail_at_start</code></strong></td><td><code>boolean</code></td><td><code>false</code></td><td>**Операция не будет завершена**<br/>Она будет в постоянном статусе PENDING, однако в Jenkins Job завершится с ошибкой</td><td>value_list=false, true</td></tr>
|
||||
<tr><td>200</td><td><strong><code class="code-no-wrap">fail_in_progress</code></strong></td><td><code>boolean</code></td><td><code>false</code></td><td>если true, корректно начать выполнение джоба, но в процессе завершить аварийно, ничего не записывая в cmdb</td><td>value_list=false, true</td></tr>
|
||||
<tr><td>201</td><td><strong><code class="code-no-wrap">where_fail</code></strong></td><td><code>integer</code></td><td><code>1</code></td><td>принимает 1,2,3. Работает с failInProgress. 1 - упасть в prepare. 2 - упасть внутри блока Data fill. 3 - упасть после vault write</td><td>value_list=1, 2, 3</td></tr>
|
||||
</tbody></table>
|
||||
|
||||
<div class="lifecycle-note">
|
||||
<strong>Параметры поведения (кратко)</strong><br/>
|
||||
По умолчанию: `suspend_on_destroy = True`, `adopt_existing_on_create = False`.<br/>
|
||||
При `terraform destroy` или удалении ресурса из манифеста:<br/>
|
||||
- `suspend_on_destroy=true` — инстанс переводится в `Suspend` (не удаляется).<br/>
|
||||
- `suspend_on_destroy=false` — Terraform удаляет ресурс только из state.<br/>
|
||||
При `apply` флаг `adopt_existing_on_create` работает как авто-`import`:<br/>
|
||||
- `false` — если ресурс уже есть, будет ошибка.<br/>
|
||||
- `true` — Terraform может взять существующий инстанс под управление (`running` → adopt, `suspended` → resume+adopt при совпадении параметров).<br/>
|
||||
Важно: один инстанс должен быть только в одном state. Иначе получите конфликт управления.
|
||||
</div>
|
||||
@@ -0,0 +1,21 @@
|
||||
# Resource nubes_dummy
|
||||
|
||||
Service ID: `1`
|
||||
|
||||
Service Name: Болванка
|
||||
|
||||
[Manual](dummy.md) | [Create params](dummy_params_create.md) | [Modify params](dummy_params_modify.md) | [Output params](dummy_outputs.md) | [Operations](dummy_ops.md) | [Example](dummy_example.md)
|
||||
|
||||
## Modify params
|
||||
|
||||
<table class="resource-table resource-table-compact">
|
||||
<thead><tr><th>ID</th><th>Code</th><th>Type</th><th>Description</th><th>Constraints</th></tr></thead>
|
||||
<tbody>
|
||||
<tr><td>287</td><td><strong><code class="code-no-wrap">duration_ms</code></strong></td><td><code>integer</code></td><td>перед завершением подождать (sleep) столько миллисекунд</td><td></td></tr>
|
||||
<tr><td>288</td><td><strong><code class="code-no-wrap">fail_at_start</code></strong></td><td><code>boolean</code></td><td>если true, завершить джоб, ничего не записывая в cmdb</td><td>value_list=false, true</td></tr>
|
||||
<tr><td>289</td><td><strong><code class="code-no-wrap">fail_in_progress</code></strong></td><td><code>boolean</code></td><td>если true, корректно начать выполнение джоба, но в процессе завершить аварийно, ничего не записывая в cmdb</td><td>value_list=false, true</td></tr>
|
||||
<tr><td>290</td><td><strong><code class="code-no-wrap">where_fail</code></strong></td><td><code>integer</code></td><td>принимает 1,2,3. Работает с failInProgress. 1 - упасть в prepare. 2 - упасть внутри блока Data fill. 3 - упасть после vault write</td><td>value_list=1, 2, 3</td></tr>
|
||||
<tr><td>291</td><td><strong><code class="code-no-wrap">bodymessage</code></strong></td><td></td><td>Дата, уходящая в Vault</td><td></td></tr>
|
||||
<tr><td>373</td><td><strong><code class="code-no-wrap">map_example</code></strong></td><td><code>map</code></td><td></td><td></td></tr>
|
||||
<tr><td>374</td><td><strong><code class="code-no-wrap">json_example</code></strong></td><td></td><td></td><td></td></tr>
|
||||
</tbody></table>
|
||||
@@ -0,0 +1,13 @@
|
||||
# Resource nubes_flask
|
||||
|
||||
Service ID: `89`
|
||||
|
||||
Service Name: Flask
|
||||
|
||||
[Manual](flask.md) | [Create params](flask_params_create.md) | [Modify params](flask_params_modify.md) | [Output params](flask_outputs.md) | [Operations](flask_ops.md) | [Example](flask_example.md)
|
||||
|
||||
## MAN
|
||||
|
||||
<div class="man-content">
|
||||
Manual not available.
|
||||
</div>
|
||||
@@ -0,0 +1,51 @@
|
||||
# Resource nubes_flask
|
||||
|
||||
Service ID: `89`
|
||||
|
||||
Service Name: Flask
|
||||
|
||||
[Manual](flask.md) | [Create params](flask_params_create.md) | [Modify params](flask_params_modify.md) | [Output params](flask_outputs.md) | [Operations](flask_ops.md) | [Example](flask_example.md)
|
||||
|
||||
## Copy-ready manifest (`flask_main.tf`)
|
||||
|
||||
```hcl
|
||||
terraform {
|
||||
required_providers {
|
||||
nubes = {
|
||||
source = "terra.k8c.ru/nubes/nubes"
|
||||
version = "2.1.26"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
# Токен доступа api_token к Nubes API — замените на реальный.
|
||||
provider "nubes" {
|
||||
api_token = "token_***"
|
||||
api_endpoint = "https://deck-api.ngcloud.ru/api/v1/index.cfm"
|
||||
}
|
||||
resource "nubes_flask" "baza" {
|
||||
resource_realm = "TODO" # Платформа для развертывания
|
||||
|
||||
# Параметры, имеющие значение по умолчанию, если не меняете - эти параметры не обязательно прописывать в манифесте
|
||||
domain = "web01" # Если будет указан FQDN, то происходят проверки DNS на валидность А-записи, или будет добавлено в зону resourceRealm
|
||||
resource_cpu = 300 # Квота ядра пода (milicores)
|
||||
resource_memory = 256 # Квота памяти пода (MBytes)
|
||||
resource_instances = 1 # Количество узлов
|
||||
git_path = "https://github.com/Foxyhhd/Baldurs-Gate-test.git" # Путь до Git, который будет webroot для сайта
|
||||
json_env = { "param": "value" } # Массив переменных, будут переданы в env приложения
|
||||
}
|
||||
```
|
||||
|
||||
## Outputs usage
|
||||
|
||||
```hcl
|
||||
# Выходные параметры можно использовать как
|
||||
nubes_flask.baza.state_params["имя_ключа"]
|
||||
nubes_flask.baza.state_out["имя_ключа"]
|
||||
nubes_flask.baza.state_params_flat["имя_ключа"]
|
||||
nubes_flask.baza.state_out_flat["имя_ключа"]
|
||||
nubes_flask.baza.vault_secrets["имя_ключа"]
|
||||
nubes_flask.baza.vault_url
|
||||
nubes_flask.baza.vault_user_path
|
||||
nubes_flask.baza.vault_fields
|
||||
```
|
||||
@@ -0,0 +1,15 @@
|
||||
# Resource nubes_flask
|
||||
|
||||
Service ID: `89`
|
||||
|
||||
Service Name: Flask
|
||||
|
||||
[Manual](flask.md) | [Create params](flask_params_create.md) | [Modify params](flask_params_modify.md) | [Output params](flask_outputs.md) | [Operations](flask_ops.md) | [Example](flask_example.md)
|
||||
|
||||
## Operations
|
||||
|
||||
- `create` — Создание кластера. Параметры: [Create params](flask_params_create.md)
|
||||
- `delete`
|
||||
- `modify` — Изменение кластера. Параметры: [Modify params](flask_params_modify.md)
|
||||
- `resume`
|
||||
- `suspend`
|
||||
@@ -0,0 +1,18 @@
|
||||
# Resource nubes_flask
|
||||
|
||||
Service ID: `89`
|
||||
|
||||
Service Name: Flask
|
||||
|
||||
[Manual](flask.md) | [Create params](flask_params_create.md) | [Modify params](flask_params_modify.md) | [Output params](flask_outputs.md) | [Operations](flask_ops.md) | [Example](flask_example.md)
|
||||
|
||||
## Output params
|
||||
|
||||
- `state_params` (map) — параметры, отправленные в API при создании/изменении
|
||||
- `state_out` (map) — ответ API с результатами/выходными значениями
|
||||
- `state_params_flat` (map) — параметры в плоском виде (ключи с путями)
|
||||
- `state_out_flat` (map) — ответы в плоском виде (ключи с путями)
|
||||
- `vault_secrets` (map) — секреты, записанные в Vault для ресурса
|
||||
- `vault_url` (string) — адрес Vault для ресурса
|
||||
- `vault_user_path` (string) — путь пользователя в Vault
|
||||
- `vault_fields` (list) — список ключей доступных секретов
|
||||
@@ -0,0 +1,12 @@
|
||||
# Resource nubes_flask
|
||||
|
||||
Service ID: `89`
|
||||
|
||||
Service Name: Flask
|
||||
|
||||
[Manual](flask.md) | [Create params](flask_params_create.md) | [Modify params](flask_params_modify.md) | [Output params](flask_outputs.md) | [Operations](flask_ops.md) | [Example](flask_example.md)
|
||||
|
||||
## Parameters
|
||||
|
||||
- [Create params](flask_params_create.md)
|
||||
- [Modify params](flask_params_modify.md)
|
||||
@@ -0,0 +1,42 @@
|
||||
# Resource nubes_flask
|
||||
|
||||
Service ID: `89`
|
||||
|
||||
Service Name: Flask
|
||||
|
||||
[Manual](flask.md) | [Create params](flask_params_create.md) | [Modify params](flask_params_modify.md) | [Output params](flask_outputs.md) | [Operations](flask_ops.md) | [Example](flask_example.md)
|
||||
|
||||
## Create params
|
||||
|
||||
**Обязательные параметры (вводимые пользователем)**
|
||||
|
||||
<table class="resource-table resource-table-compact resource-table-required">
|
||||
<thead><tr><th>ID</th><th>Code</th><th>Type</th><th>Description</th><th>Constraints</th></tr></thead>
|
||||
<tbody>
|
||||
<tr><td>249</td><td><strong><code class="code-no-wrap">resource_realm</code></strong></td><td><code>string</code></td><td>Платформа для развертывания</td><td>func=getAvailableResourceRealms</td></tr>
|
||||
<tr><td>255</td><td><strong><code class="code-no-wrap">health_path</code></strong></td><td><code>string</code></td><td>Путь до healtcheck для запуска пода в Kubernetes, который отдаст 200 код</td><td></td></tr>
|
||||
</tbody></table>
|
||||
|
||||
**Параметры, имеющие значение по умолчанию, если не меняете - эти параметры не обязательно прописывать в манифесте**
|
||||
<table class="resource-table resource-table-compact">
|
||||
<thead><tr><th>ID</th><th>Code</th><th>Type</th><th>Default</th><th>Description</th><th>Constraints</th></tr></thead>
|
||||
<tbody>
|
||||
<tr><td>248</td><td><strong><code class="code-no-wrap">domain</code></strong></td><td><code>string</code></td><td><code>web01</code></td><td>Если будет указан FQDN, то происходят проверки DNS на валидность А-записи, или будет добавлено в зону resourceRealm</td><td>regex=^(?:[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?\.)*[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?$</td></tr>
|
||||
<tr><td>250</td><td><strong><code class="code-no-wrap">resource_cpu</code></strong></td><td><code>integer</code></td><td><code>300</code></td><td>Квота ядра пода (milicores)</td><td>minvalue=100; maxvalue=4000</td></tr>
|
||||
<tr><td>251</td><td><strong><code class="code-no-wrap">resource_memory</code></strong></td><td><code>integer</code></td><td><code>256</code></td><td>Квота памяти пода (MBytes)</td><td>minvalue=128; maxvalue=8192</td></tr>
|
||||
<tr><td>252</td><td><strong><code class="code-no-wrap">resource_instances</code></strong></td><td><code>integer</code></td><td><code>1</code></td><td>Количество узлов</td><td>minvalue=1; maxvalue=7</td></tr>
|
||||
<tr><td>253</td><td><strong><code class="code-no-wrap">git_path</code></strong></td><td><code>string</code></td><td><code>https://github.com/Foxyhhd/Baldurs-Gate-test.git</code></td><td>Путь до Git, который будет webroot для сайта</td><td></td></tr>
|
||||
<tr><td>254</td><td><strong><code class="code-no-wrap">json_env</code></strong></td><td><code>string</code></td><td><code>{ &quot;param&quot;: &quot;value&quot; }</code></td><td>Массив переменных, будут переданы в env приложения</td><td></td></tr>
|
||||
</tbody></table>
|
||||
|
||||
<div class="lifecycle-note">
|
||||
<strong>Параметры поведения (кратко)</strong><br/>
|
||||
По умолчанию: `suspend_on_destroy = True`, `adopt_existing_on_create = False`.<br/>
|
||||
При `terraform destroy` или удалении ресурса из манифеста:<br/>
|
||||
- `suspend_on_destroy=true` — инстанс переводится в `Suspend` (не удаляется).<br/>
|
||||
- `suspend_on_destroy=false` — Terraform удаляет ресурс только из state.<br/>
|
||||
При `apply` флаг `adopt_existing_on_create` работает как авто-`import`:<br/>
|
||||
- `false` — если ресурс уже есть, будет ошибка.<br/>
|
||||
- `true` — Terraform может взять существующий инстанс под управление (`running` → adopt, `suspended` → resume+adopt при совпадении параметров).<br/>
|
||||
Важно: один инстанс должен быть только в одном state. Иначе получите конфликт управления.
|
||||
</div>
|
||||
@@ -0,0 +1,19 @@
|
||||
# Resource nubes_flask
|
||||
|
||||
Service ID: `89`
|
||||
|
||||
Service Name: Flask
|
||||
|
||||
[Manual](flask.md) | [Create params](flask_params_create.md) | [Modify params](flask_params_modify.md) | [Output params](flask_outputs.md) | [Operations](flask_ops.md) | [Example](flask_example.md)
|
||||
|
||||
## Modify params
|
||||
|
||||
<table class="resource-table resource-table-compact">
|
||||
<thead><tr><th>ID</th><th>Code</th><th>Type</th><th>Description</th><th>Constraints</th></tr></thead>
|
||||
<tbody>
|
||||
<tr><td>451</td><td><strong><code class="code-no-wrap">resource_cpu</code></strong></td><td><code>integer</code></td><td>Квота ядра пода (milicores)</td><td>minvalue=100; maxvalue=4000</td></tr>
|
||||
<tr><td>452</td><td><strong><code class="code-no-wrap">resource_memory</code></strong></td><td><code>integer</code></td><td>Квота памяти пода (MBytes)</td><td>minvalue=128; maxvalue=8192</td></tr>
|
||||
<tr><td>453</td><td><strong><code class="code-no-wrap">resource_instances</code></strong></td><td><code>integer</code></td><td>Количество узлов</td><td>minvalue=1; maxvalue=7</td></tr>
|
||||
<tr><td>454</td><td><strong><code class="code-no-wrap">git_path</code></strong></td><td></td><td>Путь до Git, который будет webroot для сайта</td><td></td></tr>
|
||||
<tr><td>455</td><td><strong><code class="code-no-wrap">json_env</code></strong></td><td><code>json</code></td><td>Массив переменных, будут переданы в env приложения</td><td></td></tr>
|
||||
</tbody></table>
|
||||
@@ -0,0 +1,13 @@
|
||||
# Resource nubes_gitea
|
||||
|
||||
Service ID: `99`
|
||||
|
||||
Service Name: Gitea
|
||||
|
||||
[Manual](gitea.md) | [Create params](gitea_params_create.md) | [Modify params](gitea_params_modify.md) | [Output params](gitea_outputs.md) | [Operations](gitea_ops.md) | [Example](gitea_example.md)
|
||||
|
||||
## MAN
|
||||
|
||||
<div class="man-content">
|
||||
Развертывает сервис контроля версий Gitea<br/>Зависит от сервиса postgresql который должен быть развернут заранее.
|
||||
</div>
|
||||
@@ -0,0 +1,13 @@
|
||||
# Resource nubes_gitea_complex
|
||||
|
||||
Service ID: `114`
|
||||
|
||||
Service Name: Комплексная услуга по созданию gitea
|
||||
|
||||
[Manual](gitea_complex.md) | [Create params](gitea_complex_params_create.md) | [Modify params](gitea_complex_params_modify.md) | [Output params](gitea_complex_outputs.md) | [Operations](gitea_complex_ops.md) | [Example](gitea_complex_example.md)
|
||||
|
||||
## MAN
|
||||
|
||||
<div class="man-content">
|
||||
Комплексная услуга из ["gittea", "postgres"]
|
||||
</div>
|
||||
@@ -0,0 +1,42 @@
|
||||
# Resource nubes_gitea_complex
|
||||
|
||||
Service ID: `114`
|
||||
|
||||
Service Name: Комплексная услуга по созданию gitea
|
||||
|
||||
[Manual](gitea_complex.md) | [Create params](gitea_complex_params_create.md) | [Modify params](gitea_complex_params_modify.md) | [Output params](gitea_complex_outputs.md) | [Operations](gitea_complex_ops.md) | [Example](gitea_complex_example.md)
|
||||
|
||||
## Copy-ready manifest (`gitea_complex_main.tf`)
|
||||
|
||||
```hcl
|
||||
terraform {
|
||||
required_providers {
|
||||
nubes = {
|
||||
source = "terra.k8c.ru/nubes/nubes"
|
||||
version = "2.1.26"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
# Токен доступа api_token к Nubes API — замените на реальный.
|
||||
provider "nubes" {
|
||||
api_token = "token_***"
|
||||
api_endpoint = "https://deck-api.ngcloud.ru/api/v1/index.cfm"
|
||||
}
|
||||
resource "nubes_gitea_complex" "baza" {
|
||||
}
|
||||
```
|
||||
|
||||
## Outputs usage
|
||||
|
||||
```hcl
|
||||
# Выходные параметры можно использовать как
|
||||
nubes_gitea_complex.baza.state_params["имя_ключа"]
|
||||
nubes_gitea_complex.baza.state_out["имя_ключа"]
|
||||
nubes_gitea_complex.baza.state_params_flat["имя_ключа"]
|
||||
nubes_gitea_complex.baza.state_out_flat["имя_ключа"]
|
||||
nubes_gitea_complex.baza.vault_secrets["имя_ключа"]
|
||||
nubes_gitea_complex.baza.vault_url
|
||||
nubes_gitea_complex.baza.vault_user_path
|
||||
nubes_gitea_complex.baza.vault_fields
|
||||
```
|
||||
@@ -0,0 +1,10 @@
|
||||
# Resource nubes_gitea_complex
|
||||
|
||||
Service ID: `114`
|
||||
|
||||
Service Name: Комплексная услуга по созданию gitea
|
||||
|
||||
[Manual](gitea_complex.md) | [Create params](gitea_complex_params_create.md) | [Modify params](gitea_complex_params_modify.md) | [Output params](gitea_complex_outputs.md) | [Operations](gitea_complex_ops.md) | [Example](gitea_complex_example.md)
|
||||
|
||||
## Operations
|
||||
|
||||
@@ -0,0 +1,18 @@
|
||||
# Resource nubes_gitea_complex
|
||||
|
||||
Service ID: `114`
|
||||
|
||||
Service Name: Комплексная услуга по созданию gitea
|
||||
|
||||
[Manual](gitea_complex.md) | [Create params](gitea_complex_params_create.md) | [Modify params](gitea_complex_params_modify.md) | [Output params](gitea_complex_outputs.md) | [Operations](gitea_complex_ops.md) | [Example](gitea_complex_example.md)
|
||||
|
||||
## Output params
|
||||
|
||||
- `state_params` (map) — параметры, отправленные в API при создании/изменении
|
||||
- `state_out` (map) — ответ API с результатами/выходными значениями
|
||||
- `state_params_flat` (map) — параметры в плоском виде (ключи с путями)
|
||||
- `state_out_flat` (map) — ответы в плоском виде (ключи с путями)
|
||||
- `vault_secrets` (map) — секреты, записанные в Vault для ресурса
|
||||
- `vault_url` (string) — адрес Vault для ресурса
|
||||
- `vault_user_path` (string) — путь пользователя в Vault
|
||||
- `vault_fields` (list) — список ключей доступных секретов
|
||||
@@ -0,0 +1,12 @@
|
||||
# Resource nubes_gitea_complex
|
||||
|
||||
Service ID: `114`
|
||||
|
||||
Service Name: Комплексная услуга по созданию gitea
|
||||
|
||||
[Manual](gitea_complex.md) | [Create params](gitea_complex_params_create.md) | [Modify params](gitea_complex_params_modify.md) | [Output params](gitea_complex_outputs.md) | [Operations](gitea_complex_ops.md) | [Example](gitea_complex_example.md)
|
||||
|
||||
## Parameters
|
||||
|
||||
- [Create params](gitea_complex_params_create.md)
|
||||
- [Modify params](gitea_complex_params_modify.md)
|
||||
@@ -0,0 +1,16 @@
|
||||
# Resource nubes_gitea_complex
|
||||
|
||||
Service ID: `114`
|
||||
|
||||
Service Name: Комплексная услуга по созданию gitea
|
||||
|
||||
[Manual](gitea_complex.md) | [Create params](gitea_complex_params_create.md) | [Modify params](gitea_complex_params_modify.md) | [Output params](gitea_complex_outputs.md) | [Operations](gitea_complex_ops.md) | [Example](gitea_complex_example.md)
|
||||
|
||||
## Create params
|
||||
|
||||
**Обязательные параметры (вводимые пользователем)**
|
||||
|
||||
None.
|
||||
|
||||
**Параметры, имеющие значение по умолчанию, если не меняете - эти параметры не обязательно прописывать в манифесте**
|
||||
None.
|
||||
@@ -0,0 +1,11 @@
|
||||
# Resource nubes_gitea_complex
|
||||
|
||||
Service ID: `114`
|
||||
|
||||
Service Name: Комплексная услуга по созданию gitea
|
||||
|
||||
[Manual](gitea_complex.md) | [Create params](gitea_complex_params_create.md) | [Modify params](gitea_complex_params_modify.md) | [Output params](gitea_complex_outputs.md) | [Operations](gitea_complex_ops.md) | [Example](gitea_complex_example.md)
|
||||
|
||||
## Modify params
|
||||
|
||||
None.
|
||||
@@ -0,0 +1,50 @@
|
||||
# Resource nubes_gitea
|
||||
|
||||
Service ID: `99`
|
||||
|
||||
Service Name: Gitea
|
||||
|
||||
[Manual](gitea.md) | [Create params](gitea_params_create.md) | [Modify params](gitea_params_modify.md) | [Output params](gitea_outputs.md) | [Operations](gitea_ops.md) | [Example](gitea_example.md)
|
||||
|
||||
## Copy-ready manifest (`gitea_main.tf`)
|
||||
|
||||
```hcl
|
||||
terraform {
|
||||
required_providers {
|
||||
nubes = {
|
||||
source = "terra.k8c.ru/nubes/nubes"
|
||||
version = "2.1.26"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
# Токен доступа api_token к Nubes API — замените на реальный.
|
||||
provider "nubes" {
|
||||
api_token = "token_***"
|
||||
api_endpoint = "https://deck-api.ngcloud.ru/api/v1/index.cfm"
|
||||
}
|
||||
resource "nubes_gitea" "baza" {
|
||||
psql_uid = "TODO" # UUID Услуги k8sPgsql. Пользователя techGitea, базу данных gitea создаёт автоматически
|
||||
|
||||
# Параметры, имеющие значение по умолчанию, если не меняете - эти параметры не обязательно прописывать в манифесте
|
||||
resource_cpu = 500 # Квота ядра пода (Указывается в mili). 1000Mili = 1 Ядро
|
||||
resource_memory = 512 # Квота памяти пода (Указывается в Megabytes)
|
||||
resource_disk = 1 # Квота диска (Указывается в GIGAbytes)
|
||||
resource_instances = 1 # Количество узлов
|
||||
domain = "web01" # Если будет указан FQDN, то происходят проверки DNS на валидность А-записи, или будет добавлено в зону resourceRealm
|
||||
}
|
||||
```
|
||||
|
||||
## Outputs usage
|
||||
|
||||
```hcl
|
||||
# Выходные параметры можно использовать как
|
||||
nubes_gitea.baza.state_params["имя_ключа"]
|
||||
nubes_gitea.baza.state_out["имя_ключа"]
|
||||
nubes_gitea.baza.state_params_flat["имя_ключа"]
|
||||
nubes_gitea.baza.state_out_flat["имя_ключа"]
|
||||
nubes_gitea.baza.vault_secrets["имя_ключа"]
|
||||
nubes_gitea.baza.vault_url
|
||||
nubes_gitea.baza.vault_user_path
|
||||
nubes_gitea.baza.vault_fields
|
||||
```
|
||||
@@ -0,0 +1,15 @@
|
||||
# Resource nubes_gitea
|
||||
|
||||
Service ID: `99`
|
||||
|
||||
Service Name: Gitea
|
||||
|
||||
[Manual](gitea.md) | [Create params](gitea_params_create.md) | [Modify params](gitea_params_modify.md) | [Output params](gitea_outputs.md) | [Operations](gitea_ops.md) | [Example](gitea_example.md)
|
||||
|
||||
## Operations
|
||||
|
||||
- `create` — Создание кластера. Параметры: [Create params](gitea_params_create.md)
|
||||
- `delete`
|
||||
- `modify` — Изменение кластера. Параметры: [Modify params](gitea_params_modify.md)
|
||||
- `resume`
|
||||
- `suspend`
|
||||
@@ -0,0 +1,39 @@
|
||||
# Resource nubes_gitea
|
||||
|
||||
Service ID: `99`
|
||||
|
||||
Service Name: Gitea
|
||||
|
||||
[Manual](gitea.md) | [Create params](gitea_params_create.md) | [Modify params](gitea_params_modify.md) | [Output params](gitea_outputs.md) | [Operations](gitea_ops.md) | [Example](gitea_example.md)
|
||||
|
||||
## Output params
|
||||
|
||||
- `state_params` (map) — параметры, отправленные в API при создании/изменении
|
||||
- `state_out` (map) — ответ API с результатами/выходными значениями
|
||||
- `state_params_flat` (map) — параметры в плоском виде (ключи с путями)
|
||||
- `state_out_flat` (map) — ответы в плоском виде (ключи с путями)
|
||||
- `vault_secrets` (map) — секреты, записанные в Vault для ресурса
|
||||
- `vault_url` (string) — адрес Vault для ресурса
|
||||
- `vault_user_path` (string) — путь пользователя в Vault
|
||||
- `vault_fields` (list) — список ключей доступных секретов
|
||||
|
||||
## Реальные поля из облака (running/suspended snapshot)
|
||||
|
||||
Поля ниже получены из реальных инстансов этого сервиса в облаке.
|
||||
Используйте их как готовые ключи для `state_out_flat` и `vault_secrets`.
|
||||
|
||||
### `state_out_flat` ключи
|
||||
|
||||
- `state_out_flat["connectionUrl"]`
|
||||
- `state_out_flat["monitoring"]`
|
||||
- `state_out_flat["monitoring.allDashboards"]`
|
||||
- `state_out_flat["monitoring.base"]`
|
||||
- `state_out_flat["monitoring.base.url"]`
|
||||
- `state_out_flat["monitoring.loki"]`
|
||||
- `state_out_flat["monitoring.loki.url"]`
|
||||
|
||||
### `vault_secrets` ключи
|
||||
|
||||
- `vault_secrets["adminPass"]`
|
||||
- `vault_secrets["adminUser"]`
|
||||
|
||||
@@ -0,0 +1,12 @@
|
||||
# Resource nubes_gitea
|
||||
|
||||
Service ID: `99`
|
||||
|
||||
Service Name: Gitea
|
||||
|
||||
[Manual](gitea.md) | [Create params](gitea_params_create.md) | [Modify params](gitea_params_modify.md) | [Output params](gitea_outputs.md) | [Operations](gitea_ops.md) | [Example](gitea_example.md)
|
||||
|
||||
## Parameters
|
||||
|
||||
- [Create params](gitea_params_create.md)
|
||||
- [Modify params](gitea_params_modify.md)
|
||||
@@ -0,0 +1,40 @@
|
||||
# Resource nubes_gitea
|
||||
|
||||
Service ID: `99`
|
||||
|
||||
Service Name: Gitea
|
||||
|
||||
[Manual](gitea.md) | [Create params](gitea_params_create.md) | [Modify params](gitea_params_modify.md) | [Output params](gitea_outputs.md) | [Operations](gitea_ops.md) | [Example](gitea_example.md)
|
||||
|
||||
## Create params
|
||||
|
||||
**Обязательные параметры (вводимые пользователем)**
|
||||
|
||||
<table class="resource-table resource-table-compact resource-table-required">
|
||||
<thead><tr><th>ID</th><th>Code</th><th>Type</th><th>Description</th><th>Constraints</th></tr></thead>
|
||||
<tbody>
|
||||
<tr><td>238</td><td><strong><code class="code-no-wrap">psql_uid</code></strong></td><td><code>uuid</code></td><td>UUID Услуги k8sPgsql. Пользователя techGitea, базу данных gitea создаёт автоматически</td><td>ref_svc_id=90</td></tr>
|
||||
</tbody></table>
|
||||
|
||||
**Параметры, имеющие значение по умолчанию, если не меняете - эти параметры не обязательно прописывать в манифесте**
|
||||
<table class="resource-table resource-table-compact">
|
||||
<thead><tr><th>ID</th><th>Code</th><th>Type</th><th>Default</th><th>Description</th><th>Constraints</th></tr></thead>
|
||||
<tbody>
|
||||
<tr><td>232</td><td><strong><code class="code-no-wrap">resource_cpu</code></strong></td><td><code>integer</code></td><td><code>500</code></td><td>Квота ядра пода (Указывается в mili). 1000Mili = 1 Ядро</td><td>minvalue=300; maxvalue=4000</td></tr>
|
||||
<tr><td>233</td><td><strong><code class="code-no-wrap">resource_memory</code></strong></td><td><code>integer</code></td><td><code>512</code></td><td>Квота памяти пода (Указывается в Megabytes)</td><td>minvalue=256; maxvalue=8192</td></tr>
|
||||
<tr><td>234</td><td><strong><code class="code-no-wrap">resource_disk</code></strong></td><td><code>integer</code></td><td><code>1</code></td><td>Квота диска (Указывается в GIGAbytes)</td><td>minvalue=1; maxvalue=999</td></tr>
|
||||
<tr><td>235</td><td><strong><code class="code-no-wrap">resource_instances</code></strong></td><td><code>integer</code></td><td><code>1</code></td><td>Количество узлов в сети</td><td>minvalue=1; maxvalue=7</td></tr>
|
||||
<tr><td>237</td><td><strong><code class="code-no-wrap">domain</code></strong></td><td><code>string</code></td><td><code>web01</code></td><td>Если будет указан FQDN, то происходят проверки DNS на валидность А-записи, или будет добавлено в зону resourceRealm</td><td>regex=^(?:[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?\.)*[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?$; unique_scope=provider</td></tr>
|
||||
</tbody></table>
|
||||
|
||||
<div class="lifecycle-note">
|
||||
<strong>Параметры поведения (кратко)</strong><br/>
|
||||
По умолчанию: `suspend_on_destroy = True`, `adopt_existing_on_create = False`.<br/>
|
||||
При `terraform destroy` или удалении ресурса из манифеста:<br/>
|
||||
- `suspend_on_destroy=true` — инстанс переводится в `Suspend` (не удаляется).<br/>
|
||||
- `suspend_on_destroy=false` — Terraform удаляет ресурс только из state.<br/>
|
||||
При `apply` флаг `adopt_existing_on_create` работает как авто-`import`:<br/>
|
||||
- `false` — если ресурс уже есть, будет ошибка.<br/>
|
||||
- `true` — Terraform может взять существующий инстанс под управление (`running` → adopt, `suspended` → resume+adopt при совпадении параметров).<br/>
|
||||
Важно: один инстанс должен быть только в одном state. Иначе получите конфликт управления.
|
||||
</div>
|
||||
@@ -0,0 +1,18 @@
|
||||
# Resource nubes_gitea
|
||||
|
||||
Service ID: `99`
|
||||
|
||||
Service Name: Gitea
|
||||
|
||||
[Manual](gitea.md) | [Create params](gitea_params_create.md) | [Modify params](gitea_params_modify.md) | [Output params](gitea_outputs.md) | [Operations](gitea_ops.md) | [Example](gitea_example.md)
|
||||
|
||||
## Modify params
|
||||
|
||||
<table class="resource-table resource-table-compact">
|
||||
<thead><tr><th>ID</th><th>Code</th><th>Type</th><th>Description</th><th>Constraints</th></tr></thead>
|
||||
<tbody>
|
||||
<tr><td>259</td><td><strong><code class="code-no-wrap">resource_cpu</code></strong></td><td><code>integer</code></td><td>Квота ядра пода (Указывается в mili). 1000Mili = 1 Ядро</td><td>minvalue=500; maxvalue=4000</td></tr>
|
||||
<tr><td>260</td><td><strong><code class="code-no-wrap">resource_memory</code></strong></td><td><code>integer</code></td><td>Квота памяти пода (Указывается в Megabytes)</td><td>minvalue=256; maxvalue=8192</td></tr>
|
||||
<tr><td>261</td><td><strong><code class="code-no-wrap">resource_disk</code></strong></td><td><code>integer</code></td><td>Квота диска (Указывается в GIGAbytes)</td><td>minvalue=1; maxvalue=999</td></tr>
|
||||
<tr><td>262</td><td><strong><code class="code-no-wrap">resource_instances</code></strong></td><td><code>integer</code></td><td>Количество узлов в сети</td><td>minvalue=1; maxvalue=7</td></tr>
|
||||
</tbody></table>
|
||||
@@ -0,0 +1,13 @@
|
||||
# Resource nubes_harbor
|
||||
|
||||
Service ID: `82`
|
||||
|
||||
Service Name: Container Registry
|
||||
|
||||
[Manual](harbor.md) | [Create params](harbor_params_create.md) | [Modify params](harbor_params_modify.md) | [Output params](harbor_outputs.md) | [Operations](harbor_ops.md) | [Example](harbor_example.md)
|
||||
|
||||
## MAN
|
||||
|
||||
<div class="man-content">
|
||||
Расширенный реестр для управления Docker-образами с enterprise-функциями безопасности, репликации и контроля доступа.<br/>Container Registry позволяет хранить, развертывать и управлять Docker-образами контейнеров в инфраструктуре NGcloud.<br/>Сервис можно использовать в процессе разработки контейнеров. Например, вы можете настроить систему автоматизации на работу с реестром в Container Registry в рамках процесса непрерывной интеграции. Контейнеры идеально подходят для запуска небольших, независимых и легко изменяемых сервисов.<br/>Чтобы начать работу, создайте реестр и загрузите в него Docker-образ<br/>Авторизация: keycloak
|
||||
</div>
|
||||
@@ -0,0 +1,51 @@
|
||||
# Resource nubes_harbor
|
||||
|
||||
Service ID: `82`
|
||||
|
||||
Service Name: Container Registry
|
||||
|
||||
[Manual](harbor.md) | [Create params](harbor_params_create.md) | [Modify params](harbor_params_modify.md) | [Output params](harbor_outputs.md) | [Operations](harbor_ops.md) | [Example](harbor_example.md)
|
||||
|
||||
## Copy-ready manifest (`harbor_main.tf`)
|
||||
|
||||
```hcl
|
||||
terraform {
|
||||
required_providers {
|
||||
nubes = {
|
||||
source = "terra.k8c.ru/nubes/nubes"
|
||||
version = "2.1.26"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
# Токен доступа api_token к Nubes API — замените на реальный.
|
||||
provider "nubes" {
|
||||
api_token = "token_***"
|
||||
api_endpoint = "https://deck-api.ngcloud.ru/api/v1/index.cfm"
|
||||
}
|
||||
resource "nubes_harbor" "baza" {
|
||||
resource_realm = "TODO" # Платформа для развертывания
|
||||
s3_uid = "TODO" # UUID экземпляра услуги S3
|
||||
|
||||
# Параметры, имеющие значение по умолчанию, если не меняете - эти параметры не обязательно прописывать в манифесте
|
||||
domain = "web01" # Если будет указан FQDN, то происходят проверки DNS на валидность А-записи, или будет добавлено в зону resourceRealm
|
||||
emails = "testuser1" # Учётная запись, которой будут выданы админские права. Обязана находиться в Keycloak. Можно передавать несколько через пробел
|
||||
resource_cpu = 100 # Квота ядра пода (Указывается в mili). 1000Mili = 1 Ядро
|
||||
resource_memory = 200 # Квота памяти пода (Указывается в Megabytes)
|
||||
resource_instances = 1 # Количество узлов
|
||||
}
|
||||
```
|
||||
|
||||
## Outputs usage
|
||||
|
||||
```hcl
|
||||
# Выходные параметры можно использовать как
|
||||
nubes_harbor.baza.state_params["имя_ключа"]
|
||||
nubes_harbor.baza.state_out["имя_ключа"]
|
||||
nubes_harbor.baza.state_params_flat["имя_ключа"]
|
||||
nubes_harbor.baza.state_out_flat["имя_ключа"]
|
||||
nubes_harbor.baza.vault_secrets["имя_ключа"]
|
||||
nubes_harbor.baza.vault_url
|
||||
nubes_harbor.baza.vault_user_path
|
||||
nubes_harbor.baza.vault_fields
|
||||
```
|
||||
@@ -0,0 +1,12 @@
|
||||
# Resource nubes_harbor
|
||||
|
||||
Service ID: `82`
|
||||
|
||||
Service Name: Container Registry
|
||||
|
||||
[Manual](harbor.md) | [Create params](harbor_params_create.md) | [Modify params](harbor_params_modify.md) | [Output params](harbor_outputs.md) | [Operations](harbor_ops.md) | [Example](harbor_example.md)
|
||||
|
||||
## Operations
|
||||
|
||||
- `create` — Создание кластера. Параметры: [Create params](harbor_params_create.md)
|
||||
- `delete` — DEV-Ветка удаления Harbor
|
||||
@@ -0,0 +1,40 @@
|
||||
# Resource nubes_harbor
|
||||
|
||||
Service ID: `82`
|
||||
|
||||
Service Name: Container Registry
|
||||
|
||||
[Manual](harbor.md) | [Create params](harbor_params_create.md) | [Modify params](harbor_params_modify.md) | [Output params](harbor_outputs.md) | [Operations](harbor_ops.md) | [Example](harbor_example.md)
|
||||
|
||||
## Output params
|
||||
|
||||
- `state_params` (map) — параметры, отправленные в API при создании/изменении
|
||||
- `state_out` (map) — ответ API с результатами/выходными значениями
|
||||
- `state_params_flat` (map) — параметры в плоском виде (ключи с путями)
|
||||
- `state_out_flat` (map) — ответы в плоском виде (ключи с путями)
|
||||
- `vault_secrets` (map) — секреты, записанные в Vault для ресурса
|
||||
- `vault_url` (string) — адрес Vault для ресурса
|
||||
- `vault_user_path` (string) — путь пользователя в Vault
|
||||
- `vault_fields` (list) — список ключей доступных секретов
|
||||
|
||||
## Реальные поля из облака (running/suspended snapshot)
|
||||
|
||||
Поля ниже получены из реальных инстансов этого сервиса в облаке.
|
||||
Используйте их как готовые ключи для `state_out_flat` и `vault_secrets`.
|
||||
|
||||
### `state_out_flat` ключи
|
||||
|
||||
- `state_out_flat["connectionUrl"]`
|
||||
- `state_out_flat["monitoring"]`
|
||||
- `state_out_flat["monitoring.allDashboards"]`
|
||||
- `state_out_flat["monitoring.base"]`
|
||||
- `state_out_flat["monitoring.base.url"]`
|
||||
- `state_out_flat["monitoring.k8sregistry"]`
|
||||
- `state_out_flat["monitoring.k8sregistry.url"]`
|
||||
- `state_out_flat["monitoring.loki"]`
|
||||
- `state_out_flat["monitoring.loki.url"]`
|
||||
|
||||
### `vault_secrets` ключи
|
||||
|
||||
- `vault_secrets["adminPass"]`
|
||||
|
||||
@@ -0,0 +1,12 @@
|
||||
# Resource nubes_harbor
|
||||
|
||||
Service ID: `82`
|
||||
|
||||
Service Name: Container Registry
|
||||
|
||||
[Manual](harbor.md) | [Create params](harbor_params_create.md) | [Modify params](harbor_params_modify.md) | [Output params](harbor_outputs.md) | [Operations](harbor_ops.md) | [Example](harbor_example.md)
|
||||
|
||||
## Parameters
|
||||
|
||||
- [Create params](harbor_params_create.md)
|
||||
- [Modify params](harbor_params_modify.md)
|
||||
@@ -0,0 +1,29 @@
|
||||
# Resource nubes_harbor
|
||||
|
||||
Service ID: `82`
|
||||
|
||||
Service Name: Container Registry
|
||||
|
||||
[Manual](harbor.md) | [Create params](harbor_params_create.md) | [Modify params](harbor_params_modify.md) | [Output params](harbor_outputs.md) | [Operations](harbor_ops.md) | [Example](harbor_example.md)
|
||||
|
||||
## Create params
|
||||
|
||||
**Обязательные параметры (вводимые пользователем)**
|
||||
|
||||
<table class="resource-table resource-table-compact resource-table-required">
|
||||
<thead><tr><th>ID</th><th>Code</th><th>Type</th><th>Description</th><th>Constraints</th></tr></thead>
|
||||
<tbody>
|
||||
<tr><td>110</td><td><strong><code class="code-no-wrap">resource_realm</code></strong></td><td><code>string</code></td><td>Наименование кластера Kubernetes для подключения</td><td>func=getAvailableResourceRealms</td></tr>
|
||||
<tr><td>231</td><td><strong><code class="code-no-wrap">s3_uid</code></strong></td><td><code>uuid</code></td><td>UUID экземпляра услуги S3</td><td>ref_svc_id=12</td></tr>
|
||||
</tbody></table>
|
||||
|
||||
**Параметры, имеющие значение по умолчанию, если не меняете - эти параметры не обязательно прописывать в манифесте**
|
||||
<table class="resource-table resource-table-compact">
|
||||
<thead><tr><th>ID</th><th>Code</th><th>Type</th><th>Default</th><th>Description</th><th>Constraints</th></tr></thead>
|
||||
<tbody>
|
||||
<tr><td>16</td><td><strong><code class="code-no-wrap">domain</code></strong></td><td><code>string</code></td><td><code>web01</code></td><td>Если будет указан FQDN, то происходят проверки DNS на валидность А-записи, или будет добавлено в зону resourceRealm</td><td>regex=^(?:[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?\.)*[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?$</td></tr>
|
||||
<tr><td>17</td><td><strong><code class="code-no-wrap">emails</code></strong></td><td><code>string</code></td><td><code>testuser1</code></td><td>Учётная запись, которой будут выданы админские права. Обязана находиться в Keycloak. Можно передавать несколько через пробел</td><td></td></tr>
|
||||
<tr><td>228</td><td><strong><code class="code-no-wrap">resource_cpu</code></strong></td><td><code>integer</code></td><td><code>100</code></td><td>Квота ядра пода (Указывается в mili). 1000Mili = 1 Ядро</td><td>minvalue=100; maxvalue=4000</td></tr>
|
||||
<tr><td>229</td><td><strong><code class="code-no-wrap">resource_memory</code></strong></td><td><code>integer</code></td><td><code>200</code></td><td>Квота памяти пода (Указывается в Megabytes)</td><td>minvalue=128; maxvalue=8192</td></tr>
|
||||
<tr><td>230</td><td><strong><code class="code-no-wrap">resource_instances</code></strong></td><td><code>integer</code></td><td><code>1</code></td><td>Количество узлов в сети</td><td>minvalue=1; maxvalue=7</td></tr>
|
||||
</tbody></table>
|
||||
@@ -0,0 +1,11 @@
|
||||
# Resource nubes_harbor
|
||||
|
||||
Service ID: `82`
|
||||
|
||||
Service Name: Container Registry
|
||||
|
||||
[Manual](harbor.md) | [Create params](harbor_params_create.md) | [Modify params](harbor_params_modify.md) | [Output params](harbor_outputs.md) | [Operations](harbor_ops.md) | [Example](harbor_example.md)
|
||||
|
||||
## Modify params
|
||||
|
||||
None.
|
||||
@@ -0,0 +1,13 @@
|
||||
# Resource nubes_http
|
||||
|
||||
Service ID: `98`
|
||||
|
||||
Service Name: Простой HTTP контейнер
|
||||
|
||||
[Manual](http.md) | [Create params](http_params_create.md) | [Modify params](http_params_modify.md) | [Output params](http_outputs.md) | [Operations](http_ops.md) | [Example](http_example.md)
|
||||
|
||||
## MAN
|
||||
|
||||
<div class="man-content">
|
||||
Manual not available.
|
||||
</div>
|
||||
@@ -0,0 +1,51 @@
|
||||
# Resource nubes_http
|
||||
|
||||
Service ID: `98`
|
||||
|
||||
Service Name: Простой HTTP контейнер
|
||||
|
||||
[Manual](http.md) | [Create params](http_params_create.md) | [Modify params](http_params_modify.md) | [Output params](http_outputs.md) | [Operations](http_ops.md) | [Example](http_example.md)
|
||||
|
||||
## Copy-ready manifest (`http_main.tf`)
|
||||
|
||||
```hcl
|
||||
terraform {
|
||||
required_providers {
|
||||
nubes = {
|
||||
source = "terra.k8c.ru/nubes/nubes"
|
||||
version = "2.1.26"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
# Токен доступа api_token к Nubes API — замените на реальный.
|
||||
provider "nubes" {
|
||||
api_token = "token_***"
|
||||
api_endpoint = "https://deck-api.ngcloud.ru/api/v1/index.cfm"
|
||||
}
|
||||
resource "nubes_http" "baza" {
|
||||
resource_realm = "TODO" # Платформа для развертывания
|
||||
|
||||
# Параметры, имеющие значение по умолчанию, если не меняете - эти параметры не обязательно прописывать в манифесте
|
||||
domain = "web01" # Если будет указан FQDN, то происходят проверки DNS на валидность А-записи, или будет добавлено в зону resourceRealm
|
||||
resource_cpu = 100 # Квота ядра пода (Указывается в mili)
|
||||
resource_memory = 200 # Квота памяти пода (Указывается в Megabytes)
|
||||
resource_instances = 1 # Количество узлов
|
||||
registry_path = "nexus-sa.tst.nubes.ru/docker-nubes/jolt" # Путь до image, который будет установлен как deployment
|
||||
json_env = {"param": "value"} # Массив переменных, будут переданы в env приложения
|
||||
}
|
||||
```
|
||||
|
||||
## Outputs usage
|
||||
|
||||
```hcl
|
||||
# Выходные параметры можно использовать как
|
||||
nubes_http.baza.state_params["имя_ключа"]
|
||||
nubes_http.baza.state_out["имя_ключа"]
|
||||
nubes_http.baza.state_params_flat["имя_ключа"]
|
||||
nubes_http.baza.state_out_flat["имя_ключа"]
|
||||
nubes_http.baza.vault_secrets["имя_ключа"]
|
||||
nubes_http.baza.vault_url
|
||||
nubes_http.baza.vault_user_path
|
||||
nubes_http.baza.vault_fields
|
||||
```
|
||||
@@ -0,0 +1,16 @@
|
||||
# Resource nubes_http
|
||||
|
||||
Service ID: `98`
|
||||
|
||||
Service Name: Простой HTTP контейнер
|
||||
|
||||
[Manual](http.md) | [Create params](http_params_create.md) | [Modify params](http_params_modify.md) | [Output params](http_outputs.md) | [Operations](http_ops.md) | [Example](http_example.md)
|
||||
|
||||
## Operations
|
||||
|
||||
- `create` — Создание кластера. Параметры: [Create params](http_params_create.md)
|
||||
- `delete`
|
||||
- `modify` — Изменение кластера. Параметры: [Modify params](http_params_modify.md)
|
||||
- `redeploy`
|
||||
- `resume`
|
||||
- `suspend`
|
||||
@@ -0,0 +1,34 @@
|
||||
# Resource nubes_http
|
||||
|
||||
Service ID: `98`
|
||||
|
||||
Service Name: Простой HTTP контейнер
|
||||
|
||||
[Manual](http.md) | [Create params](http_params_create.md) | [Modify params](http_params_modify.md) | [Output params](http_outputs.md) | [Operations](http_ops.md) | [Example](http_example.md)
|
||||
|
||||
## Output params
|
||||
|
||||
- `state_params` (map) — параметры, отправленные в API при создании/изменении
|
||||
- `state_out` (map) — ответ API с результатами/выходными значениями
|
||||
- `state_params_flat` (map) — параметры в плоском виде (ключи с путями)
|
||||
- `state_out_flat` (map) — ответы в плоском виде (ключи с путями)
|
||||
- `vault_secrets` (map) — секреты, записанные в Vault для ресурса
|
||||
- `vault_url` (string) — адрес Vault для ресурса
|
||||
- `vault_user_path` (string) — путь пользователя в Vault
|
||||
- `vault_fields` (list) — список ключей доступных секретов
|
||||
|
||||
## Реальные поля из облака (running/suspended snapshot)
|
||||
|
||||
Поля ниже получены из реальных инстансов этого сервиса в облаке.
|
||||
Используйте их как готовые ключи для `state_out_flat` и `vault_secrets`.
|
||||
|
||||
### `state_out_flat` ключи
|
||||
|
||||
- `state_out_flat["connectionUrl"]`
|
||||
- `state_out_flat["monitoring"]`
|
||||
- `state_out_flat["monitoring.allDashboards"]`
|
||||
- `state_out_flat["monitoring.base"]`
|
||||
- `state_out_flat["monitoring.base.url"]`
|
||||
- `state_out_flat["monitoring.loki"]`
|
||||
- `state_out_flat["monitoring.loki.url"]`
|
||||
|
||||
@@ -0,0 +1,12 @@
|
||||
# Resource nubes_http
|
||||
|
||||
Service ID: `98`
|
||||
|
||||
Service Name: Простой HTTP контейнер
|
||||
|
||||
[Manual](http.md) | [Create params](http_params_create.md) | [Modify params](http_params_modify.md) | [Output params](http_outputs.md) | [Operations](http_ops.md) | [Example](http_example.md)
|
||||
|
||||
## Parameters
|
||||
|
||||
- [Create params](http_params_create.md)
|
||||
- [Modify params](http_params_modify.md)
|
||||
@@ -0,0 +1,41 @@
|
||||
# Resource nubes_http
|
||||
|
||||
Service ID: `98`
|
||||
|
||||
Service Name: Простой HTTP контейнер
|
||||
|
||||
[Manual](http.md) | [Create params](http_params_create.md) | [Modify params](http_params_modify.md) | [Output params](http_outputs.md) | [Operations](http_ops.md) | [Example](http_example.md)
|
||||
|
||||
## Create params
|
||||
|
||||
**Обязательные параметры (вводимые пользователем)**
|
||||
|
||||
<table class="resource-table resource-table-compact resource-table-required">
|
||||
<thead><tr><th>ID</th><th>Code</th><th>Type</th><th>Description</th><th>Constraints</th></tr></thead>
|
||||
<tbody>
|
||||
<tr><td>216</td><td><strong><code class="code-no-wrap">resource_realm</code></strong></td><td><code>string</code></td><td>Наименование кластера Kubernetes для подключения</td><td>func=getAvailableResourceRealms</td></tr>
|
||||
</tbody></table>
|
||||
|
||||
**Параметры, имеющие значение по умолчанию, если не меняете - эти параметры не обязательно прописывать в манифесте**
|
||||
<table class="resource-table resource-table-compact">
|
||||
<thead><tr><th>ID</th><th>Code</th><th>Type</th><th>Default</th><th>Description</th><th>Constraints</th></tr></thead>
|
||||
<tbody>
|
||||
<tr><td>212</td><td><strong><code class="code-no-wrap">domain</code></strong></td><td><code>string</code></td><td><code>web01</code></td><td>Если будет указан FQDN, то происходят проверки DNS на валидность А-записи, или будет добавлено в зону resourceRealm</td><td>regex=^(?:[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?\.)*[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?$; unique_scope=provider</td></tr>
|
||||
<tr><td>213</td><td><strong><code class="code-no-wrap">resource_cpu</code></strong></td><td><code>integer</code></td><td><code>100</code></td><td>Квота ядра пода (Указывается в mili)</td><td>minvalue=100; maxvalue=4000</td></tr>
|
||||
<tr><td>214</td><td><strong><code class="code-no-wrap">resource_memory</code></strong></td><td><code>integer</code></td><td><code>200</code></td><td>Квота памяти пода (Указывается в Megabytes)</td><td>minvalue=128; maxvalue=8192</td></tr>
|
||||
<tr><td>215</td><td><strong><code class="code-no-wrap">resource_instances</code></strong></td><td><code>integer</code></td><td><code>1</code></td><td>Количество реплик приложения. Трафик будет распределяться между подами в режиме Round-Robin</td><td>minvalue=1; maxvalue=7</td></tr>
|
||||
<tr><td>217</td><td><strong><code class="code-no-wrap">registry_path</code></strong></td><td><code>string</code></td><td><code>nexus-sa.tst.nubes.ru/docker-nubes/jolt</code></td><td>Путь до image, который будет установлен как deployment</td><td></td></tr>
|
||||
<tr><td>241</td><td><strong><code class="code-no-wrap">json_env</code></strong></td><td><code>json</code></td><td><code>{&quot;param&quot;: &quot;value&quot;}</code></td><td>Массив переменных, будут переданы в env приложения</td><td></td></tr>
|
||||
</tbody></table>
|
||||
|
||||
<div class="lifecycle-note">
|
||||
<strong>Параметры поведения (кратко)</strong><br/>
|
||||
По умолчанию: `suspend_on_destroy = True`, `adopt_existing_on_create = False`.<br/>
|
||||
При `terraform destroy` или удалении ресурса из манифеста:<br/>
|
||||
- `suspend_on_destroy=true` — инстанс переводится в `Suspend` (не удаляется).<br/>
|
||||
- `suspend_on_destroy=false` — Terraform удаляет ресурс только из state.<br/>
|
||||
При `apply` флаг `adopt_existing_on_create` работает как авто-`import`:<br/>
|
||||
- `false` — если ресурс уже есть, будет ошибка.<br/>
|
||||
- `true` — Terraform может взять существующий инстанс под управление (`running` → adopt, `suspended` → resume+adopt при совпадении параметров).<br/>
|
||||
Важно: один инстанс должен быть только в одном state. Иначе получите конфликт управления.
|
||||
</div>
|
||||
@@ -0,0 +1,17 @@
|
||||
# Resource nubes_http
|
||||
|
||||
Service ID: `98`
|
||||
|
||||
Service Name: Простой HTTP контейнер
|
||||
|
||||
[Manual](http.md) | [Create params](http_params_create.md) | [Modify params](http_params_modify.md) | [Output params](http_outputs.md) | [Operations](http_ops.md) | [Example](http_example.md)
|
||||
|
||||
## Modify params
|
||||
|
||||
<table class="resource-table resource-table-compact">
|
||||
<thead><tr><th>ID</th><th>Code</th><th>Type</th><th>Description</th><th>Constraints</th></tr></thead>
|
||||
<tbody>
|
||||
<tr><td>218</td><td><strong><code class="code-no-wrap">resource_cpu</code></strong></td><td><code>integer</code></td><td></td><td>minvalue=100; maxvalue=4000</td></tr>
|
||||
<tr><td>219</td><td><strong><code class="code-no-wrap">resource_memory</code></strong></td><td><code>integer</code></td><td></td><td>minvalue=128; maxvalue=8192</td></tr>
|
||||
<tr><td>220</td><td><strong><code class="code-no-wrap">resource_instances</code></strong></td><td><code>integer</code></td><td>Количество узлов</td><td>minvalue=1; maxvalue=7</td></tr>
|
||||
</tbody></table>
|
||||
@@ -0,0 +1,13 @@
|
||||
# Resource nubes_k8s_sthutrval_cluster
|
||||
|
||||
Service ID: `150`
|
||||
|
||||
Service Name: Kubernetes кластер Штурвал
|
||||
|
||||
[Manual](k8s_sthutrval_cluster.md) | [Create params](k8s_sthutrval_cluster_params_create.md) | [Modify params](k8s_sthutrval_cluster_params_modify.md) | [Output params](k8s_sthutrval_cluster_outputs.md) | [Operations](k8s_sthutrval_cluster_ops.md) | [Example](k8s_sthutrval_cluster_example.md)
|
||||
|
||||
## MAN
|
||||
|
||||
<div class="man-content">
|
||||
Перед разворачиванием убедиться, что в облаке есть 2 свободных невыделенных IP в пуле
|
||||
</div>
|
||||
@@ -0,0 +1,58 @@
|
||||
# Resource nubes_k8s_sthutrval_cluster
|
||||
|
||||
Service ID: `150`
|
||||
|
||||
Service Name: Kubernetes кластер Штурвал
|
||||
|
||||
[Manual](k8s_sthutrval_cluster.md) | [Create params](k8s_sthutrval_cluster_params_create.md) | [Modify params](k8s_sthutrval_cluster_params_modify.md) | [Output params](k8s_sthutrval_cluster_outputs.md) | [Operations](k8s_sthutrval_cluster_ops.md) | [Example](k8s_sthutrval_cluster_example.md)
|
||||
|
||||
## Copy-ready manifest (`k8s_sthutrval_cluster_main.tf`)
|
||||
|
||||
```hcl
|
||||
terraform {
|
||||
required_providers {
|
||||
nubes = {
|
||||
source = "terra.k8c.ru/nubes/nubes"
|
||||
version = "2.1.26"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
# Токен доступа api_token к Nubes API — замените на реальный.
|
||||
provider "nubes" {
|
||||
api_token = "token_***"
|
||||
api_endpoint = "https://deck-api.ngcloud.ru/api/v1/index.cfm"
|
||||
}
|
||||
resource "nubes_k8s_sthutrval_cluster" "baza" {
|
||||
nsxt_uid = "TODO" # InstanceUid nsxt. Nsxt должен быть создан
|
||||
control_plane_sizing_policy = "TODO" # Настройка Control Plane. CPU (шт) / MEM (gb). Наверное, должна подтягиваться из свойств ресурсной платформы
|
||||
workers_sizing_policy = "TODO" # Настройка workers. CPU (шт) / MEM (gb)
|
||||
vdc_uid = "TODO"
|
||||
|
||||
# Параметры, имеющие значение по умолчанию, если не меняете - эти параметры не обязательно прописывать в манифесте
|
||||
cluster_name = "example1" # Наименование кластера Kubernetes. Имя будет использоваться в fqdn (svc.$CLUSTER_NAME)
|
||||
control_plane_sizing_disk = 30 # Настройка Control Plane. Disk (Gb)
|
||||
control_plane_count = 1
|
||||
workers_sizing_disk = 40 # Настройка workers. Disk (Gb)
|
||||
workers_count = 2 # Настройка workers. Кол-во нод
|
||||
app_version = 2.12.1 # Версия Штурвал (не является версией Kubernetes)
|
||||
need_external_address_api = true # Выделяет внешний IP для доступа к kubernetes API. Пока нельзя выставить false
|
||||
access_ip_list_api = [] # Access IP List для подключения к Kubernetes API. Указывается массив. Если передан пустой массив, доступ выделяется всем
|
||||
need_external_address_ingress = true # Выделяет внешний IP для доступа к Ingress
|
||||
access_ip_list_ingress = [] # Access IP List для подключения к Ingress. Указывается массив. Если передан пустой массив, доступ выделяется всем
|
||||
}
|
||||
```
|
||||
|
||||
## Outputs usage
|
||||
|
||||
```hcl
|
||||
# Выходные параметры можно использовать как
|
||||
nubes_k8s_sthutrval_cluster.baza.state_params["имя_ключа"]
|
||||
nubes_k8s_sthutrval_cluster.baza.state_out["имя_ключа"]
|
||||
nubes_k8s_sthutrval_cluster.baza.state_params_flat["имя_ключа"]
|
||||
nubes_k8s_sthutrval_cluster.baza.state_out_flat["имя_ключа"]
|
||||
nubes_k8s_sthutrval_cluster.baza.vault_secrets["имя_ключа"]
|
||||
nubes_k8s_sthutrval_cluster.baza.vault_url
|
||||
nubes_k8s_sthutrval_cluster.baza.vault_user_path
|
||||
nubes_k8s_sthutrval_cluster.baza.vault_fields
|
||||
```
|
||||
@@ -0,0 +1,17 @@
|
||||
# Resource nubes_k8s_sthutrval_cluster
|
||||
|
||||
Service ID: `150`
|
||||
|
||||
Service Name: Kubernetes кластер Штурвал
|
||||
|
||||
[Manual](k8s_sthutrval_cluster.md) | [Create params](k8s_sthutrval_cluster_params_create.md) | [Modify params](k8s_sthutrval_cluster_params_modify.md) | [Output params](k8s_sthutrval_cluster_outputs.md) | [Operations](k8s_sthutrval_cluster_ops.md) | [Example](k8s_sthutrval_cluster_example.md)
|
||||
|
||||
## Operations
|
||||
|
||||
- `create` — Создание кластера. Параметры: [Create params](k8s_sthutrval_cluster_params_create.md)
|
||||
- `delete`
|
||||
- `modify` — Изменение кластера. Параметры: [Modify params](k8s_sthutrval_cluster_params_modify.md)
|
||||
- `reconcile`
|
||||
- `resume`
|
||||
- `suspend`
|
||||
- `update_secrets`
|
||||
@@ -0,0 +1,33 @@
|
||||
# Resource nubes_k8s_sthutrval_cluster
|
||||
|
||||
Service ID: `150`
|
||||
|
||||
Service Name: Kubernetes кластер Штурвал
|
||||
|
||||
[Manual](k8s_sthutrval_cluster.md) | [Create params](k8s_sthutrval_cluster_params_create.md) | [Modify params](k8s_sthutrval_cluster_params_modify.md) | [Output params](k8s_sthutrval_cluster_outputs.md) | [Operations](k8s_sthutrval_cluster_ops.md) | [Example](k8s_sthutrval_cluster_example.md)
|
||||
|
||||
## Output params
|
||||
|
||||
- `state_params` (map) — параметры, отправленные в API при создании/изменении
|
||||
- `state_out` (map) — ответ API с результатами/выходными значениями
|
||||
- `state_params_flat` (map) — параметры в плоском виде (ключи с путями)
|
||||
- `state_out_flat` (map) — ответы в плоском виде (ключи с путями)
|
||||
- `vault_secrets` (map) — секреты, записанные в Vault для ресурса
|
||||
- `vault_url` (string) — адрес Vault для ресурса
|
||||
- `vault_user_path` (string) — путь пользователя в Vault
|
||||
- `vault_fields` (list) — список ключей доступных секретов
|
||||
|
||||
## Реальные поля из облака (running/suspended snapshot)
|
||||
|
||||
Поля ниже получены из реальных инстансов этого сервиса в облаке.
|
||||
Используйте их как готовые ключи для `state_out_flat` и `vault_secrets`.
|
||||
|
||||
### `state_out_flat` ключи
|
||||
|
||||
- `state_out_flat["ingressAddress"]`
|
||||
- `state_out_flat["kubernetesApiAddress"]`
|
||||
|
||||
### `vault_secrets` ключи
|
||||
|
||||
- `vault_secrets["kubernetesAdminConfigB64"]`
|
||||
|
||||
@@ -0,0 +1,12 @@
|
||||
# Resource nubes_k8s_sthutrval_cluster
|
||||
|
||||
Service ID: `150`
|
||||
|
||||
Service Name: Kubernetes кластер Штурвал
|
||||
|
||||
[Manual](k8s_sthutrval_cluster.md) | [Create params](k8s_sthutrval_cluster_params_create.md) | [Modify params](k8s_sthutrval_cluster_params_modify.md) | [Output params](k8s_sthutrval_cluster_outputs.md) | [Operations](k8s_sthutrval_cluster_ops.md) | [Example](k8s_sthutrval_cluster_example.md)
|
||||
|
||||
## Parameters
|
||||
|
||||
- [Create params](k8s_sthutrval_cluster_params_create.md)
|
||||
- [Modify params](k8s_sthutrval_cluster_params_modify.md)
|
||||
@@ -0,0 +1,48 @@
|
||||
# Resource nubes_k8s_sthutrval_cluster
|
||||
|
||||
Service ID: `150`
|
||||
|
||||
Service Name: Kubernetes кластер Штурвал
|
||||
|
||||
[Manual](k8s_sthutrval_cluster.md) | [Create params](k8s_sthutrval_cluster_params_create.md) | [Modify params](k8s_sthutrval_cluster_params_modify.md) | [Output params](k8s_sthutrval_cluster_outputs.md) | [Operations](k8s_sthutrval_cluster_ops.md) | [Example](k8s_sthutrval_cluster_example.md)
|
||||
|
||||
## Create params
|
||||
|
||||
**Обязательные параметры (вводимые пользователем)**
|
||||
|
||||
<table class="resource-table resource-table-compact resource-table-required">
|
||||
<thead><tr><th>ID</th><th>Code</th><th>Type</th><th>Description</th><th>Constraints</th></tr></thead>
|
||||
<tbody>
|
||||
<tr><td>344</td><td><strong><code class="code-no-wrap">nsxt_uid</code></strong></td><td><code>uuid</code></td><td>InstanceUid nsxt. Nsxt должен быть создан</td><td>ref_svc_id=22</td></tr>
|
||||
<tr><td>346</td><td><strong><code class="code-no-wrap">control_plane_sizing_policy</code></strong></td><td><code>string</code></td><td>Настройка Control Plane. CPU (шт) / MEM (gb).<br/>Наверное, должна подтягиваться из свойств ресурсной платформы</td><td></td></tr>
|
||||
<tr><td>349</td><td><strong><code class="code-no-wrap">workers_sizing_policy</code></strong></td><td><code>string</code></td><td>Настройка workers. CPU (шт) / MEM (gb)</td><td></td></tr>
|
||||
<tr><td>747</td><td><strong><code class="code-no-wrap">vdc_uid</code></strong></td><td><code>uuid</code></td><td></td><td>ref_svc_id=21</td></tr>
|
||||
</tbody></table>
|
||||
|
||||
**Параметры, имеющие значение по умолчанию, если не меняете - эти параметры не обязательно прописывать в манифесте**
|
||||
<table class="resource-table resource-table-compact">
|
||||
<thead><tr><th>ID</th><th>Code</th><th>Type</th><th>Default</th><th>Description</th><th>Constraints</th></tr></thead>
|
||||
<tbody>
|
||||
<tr><td>345</td><td><strong><code class="code-no-wrap">cluster_name</code></strong></td><td><code>string</code></td><td><code>example1</code></td><td>Наименование кластера Kubernetes. Имя будет использоваться в fqdn (svc.$CLUSTER_NAME)</td><td>regex=(?=^.{1,63}$)^[a-z0-9]([a-z0-9-]*[a-z0-9])?$; unique_scope=provider</td></tr>
|
||||
<tr><td>347</td><td><strong><code class="code-no-wrap">control_plane_sizing_disk</code></strong></td><td><code>integer</code></td><td><code>30</code></td><td>Настройка Control Plane. Disk (Gb)</td><td>minvalue=20; maxvalue=999</td></tr>
|
||||
<tr><td>348</td><td><strong><code class="code-no-wrap">control_plane_count</code></strong></td><td><code>integer</code></td><td><code>1</code></td><td></td><td>minvalue=1; maxvalue=9</td></tr>
|
||||
<tr><td>350</td><td><strong><code class="code-no-wrap">workers_sizing_disk</code></strong></td><td><code>integer</code></td><td><code>40</code></td><td>Настройка workers. Disk (Gb)</td><td>minvalue=20; maxvalue=999</td></tr>
|
||||
<tr><td>351</td><td><strong><code class="code-no-wrap">workers_count</code></strong></td><td><code>integer</code></td><td><code>2</code></td><td>Настройка workers. Кол-во нод</td><td>minvalue=1; maxvalue=99</td></tr>
|
||||
<tr><td>352</td><td><strong><code class="code-no-wrap">app_version</code></strong></td><td><code>string</code></td><td><code>2.12.1</code></td><td>Версия Штурвал (не является версией Kubernetes)</td><td>value_list=2.12.1, 2.11.0</td></tr>
|
||||
<tr><td>353</td><td><strong><code class="code-no-wrap">need_external_address_api</code></strong></td><td><code>boolean</code></td><td><code>true</code></td><td>Выделяет внешний IP для доступа к kubernetes API. Пока нельзя выставить false</td><td>value_list=true</td></tr>
|
||||
<tr><td>354</td><td><strong><code class="code-no-wrap">access_ip_list_api</code></strong></td><td><code>json</code></td><td><code>[]</code></td><td>Access IP List для подключения к Kubernetes API. Указывается массив. Если передан пустой массив, доступ выделяется всем</td><td></td></tr>
|
||||
<tr><td>355</td><td><strong><code class="code-no-wrap">need_external_address_ingress</code></strong></td><td><code>boolean</code></td><td><code>true</code></td><td>Выделяет внешний IP для доступа к Ingress</td><td>value_list=true</td></tr>
|
||||
<tr><td>356</td><td><strong><code class="code-no-wrap">access_ip_list_ingress</code></strong></td><td><code>json</code></td><td><code>[]</code></td><td>Access IP List для подключения к Ingress. Указывается массив. Если передан пустой массив, доступ выделяется всем</td><td></td></tr>
|
||||
</tbody></table>
|
||||
|
||||
<div class="lifecycle-note">
|
||||
<strong>Параметры поведения (кратко)</strong><br/>
|
||||
По умолчанию: `suspend_on_destroy = True`, `adopt_existing_on_create = False`.<br/>
|
||||
При `terraform destroy` или удалении ресурса из манифеста:<br/>
|
||||
- `suspend_on_destroy=true` — инстанс переводится в `Suspend` (не удаляется).<br/>
|
||||
- `suspend_on_destroy=false` — Terraform удаляет ресурс только из state.<br/>
|
||||
При `apply` флаг `adopt_existing_on_create` работает как авто-`import`:<br/>
|
||||
- `false` — если ресурс уже есть, будет ошибка.<br/>
|
||||
- `true` — Terraform может взять существующий инстанс под управление (`running` → adopt, `suspended` → resume+adopt при совпадении параметров).<br/>
|
||||
Важно: один инстанс должен быть только в одном state. Иначе получите конфликт управления.
|
||||
</div>
|
||||
@@ -0,0 +1,21 @@
|
||||
# Resource nubes_k8s_sthutrval_cluster
|
||||
|
||||
Service ID: `150`
|
||||
|
||||
Service Name: Kubernetes кластер Штурвал
|
||||
|
||||
[Manual](k8s_sthutrval_cluster.md) | [Create params](k8s_sthutrval_cluster_params_create.md) | [Modify params](k8s_sthutrval_cluster_params_modify.md) | [Output params](k8s_sthutrval_cluster_outputs.md) | [Operations](k8s_sthutrval_cluster_ops.md) | [Example](k8s_sthutrval_cluster_example.md)
|
||||
|
||||
## Modify params
|
||||
|
||||
<table class="resource-table resource-table-compact">
|
||||
<thead><tr><th>ID</th><th>Code</th><th>Type</th><th>Description</th><th>Constraints</th></tr></thead>
|
||||
<tbody>
|
||||
<tr><td>362</td><td><strong><code class="code-no-wrap">control_plane_count</code></strong></td><td><code>integer</code></td><td>Кол-во нод Control Plane</td><td>minvalue=1; maxvalue=9</td></tr>
|
||||
<tr><td>363</td><td><strong><code class="code-no-wrap">workers_count</code></strong></td><td><code>integer</code></td><td>Кол-во нод Workers</td><td>minvalue=1; maxvalue=99</td></tr>
|
||||
<tr><td>364</td><td><strong><code class="code-no-wrap">access_ip_list_api</code></strong></td><td><code>json</code></td><td>Access IP List для подключения к Kubernetes API. Указывается массив. Если передан пустой массив, доступ выделяется всем</td><td></td></tr>
|
||||
<tr><td>365</td><td><strong><code class="code-no-wrap">access_ip_list_ingress</code></strong></td><td><code>json</code></td><td>Access IP List для подключения к Ingress. Указывается массив. Если передан пустой массив, доступ выделяется всем</td><td></td></tr>
|
||||
<tr><td>563</td><td><strong><code class="code-no-wrap">app_version</code></strong></td><td><code>string</code></td><td>Версия Штурвал (не является версией Kubernetes)<br/>Понижать версию нельзя<br/>Обновиться на несколько минорных нельзя<br/>Невозможно перепрыгнуть не с последней минорной на мажорную<br/>Можно обновиться на несколько патчей</td><td>value_list=2.11.0, 2.12.1</td></tr>
|
||||
<tr><td>637</td><td><strong><code class="code-no-wrap">control_plane_sizing_disk</code></strong></td><td><code>integer</code></td><td></td><td></td></tr>
|
||||
<tr><td>638</td><td><strong><code class="code-no-wrap">workers_sizing_disk</code></strong></td><td><code>integer</code></td><td></td><td></td></tr>
|
||||
</tbody></table>
|
||||
@@ -0,0 +1,13 @@
|
||||
# Resource nubes_k8s_ziti_controller
|
||||
|
||||
Service ID: `88`
|
||||
|
||||
Service Name: k8sZitiController
|
||||
|
||||
[Manual](k8s_ziti_controller.md) | [Create params](k8s_ziti_controller_params_create.md) | [Modify params](k8s_ziti_controller_params_modify.md) | [Output params](k8s_ziti_controller_outputs.md) | [Operations](k8s_ziti_controller_ops.md) | [Example](k8s_ziti_controller_example.md)
|
||||
|
||||
## MAN
|
||||
|
||||
<div class="man-content">
|
||||
Manual not available.
|
||||
</div>
|
||||
@@ -0,0 +1,50 @@
|
||||
# Resource nubes_k8s_ziti_controller
|
||||
|
||||
Service ID: `88`
|
||||
|
||||
Service Name: k8sZitiController
|
||||
|
||||
[Manual](k8s_ziti_controller.md) | [Create params](k8s_ziti_controller_params_create.md) | [Modify params](k8s_ziti_controller_params_modify.md) | [Output params](k8s_ziti_controller_outputs.md) | [Operations](k8s_ziti_controller_ops.md) | [Example](k8s_ziti_controller_example.md)
|
||||
|
||||
## Copy-ready manifest (`k8s_ziti_controller_main.tf`)
|
||||
|
||||
```hcl
|
||||
terraform {
|
||||
required_providers {
|
||||
nubes = {
|
||||
source = "terra.k8c.ru/nubes/nubes"
|
||||
version = "2.1.26"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
# Токен доступа api_token к Nubes API — замените на реальный.
|
||||
provider "nubes" {
|
||||
api_token = "token_***"
|
||||
api_endpoint = "https://deck-api.ngcloud.ru/api/v1/index.cfm"
|
||||
}
|
||||
resource "nubes_k8s_ziti_controller" "baza" {
|
||||
resource_realm = "TODO" # Платформа для развертывания
|
||||
|
||||
# Параметры, имеющие значение по умолчанию, если не меняете - эти параметры не обязательно прописывать в манифесте
|
||||
resource_cpu = 300 # Квота ядра пода (milicores)
|
||||
resource_memory = 512 # Квота памяти пода (MBytes)
|
||||
resource_disk = 1 # Квота диска (Указывается в GIGAbytes)
|
||||
resource_instances = 1 # Количество узлов
|
||||
domain = "web01" # Если будет указан FQDN, то происходят проверки DNS на валидность А-записи, или будет добавлено в зону resourceRealm
|
||||
}
|
||||
```
|
||||
|
||||
## Outputs usage
|
||||
|
||||
```hcl
|
||||
# Выходные параметры можно использовать как
|
||||
nubes_k8s_ziti_controller.baza.state_params["имя_ключа"]
|
||||
nubes_k8s_ziti_controller.baza.state_out["имя_ключа"]
|
||||
nubes_k8s_ziti_controller.baza.state_params_flat["имя_ключа"]
|
||||
nubes_k8s_ziti_controller.baza.state_out_flat["имя_ключа"]
|
||||
nubes_k8s_ziti_controller.baza.vault_secrets["имя_ключа"]
|
||||
nubes_k8s_ziti_controller.baza.vault_url
|
||||
nubes_k8s_ziti_controller.baza.vault_user_path
|
||||
nubes_k8s_ziti_controller.baza.vault_fields
|
||||
```
|
||||
@@ -0,0 +1,12 @@
|
||||
# Resource nubes_k8s_ziti_controller
|
||||
|
||||
Service ID: `88`
|
||||
|
||||
Service Name: k8sZitiController
|
||||
|
||||
[Manual](k8s_ziti_controller.md) | [Create params](k8s_ziti_controller_params_create.md) | [Modify params](k8s_ziti_controller_params_modify.md) | [Output params](k8s_ziti_controller_outputs.md) | [Operations](k8s_ziti_controller_ops.md) | [Example](k8s_ziti_controller_example.md)
|
||||
|
||||
## Operations
|
||||
|
||||
- `create` — Создание кластера. Параметры: [Create params](k8s_ziti_controller_params_create.md)
|
||||
- `delete`
|
||||
@@ -0,0 +1,18 @@
|
||||
# Resource nubes_k8s_ziti_controller
|
||||
|
||||
Service ID: `88`
|
||||
|
||||
Service Name: k8sZitiController
|
||||
|
||||
[Manual](k8s_ziti_controller.md) | [Create params](k8s_ziti_controller_params_create.md) | [Modify params](k8s_ziti_controller_params_modify.md) | [Output params](k8s_ziti_controller_outputs.md) | [Operations](k8s_ziti_controller_ops.md) | [Example](k8s_ziti_controller_example.md)
|
||||
|
||||
## Output params
|
||||
|
||||
- `state_params` (map) — параметры, отправленные в API при создании/изменении
|
||||
- `state_out` (map) — ответ API с результатами/выходными значениями
|
||||
- `state_params_flat` (map) — параметры в плоском виде (ключи с путями)
|
||||
- `state_out_flat` (map) — ответы в плоском виде (ключи с путями)
|
||||
- `vault_secrets` (map) — секреты, записанные в Vault для ресурса
|
||||
- `vault_url` (string) — адрес Vault для ресурса
|
||||
- `vault_user_path` (string) — путь пользователя в Vault
|
||||
- `vault_fields` (list) — список ключей доступных секретов
|
||||
@@ -0,0 +1,12 @@
|
||||
# Resource nubes_k8s_ziti_controller
|
||||
|
||||
Service ID: `88`
|
||||
|
||||
Service Name: k8sZitiController
|
||||
|
||||
[Manual](k8s_ziti_controller.md) | [Create params](k8s_ziti_controller_params_create.md) | [Modify params](k8s_ziti_controller_params_modify.md) | [Output params](k8s_ziti_controller_outputs.md) | [Operations](k8s_ziti_controller_ops.md) | [Example](k8s_ziti_controller_example.md)
|
||||
|
||||
## Parameters
|
||||
|
||||
- [Create params](k8s_ziti_controller_params_create.md)
|
||||
- [Modify params](k8s_ziti_controller_params_modify.md)
|
||||
@@ -0,0 +1,28 @@
|
||||
# Resource nubes_k8s_ziti_controller
|
||||
|
||||
Service ID: `88`
|
||||
|
||||
Service Name: k8sZitiController
|
||||
|
||||
[Manual](k8s_ziti_controller.md) | [Create params](k8s_ziti_controller_params_create.md) | [Modify params](k8s_ziti_controller_params_modify.md) | [Output params](k8s_ziti_controller_outputs.md) | [Operations](k8s_ziti_controller_ops.md) | [Example](k8s_ziti_controller_example.md)
|
||||
|
||||
## Create params
|
||||
|
||||
**Обязательные параметры (вводимые пользователем)**
|
||||
|
||||
<table class="resource-table resource-table-compact resource-table-required">
|
||||
<thead><tr><th>ID</th><th>Code</th><th>Type</th><th>Description</th><th>Constraints</th></tr></thead>
|
||||
<tbody>
|
||||
<tr><td>298</td><td><strong><code class="code-no-wrap">resource_realm</code></strong></td><td><code>string</code></td><td>Платформа для развертывания</td><td>func=getAvailableResourceRealms</td></tr>
|
||||
</tbody></table>
|
||||
|
||||
**Параметры, имеющие значение по умолчанию, если не меняете - эти параметры не обязательно прописывать в манифесте**
|
||||
<table class="resource-table resource-table-compact">
|
||||
<thead><tr><th>ID</th><th>Code</th><th>Type</th><th>Default</th><th>Description</th><th>Constraints</th></tr></thead>
|
||||
<tbody>
|
||||
<tr><td>294</td><td><strong><code class="code-no-wrap">resource_cpu</code></strong></td><td><code>integer</code></td><td><code>300</code></td><td>Квота ядра пода (milicores)</td><td>minvalue=100; maxvalue=4000</td></tr>
|
||||
<tr><td>295</td><td><strong><code class="code-no-wrap">resource_memory</code></strong></td><td><code>integer</code></td><td><code>512</code></td><td>Квота памяти пода (MBytes)</td><td>minvalue=128; maxvalue=8192</td></tr>
|
||||
<tr><td>296</td><td><strong><code class="code-no-wrap">resource_disk</code></strong></td><td><code>integer</code></td><td><code>1</code></td><td>Квота диска (Указывается в GIGAbytes)</td><td>minvalue=1; maxvalue=999</td></tr>
|
||||
<tr><td>297</td><td><strong><code class="code-no-wrap">resource_instances</code></strong></td><td><code>integer</code></td><td><code>1</code></td><td>Количество узлов</td><td>minvalue=1; maxvalue=7</td></tr>
|
||||
<tr><td>299</td><td><strong><code class="code-no-wrap">domain</code></strong></td><td><code>string</code></td><td><code>web01</code></td><td>Если будет указан FQDN, то происходят проверки DNS на валидность А-записи, или будет добавлено в зону resourceRealm</td><td>regex=^(?:[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?\.)*[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?$; unique_scope=provider</td></tr>
|
||||
</tbody></table>
|
||||
@@ -0,0 +1,11 @@
|
||||
# Resource nubes_k8s_ziti_controller
|
||||
|
||||
Service ID: `88`
|
||||
|
||||
Service Name: k8sZitiController
|
||||
|
||||
[Manual](k8s_ziti_controller.md) | [Create params](k8s_ziti_controller_params_create.md) | [Modify params](k8s_ziti_controller_params_modify.md) | [Output params](k8s_ziti_controller_outputs.md) | [Operations](k8s_ziti_controller_ops.md) | [Example](k8s_ziti_controller_example.md)
|
||||
|
||||
## Modify params
|
||||
|
||||
None.
|
||||
@@ -0,0 +1,13 @@
|
||||
# Resource nubes_kafka
|
||||
|
||||
Service ID: `116`
|
||||
|
||||
Service Name: ApacheKafka
|
||||
|
||||
[Manual](kafka.md) | [Create params](kafka_params_create.md) | [Modify params](kafka_params_modify.md) | [Output params](kafka_outputs.md) | [Operations](kafka_ops.md) | [Example](kafka_example.md)
|
||||
|
||||
## MAN
|
||||
|
||||
<div class="man-content">
|
||||
# Инструкция по развертыванию Apache Kafka через платформу<br/><br/>---<br/>## 1. Общая информация<br/>Брокер сообщений Apache Kafka — это отказоустойчивая распределённая платформа для обмена сообщениями и потоковой обработки данных в реальном времени.<br/>Позволяет надёжно передавать события между сервисами и системами, интегрироваться с внешними решениями и использовать как внутренние, так и защищённые TLS-подключения. Развёртывание полностью автоматизировано платформой.<br/><br/>## Доступные операции<br/>- **create** — Создание кластера<br/>- **delete** — Удаление кластера<br/>- **suspend** — Остановка кластера<br/>- **resume** — Запуск кластера<br/><br/>- **create_topic** — Создание топика<br/>- **modify_topic** — Модификация топика<br/>- **delete_topic** — Удаление топика<br/><br/>- **create_user** — Создание пользователя<br/>- **modify_user** — Модификация пользователя<br/>- **delete_user** — Удаление пользователя<br/><br/><br/>---<br/>## 2. Параметры развертывания кластера<br/>Ниже перечислены параметры, которые необходимо указать при создании ресурса Kafka:<br/><br/>* **Платформа для развертывания:**<br/> Платформа для развертывания (среда, в которой будет развернут кластер). Пример: ` k8s-3.ext.nubes.ru`.<br/><br/>* **Количество узлов в сети:**<br/> Количество узлов (брокеров) в кластере Kafka<br/><br/>* **Квота (megabyte) памяти пода:**<br/> Квота памяти пода в мегабайтах. Пример: `2048`<br/><br/>* **Квота (millicore ) ядра пода:**<br/> Квота CPU пода в миликорах (1000 mCPU = 1 vCPU). Пример: `1000`<br/><br/>* **Размер (gigabyte) диска для базы данных:**<br/> Размер диска для хранения данных в гигабайтах. Пример: `20`<br/><br/>* **Выделяет внешний IP для доступа к master:**<br/> Флаг, определяющий, нужно ли выделять внешний IP для доступа к master-брокеру. Пример: `true` или `false`<br/><br/>* **Имя ipSpace для публикации внешнего IP**<br/> Если включен предыдущий параметр, то поле необходимо заполнить. Пример: `internet-no-antiddos-v1`<br/><br/>---<br/>## 4. Выходные параметры<br/>После успешного развертывания ресурса Kafka платформа возвращает ряд параметров.<br/>Ключевым из них является:<br/><br/>**internalConnect**<br/>Это внутренний эндпоинт, который используется для подключения к кластеру Kafka из других сервисов, развернутых внутри той же сети.<br/>Эндпоинт предоставляет доступ к брокерам Kafka по внутренним портам, указанным в конфигурации слушателей.<br/><br/>**externalConnect**<br/>Это внешний эндпоинт (fqdn), который используется для подключения к кластеру Kafka. Для подключения используеться 9093 порт.<br/><br/>Для подключения используются следующие порты:<br/><br/>* 9092 — внутренний нешифрованный доступ (plain).<br/>* 9093 — внутренний и внешний доступ по TLS, с обязательной TLS-аутентификацией.<br/><br/>---<br/>## 5. Дополнительная информация<br/>Для создания топиков, пользователей и управления ими, а также для интеграции с кластерами Kafka используйте соответствующие сервисы и раздел "Облачные сервисы".<br/>---
|
||||
</div>
|
||||
@@ -0,0 +1,50 @@
|
||||
# Resource nubes_kafka
|
||||
|
||||
Service ID: `116`
|
||||
|
||||
Service Name: ApacheKafka
|
||||
|
||||
[Manual](kafka.md) | [Create params](kafka_params_create.md) | [Modify params](kafka_params_modify.md) | [Output params](kafka_outputs.md) | [Operations](kafka_ops.md) | [Example](kafka_example.md)
|
||||
|
||||
## Copy-ready manifest (`kafka_main.tf`)
|
||||
|
||||
```hcl
|
||||
terraform {
|
||||
required_providers {
|
||||
nubes = {
|
||||
source = "terra.k8c.ru/nubes/nubes"
|
||||
version = "2.1.26"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
# Токен доступа api_token к Nubes API — замените на реальный.
|
||||
provider "nubes" {
|
||||
api_token = "token_***"
|
||||
api_endpoint = "https://deck-api.ngcloud.ru/api/v1/index.cfm"
|
||||
}
|
||||
resource "nubes_kafka" "baza" {
|
||||
resource_instances = 1 # Пример: `2`
|
||||
resource_memory = 1 # Пример: `2048`
|
||||
resource_cpu = 1 # Пример: `2000`
|
||||
resource_disk = 1 # Пример: `20`
|
||||
resource_realm = "TODO" # Выбрать платформу из списка
|
||||
|
||||
# Параметры, имеющие значение по умолчанию, если не меняете - эти параметры не обязательно прописывать в манифесте
|
||||
need_external_address_master = false # Флаг, определяющий, нужно ли выделять внешний IP для доступа к master-брокеру. Пример: `true` или `false`
|
||||
}
|
||||
```
|
||||
|
||||
## Outputs usage
|
||||
|
||||
```hcl
|
||||
# Выходные параметры можно использовать как
|
||||
nubes_kafka.baza.state_params["имя_ключа"]
|
||||
nubes_kafka.baza.state_out["имя_ключа"]
|
||||
nubes_kafka.baza.state_params_flat["имя_ключа"]
|
||||
nubes_kafka.baza.state_out_flat["имя_ключа"]
|
||||
nubes_kafka.baza.vault_secrets["имя_ключа"]
|
||||
nubes_kafka.baza.vault_url
|
||||
nubes_kafka.baza.vault_user_path
|
||||
nubes_kafka.baza.vault_fields
|
||||
```
|
||||
@@ -0,0 +1,21 @@
|
||||
# Resource nubes_kafka
|
||||
|
||||
Service ID: `116`
|
||||
|
||||
Service Name: ApacheKafka
|
||||
|
||||
[Manual](kafka.md) | [Create params](kafka_params_create.md) | [Modify params](kafka_params_modify.md) | [Output params](kafka_outputs.md) | [Operations](kafka_ops.md) | [Example](kafka_example.md)
|
||||
|
||||
## Operations
|
||||
|
||||
- `create` — Создание кластера. Параметры: [Create params](kafka_params_create.md)
|
||||
- `create_topic` — Создание кластера. Параметры: [Create params](kafka_params_create.md)
|
||||
- `create_user` — Создание кластера. Параметры: [Create params](kafka_params_create.md)
|
||||
- `delete`
|
||||
- `delete_topic`
|
||||
- `delete_user` — # Инструкция по управлению пользователями Apache Kafka. --- ## 1. Общая информация Пользователи в Apache Kafka используются для аутентификации и авторизации при подключении к кластеру. Платформа позволяет создавать, удалять и изменять пользователей без прямого доступа к брокерам, а также настраивать права доступа к топикам и группам. Это обеспечивает централизованное и безопасное управление доступом к ресурсам Kafka. --- ## Доступные операции - **create_user** — Создание пользователя - **modify_user** — Модификация пользователя - **delete_user** — Удаление пользователя --- ## 2. Параметры создания пользователя Ниже перечислены параметры, которые необходимо указать при создании нового пользователя: * **Имя пользователя** Имя создаваемого пользователя. Используется для подключения к Kafka и настройки прав. Пример: `username-admin` * **Топик** Название топика, к которому будут назначены права для данного пользователя. Пример: `orders-events`. Использовать маску нельзя (`orders*`), только полное название или `*`. * **Операции** Список разрешённых операций на указанном топике. Пример: `Describe, Read, Write` * **Группа** Имя группы, которой разрешён доступ. Используется при настройке консюмер-групп. Пример: `order-consumers`. * **Разрешённые хосты** Список хостов или подсетей, с которых разрешено подключение пользователя. Пример: `192.168.1.0/24` или `*`. --- ## 3. Параметры модификации пользователя Ниже перечислены параметры, которые необходимо указать при модификации пользователя: * **Имя пользователя** Имя создаваемого пользователя. Используется для подключения к Kafka и настройки прав. Пример: `username-admin` * **Топик** Название топика, к которому будут назначены права для данного пользователя. Пример: `orders-events`. Использовать маску нельзя (`orders*`), только полное название или `*`. * **Операции** Список разрешённых операций на указанном топике. Пример: `Describe, Read, Write` * **Группа** Имя группы, которой разрешён доступ. Используется при настройке консюмер-групп. Пример: `order-consumers`. * **Разрешённые хосты** Список хостов или подсетей, с которых разрешено подключение пользователя. Пример: `192.168.1.0/24` или `*`. --- ## 4. Параметры удалении пользователя Ниже перечислены параметры, которые необходимо указать при удалении пользователя: * **Имя пользователя** Имя удаляемого пользователя. Пример: `username-admin` ## 5. Выходные параметры После успешного создания пользователя платформа возвращает параметры, необходимые для подключения: * **ca.crt** Корневой сертификат (Certificate Authority), используемый для проверки подлинности сервера при TLS-подключении. Файл содержит публичный ключ удостоверяющего центра, которому доверяют брокеры и клиенты. Выдаеться в формате base64 для получения файла сертификата использовать команду ```bash echo '<содержание поля>' | base64 -d > <название>.crt ``` * **ca.p12** PKCS#12-хранилище с корневым сертификатом (Certificate Authority), используемое для проверки подлинности сервера при TLS-подключении. Выдаеться в формате base64 для получения файла сертификата использовать команду ```bash echo '<содержание поля>' | base64 -d > <название>.p12 ``` * **ca.password** Пароль для доступа к хранилищу `ca.p12`. Выдаеться в чистом виде. Раскодировать не нужно. * **user.crt** Клиентский сертификат, подтверждающий личность пользователя при подключении к Kafka. Используется совместно с приватным ключом `user.key` для аутентификации. Выдаеться в формате base64 для получения файла сертификата использовать команду ```bash echo '<содержание поля>' | base64 -d > <название>.crt ``` * **user.key** Приватный ключ пользователя, применяемый для установления защищённого TLS-соединения и подтверждения подлинности. Выдаеться в формате base64 для получения файла сертификата использовать команду ```bash echo '<содержание поля>' | base64 -d > <название>.key ``` * **user.p12** PKCS#12-хранилище с клиентским сертификатом и приватным ключом, предназначенное для аутентификации пользователя в Kafka. Выдаеться в формате base64 для получения файла сертификата использовать команду ```bash echo "<содержание поля>" | base64 -d > <название>.p12 ``` * **user.password** Пароль для доступа к хранилищу `user.p12`. Выдаеться в чистом виде. Раскодировать не нужно. Эти параметры используются для настройки TLS-подключения. --- ## 6. Пример конфигурации клиента внутри кластера Пример пода: ```yaml apiVersion: v1 kind: Pod metadata: name: kafka-4 spec: volumes: - name: work emptyDir: {} containers: - name: kcat image: quay.io/strimzi/kafka:latest-kafka-4.0.0 command: ["sleep", "5600"] volumeMounts: - name: work mountPath: /work restartPolicy: Never ``` Создаём под и сохраняем сертификаты: ```bash kubectl cp user.p12 kafka-4:/work/ kubectl cp ca.p12 kafka-4:/work/ ``` Создаём файлы конфигурации: ```bash cat > /work/user-read.properties <<'EOF' security.protocol=SSL ssl.keystore.type=PKCS12 ssl.keystore.location=/work/user.p12 ssl.keystore.password=<user.password> ssl.truststore.type=PKCS12 ssl.truststore.location=/work/ca.p12 ssl.truststore.password=<ca.password> EOF ``` ```bash cat > /work/user-write.properties <<'EOF' security.protocol=SSL ssl.keystore.type=PKCS12 ssl.keystore.location=/work/user-write.p12 ssl.keystore.password=<user.password> ssl.truststore.type=PKCS12 ssl.truststore.location=/work/ca.p12 ssl.truststore.password=<ca.password> EOF ``` Листинг доступных топиков: ```bash /opt/kafka/bin/kafka-topics.sh \ --bootstrap-server kafkak8s-bootstrap-external:9093 \ --command-config /work/user-read.properties \ --list ``` Запись сообщений: ```bash /opt/kafka/bin/kafka-console-producer.sh \ --bootstrap-server <адрес сервис брокера>:9093 \ --topic <topic> \ --producer.config /work/user-write.properties ``` Чтение сообщений: ```bash /opt/kafka/bin/kafka-console-consumer.sh \ --bootstrap-server <адрес сервис брокера>:9093 \ --topic <topic> \ --from-beginning \ --group <group> \ --consumer.config /work/user-read.properties \ --max-messages 50 ``` --- ## 7. Пример внешнего подключения с использованием **kcat** **Листинг топиков** ```bash kcat -b <externalConnect.bootstrap.fqdn>:9093 \ -L \ -X security.protocol=SSL \ -X ssl.ca.location=./ca.crt \ -X ssl.certificate.location=./user-read.crt \ -X ssl.key.location=./user-read.key \ -X ssl.endpoint.identification.algorithm=none ``` **Запись сообщения** ```bash echo "hello from kcat" | kcat -P \ -b <externalConnect.bootstrap.fqdn>:9093 \ -t write-test \ -X security.protocol=SSL \ -X ssl.ca.location=./ca.crt \ -X ssl.certificate.location=./user-write.crt \ -X ssl.key.location=./user-write.key \ -X ssl.endpoint.identification.algorithm=none ``` **Чтение сообщений** ```bash kcat -C \ -b <externalConnect.bootstrap.fqdn>:9093 \ -t write-test \ -o beginning \ -q \ -X security.protocol=SSL \ -X ssl.ca.location=./ca.crt \ -X ssl.certificate.location=./user-read.crt \ -X ssl.key.location=./user-read.key \ -X ssl.endpoint.identification.algorithm=none ``` --- ## 9. Рекомендации * Минимизируйте набор разрешённых операций для повышения безопасности. * Используйте отдельные учётные записи для продюсеров, консюмеров и системных сервисов. * Ограничивайте доступ по IP или подсетям с помощью параметра **Разрешённые хосты**. * После изменения прав или групп пользователя рекомендуется проверить подключение и доступ к топикам. ---
|
||||
- `modify` — Изменение кластера. Параметры: [Modify params](kafka_params_modify.md)
|
||||
- `modify_topic` — Изменение кластера. Параметры: [Modify params](kafka_params_modify.md)
|
||||
- `modify_user` — Изменение кластера. Параметры: [Modify params](kafka_params_modify.md)
|
||||
- `resume`
|
||||
- `suspend`
|
||||
@@ -0,0 +1,54 @@
|
||||
# Resource nubes_kafka
|
||||
|
||||
Service ID: `116`
|
||||
|
||||
Service Name: ApacheKafka
|
||||
|
||||
[Manual](kafka.md) | [Create params](kafka_params_create.md) | [Modify params](kafka_params_modify.md) | [Output params](kafka_outputs.md) | [Operations](kafka_ops.md) | [Example](kafka_example.md)
|
||||
|
||||
## Output params
|
||||
|
||||
- `state_params` (map) — параметры, отправленные в API при создании/изменении
|
||||
- `state_out` (map) — ответ API с результатами/выходными значениями
|
||||
- `state_params_flat` (map) — параметры в плоском виде (ключи с путями)
|
||||
- `state_out_flat` (map) — ответы в плоском виде (ключи с путями)
|
||||
- `vault_secrets` (map) — секреты, записанные в Vault для ресурса
|
||||
- `vault_url` (string) — адрес Vault для ресурса
|
||||
- `vault_user_path` (string) — путь пользователя в Vault
|
||||
- `vault_fields` (list) — список ключей доступных секретов
|
||||
|
||||
## Реальные поля из облака (running/suspended snapshot)
|
||||
|
||||
Поля ниже получены из реальных инстансов этого сервиса в облаке.
|
||||
Используйте их как готовые ключи для `state_out_flat` и `vault_secrets`.
|
||||
|
||||
### `state_out_flat` ключи
|
||||
|
||||
- `state_out_flat["externalConnect"]`
|
||||
- `state_out_flat["externalConnect.bootstrap"]`
|
||||
- `state_out_flat["externalConnect.bootstrap.fqdn"]`
|
||||
- `state_out_flat["externalConnect.bootstrap.ip"]`
|
||||
- `state_out_flat["externalConnect.bootstrap.isExternal"]`
|
||||
- `state_out_flat["externalConnect.bootstrap.uuid"]`
|
||||
- `state_out_flat["internalConnect"]`
|
||||
- `state_out_flat["kafkaTopics"]`
|
||||
- `state_out_flat["kafkaTopics.test-events"]`
|
||||
- `state_out_flat["kafkaTopics.test-events.partitions"]`
|
||||
- `state_out_flat["kafkaTopics.test-events.replicas"]`
|
||||
- `state_out_flat["kafkaUsers"]`
|
||||
- `state_out_flat["kafkaUsers.usertest"]`
|
||||
- `state_out_flat["kafkaUsers.usertest.accessHosts"]`
|
||||
- `state_out_flat["kafkaUsers.usertest.group"]`
|
||||
- `state_out_flat["kafkaUsers.usertest.nameTopic"]`
|
||||
- `state_out_flat["kafkaUsers.usertest.operations"]`
|
||||
- `state_out_flat["monitoring"]`
|
||||
- `state_out_flat["monitoring.allDashboards"]`
|
||||
- `state_out_flat["monitoring.base"]`
|
||||
- `state_out_flat["monitoring.base.url"]`
|
||||
- `state_out_flat["monitoring.loki"]`
|
||||
- `state_out_flat["monitoring.loki.url"]`
|
||||
|
||||
### `vault_secrets` ключи
|
||||
|
||||
- `vault_secrets["users"]`
|
||||
|
||||
@@ -0,0 +1,12 @@
|
||||
# Resource nubes_kafka
|
||||
|
||||
Service ID: `116`
|
||||
|
||||
Service Name: ApacheKafka
|
||||
|
||||
[Manual](kafka.md) | [Create params](kafka_params_create.md) | [Modify params](kafka_params_modify.md) | [Output params](kafka_outputs.md) | [Operations](kafka_ops.md) | [Example](kafka_example.md)
|
||||
|
||||
## Parameters
|
||||
|
||||
- [Create params](kafka_params_create.md)
|
||||
- [Modify params](kafka_params_modify.md)
|
||||
@@ -0,0 +1,41 @@
|
||||
# Resource nubes_kafka
|
||||
|
||||
Service ID: `116`
|
||||
|
||||
Service Name: ApacheKafka
|
||||
|
||||
[Manual](kafka.md) | [Create params](kafka_params_create.md) | [Modify params](kafka_params_modify.md) | [Output params](kafka_outputs.md) | [Operations](kafka_ops.md) | [Example](kafka_example.md)
|
||||
|
||||
## Create params
|
||||
|
||||
**Обязательные параметры (вводимые пользователем)**
|
||||
|
||||
<table class="resource-table resource-table-compact resource-table-required">
|
||||
<thead><tr><th>ID</th><th>Code</th><th>Type</th><th>Description</th><th>Constraints</th></tr></thead>
|
||||
<tbody>
|
||||
<tr><td>461</td><td><strong><code class="code-no-wrap">resource_instances</code></strong></td><td><code>integer</code></td><td>Пример: `2`</td><td>minvalue=1; value_list=1, 2, 3, 4, 5</td></tr>
|
||||
<tr><td>462</td><td><strong><code class="code-no-wrap">resource_memory</code></strong></td><td><code>integer</code></td><td>Пример: `2048`</td><td>minvalue=1000</td></tr>
|
||||
<tr><td>463</td><td><strong><code class="code-no-wrap">resource_cpu</code></strong></td><td><code>integer</code></td><td>Пример: `2000`</td><td>minvalue=1000</td></tr>
|
||||
<tr><td>464</td><td><strong><code class="code-no-wrap">resource_disk</code></strong></td><td><code>integer</code></td><td>Пример: `20`</td><td></td></tr>
|
||||
<tr><td>466</td><td><strong><code class="code-no-wrap">ip_space_name_master</code></strong></td><td><code>string</code></td><td>Если включен предыдущий параметр, то поле необходимо заполнить. Пример: `internet-no-antiddos-v1`</td><td></td></tr>
|
||||
<tr><td>469</td><td><strong><code class="code-no-wrap">resource_realm</code></strong></td><td><code>string</code></td><td>Выбрать платформу из списка</td><td>func=getAvailableResourceRealms</td></tr>
|
||||
</tbody></table>
|
||||
|
||||
**Параметры, имеющие значение по умолчанию, если не меняете - эти параметры не обязательно прописывать в манифесте**
|
||||
<table class="resource-table resource-table-compact">
|
||||
<thead><tr><th>ID</th><th>Code</th><th>Type</th><th>Default</th><th>Description</th><th>Constraints</th></tr></thead>
|
||||
<tbody>
|
||||
<tr><td>465</td><td><strong><code class="code-no-wrap">need_external_address_master</code></strong></td><td><code>boolean</code></td><td><code>false</code></td><td>Флаг, определяющий, нужно ли выделять внешний IP для доступа к master-брокеру. Пример: `true` или `false`</td><td>value_list=false, true</td></tr>
|
||||
</tbody></table>
|
||||
|
||||
<div class="lifecycle-note">
|
||||
<strong>Параметры поведения (кратко)</strong><br/>
|
||||
По умолчанию: `suspend_on_destroy = True`, `adopt_existing_on_create = False`.<br/>
|
||||
При `terraform destroy` или удалении ресурса из манифеста:<br/>
|
||||
- `suspend_on_destroy=true` — инстанс переводится в `Suspend` (не удаляется).<br/>
|
||||
- `suspend_on_destroy=false` — Terraform удаляет ресурс только из state.<br/>
|
||||
При `apply` флаг `adopt_existing_on_create` работает как авто-`import`:<br/>
|
||||
- `false` — если ресурс уже есть, будет ошибка.<br/>
|
||||
- `true` — Terraform может взять существующий инстанс под управление (`running` → adopt, `suspended` → resume+adopt при совпадении параметров).<br/>
|
||||
Важно: один инстанс должен быть только в одном state. Иначе получите конфликт управления.
|
||||
</div>
|
||||
@@ -0,0 +1,20 @@
|
||||
# Resource nubes_kafka
|
||||
|
||||
Service ID: `116`
|
||||
|
||||
Service Name: ApacheKafka
|
||||
|
||||
[Manual](kafka.md) | [Create params](kafka_params_create.md) | [Modify params](kafka_params_modify.md) | [Output params](kafka_outputs.md) | [Operations](kafka_ops.md) | [Example](kafka_example.md)
|
||||
|
||||
## Modify params
|
||||
|
||||
<table class="resource-table resource-table-compact">
|
||||
<thead><tr><th>ID</th><th>Code</th><th>Type</th><th>Description</th><th>Constraints</th></tr></thead>
|
||||
<tbody>
|
||||
<tr><td>501</td><td><strong><code class="code-no-wrap">resource_instances</code></strong></td><td><code>integer</code></td><td>Пример: `2`</td><td>value_list=1, 2, 3, 4, 5</td></tr>
|
||||
<tr><td>502</td><td><strong><code class="code-no-wrap">resource_memory</code></strong></td><td><code>integer</code></td><td>Пример: `2048`</td><td>minvalue=1000</td></tr>
|
||||
<tr><td>503</td><td><strong><code class="code-no-wrap">resource_cpu</code></strong></td><td></td><td>Пример: `2000`</td><td>minvalue=1000</td></tr>
|
||||
<tr><td>504</td><td><strong><code class="code-no-wrap">resource_disk</code></strong></td><td><code>integer</code></td><td>Пример: `20`</td><td></td></tr>
|
||||
<tr><td>505</td><td><strong><code class="code-no-wrap">need_external_address_master</code></strong></td><td><code>boolean</code></td><td>Флаг, определяющий, нужно ли выделять внешний IP для доступа к master-брокеру. Пример: `true` или `false`</td><td>value_list=false, true</td></tr>
|
||||
<tr><td>506</td><td><strong><code class="code-no-wrap">ip_space_name_master</code></strong></td><td><code>string</code></td><td>Если включен предыдущий параметр, то поле необходимо заполнить. Пример: `internet-no-antiddos-v1`</td><td></td></tr>
|
||||
</tbody></table>
|
||||
@@ -0,0 +1,13 @@
|
||||
# Resource nubes_lucee
|
||||
|
||||
Service ID: `94`
|
||||
|
||||
Service Name: Lucee
|
||||
|
||||
[Manual](lucee.md) | [Create params](lucee_params_create.md) | [Modify params](lucee_params_modify.md) | [Output params](lucee_outputs.md) | [Operations](lucee_ops.md) | [Example](lucee_example.md)
|
||||
|
||||
## MAN
|
||||
|
||||
<div class="man-content">
|
||||
Manual not available.
|
||||
</div>
|
||||
@@ -0,0 +1,52 @@
|
||||
# Resource nubes_lucee
|
||||
|
||||
Service ID: `94`
|
||||
|
||||
Service Name: Lucee
|
||||
|
||||
[Manual](lucee.md) | [Create params](lucee_params_create.md) | [Modify params](lucee_params_modify.md) | [Output params](lucee_outputs.md) | [Operations](lucee_ops.md) | [Example](lucee_example.md)
|
||||
|
||||
## Copy-ready manifest (`lucee_main.tf`)
|
||||
|
||||
```hcl
|
||||
terraform {
|
||||
required_providers {
|
||||
nubes = {
|
||||
source = "terra.k8c.ru/nubes/nubes"
|
||||
version = "2.1.26"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
# Токен доступа api_token к Nubes API — замените на реальный.
|
||||
provider "nubes" {
|
||||
api_token = "token_***"
|
||||
api_endpoint = "https://deck-api.ngcloud.ru/api/v1/index.cfm"
|
||||
}
|
||||
resource "nubes_lucee" "baza" {
|
||||
resource_realm = "TODO" # Платформа для развертывания
|
||||
|
||||
# Параметры, имеющие значение по умолчанию, если не меняете - эти параметры не обязательно прописывать в манифесте
|
||||
domain = "web01" # Если будет указан FQDN, то происходят проверки DNS на валидность А-записи, или будет добавлено в зону resourceRealm
|
||||
git_path = "https://github.com/xahys/testlucee" # Путь до Git, который будет webroot для сайта
|
||||
json_env = { "param": "value" } # Здесь вы можете задать переменные среды в формате KEY=VALUE. Они будут доступны внутри вашего приложения.
|
||||
resource_cpu = 300 # Квота ядра пода (milicores)
|
||||
resource_memory = 512 # Квота памяти пода (MBytes)
|
||||
resource_instances = 1 # Количество узлов
|
||||
app_version = 5.4 # Версия Lucee
|
||||
}
|
||||
```
|
||||
|
||||
## Outputs usage
|
||||
|
||||
```hcl
|
||||
# Выходные параметры можно использовать как
|
||||
nubes_lucee.baza.state_params["имя_ключа"]
|
||||
nubes_lucee.baza.state_out["имя_ключа"]
|
||||
nubes_lucee.baza.state_params_flat["имя_ключа"]
|
||||
nubes_lucee.baza.state_out_flat["имя_ключа"]
|
||||
nubes_lucee.baza.vault_secrets["имя_ключа"]
|
||||
nubes_lucee.baza.vault_url
|
||||
nubes_lucee.baza.vault_user_path
|
||||
nubes_lucee.baza.vault_fields
|
||||
```
|
||||
@@ -0,0 +1,17 @@
|
||||
# Resource nubes_lucee
|
||||
|
||||
Service ID: `94`
|
||||
|
||||
Service Name: Lucee
|
||||
|
||||
[Manual](lucee.md) | [Create params](lucee_params_create.md) | [Modify params](lucee_params_modify.md) | [Output params](lucee_outputs.md) | [Operations](lucee_ops.md) | [Example](lucee_example.md)
|
||||
|
||||
## Operations
|
||||
|
||||
- `create` — Создание кластера. Параметры: [Create params](lucee_params_create.md)
|
||||
- `delete`
|
||||
- `modify` — Изменение кластера. Параметры: [Modify params](lucee_params_modify.md)
|
||||
- `redeploy`
|
||||
- `restart`
|
||||
- `resume`
|
||||
- `suspend`
|
||||
@@ -0,0 +1,34 @@
|
||||
# Resource nubes_lucee
|
||||
|
||||
Service ID: `94`
|
||||
|
||||
Service Name: Lucee
|
||||
|
||||
[Manual](lucee.md) | [Create params](lucee_params_create.md) | [Modify params](lucee_params_modify.md) | [Output params](lucee_outputs.md) | [Operations](lucee_ops.md) | [Example](lucee_example.md)
|
||||
|
||||
## Output params
|
||||
|
||||
- `state_params` (map) — параметры, отправленные в API при создании/изменении
|
||||
- `state_out` (map) — ответ API с результатами/выходными значениями
|
||||
- `state_params_flat` (map) — параметры в плоском виде (ключи с путями)
|
||||
- `state_out_flat` (map) — ответы в плоском виде (ключи с путями)
|
||||
- `vault_secrets` (map) — секреты, записанные в Vault для ресурса
|
||||
- `vault_url` (string) — адрес Vault для ресурса
|
||||
- `vault_user_path` (string) — путь пользователя в Vault
|
||||
- `vault_fields` (list) — список ключей доступных секретов
|
||||
|
||||
## Реальные поля из облака (running/suspended snapshot)
|
||||
|
||||
Поля ниже получены из реальных инстансов этого сервиса в облаке.
|
||||
Используйте их как готовые ключи для `state_out_flat` и `vault_secrets`.
|
||||
|
||||
### `state_out_flat` ключи
|
||||
|
||||
- `state_out_flat["connectionUrl"]`
|
||||
- `state_out_flat["monitoring"]`
|
||||
- `state_out_flat["monitoring.allDashboards"]`
|
||||
- `state_out_flat["monitoring.base"]`
|
||||
- `state_out_flat["monitoring.base.url"]`
|
||||
- `state_out_flat["monitoring.loki"]`
|
||||
- `state_out_flat["monitoring.loki.url"]`
|
||||
|
||||
@@ -0,0 +1,12 @@
|
||||
# Resource nubes_lucee
|
||||
|
||||
Service ID: `94`
|
||||
|
||||
Service Name: Lucee
|
||||
|
||||
[Manual](lucee.md) | [Create params](lucee_params_create.md) | [Modify params](lucee_params_modify.md) | [Output params](lucee_outputs.md) | [Operations](lucee_ops.md) | [Example](lucee_example.md)
|
||||
|
||||
## Parameters
|
||||
|
||||
- [Create params](lucee_params_create.md)
|
||||
- [Modify params](lucee_params_modify.md)
|
||||
@@ -0,0 +1,43 @@
|
||||
# Resource nubes_lucee
|
||||
|
||||
Service ID: `94`
|
||||
|
||||
Service Name: Lucee
|
||||
|
||||
[Manual](lucee.md) | [Create params](lucee_params_create.md) | [Modify params](lucee_params_modify.md) | [Output params](lucee_outputs.md) | [Operations](lucee_ops.md) | [Example](lucee_example.md)
|
||||
|
||||
## Create params
|
||||
|
||||
**Обязательные параметры (вводимые пользователем)**
|
||||
|
||||
<table class="resource-table resource-table-compact resource-table-required">
|
||||
<thead><tr><th>ID</th><th>Code</th><th>Type</th><th>Description</th><th>Constraints</th></tr></thead>
|
||||
<tbody>
|
||||
<tr><td>108</td><td><strong><code class="code-no-wrap">resource_realm</code></strong></td><td><code>string</code></td><td>Наименование кластера Kubernetes для подключения</td><td>func=getAvailableResourceRealms</td></tr>
|
||||
<tr><td>132</td><td><strong><code class="code-no-wrap">health_path</code></strong></td><td><code>string</code></td><td>Путь до healtcheck для запуска пода в Kubernetes, который отдаст 200 код</td><td></td></tr>
|
||||
</tbody></table>
|
||||
|
||||
**Параметры, имеющие значение по умолчанию, если не меняете - эти параметры не обязательно прописывать в манифесте**
|
||||
<table class="resource-table resource-table-compact">
|
||||
<thead><tr><th>ID</th><th>Code</th><th>Type</th><th>Default</th><th>Description</th><th>Constraints</th></tr></thead>
|
||||
<tbody>
|
||||
<tr><td>103</td><td><strong><code class="code-no-wrap">domain</code></strong></td><td><code>string</code></td><td><code>web01</code></td><td>Если будет указан FQDN, то происходят проверки DNS на валидность А-записи, или будет добавлено в зону resourceRealm</td><td>regex=^(?:[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?\.)*[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?$; unique_scope=provider</td></tr>
|
||||
<tr><td>104</td><td><strong><code class="code-no-wrap">git_path</code></strong></td><td><code>string</code></td><td><code>https://github.com/xahys/testlucee</code></td><td>Путь до Git, который будет webroot для сайта</td><td></td></tr>
|
||||
<tr><td>105</td><td><strong><code class="code-no-wrap">json_env</code></strong></td><td><code>json</code></td><td><code>{ "param": "value" }</code></td><td>Здесь вы можете задать переменные среды в формате KEY=VALUE. Они будут доступны внутри вашего приложения.</td><td>maxlength=2048</td></tr>
|
||||
<tr><td>106</td><td><strong><code class="code-no-wrap">resource_cpu</code></strong></td><td><code>integer</code></td><td><code>300</code></td><td>Квота ядра пода (milicores)</td><td>minvalue=100; maxvalue=4000</td></tr>
|
||||
<tr><td>107</td><td><strong><code class="code-no-wrap">resource_memory</code></strong></td><td><code>integer</code></td><td><code>512</code></td><td>Квота памяти пода (MBytes)</td><td>minvalue=128; maxvalue=8192</td></tr>
|
||||
<tr><td>139</td><td><strong><code class="code-no-wrap">resource_instances</code></strong></td><td><code>integer</code></td><td><code>1</code></td><td>Количество узлов в сети</td><td>minvalue=1; maxvalue=7</td></tr>
|
||||
<tr><td>263</td><td><strong><code class="code-no-wrap">app_version</code></strong></td><td><code>string</code></td><td><code>5.4</code></td><td>Версия Lucee</td><td>regex=^\d+(\.\d+){1,2}(-[a-zA-Z0-9\.]+)?$; value_list=5.4, 6.0</td></tr>
|
||||
</tbody></table>
|
||||
|
||||
<div class="lifecycle-note">
|
||||
<strong>Параметры поведения (кратко)</strong><br/>
|
||||
По умолчанию: `suspend_on_destroy = True`, `adopt_existing_on_create = False`.<br/>
|
||||
При `terraform destroy` или удалении ресурса из манифеста:<br/>
|
||||
- `suspend_on_destroy=true` — инстанс переводится в `Suspend` (не удаляется).<br/>
|
||||
- `suspend_on_destroy=false` — Terraform удаляет ресурс только из state.<br/>
|
||||
При `apply` флаг `adopt_existing_on_create` работает как авто-`import`:<br/>
|
||||
- `false` — если ресурс уже есть, будет ошибка.<br/>
|
||||
- `true` — Terraform может взять существующий инстанс под управление (`running` → adopt, `suspended` → resume+adopt при совпадении параметров).<br/>
|
||||
Важно: один инстанс должен быть только в одном state. Иначе получите конфликт управления.
|
||||
</div>
|
||||
@@ -0,0 +1,21 @@
|
||||
# Resource nubes_lucee
|
||||
|
||||
Service ID: `94`
|
||||
|
||||
Service Name: Lucee
|
||||
|
||||
[Manual](lucee.md) | [Create params](lucee_params_create.md) | [Modify params](lucee_params_modify.md) | [Output params](lucee_outputs.md) | [Operations](lucee_ops.md) | [Example](lucee_example.md)
|
||||
|
||||
## Modify params
|
||||
|
||||
<table class="resource-table resource-table-compact">
|
||||
<thead><tr><th>ID</th><th>Code</th><th>Type</th><th>Description</th><th>Constraints</th></tr></thead>
|
||||
<tbody>
|
||||
<tr><td>133</td><td><strong><code class="code-no-wrap">git_path</code></strong></td><td><code>string</code></td><td>Путь до Git, который будет webroot для сайта</td><td></td></tr>
|
||||
<tr><td>134</td><td><strong><code class="code-no-wrap">health_path</code></strong></td><td><code>string</code></td><td>Путь до healtcheck для запуска пода в Kubernetes, который отдаст 200 код.</td><td></td></tr>
|
||||
<tr><td>135</td><td><strong><code class="code-no-wrap">json_env</code></strong></td><td><code>json</code></td><td>Массив переменных, будут переданы в env приложения</td><td>maxlength=2048</td></tr>
|
||||
<tr><td>136</td><td><strong><code class="code-no-wrap">resource_cpu</code></strong></td><td><code>integer</code></td><td>Квота ядра пода (Указывается в mili)</td><td>minvalue=100; maxvalue=4000</td></tr>
|
||||
<tr><td>137</td><td><strong><code class="code-no-wrap">resource_memory</code></strong></td><td><code>integer</code></td><td>Квота памяти пода (Указывается в Megabytes)</td><td>minvalue=128; maxvalue=8192</td></tr>
|
||||
<tr><td>138</td><td><strong><code class="code-no-wrap">resource_instances</code></strong></td><td><code>integer</code></td><td>Количество узлов в сети</td><td>minvalue=1; maxvalue=7</td></tr>
|
||||
<tr><td>264</td><td><strong><code class="code-no-wrap">app_version</code></strong></td><td><code>string</code></td><td></td><td>regex=^\d+(\.\d+){1,2}(-[a-zA-Z0-9\.]+)?$; value_list=5.4, 6.0</td></tr>
|
||||
</tbody></table>
|
||||
@@ -0,0 +1,13 @@
|
||||
# Resource nubes_mariadb
|
||||
|
||||
Service ID: `115`
|
||||
|
||||
Service Name: Mariadb
|
||||
|
||||
[Manual](mariadb.md) | [Create params](mariadb_params_create.md) | [Modify params](mariadb_params_modify.md) | [Output params](mariadb_outputs.md) | [Operations](mariadb_ops.md) | [Example](mariadb_example.md)
|
||||
|
||||
## MAN
|
||||
|
||||
<div class="man-content">
|
||||
Mariadb кластер. Ресурсная платформа: k8s. Автоматизация: k8s operator.<br/>Автоматическое резервное копирование, ручное восстановление.
|
||||
</div>
|
||||
@@ -0,0 +1,57 @@
|
||||
# Resource nubes_mariadb
|
||||
|
||||
Service ID: `115`
|
||||
|
||||
Service Name: Mariadb
|
||||
|
||||
[Manual](mariadb.md) | [Create params](mariadb_params_create.md) | [Modify params](mariadb_params_modify.md) | [Output params](mariadb_outputs.md) | [Operations](mariadb_ops.md) | [Example](mariadb_example.md)
|
||||
|
||||
## Copy-ready manifest (`mariadb_main.tf`)
|
||||
|
||||
```hcl
|
||||
terraform {
|
||||
required_providers {
|
||||
nubes = {
|
||||
source = "terra.k8c.ru/nubes/nubes"
|
||||
version = "2.1.26"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
# Токен доступа api_token к Nubes API — замените на реальный.
|
||||
provider "nubes" {
|
||||
api_token = "token_***"
|
||||
api_endpoint = "https://deck-api.ngcloud.ru/api/v1/index.cfm"
|
||||
}
|
||||
resource "nubes_mariadb" "baza" {
|
||||
resource_realm = "TODO" # Платформа для развертывания
|
||||
s3_uid = "TODO" # Экземпляр (учетная запись) S3 для резервного копирования. Резервное копирование обязательно
|
||||
|
||||
# Параметры, имеющие значение по умолчанию, если не меняете - эти параметры не обязательно прописывать в манифесте
|
||||
resource_cpu = 500 # Квота ядра пода (milicores)
|
||||
resource_memory = 1024 # Квота памяти пода (MBytes)
|
||||
resource_disk = 1 # Квота диска (Указывается в GIGAbytes)
|
||||
resource_instances = 1 # Количество узлов
|
||||
need_external_address_master = false # Выделяет внешний (белый) IP для доступа к master
|
||||
ext_backup_schedule = "0 * * * *" # Не обязательный. Время запуска бекапа
|
||||
app_version = 9.4.0 # Версия MySQL
|
||||
auto_scale = false # Включает автоскейлинг PV. При включении параметра необходимо настроить autoScalePercentage и autoScaleTechWindow. Алерт при срабатывании вызывает modify у текущей услуги
|
||||
auto_scale_percentage = 10 # Требует включения autoScale. Позволяет указать в процентах расширение от текущего макс объема
|
||||
auto_scale_tech_window = 0 # Требует включения autoScale. Окно обновления (пока не реализовано). Указывается час в виде Integer (0 / 5 / 12 / 23)
|
||||
auto_scale_quota_gb = 1 # Квота для autoScale
|
||||
}
|
||||
```
|
||||
|
||||
## Outputs usage
|
||||
|
||||
```hcl
|
||||
# Выходные параметры можно использовать как
|
||||
nubes_mariadb.baza.state_params["имя_ключа"]
|
||||
nubes_mariadb.baza.state_out["имя_ключа"]
|
||||
nubes_mariadb.baza.state_params_flat["имя_ключа"]
|
||||
nubes_mariadb.baza.state_out_flat["имя_ключа"]
|
||||
nubes_mariadb.baza.vault_secrets["имя_ключа"]
|
||||
nubes_mariadb.baza.vault_url
|
||||
nubes_mariadb.baza.vault_user_path
|
||||
nubes_mariadb.baza.vault_fields
|
||||
```
|
||||
@@ -0,0 +1,15 @@
|
||||
# Resource nubes_mariadb
|
||||
|
||||
Service ID: `115`
|
||||
|
||||
Service Name: Mariadb
|
||||
|
||||
[Manual](mariadb.md) | [Create params](mariadb_params_create.md) | [Modify params](mariadb_params_modify.md) | [Output params](mariadb_outputs.md) | [Operations](mariadb_ops.md) | [Example](mariadb_example.md)
|
||||
|
||||
## Operations
|
||||
|
||||
- `create` — Создание кластера. Параметры: [Create params](mariadb_params_create.md)
|
||||
- `delete`
|
||||
- `modify` — Изменение кластера. Параметры: [Modify params](mariadb_params_modify.md)
|
||||
- `resume`
|
||||
- `suspend`
|
||||
@@ -0,0 +1,18 @@
|
||||
# Resource nubes_mariadb
|
||||
|
||||
Service ID: `115`
|
||||
|
||||
Service Name: Mariadb
|
||||
|
||||
[Manual](mariadb.md) | [Create params](mariadb_params_create.md) | [Modify params](mariadb_params_modify.md) | [Output params](mariadb_outputs.md) | [Operations](mariadb_ops.md) | [Example](mariadb_example.md)
|
||||
|
||||
## Output params
|
||||
|
||||
- `state_params` (map) — параметры, отправленные в API при создании/изменении
|
||||
- `state_out` (map) — ответ API с результатами/выходными значениями
|
||||
- `state_params_flat` (map) — параметры в плоском виде (ключи с путями)
|
||||
- `state_out_flat` (map) — ответы в плоском виде (ключи с путями)
|
||||
- `vault_secrets` (map) — секреты, записанные в Vault для ресурса
|
||||
- `vault_url` (string) — адрес Vault для ресурса
|
||||
- `vault_user_path` (string) — путь пользователя в Vault
|
||||
- `vault_fields` (list) — список ключей доступных секретов
|
||||
@@ -0,0 +1,12 @@
|
||||
# Resource nubes_mariadb
|
||||
|
||||
Service ID: `115`
|
||||
|
||||
Service Name: Mariadb
|
||||
|
||||
[Manual](mariadb.md) | [Create params](mariadb_params_create.md) | [Modify params](mariadb_params_modify.md) | [Output params](mariadb_outputs.md) | [Operations](mariadb_ops.md) | [Example](mariadb_example.md)
|
||||
|
||||
## Parameters
|
||||
|
||||
- [Create params](mariadb_params_create.md)
|
||||
- [Modify params](mariadb_params_modify.md)
|
||||
@@ -0,0 +1,48 @@
|
||||
# Resource nubes_mariadb
|
||||
|
||||
Service ID: `115`
|
||||
|
||||
Service Name: Mariadb
|
||||
|
||||
[Manual](mariadb.md) | [Create params](mariadb_params_create.md) | [Modify params](mariadb_params_modify.md) | [Output params](mariadb_outputs.md) | [Operations](mariadb_ops.md) | [Example](mariadb_example.md)
|
||||
|
||||
## Create params
|
||||
|
||||
**Обязательные параметры (вводимые пользователем)**
|
||||
|
||||
<table class="resource-table resource-table-compact resource-table-required">
|
||||
<thead><tr><th>ID</th><th>Code</th><th>Type</th><th>Description</th><th>Constraints</th></tr></thead>
|
||||
<tbody>
|
||||
<tr><td>422</td><td><strong><code class="code-no-wrap">resource_realm</code></strong></td><td><code>string</code></td><td>Платформа для развертывания</td><td>func=getAvailableResourceRealms</td></tr>
|
||||
<tr><td>429</td><td><strong><code class="code-no-wrap">ip_space_name_master</code></strong></td><td><code>string</code></td><td>Имя ipSpace для публикации VIP master. Не может быть пустым, если включен needExternalAddressMaster</td><td></td></tr>
|
||||
<tr><td>459</td><td><strong><code class="code-no-wrap">s3_uid</code></strong></td><td><code>uuid</code></td><td>Экземпляр (учетная запись) S3 для резервного копирования. Резервное копирование обязательно</td><td>ref_svc_id=12</td></tr>
|
||||
</tbody></table>
|
||||
|
||||
**Параметры, имеющие значение по умолчанию, если не меняете - эти параметры не обязательно прописывать в манифесте**
|
||||
<table class="resource-table resource-table-compact">
|
||||
<thead><tr><th>ID</th><th>Code</th><th>Type</th><th>Default</th><th>Description</th><th>Constraints</th></tr></thead>
|
||||
<tbody>
|
||||
<tr><td>424</td><td><strong><code class="code-no-wrap">resource_cpu</code></strong></td><td><code>integer</code></td><td><code>500</code></td><td>Квота ядра пода (milicores)</td><td>minvalue=500; maxvalue=4000</td></tr>
|
||||
<tr><td>425</td><td><strong><code class="code-no-wrap">resource_memory</code></strong></td><td><code>integer</code></td><td><code>1024</code></td><td>Квота памяти пода (MBytes)</td><td>minvalue=1024; maxvalue=8192</td></tr>
|
||||
<tr><td>426</td><td><strong><code class="code-no-wrap">resource_disk</code></strong></td><td><code>integer</code></td><td><code>1</code></td><td>Квота диска (Указывается в GIGAbytes)</td><td>minvalue=1; maxvalue=999</td></tr>
|
||||
<tr><td>427</td><td><strong><code class="code-no-wrap">resource_instances</code></strong></td><td><code>integer</code></td><td><code>1</code></td><td>Количество узлов</td><td>minvalue=1; maxvalue=7</td></tr>
|
||||
<tr><td>428</td><td><strong><code class="code-no-wrap">need_external_address_master</code></strong></td><td><code>boolean</code></td><td><code>false</code></td><td>Выделяет внешний (белый) IP для доступа к master</td><td>value_list=false, true</td></tr>
|
||||
<tr><td>430</td><td><strong><code class="code-no-wrap">ext_backup_schedule</code></strong></td><td><code>string</code></td><td><code>0 * * * *</code></td><td>Не обязательный. Время запуска бекапа</td><td>regex=^(\*|(\d+|\*\/\d+|\d+(,\d+)*))\s\*\s\*\s\*\s\*$</td></tr>
|
||||
<tr><td>431</td><td><strong><code class="code-no-wrap">app_version</code></strong></td><td><code>string</code></td><td><code>9.4.0</code></td><td>Версия MySQL</td><td>value_list=8.4.0, 9.4.0</td></tr>
|
||||
<tr><td>432</td><td><strong><code class="code-no-wrap">auto_scale</code></strong></td><td><code>boolean</code></td><td><code>false</code></td><td>Включает автоскейлинг PV. При включении параметра необходимо настроить autoScalePercentage и autoScaleTechWindow. Алерт при срабатывании вызывает modify у текущей услуги</td><td>value_list=false, true</td></tr>
|
||||
<tr><td>433</td><td><strong><code class="code-no-wrap">auto_scale_percentage</code></strong></td><td><code>integer</code></td><td><code>10</code></td><td>Требует включения autoScale. Позволяет указать в процентах расширение от текущего макс объема</td><td>value_list=10, 15, 20</td></tr>
|
||||
<tr><td>434</td><td><strong><code class="code-no-wrap">auto_scale_tech_window</code></strong></td><td><code>integer</code></td><td><code>0</code></td><td>Требует включения autoScale. Окно обновления (пока не реализовано). Указывается час в виде Integer (0 / 5 / 12 / 23)</td><td>value_list=0, 5, 12, 23</td></tr>
|
||||
<tr><td>435</td><td><strong><code class="code-no-wrap">auto_scale_quota_gb</code></strong></td><td><code>integer</code></td><td><code>1</code></td><td>Квота для autoScale</td><td></td></tr>
|
||||
</tbody></table>
|
||||
|
||||
<div class="lifecycle-note">
|
||||
<strong>Параметры поведения (кратко)</strong><br/>
|
||||
По умолчанию: `suspend_on_destroy = True`, `adopt_existing_on_create = False`.<br/>
|
||||
При `terraform destroy` или удалении ресурса из манифеста:<br/>
|
||||
- `suspend_on_destroy=true` — инстанс переводится в `Suspend` (не удаляется).<br/>
|
||||
- `suspend_on_destroy=false` — Terraform удаляет ресурс только из state.<br/>
|
||||
При `apply` флаг `adopt_existing_on_create` работает как авто-`import`:<br/>
|
||||
- `false` — если ресурс уже есть, будет ошибка.<br/>
|
||||
- `true` — Terraform может взять существующий инстанс под управление (`running` → adopt, `suspended` → resume+adopt при совпадении параметров).<br/>
|
||||
Важно: один инстанс должен быть только в одном state. Иначе получите конфликт управления.
|
||||
</div>
|
||||
@@ -0,0 +1,25 @@
|
||||
# Resource nubes_mariadb
|
||||
|
||||
Service ID: `115`
|
||||
|
||||
Service Name: Mariadb
|
||||
|
||||
[Manual](mariadb.md) | [Create params](mariadb_params_create.md) | [Modify params](mariadb_params_modify.md) | [Output params](mariadb_outputs.md) | [Operations](mariadb_ops.md) | [Example](mariadb_example.md)
|
||||
|
||||
## Modify params
|
||||
|
||||
<table class="resource-table resource-table-compact">
|
||||
<thead><tr><th>ID</th><th>Code</th><th>Type</th><th>Description</th><th>Constraints</th></tr></thead>
|
||||
<tbody>
|
||||
<tr><td>436</td><td><strong><code class="code-no-wrap">resource_cpu</code></strong></td><td><code>integer</code></td><td></td><td></td></tr>
|
||||
<tr><td>437</td><td><strong><code class="code-no-wrap">resource_memory</code></strong></td><td><code>integer</code></td><td></td><td></td></tr>
|
||||
<tr><td>438</td><td><strong><code class="code-no-wrap">resource_instances</code></strong></td><td><code>integer</code></td><td></td><td></td></tr>
|
||||
<tr><td>439</td><td><strong><code class="code-no-wrap">resource_disk</code></strong></td><td><code>integer</code></td><td></td><td></td></tr>
|
||||
<tr><td>440</td><td><strong><code class="code-no-wrap">need_external_address_master</code></strong></td><td><code>boolean</code></td><td></td><td>value_list=false, true</td></tr>
|
||||
<tr><td>441</td><td><strong><code class="code-no-wrap">ip_space_name_master</code></strong></td><td></td><td></td><td></td></tr>
|
||||
<tr><td>442</td><td><strong><code class="code-no-wrap">ext_backup_schedule</code></strong></td><td><code>string</code></td><td></td><td></td></tr>
|
||||
<tr><td>443</td><td><strong><code class="code-no-wrap">auto_scale</code></strong></td><td><code>boolean</code></td><td></td><td>value_list=false, true</td></tr>
|
||||
<tr><td>444</td><td><strong><code class="code-no-wrap">auto_scale_percentage</code></strong></td><td><code>integer</code></td><td></td><td></td></tr>
|
||||
<tr><td>445</td><td><strong><code class="code-no-wrap">auto_scale_tech_window</code></strong></td><td><code>integer</code></td><td></td><td></td></tr>
|
||||
<tr><td>446</td><td><strong><code class="code-no-wrap">auto_scale_quota_gb</code></strong></td><td><code>integer</code></td><td></td><td></td></tr>
|
||||
</tbody></table>
|
||||
@@ -0,0 +1,13 @@
|
||||
# Resource nubes_mongodb
|
||||
|
||||
Service ID: `92`
|
||||
|
||||
Service Name: MongoDB
|
||||
|
||||
[Manual](mongodb.md) | [Create params](mongodb_params_create.md) | [Modify params](mongodb_params_modify.md) | [Output params](mongodb_outputs.md) | [Operations](mongodb_ops.md) | [Example](mongodb_example.md)
|
||||
|
||||
## MAN
|
||||
|
||||
<div class="man-content">
|
||||
# Инструкция по развертыванию MongoDB через платформу<br/><br/>## 1. Общая информация<br/><br/>MongoDB — документоориентированная распределённая база данных, обеспечивающая высокую доступность, горизонтальное масштабирование и гибкую модель хранения.<br/><br/>### Доступные операции с кластером<br/><br/>* **create** — создание кластера<br/>* **delete** — удаление кластера<br/>* **suspend** — остановка кластера<br/>* **resume** — запуск кластера<br/><br/>### Доступные операции с пользователями<br/><br/>* **create_user** — создание пользователя<br/>* **modify_user** — модификация пользователя<br/>* **delete_user** — удаление пользователя<br/><br/>---<br/><br/>## 2. Параметры развертывания кластера<br/><br/>Эти параметры необходимо указать при создании кластера.<br/><br/>### Платформа для развертывания<br/><br/>Среда, в которой будет развернут кластер. Выбирается из предложенного списка.<br/><br/>### Количество узлов<br/><br/>Оптимально выбирать нечётное количество узлов в кластере MongoDB, так как это обеспечивает корректный процесс выбора ведущего узла и сохраняет работоспособность кластера даже при отказе одной из нод.<br/><br/>### Квота памяти пода (MB)<br/><br/>Объём памяти для одного пода в мегабайтах.<br/>Пример: `2048`<br/><br/>### Квота CPU пода (mCPU)<br/><br/>CPU-квота для пода в миликорах (1000 mCPU = 1 vCPU).<br/>Пример: `1000`<br/><br/>### Размер диска для базы данных (GB)<br/><br/>Объём диска для хранения данных в гигабайтах.<br/>Пример: `20`<br/><br/>### Выделение внешнего IP для доступа к master<br/><br/>Флаг, определяющий необходимость выделения внешнего IP.<br/>Допустимые значения: `true` или `false`<br/><br/>### Имя ipSpace для публикации внешнего IP<br/><br/>Указывается только если включено выделение внешнего IP.<br/>Пример: `internet-no-antiddos-v1`<br/><br/>---<br/><br/>## 3. Параметры создания пользователя<br/><br/>### Имя пользователя<br/><br/>Указывается имя пользователя (любой регистр).<br/>Пример: `readApp`<br/><br/>### Имя базы данных<br/><br/>Название базы, в которой будет создан пользователь.<br/>Если база отсутствует, она будет создана автоматически.<br/>Пример: `Apps_9392`<br/><br/>### Имя роли<br/><br/>* **read** — доступ только на чтение<br/>* **readWrite** — чтение и изменение данных<br/>* **dbOwner** — полный контроль над базой данных<br/><br/>---<br/><br/>## 4. Параметры модификации пользователя<br/><br/>### Имя пользователя<br/><br/>Необходимо выбрать существующего пользователя.<br/>Если список пуст, требуется предварительно создать пользователя.<br/><br/>### Имя базы данных<br/><br/>База данных, к которой относится пользователь.<br/>Если база отсутствует, она будет создана автоматически.<br/>Пример: `Apps_9392`<br/><br/>### Имя роли<br/><br/>* **read**<br/>* **readWrite**<br/>* **dbOwner**<br/><br/>---<br/><br/>## 5. Параметры удаления пользователя<br/><br/>### Имя пользователя<br/><br/>Выберите пользователя из списка для удаления.<br/><br/>---<br/><br/>## 6. Выходные параметры<br/><br/>После успешного развертывания кластера платформа возвращает ключевые параметры.<br/><br/>### internalConnect<br/><br/>Внутренний эндпоинт для подключения к кластеру из сервисов, работающих в той же сети.<br/>Используется для внутренних интеграций и системных сервисов.<br/><br/>### externalConnect<br/><br/>Внешний FQDN для подключения к кластеру извне.<br/>Порт подключения — **27017**.<br/><br/>---<br/><br/>## 7. Пример подключения<br/><br/>Перед подключением необходимо установить **mongosh**.<br/><br/>Команда подключения к базе данных:<br/><br/>```<br/>mongosh "mongodb://<username>:<password>@<endpoint_db>:27017/<dbName>"<br/>```<br/><br/>Где:<br/><br/>* `<username>` — имя пользователя<br/>* `<password>` — пароль<br/>* `<endpoint_db>` — internalConnect или externalConnect<br/>* `<dbName>` — имя базы данных<br/><br/>## 8. Дополнительная информация<br/><br/>Сейчас соединение с базой работает без шифрования, и доступ к кластеру осуществляется только по логину и паролю.
|
||||
</div>
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user