v5.0.57: regenerate all from TEST API (NOT PROD)
- 43 YAML, 94 Go, 332 docs from deck-api-test.ngcloud.ru - STANDS.md, TESTING.md, API_TOKENS.md added - Never mix PROD/TEST again
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 = "5.0.57"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
# Токен доступа 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_clickhouse
|
||||
|
||||
Service ID: `120`
|
||||
|
||||
Service Name: ClickHouse
|
||||
|
||||
[Manual](clickhouse.md) | [Create params](clickhouse_params_create.md) | [Modify params](clickhouse_params_modify.md) | [Output params](clickhouse_outputs.md) | [Operations](clickhouse_ops.md) | [Example](clickhouse_example.md)
|
||||
|
||||
## MAN
|
||||
|
||||
<div class="man-content">
|
||||
# Инструкция по управлению кластерами и пользователями ClickHouse<br/><br/>---<br/><br/>## Общая информация<br/><br/>ClickHouse — это колоночная система управления базами данных, предназначенная для обработки аналитических запросов в реальном времени. Платформа позволяет создавать, удалять, приостанавливать и возобновлять кластеры ClickHouse, а также управлять базами данных и пользователями.<br/><br/>Кластер создаётся через оператор Altinity (`https://github.com/Altinity/clickhouse-operator`) в ресурсной платформе типа `k8s`<br/><br/>Кластеры могут создаваться шардированными с произвольным количеством реплик. Для обеспечения отказоустойчивости и координации обязательно включение параметра `Создать ClickHouse-Keeper`.<br/><br/>Кластера создаются с обязательным бекапом. Для этого необходимо предварительно создать услугу `S3 Object Storage`.<br/>---<br/><br/>## Доступные операции<br/><br/>* **create** — Создание кластера<br/>* **delete** — Удаление кластера<br/>* **suspend** — Приостановка работы кластера<br/>* **resume** — Возобновление работы кластера<br/>* **create_database** — Создание базы данных<br/>* **delete_database** — Удаление базы данных<br/>* **create_user** — Создание пользователя и настройка прав доступа к базе данных<br/>* **delete_user** — Удаление пользователя<br/><br/>## Процесс создания и первого подключения<br/><br/>1. Выполнить операцию `create` - будет создан кластер<br/>2. Выполнить операцию `create_database` - будет создана база данных<br/>3. Выполнить операцию `create_user` - будет создан пользователь (выбрать доступ подключения к БД, созданной в п.2)<br/><br/>## Примеры подключения<br/><br/>### Подключение через HTTP-интерфейс<br/><br/>```bash<br/># Проверка доступности кластера<br/>curl "http://<username>:<password>@<host>:8123/" -d "SELECT 1"<br/><br/># Выполнение запроса<br/>curl "http://<username>:<password>@<host>:8123/" -d "SHOW DATABASES"<br/>```<br/><br/>## Простые кейсы<br/>*Создать БД и обычной таблицы*<br/>```clickhouse<br/>CREATE TABLE database.table<br/>(<br/> id UInt64,<br/> value String<br/>)<br/>ENGINE = MergeTree()<br/>ORDER BY id;<br/><br/>INSERT INTO database.table SELECT number, toString(number) FROM numbers(10000000);<br/><br/>SELECT count() FROM database.table;<br/>```<br/>Базы и таблицы не реплицируются без специального ключа (`ON CLUSTER 'clickhousek8s'`)<br/>В случае создания в стиле, описанным выше, необходимо будет выполнять действия на всех шардах/репликах<br/><br/><br/>*Создание БД и шардированной таблицы*<br/>```clickhouse<br/>CREATE TABLE database.localUsers<br/>(<br/> id UInt64,<br/> value String<br/>)<br/>ENGINE = MergeTree()<br/>ORDER BY id;<br/><br/>CREATE TABLE database.shardedTable<br/>AS localUsers<br/>ENGINE = Distributed('clickhousek8s', 'database', 'localUsers', id);<br/><br/>INSERT INTO shardedTable SELECT number, toString(number) FROM numbers(10000000);<br/><br/>SELECT count() FROM shardedTable;<br/>```<br/>Важный момент - в данном примере таблицы придётся также выполнять на всех нодах ClickHouse<br/><br/>*Создание реплицируемой и шардированной таблицы*<br/>```clickhouse<br/>CREATE TABLE IF NOT EXISTS database.localUsers ON cluster 'clickhousek8s'<br/>(<br/> user_id UInt64,<br/> name String,<br/> email String<br/>)<br/>ENGINE = ReplicatedMergeTree(<br/> '/clickhouse/tables/{shard}/localUsers',<br/> '{replica}'<br/>)<br/>ORDER BY user_id;<br/><br/>CREATE TABLE IF NOT EXISTS database.users ON cluster 'clickhousek8s'<br/>AS database.localUsers<br/>ENGINE = Distributed('clickhousek8s', 'database', 'localUsers', rand());<br/><br/>INSERT INTO database.users VALUES (1, 'Alice', 'alice@example.com');<br/>INSERT INTO database.users VALUES (2, 'Bob', 'bob@example.com');<br/>INSERT INTO database.users VALUES (3, 'Charlie', 'charlie@example.com');<br/>INSERT INTO database.users VALUES (4, 'David', 'david@example.com');<br/>INSERT INTO database.users VALUES (5, 'Gosha', 'gosha@example.com');<br/>INSERT INTO database.users VALUES (6, 'Eve', 'eve@example.com');<br/>INSERT INTO database.users VALUES (7, 'Frank', 'frank@example.com');<br/>INSERT INTO database.users VALUES (8, 'Grace', 'grace@example.com');<br/>INSERT INTO database.users VALUES (9, 'Hannah', 'hannah@example.com');<br/>INSERT INTO database.users VALUES (10, 'Ivan', 'ivan@example.com');<br/><br/>SELECT * FROM database.localUsers;<br/>SELECT * FROM database.users;<br/><br/>SELECT COUNT(*) AS total_users FROM database.users;<br/>SELECT COUNT(*) AS total_users_local FROM database.localUsers;<br/>```
|
||||
</div>
|
||||
@@ -0,0 +1,27 @@
|
||||
# Resource nubes_clickhouse_database
|
||||
|
||||
Service: `nubes_clickhouse` (ID: 120)
|
||||
|
||||
[ClickHouse (основной)](clickhouse.md) | [Operations](clickhouse_ops.md) | [Database](clickhouse_database.md) | [Example](clickhouse_database_example.md)
|
||||
|
||||
## Create params
|
||||
|
||||
**Обязательные параметры**
|
||||
|
||||
None.
|
||||
|
||||
**Параметры со значением по умолчанию**
|
||||
|
||||
<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>600</td><td><strong><code class="code-no-wrap">db_name</code></strong></td><td><code>string</code></td><td><code>db01</code></td><td>Пример: `db01`</td><td>regex=^[a-z0-9][a-z0-9.-]{1,61}[a-z0-9]$</td></tr>
|
||||
</tbody></table>
|
||||
|
||||
## Delete 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>602</td><td><strong><code class="code-no-wrap">db_name</code></strong></td><td><code>string</code></td><td>ВСЕ ДАННЫЕ ВНУТРИ БД БУДУТ УДАЛЕНЫ</td><td></td></tr>
|
||||
</tbody></table>
|
||||
@@ -0,0 +1,33 @@
|
||||
# Resource nubes_clickhouse_database — Example
|
||||
|
||||
Service: `nubes_clickhouse` (ID: 120)
|
||||
|
||||
[ClickHouse (основной)](clickhouse.md) | [Operations](clickhouse_ops.md) | [Database](clickhouse_database.md) | [Example](clickhouse_database_example.md)
|
||||
|
||||
## Copy-ready manifest (`clickhouse_database_main.tf`)
|
||||
|
||||
```hcl
|
||||
terraform {
|
||||
required_providers {
|
||||
nubes = {
|
||||
source = "terra.k8c.ru/nubes/nubes"
|
||||
version = "5.0.57"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
provider "nubes" {
|
||||
api_token = "token_***"
|
||||
api_endpoint = "https://deck-api.ngcloud.ru/api/v1/index.cfm"
|
||||
}
|
||||
|
||||
# Родительский ресурс — nubes_clickhouse должен быть создан заранее
|
||||
# resource "nubes_clickhouse" "baza" { ... }
|
||||
|
||||
resource "nubes_clickhouse_database" "example" {
|
||||
clickhouse_id = nubes_clickhouse.baza.id
|
||||
|
||||
# Параметры со значением по умолчанию
|
||||
db_name = "db01" # Пример: `db01`
|
||||
}
|
||||
```
|
||||
@@ -0,0 +1,49 @@
|
||||
# Resource nubes_clickhouse
|
||||
|
||||
Service ID: `120`
|
||||
|
||||
Service Name: ClickHouse
|
||||
|
||||
[Manual](clickhouse.md) | [Create params](clickhouse_params_create.md) | [Modify params](clickhouse_params_modify.md) | [Output params](clickhouse_outputs.md) | [Operations](clickhouse_ops.md) | [Example](clickhouse_example.md)
|
||||
|
||||
## Copy-ready manifest (`clickhouse_main.tf`)
|
||||
|
||||
```hcl
|
||||
terraform {
|
||||
required_providers {
|
||||
nubes = {
|
||||
source = "terra.k8c.ru/nubes/nubes"
|
||||
version = "5.0.57"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
# Токен доступа api_token к Nubes API — замените на реальный.
|
||||
provider "nubes" {
|
||||
api_token = "token_***"
|
||||
api_endpoint = "https://deck-api.ngcloud.ru/api/v1/index.cfm"
|
||||
}
|
||||
resource "nubes_clickhouse" "baza" {
|
||||
startup_configuration = "TODO"
|
||||
cluster_configuration = "TODO"
|
||||
access_configuration = "TODO"
|
||||
clickhouse_keeper_configuration = "TODO"
|
||||
clickhouse_configuration = "TODO"
|
||||
backup_configuration = "TODO"
|
||||
autoscale_configuration = "TODO"
|
||||
}
|
||||
```
|
||||
|
||||
## Outputs usage
|
||||
|
||||
```hcl
|
||||
# Выходные параметры можно использовать как
|
||||
nubes_clickhouse.baza.state_params["имя_ключа"]
|
||||
nubes_clickhouse.baza.state_out["имя_ключа"]
|
||||
nubes_clickhouse.baza.state_params_flat["имя_ключа"]
|
||||
nubes_clickhouse.baza.state_out_flat["имя_ключа"]
|
||||
nubes_clickhouse.baza.vault_secrets["имя_ключа"]
|
||||
nubes_clickhouse.baza.vault_url
|
||||
nubes_clickhouse.baza.vault_user_path
|
||||
nubes_clickhouse.baza.vault_fields
|
||||
```
|
||||
@@ -0,0 +1,20 @@
|
||||
# Resource nubes_clickhouse
|
||||
|
||||
Service ID: `120`
|
||||
|
||||
Service Name: ClickHouse
|
||||
|
||||
[Manual](clickhouse.md) | [Create params](clickhouse_params_create.md) | [Modify params](clickhouse_params_modify.md) | [Output params](clickhouse_outputs.md) | [Operations](clickhouse_ops.md) | [Example](clickhouse_example.md)
|
||||
|
||||
## Operations
|
||||
|
||||
- `create` — Создание кластера. Параметры: [Create params](clickhouse_params_create.md)
|
||||
- `create_database` — База данных создаётся на всех репликах кластера ClickHouse. См. [nubes_clickhouse_database](clickhouse_database.md)
|
||||
- `create_user` — . См. [nubes_clickhouse_user](clickhouse_user.md)
|
||||
- `delete` — Удаление возможно только после остановки сервиса через операцию `suspend` После выполнения операции необходимо выждать определенное кол-во времени
|
||||
- `delete_database` — Необратимое действие!!! Трижды подумай, заблокируй телефон тимлида и не выполняй это действие. См. [nubes_clickhouse_database](clickhouse_database.md)
|
||||
- `delete_user` — . См. [nubes_clickhouse_user](clickhouse_user.md)
|
||||
- `modify` — Изменение кластера. Параметры: [Modify params](clickhouse_params_modify.md)
|
||||
- `reconcile`
|
||||
- `resume`
|
||||
- `suspend` — Операция приводит к удалению всех подов Persistent Volume остаются нетронутыми
|
||||
@@ -0,0 +1,18 @@
|
||||
# Resource nubes_clickhouse
|
||||
|
||||
Service ID: `120`
|
||||
|
||||
Service Name: ClickHouse
|
||||
|
||||
[Manual](clickhouse.md) | [Create params](clickhouse_params_create.md) | [Modify params](clickhouse_params_modify.md) | [Output params](clickhouse_outputs.md) | [Operations](clickhouse_ops.md) | [Example](clickhouse_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_clickhouse
|
||||
|
||||
Service ID: `120`
|
||||
|
||||
Service Name: ClickHouse
|
||||
|
||||
[Manual](clickhouse.md) | [Create params](clickhouse_params_create.md) | [Modify params](clickhouse_params_modify.md) | [Output params](clickhouse_outputs.md) | [Operations](clickhouse_ops.md) | [Example](clickhouse_example.md)
|
||||
|
||||
## Parameters
|
||||
|
||||
- [Create params](clickhouse_params_create.md)
|
||||
- [Modify params](clickhouse_params_modify.md)
|
||||
@@ -0,0 +1,39 @@
|
||||
# Resource nubes_clickhouse
|
||||
|
||||
Service ID: `120`
|
||||
|
||||
Service Name: ClickHouse
|
||||
|
||||
[Manual](clickhouse.md) | [Create params](clickhouse_params_create.md) | [Modify params](clickhouse_params_modify.md) | [Output params](clickhouse_outputs.md) | [Operations](clickhouse_ops.md) | [Example](clickhouse_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>837</td><td><strong><code class="code-no-wrap">startup_configuration</code></strong></td><td><code>map-fixed</code></td><td></td><td></td></tr>
|
||||
<tr><td>838</td><td><strong><code class="code-no-wrap">cluster_configuration</code></strong></td><td><code>map-fixed</code></td><td></td><td></td></tr>
|
||||
<tr><td>839</td><td><strong><code class="code-no-wrap">access_configuration</code></strong></td><td><code>map-fixed</code></td><td></td><td></td></tr>
|
||||
<tr><td>840</td><td><strong><code class="code-no-wrap">clickhouse_keeper_configuration</code></strong></td><td><code>map-fixed</code></td><td></td><td></td></tr>
|
||||
<tr><td>841</td><td><strong><code class="code-no-wrap">clickhouse_configuration</code></strong></td><td><code>map-fixed</code></td><td></td><td></td></tr>
|
||||
<tr><td>842</td><td><strong><code class="code-no-wrap">backup_configuration</code></strong></td><td><code>map-fixed</code></td><td></td><td></td></tr>
|
||||
<tr><td>843</td><td><strong><code class="code-no-wrap">autoscale_configuration</code></strong></td><td><code>map-fixed</code></td><td></td><td></td></tr>
|
||||
<tr><td>851</td><td><strong><code class="code-no-wrap">clickhouse_files_configuration</code></strong></td><td><code>array-map-fixed</code></td><td>Формат:<br/> - path: somethings3.xml<br/> xmlConfig: '&lt;clickhouse&gt;......&lt;/clickhouse&gt;'</td><td></td></tr>
|
||||
</tbody></table>
|
||||
|
||||
**Параметры, имеющие значение по умолчанию, если не меняете - эти параметры не обязательно прописывать в манифесте**
|
||||
None.
|
||||
|
||||
<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_clickhouse
|
||||
|
||||
Service ID: `120`
|
||||
|
||||
Service Name: ClickHouse
|
||||
|
||||
[Manual](clickhouse.md) | [Create params](clickhouse_params_create.md) | [Modify params](clickhouse_params_modify.md) | [Output params](clickhouse_outputs.md) | [Operations](clickhouse_ops.md) | [Example](clickhouse_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>844</td><td><strong><code class="code-no-wrap">cluster_configuration</code></strong></td><td><code>map-fixed</code></td><td></td><td></td></tr>
|
||||
<tr><td>845</td><td><strong><code class="code-no-wrap">clickhouse_keeper_configuration</code></strong></td><td><code>map-fixed</code></td><td></td><td></td></tr>
|
||||
<tr><td>846</td><td><strong><code class="code-no-wrap">access_configuration</code></strong></td><td><code>map-fixed</code></td><td></td><td></td></tr>
|
||||
<tr><td>847</td><td><strong><code class="code-no-wrap">clickhouse_configuration</code></strong></td><td><code>map-fixed</code></td><td></td><td></td></tr>
|
||||
<tr><td>848</td><td><strong><code class="code-no-wrap">backup_configuration</code></strong></td><td><code>map-fixed</code></td><td></td><td></td></tr>
|
||||
<tr><td>849</td><td><strong><code class="code-no-wrap">autoscale_configuration</code></strong></td><td><code>map-fixed</code></td><td></td><td></td></tr>
|
||||
<tr><td>850</td><td><strong><code class="code-no-wrap">clickhouse_files_configuration</code></strong></td><td><code>array-map-fixed</code></td><td>Формат:<br/> - path: somethings3.xml<br/> xmlConfig: '&lt;clickhouse&gt;......&lt;/clickhouse&gt;'</td><td></td></tr>
|
||||
</tbody></table>
|
||||
@@ -0,0 +1,29 @@
|
||||
# Resource nubes_clickhouse_user
|
||||
|
||||
Service: `nubes_clickhouse` (ID: 120)
|
||||
|
||||
[ClickHouse (основной)](clickhouse.md) | [Operations](clickhouse_ops.md) | [User](clickhouse_user.md) | [Example](clickhouse_user_example.md)
|
||||
|
||||
## Create params
|
||||
|
||||
**Обязательные параметры**
|
||||
|
||||
None.
|
||||
|
||||
**Параметры со значением по умолчанию**
|
||||
|
||||
<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>596</td><td><strong><code class="code-no-wrap">username</code></strong></td><td><code>string</code></td><td><code>myusername</code></td><td>Пример: `myusername`</td><td>regex=^(?![0-9_])[a-zA-Z_][a-zA-Z0-9_]{0,62}$; maxlength=62; minlength=2</td></tr>
|
||||
<tr><td>598</td><td><strong><code class="code-no-wrap">db_name</code></strong></td><td><code>array-map-fixed</code></td><td><code>[{}]</code></td><td></td><td></td></tr>
|
||||
<tr><td>599</td><td><strong><code class="code-no-wrap">access_hosts</code></strong></td><td><code>string</code></td><td><code>::/0</code></td><td>Пример: `::/0`</td><td></td></tr>
|
||||
</tbody></table>
|
||||
|
||||
## Delete 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>601</td><td><strong><code class="code-no-wrap">username</code></strong></td><td></td><td>Имя пользователя, созданное через операцию `create_user`</td><td></td></tr>
|
||||
</tbody></table>
|
||||
@@ -0,0 +1,35 @@
|
||||
# Resource nubes_clickhouse_user — Example
|
||||
|
||||
Service: `nubes_clickhouse` (ID: 120)
|
||||
|
||||
[ClickHouse (основной)](clickhouse.md) | [Operations](clickhouse_ops.md) | [User](clickhouse_user.md) | [Example](clickhouse_user_example.md)
|
||||
|
||||
## Copy-ready manifest (`clickhouse_user_main.tf`)
|
||||
|
||||
```hcl
|
||||
terraform {
|
||||
required_providers {
|
||||
nubes = {
|
||||
source = "terra.k8c.ru/nubes/nubes"
|
||||
version = "5.0.57"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
provider "nubes" {
|
||||
api_token = "token_***"
|
||||
api_endpoint = "https://deck-api.ngcloud.ru/api/v1/index.cfm"
|
||||
}
|
||||
|
||||
# Родительский ресурс — nubes_clickhouse должен быть создан заранее
|
||||
# resource "nubes_clickhouse" "baza" { ... }
|
||||
|
||||
resource "nubes_clickhouse_user" "example" {
|
||||
clickhouse_id = nubes_clickhouse.baza.id
|
||||
|
||||
# Параметры со значением по умолчанию
|
||||
username = "myusername" # Пример: `myusername`
|
||||
db_name = [{}]
|
||||
access_hosts = "::/0" # Пример: `::/0`
|
||||
}
|
||||
```
|
||||
@@ -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 = "5.0.57"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
# Токен доступа 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,14 @@
|
||||
# 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)
|
||||
- `reconcile`
|
||||
@@ -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=109</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 = "5.0.57"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
# Токен доступа 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,50 @@
|
||||
# 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 = "5.0.57"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
# Токен доступа 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" # Платформа для развертывания
|
||||
arr = "test"
|
||||
|
||||
# Параметры, имеющие значение по умолчанию, если не меняете - эти параметры не обязательно прописывать в манифесте
|
||||
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,17 @@
|
||||
# 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)
|
||||
- `reconcile`
|
||||
- `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>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>
|
||||
<tr><td>863</td><td><strong><code class="code-no-wrap">arr</code></strong></td><td><code>array</code></td><td></td><td>value_list=test, 2, val1</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: Web-сервер с фреймворком 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">
|
||||
# Инструкция по развертыванию Web-сервер с фреймворком Flask через платформу<br/><br/>## 1. Общая информация<br/><br/>Сервис **Web-сервер с фреймворком Flask** предназначен для развертывания веб-приложений на базе Flask.<br/><br/>### Доступные операции<br/><br/>create — включить сервис, развернуть веб-приложение с указанными параметрами.<br/>delete — удалить сервис, только после suspend.<br/>modify — изменить настройки сервиса и переразвернуть.<br/>suspend — выключить веб-приложение, остановить обслуживание.<br/>resume — включить веб-приложение после suspend.<br/><br/>---<br/><br/>## 2. Параметры развертывания<br/><br/>Параметры входных данных операции **create**:<br/><br/>### Имя домена<br/>Описание: доменное имя для доступа к веб-приложению. Если указан FQDN, происходит проверка DNS на валидность А-записи. А-запись должна указывать на балансировщик ресурсной платформы. Если указано имя в рамках одного октета, оно будет добавлено в публичную DNS-зону.<br/>Пример значения: строка, допустимые FQDN или имя в одном октете. Пример: example.com или myapp.<br/><br/>### Платформа для развертывания<br/>Описание: кластер Kubernetes, в котором будет развернуто приложение.<br/>Пример значения: идентификатор кластера Kubernetes.<br/><br/>### Квота ядра пода<br/>Описание: количество CPU, выделяемое на под, в Milicores.<br/>Пример значения: целое число, например 500 для 0.5 ядра.<br/><br/>### Квота памяти пода<br/>Описание: количество памяти, выделяемое на под, в Megabytes.<br/>Пример значения: целое число, например 512 для 512 MB.<br/><br/>### Кол-во реплик пода<br/>Описание: количество инстансов пода для масштабирования.<br/>Пример значения: целое число, шт, например 2.<br/><br/>### URL Проекта (gitpath)<br/>Описание: полный HTTPS путь до проекта в Git-репозитории.<br/>Пример значения: URL в формате https://github.com/myuser/myproject.git. Доступ к репозиторию должен быть публичным.<br/><br/>### URL HealthCheck<br/>Описание: путь для проверки здоровья приложения внутри пода.<br/>Пример значения: строка, путь, например /api/v1/health.<br/><br/>### Переменные окружения пода<br/>Описание: структура данных, которая будет передана как переменные окружения в под.<br/>Пример значения: ключ-значение, например {"ENV": "production"}.<br/><br/>---<br/><br/>## 3. Рекомендованные характеристики<br/><br/>### Тестовое окружение<br/>- Квота ядра пода: 300m (0.3 ядра)<br/>- Квота памяти пода: 256 MB<br/>- Кол-во реплик пода: 1<br/><br/>### Промышленное окружение<br/>- Квота ядра пода: от 1000m (1 ядро) в зависимости от нагрузки<br/>- Квота памяти пода: от 1024 MB (1 GB) с учетом потребностей приложения<br/>- Кол-во реплик пода: от 2 для обеспечения отказоустойчивости<br/><br/>---<br/><br/>## 4. Выходные параметры<br/>Операция create не возвращает явных выходных параметров. Успешное выполнение операции приводит к развертыванию сервиса, доступного по указанному домену.<br/><br/>---<br/><br/>## 5. Дополнительная информация<br/>- В корне проекта должен находиться файл requirements.txt со списком зависимостей Python.<br/>- Исходный код веб-приложения должен располагаться в директории site.<br/>- Запуск веб-сервера осуществляется командой python app.py.<br/>- Используется версия Python: python:3.12-slim.<br/>- Git-репозиторий должен быть публично доступен для платформы.<br/>- Операция delete возможна только после suspend.<br/>- Операция modify приводит к переразвертыванию с новыми параметрами.
|
||||
</div>
|
||||
@@ -0,0 +1,49 @@
|
||||
# Resource nubes_flask
|
||||
|
||||
Service ID: `89`
|
||||
|
||||
Service Name: Web-сервер с фреймворком 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 = "5.0.57"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
# Токен доступа api_token к Nubes API — замените на реальный.
|
||||
provider "nubes" {
|
||||
api_token = "token_***"
|
||||
api_endpoint = "https://deck-api.ngcloud.ru/api/v1/index.cfm"
|
||||
}
|
||||
resource "nubes_flask" "baza" {
|
||||
startup_configuration = "TODO"
|
||||
cluster_configuration = "TODO"
|
||||
access_configuration = "TODO"
|
||||
app_configuration = "TODO"
|
||||
|
||||
# Параметры, имеющие значение по умолчанию, если не меняете - эти параметры не обязательно прописывать в манифесте
|
||||
json_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,17 @@
|
||||
# Resource nubes_flask
|
||||
|
||||
Service ID: `89`
|
||||
|
||||
Service Name: Web-сервер с фреймворком 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)
|
||||
- `reconcile`
|
||||
- `redeploy`
|
||||
- `resume`
|
||||
- `suspend`
|
||||
@@ -0,0 +1,18 @@
|
||||
# Resource nubes_flask
|
||||
|
||||
Service ID: `89`
|
||||
|
||||
Service Name: Web-сервер с фреймворком 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: Web-сервер с фреймворком 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,39 @@
|
||||
# Resource nubes_flask
|
||||
|
||||
Service ID: `89`
|
||||
|
||||
Service Name: Web-сервер с фреймворком 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>1037</td><td><strong><code class="code-no-wrap">startup_configuration</code></strong></td><td><code>map-fixed</code></td><td></td><td></td></tr>
|
||||
<tr><td>1038</td><td><strong><code class="code-no-wrap">cluster_configuration</code></strong></td><td><code>map-fixed</code></td><td></td><td></td></tr>
|
||||
<tr><td>1039</td><td><strong><code class="code-no-wrap">access_configuration</code></strong></td><td><code>map-fixed</code></td><td></td><td></td></tr>
|
||||
<tr><td>1040</td><td><strong><code class="code-no-wrap">app_configuration</code></strong></td><td><code>map-fixed</code></td><td></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>1041</td><td><strong><code class="code-no-wrap">json_env</code></strong></td><td><code>map</code></td><td><code>{}</code></td><td></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_flask
|
||||
|
||||
Service ID: `89`
|
||||
|
||||
Service Name: Web-сервер с фреймворком 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>1042</td><td><strong><code class="code-no-wrap">cluster_configuration</code></strong></td><td><code>map-fixed</code></td><td></td><td></td></tr>
|
||||
<tr><td>1043</td><td><strong><code class="code-no-wrap">app_configuration</code></strong></td><td><code>map-fixed</code></td><td></td><td></td></tr>
|
||||
<tr><td>1044</td><td><strong><code class="code-no-wrap">json_env</code></strong></td><td><code>map</code></td><td></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/><br/>---<br/>## 1. Общая информация<br/>Gitea — это лёгкий, быстрый и самодостаточный сервис хостинга Git-репозиториев с веб-интерфейсом.<br/>Позволяет создавать и управлять репозиториями, организациями, командами, а также настраивать CI/CD через интеграции.<br/>Развёртывание полностью автоматизировано платформой.<br/><br/>## Доступные операции<br/>- **create** — Создание сервиса Gitea<br/>- **delete** — Удаление сервиса Gitea<br/>- **modify** — Модификация сервиса Gitea<br/>- **suspend** — Остановка сервиса Gitea<br/>- **resume** — Запуск сервиса Gitea<br/><br/>---<br/>## 2. Параметры развертывания<br/>Ниже перечислены параметры, которые необходимо указать при создании ресурса Gitea:<br/><br/>* **Платформа для развертывания:**<br/> Платформа для развертывания (среда, в которой будет развёрнут сервис). Пример: `k8s-3.ext.nubes.ru`.<br/><br/>* **Количество узлов в сети:**<br/> Количество реплик подов Gitea. Пример: `1`<br/><br/>* **Квота (megabyte) памяти пода:**<br/> Квота памяти пода в мегабайтах. Пример: `1024`<br/><br/>* **Квота (millicore) ядра пода:**<br/> Квота CPU пода в миликорах (1000 mCPU = 1 vCPU). Пример: `500`<br/><br/>* **Размер (gigabyte) диска для базы данных:**<br/> Размер PVC для хранения репозиториев и данных Gitea в гигабайтах. Пример: `10`<br/><br/>* **FQDN / Домен:**<br/> Доменное имя, по которому будет доступен сервис. Пример: `git.example.com`<br/><br/>* **Инстанс услуги PostgreSQL:**<br/> UUID услуги k8sPgsql, в которой будет создана база данных `gitea` и пользователь `techgitea`.<br/><br/>* **Дополнительные параметры сервера (iniServerParams):**<br/> JSON-объект с дополнительными параметрами секции `[server]` в `app.ini`. Пример:<br/> ```json<br/> {"MAX_CONTENT_LENGTH": "524288000"}<br/> ```<br/><br/>* **Дополнительные annotations для Ingress (ingressExtraAnnotations):**<br/> JSON-объект с дополнительными annotations для Ingress-контроллера. Пример:<br/> ```json<br/> {"nginx.ingress.kubernetes.io/proxy-body-size": "500m"}<br/> ```<br/><br/>---<br/>## 3. Особенности подключения и работы с репозиториями<br/><br/>### 3.1. Доступ только по HTTPS<br/>Сервис развёртывается с **rootless-образом** Gitea. SSH-сервер внутри и он **доступен только внутри кластера Kubernetes**.<br/><br/>**Внешний доступ к репозиториям осуществляется исключительно по HTTPS через Ingress.**<br/><br/>```bash<br/># Пример клонирования<br/>https://<домен>/<пользователь>/<репозиторий>.git<br/>```<br/><br/>### 3.2. Настройка git для передачи логина и пароля<br/>Для работы с приватными репозиториями через HTTPS необходимо передать учётные данные. Рекомендуется использовать один из следующих способов:<br/><br/>**Встроить креды в URL remote**<br/>```bash<br/>git remote set-url origin https://<логин>:<пароль>@<домен>/<пользователь>/<репозиторий>.git<br/>```<br/>> **Важно:** Логин и пароль администратора создаются автоматически при развертывании и хранятся в Vault.<br/><br/>### 3.3. Работа с большими файлами<br/>По умолчанию `MAX_CONTENT_LENGTH` установлен в **500 МБ**, а Ingress пропускает pack-файлы до **500 МБ**.<br/><br/>Если необходимо запушить файлы близкие к лимиту, увеличьте HTTP-буфер git на стороне клиента:<br/>```bash<br/>git config http.postBuffer 524288000<br/>```<br/><br/>Для файлов **более 500 МБ** рекомендуется использовать **Git LFS**.<br/><br/>---<br/>## 4. Выходные параметры<br/>После успешного развертывания ресурса Gitea платформа возвращает ряд параметров.<br/><br/>Ключевым из них является:<br/><br/>**connectionUrl**<br/>Это внешний URL для доступа к веб-интерфейсу и Git-репозиториям по HTTPS. Пример:<br/>```<br/>https://git.example.com<br/>```<br/><br/>**internalConnect**<br/>Внутренний эндпоинт для подключения к PostgreSQL из других сервисов внутри кластера.<br/><br/>---<br/>## 5. Дополнительная информация<br/>- База данных `gitea` и пользователь `techgitea` создаются автоматически в указанной услуге PostgreSQL.<br/>- DNS-запись и TLS-сертификат (Let's Encrypt) настраиваются автоматически на основе указанного домена.<br/>- Для изменения параметров сервера Gitea (`app.ini`) используйте операцию **modify** с полем `iniServerParams`.<br/>- Для добавления дополнительных Ingress-annotations используйте операцию **modify** с полем `ingressExtraAnnotations`.<br/>---
|
||||
</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 = "5.0.57"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
# Токен доступа 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 = "5.0.57"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
# Токен доступа 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,42 @@
|
||||
# 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>
|
||||
<tr><td>818</td><td><strong><code class="code-no-wrap">ingress_extra_annotations</code></strong></td><td><code>map</code></td><td></td><td></td></tr>
|
||||
<tr><td>821</td><td><strong><code class="code-no-wrap">ini_server_params</code></strong></td><td><code>map</code></td><td></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>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,20 @@
|
||||
# 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>
|
||||
<tr><td>819</td><td><strong><code class="code-no-wrap">ingress_extra_annotations</code></strong></td><td><code>map</code></td><td>Примеры:<br/> - `nginx.ingress.kubernetes.io/proxy-body-size: 500m` (Размер пакета)<br/> - `nginx.ingress.kubernetes.io/proxy-read-timeout: &quot;600&quot;` (Время ожидания при чтении)<br/> - `nginx.ingress.kubernetes.io/proxy-send-timeout: &quot;600&quot;` (Время ожидания отправке)</td><td></td></tr>
|
||||
<tr><td>820</td><td><strong><code class="code-no-wrap">ini_server_params</code></strong></td><td><code>map</code></td><td>Примеры:<br/> - `MAX_CONTENT_LENGTH: 524288000(~500мб)` (Размер пакета в байтах)</td><td></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,50 @@
|
||||
# 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 = "5.0.57"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
# Токен доступа 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
|
||||
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,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)
|
||||
|
||||
## Operations
|
||||
|
||||
- `create` — Создание кластера. Параметры: [Create params](harbor_params_create.md)
|
||||
- `delete` — DEV-Ветка удаления Harbor
|
||||
- `modify` — Изменение кластера. Параметры: [Modify params](harbor_params_modify.md)
|
||||
@@ -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,28 @@
|
||||
# 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>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=500; 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=512; 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,17 @@
|
||||
# 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
|
||||
|
||||
<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>822</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>823</td><td><strong><code class="code-no-wrap">resource_cpu</code></strong></td><td><code>integer</code></td><td></td><td>minvalue=500; maxvalue=4000</td></tr>
|
||||
<tr><td>824</td><td><strong><code class="code-no-wrap">resource_memory</code></strong></td><td><code>integer</code></td><td></td><td>minvalue=512; maxvalue=8192</td></tr>
|
||||
</tbody></table>
|
||||
@@ -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 = "5.0.57"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
# Токен доступа 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
|
||||
ingress_annotations = {} # Формат ключ/значение Поддерживает пока простые аннотации
|
||||
}
|
||||
```
|
||||
|
||||
## 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,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)
|
||||
|
||||
## Operations
|
||||
|
||||
- `create` — Создание кластера. Параметры: [Create params](http_params_create.md)
|
||||
- `delete`
|
||||
- `modify` — Изменение кластера. Параметры: [Modify params](http_params_modify.md)
|
||||
- `reconcile`
|
||||
- `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,42 @@
|
||||
# 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>
|
||||
<tr><td>241</td><td><strong><code class="code-no-wrap">json_env</code></strong></td><td><code>map</code></td><td>Массив переменных, будут переданы в env приложения</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>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>782</td><td><strong><code class="code-no-wrap">ingress_annotations</code></strong></td><td><code>map</code></td><td><code>{}</code></td><td>Формат ключ/значение<br/>Поддерживает пока простые аннотации</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,47 @@
|
||||
# Ресурсы провайдера
|
||||
|
||||
| ID | Ресурс | Описание |
|
||||
|-----|--------|----------|
|
||||
| 1 | [nubes_dummy](dummy.md) | Болванка |
|
||||
| 2 | [nubes_template](template.md) | Темплейт k8s |
|
||||
| 12 | [nubes_s3](s3.md) | S3 Object Storage |
|
||||
| 13 | [nubes_s3bucket](s3bucket.md) | S3 бакет |
|
||||
| 19 | [nubes_vc_org](vc_org.md) | Организация в Cloud Director |
|
||||
| 20 | [nubes_vc_org_saas](vc_org_saas.md) | Организация [DEPRECATED] |
|
||||
| 21 | [nubes_vc_vdc](vc_vdc.md) | Виртуальный датацентр (vDC) |
|
||||
| 22 | [nubes_vc_nsxt](vc_nsxt.md) | Сетевой шлюз периметра (Edge) |
|
||||
| 23 | [nubes_vc_vm](vc_vm.md) | VM в Cloud Director (старый формат) (vc_vm) |
|
||||
| 25 | [nubes_vcexternalip](vcexternalip.md) | Публичные IP адреса |
|
||||
| 26 | [nubes_vapp](vapp.md) | Виртуальный каталог ВМ (vApp) |
|
||||
| 27 | [nubes_vc_vm_v2](vc_vm_v2.md) | VM в Cloud Director (vc_vmV2) |
|
||||
| 28 | [nubes_vc_vm_v3](vc_vm_v3.md) | Виртуальная машина |
|
||||
| 29 | [nubes_vc_vdc_group](vc_vdc_group.md) | Группа датацентров |
|
||||
| 32 | [nubes_vmpostgre](vmpostgre.md) | vc_vm_postgresql_std |
|
||||
| 50 | [nubes_nextcloud](nextcloud.md) | Nextcloud |
|
||||
| 81 | [nubes_superset](superset.md) | Apache Superset |
|
||||
| 82 | [nubes_harbor](harbor.md) | Container Registry |
|
||||
| 88 | [nubes_k8s_ziti_controller](k8s_ziti_controller.md) | k8sZitiController |
|
||||
| 89 | [nubes_flask](flask.md) | Web-сервер с фреймворком Flask |
|
||||
| 90 | [nubes_postgres](postgres.md) | PostgreSQL |
|
||||
| 91 | [nubes_redis](redis.md) | Redis |
|
||||
| 92 | [nubes_mongodb](mongodb.md) | MongoDB |
|
||||
| 93 | [nubes_rabbitmq](rabbitmq.md) | RabbitMQ |
|
||||
| 94 | [nubes_lucee](lucee.md) | Lucee |
|
||||
| 95 | [nubes_nodejs](nodejs.md) | NodeJS |
|
||||
| 96 | [nubes_pgadmin](pgadmin.md) | pgAdmin |
|
||||
| 97 | [nubes_nodered](nodered.md) | NodeRed |
|
||||
| 98 | [nubes_http](http.md) | Простой HTTP контейнер |
|
||||
| 99 | [nubes_gitea](gitea.md) | Gitea |
|
||||
| 100 | [nubes_openwhisk](openwhisk.md) | Serverless Openwhisk (openwhisk_tenant) |
|
||||
| 110 | [nubes_dnszone](dnszone.md) | DNS зона |
|
||||
| 111 | [nubes_dnsrecord](dnsrecord.md) | DNS запись |
|
||||
| 112 | [nubes_tenant](tenant.md) | Тенант в Grafana |
|
||||
| 113 | [nubes_vc_complex](vc_complex.md) | Быстрый старт |
|
||||
| 114 | [nubes_gitea_complex](gitea_complex.md) | Комплексная услуга по созданию gitea |
|
||||
| 115 | [nubes_mariadb](mariadb.md) | Mariadb |
|
||||
| 116 | [nubes_kafka](kafka.md) | ApacheKafka |
|
||||
| 117 | [nubes_nifi](nifi.md) | Nifi |
|
||||
| 119 | [nubes_akhq](akhq.md) | Akhq |
|
||||
| 120 | [nubes_clickhouse](clickhouse.md) | ClickHouse |
|
||||
| 149 | [nubes_valo_tenant](valo_tenant.md) | VALO Cloud |
|
||||
| 150 | [nubes_k8s_sthutrval_cluster](k8s_sthutrval_cluster.md) | Kubernetes кластер Штурвал |
|
||||
@@ -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,49 @@
|
||||
# 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 = "5.0.57"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
# Токен доступа 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" {
|
||||
startup_configuration = "TODO"
|
||||
control_plane_configuration = "TODO"
|
||||
access_configuration = "TODO"
|
||||
cluster_configuration = "TODO"
|
||||
|
||||
# Параметры, имеющие значение по умолчанию, если не меняете - эти параметры не обязательно прописывать в манифесте
|
||||
worker_configuration = [{}]
|
||||
}
|
||||
```
|
||||
|
||||
## 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,18 @@
|
||||
# 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)
|
||||
- `create_user` — . См. [nubes_k8s_sthutrval_cluster_user](k8s_sthutrval_cluster_user.md)
|
||||
- `delete`
|
||||
- `delete_user` — . См. [nubes_k8s_sthutrval_cluster_user](k8s_sthutrval_cluster_user.md)
|
||||
- `modify` — Изменение кластера. Параметры: [Modify params](k8s_sthutrval_cluster_params_modify.md)
|
||||
- `reconcile`
|
||||
- `resume`
|
||||
- `suspend`
|
||||
@@ -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,39 @@
|
||||
# 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>750</td><td><strong><code class="code-no-wrap">startup_configuration</code></strong></td><td><code>map-fixed</code></td><td></td><td></td></tr>
|
||||
<tr><td>751</td><td><strong><code class="code-no-wrap">control_plane_configuration</code></strong></td><td><code>map-fixed</code></td><td></td><td></td></tr>
|
||||
<tr><td>753</td><td><strong><code class="code-no-wrap">access_configuration</code></strong></td><td><code>map-fixed</code></td><td></td><td></td></tr>
|
||||
<tr><td>755</td><td><strong><code class="code-no-wrap">cluster_configuration</code></strong></td><td><code>map-fixed</code></td><td></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>752</td><td><strong><code class="code-no-wrap">worker_configuration</code></strong></td><td><code>array-map-fixed</code></td><td><code>[{}]</code></td><td></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,18 @@
|
||||
# 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>756</td><td><strong><code class="code-no-wrap">cluster_configuration</code></strong></td><td><code>map-fixed</code></td><td></td><td></td></tr>
|
||||
<tr><td>757</td><td><strong><code class="code-no-wrap">control_plane_configuration</code></strong></td><td><code>map-fixed</code></td><td></td><td></td></tr>
|
||||
<tr><td>758</td><td><strong><code class="code-no-wrap">worker_configuration</code></strong></td><td><code>array-map-fixed</code></td><td></td><td></td></tr>
|
||||
<tr><td>759</td><td><strong><code class="code-no-wrap">access_configuration</code></strong></td><td><code>map-fixed</code></td><td></td><td></td></tr>
|
||||
</tbody></table>
|
||||
@@ -0,0 +1,27 @@
|
||||
# Resource nubes_k8s_sthutrval_cluster_user
|
||||
|
||||
Service: `nubes_k8s_sthutrval_cluster` (ID: 150)
|
||||
|
||||
[Kubernetes кластер Штурвал (основной)](k8s_sthutrval_cluster.md) | [Operations](k8s_sthutrval_cluster_ops.md) | [User](k8s_sthutrval_cluster_user.md) | [Example](k8s_sthutrval_cluster_user_example.md)
|
||||
|
||||
## Create params
|
||||
|
||||
**Обязательные параметры**
|
||||
|
||||
None.
|
||||
|
||||
**Параметры со значением по умолчанию**
|
||||
|
||||
<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>869</td><td><strong><code class="code-no-wrap">admins</code></strong></td><td><code>array-map-fixed</code></td><td><code>[{}]</code></td><td></td><td></td></tr>
|
||||
</tbody></table>
|
||||
|
||||
## Delete 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>870</td><td><strong><code class="code-no-wrap">admins</code></strong></td><td><code>array-map-fixed</code></td><td></td><td></td></tr>
|
||||
</tbody></table>
|
||||
@@ -0,0 +1,33 @@
|
||||
# Resource nubes_k8s_sthutrval_cluster_user — Example
|
||||
|
||||
Service: `nubes_k8s_sthutrval_cluster` (ID: 150)
|
||||
|
||||
[Kubernetes кластер Штурвал (основной)](k8s_sthutrval_cluster.md) | [Operations](k8s_sthutrval_cluster_ops.md) | [User](k8s_sthutrval_cluster_user.md) | [Example](k8s_sthutrval_cluster_user_example.md)
|
||||
|
||||
## Copy-ready manifest (`k8s_sthutrval_cluster_user_main.tf`)
|
||||
|
||||
```hcl
|
||||
terraform {
|
||||
required_providers {
|
||||
nubes = {
|
||||
source = "terra.k8c.ru/nubes/nubes"
|
||||
version = "5.0.57"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
provider "nubes" {
|
||||
api_token = "token_***"
|
||||
api_endpoint = "https://deck-api.ngcloud.ru/api/v1/index.cfm"
|
||||
}
|
||||
|
||||
# Родительский ресурс — nubes_k8s_sthutrval_cluster должен быть создан заранее
|
||||
# resource "nubes_k8s_sthutrval_cluster" "baza" { ... }
|
||||
|
||||
resource "nubes_k8s_sthutrval_cluster_user" "example" {
|
||||
k8s_sthutrval_cluster_id = nubes_k8s_sthutrval_cluster.baza.id
|
||||
|
||||
# Параметры со значением по умолчанию
|
||||
admins = [{}]
|
||||
}
|
||||
```
|
||||
@@ -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 = "5.0.57"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
# Токен доступа 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">
|
||||
# Инструкция по развертыванию Организация в Cloud Director через платформу<br/><br/>## 1. Общая информация<br/><br/>Сервис **Организация в Cloud Director** предназначен для управления изолированными организационными единицами (тенантами) внутри инфраструктуры Cloud Director. Он обеспечивает создание, модификацию и администрирование организаций, предоставление им облачных ресурсов, а также контроль уровня доступа. Сервис используется для организации рабочих окружений потребителей, управления жизненным циклом организаций и их сетевой инфраструктурой.<br/><br/>### Доступные операции<br/><br/>**create** — Создание новой организации с заданными характеристиками и типом доступа.<br/>**delete** — Удаление организации после перехода в состояние suspend; приводит к удалению всех связанных сущностей.<br/>**modify** — Изменение параметров внутри организации (на текущий момент поддерживается изменение ipSpaces).<br/>**suspend** — Заморозка организации, ограничение возможности изменения и добавления сущностей.<br/>**resume** — Разморозка организации, восстановление функций управления.<br/><br/>---<br/><br/>## 2. Параметры развертывания<br/><br/>Параметры входных данных операции **create**:<br/><br/>### Платформа для развертывания<br/>Описание: платформа, на которой будет создана организация.<br/>Пример значения: `ngcloud.ru`.<br/><br/>### Тип организации<br/>Описание: тип создаваемой организации.<br/>Варианты:<br/>- `iaas` — организация с прямым доступом к облаку и авторизацией через Keycloak.<br/>- `saas` — организация под управлением Nubes, без прямого доступа к облаку.<br/><br/>---<br/><br/>## 3. Рекомендованные характеристики<br/><br/>### Тестовое окружение<br/>- Тип организации: `iaas` для обеспечения полного доступа к облачным ресурсам и самостоятельного управления.<br/><br/>### Промышленное окружение<br/>- Тип организации: `saas` (упрощённая модель использования).<br/><br/>---<br/><br/>## 4. Выходные параметры<br/><br/>Услуга предоставляет следующие выходные параметры (формируются в процессе операций):<br/><br/>### Идентификатор организации<br/>Уникальный идентификатор созданной организации. Используется для всех дальнейших API-операций.<br/><br/>### Статус организации<br/>Отражает текущее состояние: active, suspended, modifying, deleting.<br/><br/>### Параметры сети<br/>Выходные данные при наличии ipSpaces: список выделенных внешних IP, имя ip_space, количество IP.<br/><br/>---<br/><br/>## 5. Дополнительная информация<br/><br/>- Для конфигурации внешних IP внутри организации необходимо предварительно создать:<br/>-- хотя бы один **Виртуальный датацентр (VDC)**;<br/>-- хотя бы один **Сетевой шлюз периметра (Edge Gateway)**, привязанный к этой организации.<br/>- Удаление организации возможно только через 14 дней после перевода в состояние suspend.<br/>- Удаление организации приводит к удалению всех связанных сущностей: VDC, Edge Gateway, пулов IP, сетей, ВМок и иных объектов.<br/>- Операция suspend не останавливает виртуальные машины, но блокирует любые изменения инфраструктуры внутри организации.<br/>- Для iaas-организаций доступ осуществляется через Keycloak.<br/><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 = "5.0.57"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
# Токен доступа 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` — # Инструкция по управлению топиками Apache Kafka через платформу ## 1. Общая информация --- Топик — это основная сущность в Apache Kafka, предназначенная для приёма сообщений от продюсеров и передачи их консюмерам. Платформа позволяет создавать, удалять и изменять параметры топиков без прямого доступа к брокерам, обеспечивая удобное управление через интерфейс или API. --- ## Доступные операции - **create_topic** — Создание топика - **modify_topic** — Модификация топика - **delete_topic** — Удаление топика --- ## 2. Параметры создания топика Ниже перечислены параметры, которые необходимо указать при создании нового топика: * **Имя топика** Название топика. Должно быть уникальным в пределах кластера. Пример: `orders-events`. * **Партиции** Количество партиций топика. Рекомендуется выбирать с учётом уровня параллелизма потребителей и предполагаемой нагрузки. Пример: `6`. Здесь важно рассказать о том как происходит расчет оптимального количества Обратите внимание: уменьшить количество партиций после создания невозможно, поэтому лучше закладывать небольшой запас на будущий рост нагрузки. * **Реплики** Количество реплик для каждой партиции. Обычно равно количеству доступных брокеров или меньше. Пример: `3`. --- ## 4. Параметры модификации топика Для уже существующих топиков можно изменять параметры. Все параметры являются опциональными: * **Имя топика** Название топика. Пример: `orders-events`. * **Партиции** Новое количество партиций. Пример: `12`. * **Реплики** Новое количество реплик. Пример: `2`. --- ## 5. Рекомендации * Планируйте количество партиций с запасом — уменьшение их числа невозможно. * Количество реплик должно соответствовать требуемому уровню отказоустойчивости, но не превышать количество брокеров. * Изменение параметров топика в рабочем окружении может временно влиять на производительность. Рекомендуется проводить крупные изменения в периоды минимальной нагрузки. ---. См. [nubes_kafka_topic](kafka_topic.md)
|
||||
- `create_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 или подсетям с помощью параметра **Разрешённые хосты**. * После изменения прав или групп пользователя рекомендуется проверить подключение и доступ к топикам. ---. См. [nubes_kafka_user](kafka_user.md)
|
||||
- `delete`
|
||||
- `delete_topic` — . См. [nubes_kafka_topic](kafka_topic.md)
|
||||
- `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 или подсетям с помощью параметра **Разрешённые хосты**. * После изменения прав или групп пользователя рекомендуется проверить подключение и доступ к топикам. ---. См. [nubes_kafka_user](kafka_user.md)
|
||||
- `modify` — Изменение кластера. Параметры: [Modify params](kafka_params_modify.md)
|
||||
- `modify_topic` — # Инструкция по управлению топиками Apache Kafka через платформу ## 1. Общая информация --- Топик — это основная сущность в Apache Kafka, предназначенная для приёма сообщений от продюсеров и передачи их консюмерам. Платформа позволяет создавать, удалять и изменять параметры топиков без прямого доступа к брокерам, обеспечивая удобное управление через интерфейс или API. --- ## Доступные операции - **create_topic** — Создание топика - **modify_topic** — Модификация топика - **delete_topic** — Удаление топика --- ## 2. Параметры создания топика Ниже перечислены параметры, которые необходимо указать при создании нового топика: * **Имя топика** Название топика. Должно быть уникальным в пределах кластера. Пример: `orders-events`. * **Партиции** Количество партиций топика. Рекомендуется выбирать с учётом уровня параллелизма потребителей и предполагаемой нагрузки. Пример: `6`. Здесь важно рассказать о том как происходит расчет оптимального количества Обратите внимание: уменьшить количество партиций после создания невозможно, поэтому лучше закладывать небольшой запас на будущий рост нагрузки. * **Реплики** Количество реплик для каждой партиции. Обычно равно количеству доступных брокеров или меньше. Пример: `3`. --- ## 4. Параметры модификации топика Для уже существующих топиков можно изменять параметры. Все параметры являются опциональными: * **Имя топика** Название топика. Пример: `orders-events`. * **Партиции** Новое количество партиций. Пример: `12`. * **Реплики** Новое количество реплик. Пример: `2`. --- ## 5. Рекомендации * Планируйте количество партиций с запасом — уменьшение их числа невозможно. * Количество реплик должно соответствовать требуемому уровню отказоустойчивости, но не превышать количество брокеров. * Изменение параметров топика в рабочем окружении может временно влиять на производительность. Рекомендуется проводить крупные изменения в периоды минимальной нагрузки. ---. См. [nubes_kafka_topic](kafka_topic.md)
|
||||
- `modify_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 или подсетям с помощью параметра **Разрешённые хосты**. * После изменения прав или групп пользователя рекомендуется проверить подключение и доступ к топикам. ---. См. [nubes_kafka_user](kafka_user.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,35 @@
|
||||
# Resource nubes_kafka_topic
|
||||
|
||||
Service: `nubes_kafka` (ID: 116)
|
||||
|
||||
[ApacheKafka (основной)](kafka.md) | [Operations](kafka_ops.md) | [Topic](kafka_topic.md) | [Example](kafka_topic_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>523</td><td><strong><code class="code-no-wrap">name_topic</code></strong></td><td><code>string</code></td><td>Пример: `orders-events`</td><td></td></tr>
|
||||
<tr><td>524</td><td><strong><code class="code-no-wrap">partitions</code></strong></td><td><code>integer</code></td><td>Число партиций можно увеличить, но уменьшить их нельзя.</td><td></td></tr>
|
||||
<tr><td>525</td><td><strong><code class="code-no-wrap">replicas</code></strong></td><td><code>integer</code></td><td>Количество реплик не может привышать количество реплик брокера</td><td></td></tr>
|
||||
</tbody></table>
|
||||
|
||||
## 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>526</td><td><strong><code class="code-no-wrap">name_topic</code></strong></td><td><code>string</code></td><td>Пример: `orders-events`</td><td></td></tr>
|
||||
<tr><td>527</td><td><strong><code class="code-no-wrap">partitions</code></strong></td><td></td><td>Число партиций на кластер ≤ 100 × (число брокеров) × (фактор репликации). Пример `50`</td><td></td></tr>
|
||||
<tr><td>528</td><td><strong><code class="code-no-wrap">replicas</code></strong></td><td></td><td>Количество партиций ≤ (число брокеров). Пример `2`</td><td></td></tr>
|
||||
</tbody></table>
|
||||
|
||||
## Delete 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>529</td><td><strong><code class="code-no-wrap">name_topic</code></strong></td><td><code>string</code></td><td>Необходимо выбрать топик, который необходимо удалить</td><td></td></tr>
|
||||
</tbody></table>
|
||||
@@ -0,0 +1,33 @@
|
||||
# Resource nubes_kafka_topic — Example
|
||||
|
||||
Service: `nubes_kafka` (ID: 116)
|
||||
|
||||
[ApacheKafka (основной)](kafka.md) | [Operations](kafka_ops.md) | [Topic](kafka_topic.md) | [Example](kafka_topic_example.md)
|
||||
|
||||
## Copy-ready manifest (`kafka_topic_main.tf`)
|
||||
|
||||
```hcl
|
||||
terraform {
|
||||
required_providers {
|
||||
nubes = {
|
||||
source = "terra.k8c.ru/nubes/nubes"
|
||||
version = "5.0.57"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
provider "nubes" {
|
||||
api_token = "token_***"
|
||||
api_endpoint = "https://deck-api.ngcloud.ru/api/v1/index.cfm"
|
||||
}
|
||||
|
||||
# Родительский ресурс — nubes_kafka должен быть создан заранее
|
||||
# resource "nubes_kafka" "baza" { ... }
|
||||
|
||||
resource "nubes_kafka_topic" "example" {
|
||||
kafka_id = nubes_kafka.baza.id
|
||||
name_topic = "TODO" # Пример: `orders-events`
|
||||
partitions = 1 # Число партиций можно увеличить, но уменьшить их нельзя.
|
||||
replicas = 1 # Количество реплик не может привышать количество реплик брокера
|
||||
}
|
||||
```
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user