Files
tf_provider/universal_rebuild/resources_yaml/90_postgres.yaml
T

251 lines
16 KiB
YAML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
name: postgres
service_id: 90
service_display_name: PostgreSQL
service_short_name: postgres
service_man: '# Инструкция по развертыванию PostgreSQL через платформу<br/><br/>---<br/>## 1. Общая информация<br/><br/>PostgreSQL — это надёжная объектно-реляционная СУБД с открытым исходным кодом, поддерживающая расширенный набор функций, транзакции и хранение сложных типов данных. Развёртывание полностью автоматизировано платформой на базе Zalando Postgres Operator с использованием Kubernetes.<br/><br/>## Доступные операции<br/><br/>- **create** — Создание кластера<br/>- **delete** — Удаление кластера<br/>- **modify** — Модификация кластера<br/>- **suspend** — Остановка кластера<br/>- **resume** — Запуск кластера<br/>- **restart** — Перезапуск кластера<br/>- **recovery** — Восстановление из резервной копии<br/><br/>- **create_user** — Создание пользователя<br/>- **delete_user** — Удаление пользователя<br/><br/>- **create_database** — Создание базы данных<br/>- **delete_database** — Удаление базы данных<br/><br/><br/>---<br/>## 2. Параметры развертывания кластера<br/><br/>Ниже перечислены параметры, которые необходимо указать при создании ресурса PostgreSQL:<br/><br/>* **Платформа для развертывания:**<br/> Платформа для развертывания (среда, в которой будет развернут кластер). Пример: `k8s-3.ext.nubes.ru`.<br/><br/>* **Количество узлов в сети:**<br/> Количество инстансов (реплик) в кластере PostgreSQL. Пример: `2` (master + slave).<br/><br/>* **Квота (megabyte) памяти пода:**<br/> Квота памяти пода в мегабайтах. Пример: `2048`<br/><br/>* **Квота (millicore) ядра пода:**<br/> Квота CPU пода в миликорах (1000 mCPU = 1 vCPU). Пример: `1000`<br/><br/>* **Размер (gigabyte) диска для базы данных:**<br/> Размер диска для хранения данных в гигабайтах. Пример: `20`<br/><br/>* **Выделяет внешний IP для доступа к master:**<br/> Флаг, определяющий, нужно ли выделять внешний IP для доступа к master. Пример: `true` или `false`<br/><br/>* **Имя ipSpace для публикации внешнего IP master:**<br/> Если включен предыдущий параметр, то поле необходимо заполнить. Пример: `internet-no-antiddos-v1`<br/><br/>* **Выделяет внешний IP для доступа к slave:**<br/> Флаг для выделения внешнего IP для slave (реплики чтения). Работает, если slave присутствует в кластере.<br/><br/>* **Имя ipSpace для публикации внешнего IP slave:**<br/> Если включен параметр для slave, то поле необходимо заполнить.<br/><br/>* **UUID экземпляра услуги S3:**<br/> UUID экземпляра S3 для хранения резервных копий.<br/><br/>* **Версия PostgreSQL:**<br/> Версия PostgreSQL для развертывания. Пример: `16`<br/><br/>* **Расписание бэкапов (ext_BACKUP_SCHEDULE):**<br/> Необязательный. Cron-выражение для времени запуска бэкапов. По умолчанию: `0 0 * * *` (ежедневно в полночь).<br/><br/>* **Количество сохраняемых бэкапов (ext_BACKUP_NUM_TO_RETAIN):**<br/> Необязательный. Количество сохраняемых бэкапов. По умолчанию: `7`<br/><br/>* **PgPooler (master / slave):**<br/> Флаги включения PgBouncer для подключений на запись и чтение. При включении создаётся отдельный под.<br/><br/>* **Разрешить подключение без SSL (allowNoSSL):**<br/> По умолчанию подключение с sslmode=require. При `true` разрешается подключение без SSL.<br/><br/>* **Автоскейлинг PV (autoScale):**<br/> Включает автоскейлинг тома. Требует настройки autoScalePercentage, autoScaleTechWindow, autoScaleQuotaGb.<br/><br/>* **Дополнительные параметры PostgreSQL (jsonParameters):**<br/> JSON с переменными конфигурации PostgreSQL. Документация: https://www.postgresql.org/docs/current/runtime-config.html<br/><br/>---<br/>## 3. Выходные параметры<br/><br/>После успешного развертывания ресурса PostgreSQL платформа возвращает ряд параметров.<br/><br/>#### externalConnect<br/><br/>Внешние эндпоинты для подключения к кластеру:<br/>- **master** — для операций записи (host: `write.${namespace}`, port: 5432)<br/>- **slave** — для операций чтения (host: `read.${namespace}`, port: 5432)<br/><br/>Пример ответа платформы:<br/><br/>```json<br/>{<br/> &quot;slave&quot;: {<br/> &quot;ip&quot;: &quot;&quot;,<br/> &quot;fqdn&quot;: &quot;&quot;,<br/> &quot;uuid&quot;: &quot;&quot;,<br/> &quot;isExternal&quot;: false<br/> },<br/> &quot;master&quot;: {<br/> &quot;ip&quot;: &quot;&lt;ip&gt;&quot;,<br/> &quot;fqdn&quot;: &quot;write.&lt;namespace&gt;.&lt;cluster-domain&gt;&quot;,<br/> &quot;uuid&quot;: &quot;&lt;uuid&gt;&quot;,<br/> &quot;isExternal&quot;: false<br/> }<br/>}<br/>```<br/><br/>Поля: `ip` — внешний IP; `fqdn` — полное имя хоста; `uuid` — идентификатор; `isExternal` — признак внешнего доступа.<br/><br/>#### internalConnect<br/><br/>Внутренние эндпоинты (FQDN) для подключения из других сервисов внутри той же сети Kubernetes.<br/><br/>Пример ответа платформы:<br/><br/>```json<br/>{<br/> &quot;slave&quot;: &quot;&quot;,<br/> &quot;master&quot;: {<br/> &quot;slave&quot;: &quot;&quot;,<br/> &quot;master&quot;: {<br/> &quot;slave&quot;: &quot;&quot;,<br/> &quot;master&quot;: &quot;postgresqlk8s-master.&lt;namespace&gt;.svc.cluster.local&quot;<br/> }<br/> }<br/>}<br/>```<br/><br/>Для подключения используйте значение `master.master.master` (host для записи) или соответствующее значение slave (host для чтения).<br/><br/>Для подключения используется порт **5432**.<br/><br/>---<br/>## 4. Управление пользователями<br/><br/>### create_user — Создание пользователя<br/><br/>* **Имя пользователя (username):**<br/> Имя создаваемого пользователя. Используется для подключения к базе и настройки прав.<br/> Пример: `myapp_user`<br/><br/>* **Роль (role):**<br/> Тип роли пользователя. Допустимые значения:<br/> - `app_user` — базовые права для DML-операций (SELECT, INSERT, UPDATE, DELETE)<br/> - `ddl_user` — расширенные права: createdb, createrole (управление базами и ролями)<br/><br/>Защищённые имена, которые нельзя использовать: `admin`, `postgres`, `standby`.<br/><br/>### delete_user — Удаление пользователя<br/><br/>* **Имя пользователя (username):**<br/> Имя удаляемого пользователя. Пример: `myapp_user`<br/><br/>Пользователя нельзя удалить, если он является владельцем базы данных. Сначала удалите или передайте владение базами данных другому пользователю.<br/><br/>---<br/>## 5. Управление базами данных<br/><br/>### create_database — Создание базы данных<br/><br/>* **Имя базы данных (dbName):**<br/> Название создаваемой базы данных. Пример: `myapp_db`<br/><br/>* **Владелец базы данных (dbOwner):**<br/> Имя пользователя-владельца базы. Должен существовать в кластере (создан через create_user). Пример: `myapp_user`<br/><br/>### delete_database — Удаление базы данных<br/><br/>* **Имя базы данных (dbName):**<br/> Название удаляемой базы данных. Пример: `myapp_db`<br/>'
lifecycle:
suspend_on_destroy_default: true
adopt_existing_on_create_default: false
outputs:
params:
- code: state_params
type: map
- code: state_out
type: map
- code: state_params_flat
type: map
- code: state_out_flat
type: map
- code: vault_secrets
type: map
sensitive: true
- code: vault_url
type: string
- code: vault_user_path
type: string
- code: vault_fields
type: list
operations:
- name: create
id: 19
kind: instance
action: create
man: руководство
params:
- id: 788
code: clusterConfiguration
data_type: map-fixed
required: true
sort: 20
is_modifiable: true
- id: 789
code: startupConfiguration
data_type: map-fixed
required: true
sort: 10
- id: 790
code: accessConfiguration
data_type: map-fixed
required: true
sort: 30
is_modifiable: true
- id: 791
code: postgresConfiguration
data_type: map-fixed
required: true
sort: 40
is_modifiable: true
- id: 792
code: postgresConf
data_type: array-map-fixed
required: false
sort: 50
is_modifiable: true
- id: 793
code: backupConfiguration
data_type: map-fixed
required: true
sort: 60
is_modifiable: true
- id: 794
code: autoscaleConfiguration
data_type: map-fixed
required: true
sort: 70
is_modifiable: true
- name: create_backup
id: 264
kind: subresource
action: create
subresource: backup
params: []
- name: create_database
id: 245
kind: subresource
action: create
subresource: database
params:
- id: 741
code: dbName
data_type: string
required: true
regex: ^[A-Za-z0-9]+$
- id: 742
code: dbOwner
data_type: string
required: true
- name: create_user
id: 241
kind: subresource
action: create
subresource: user
params:
- id: 733
code: username
data_type: string
required: true
regex: ^[A-Za-z0-9]+$
maxlength: 62
minlength: 2
- id: 740
code: role
data_type: string
required: true
value_list:
- app_user
- ddl_user
descr: Выбрать роль из списка
man: '`app_user` — стандартный пользователь с базовым набором прав<br/>`ddl_user` — пользователь с расширенными правами, включая управление ролями и базами данных'
- name: delete
id: 20
kind: instance
action: delete
params:
- id: 457
code: deleteS3Bucket
data_type: boolean
required: true
default: "true"
value_list:
- "false"
- "true"
descr: Также удалить технический S3 Bucket с бэкапами?
sort: 10
- name: delete_database
id: 246
kind: subresource
action: delete
subresource: database
params:
- id: 743
code: dbName
data_type: string
required: true
- name: delete_user
id: 244
kind: subresource
action: delete
subresource: user
params:
- id: 739
code: username
data_type: string
required: true
descr: 'Пример: `username-admin`'
- name: modify
id: 48
kind: instance
action: modify
params:
- id: 795
code: clusterConfiguration
data_type: map-fixed
required: true
sort: 10
- id: 796
code: accessConfiguration
data_type: map-fixed
required: true
sort: 20
- id: 797
code: postgresConfiguration
data_type: map-fixed
required: true
sort: 30
- id: 798
code: postgresConf
data_type: array-map-fixed
required: false
sort: 40
- id: 799
code: backupConfiguration
data_type: map-fixed
required: true
sort: 50
- id: 800
code: autoscaleConfiguration
data_type: map-fixed
required: true
sort: 60
- name: reconcile
id: 263
kind: action
action: reconcile
params: []
- name: recovery
id: 47
kind: action
action: recovery
params:
- id: 801
code: startupConfiguration
data_type: map-fixed
required: true
sort: 10
- id: 802
code: clusterConfiguration
data_type: map-fixed
required: true
sort: 20
- id: 803
code: accessConfiguration
data_type: map-fixed
required: true
sort: 30
- id: 804
code: postgresConfiguration
data_type: map-fixed
required: true
sort: 40
- id: 805
code: postgresConf
data_type: array-map-fixed
required: false
sort: 50
- id: 806
code: backupConfiguration
data_type: map-fixed
required: true
sort: 60
- id: 807
code: autoscaleConfiguration
data_type: map-fixed
required: true
sort: 70
- name: restart
id: 54
kind: action
action: restart
man: ВНИМАНИЕ - Рестарт предполагает УДАЛЕНИЕ подов.<br/>Может быть полная поломка. Крайне осторожно запускать при работе
params: []
- name: resume
id: 114
kind: instance
action: resume
params: []
- name: suspend
id: 115
kind: instance
action: suspend
params: []