docs: PG для IoT готов — user iotservice + db iotdb созданы через Nubes API (test)
This commit is contained in:
@@ -14,19 +14,20 @@
|
||||
- DLQ `iot-telemetry-dlq` — создана.
|
||||
- публичный endpoint: `https://sqs.sinefo.ru`.
|
||||
- **PostgreSQL** managed: хост `postgresqlk8s-master.509145c3-ba71-4687-a084-d9dcbc88d3d2.svc.cluster.local:5432` (из `pg.key`).
|
||||
✅ **создано через Nubes API (test):** пользователь `iotservice` (role `ddl_user` → CREATEDB+CREATEROLE), БД `iotdb` (owner `iotservice`). Пароль `iotservice` — в vault инстанса.
|
||||
|
||||
## 1. PostgreSQL (разово, SQL на master-инстансе)
|
||||
## 1. PostgreSQL — ✅ ГОТОВО
|
||||
|
||||
Подключиться из консоли/порт-форварда (роль из `pg.key` — `ddl_user`):
|
||||
Пользователь `iotservice` (role `ddl_user`, права CREATEDB+CREATEROLE) и БД `iotdb` (owner `iotservice`)
|
||||
созданы через Nubes API (test): операции `create_user` (svcOperationId 241) и `create_database` (245)
|
||||
на инстансе `509145c3-…`. ⚠ Гранулярность: имя PG-пользователя подчиняется платформенному regex
|
||||
`^[A-Za-z0-9]+$` → `iot_service` НЕЛЬЗЯ (только `iotservice`).
|
||||
|
||||
```sql
|
||||
CREATE ROLE iot_service LOGIN PASSWORD '<PG_PASS>'; -- <PG_PASS> сгенерировать
|
||||
ALTER ROLE iot_service CREATEROLE CREATEDB; -- нужно iotpg (per-tenant БД)
|
||||
GRANT iot_service TO <текущая роль>; -- роль из pg.key
|
||||
CREATE DATABASE iotdb OWNER iot_service;
|
||||
REVOKE iot_service FROM <текущая роль>;
|
||||
Пароль: GET `/instances/509145c3-…/vault/users` (Nubes API, test) → поле `iotservice.password`.
|
||||
Подключение:
|
||||
```
|
||||
IOT_PG_DSN = postgresql://iotservice:<PG_PASS>@postgresqlk8s-master.509145c3-ba71-4687-a084-d9dcbc88d3d2.svc.cluster.local:5432/iotdb?sslmode=require
|
||||
```
|
||||
|
||||
Таблицы (`iot_devices`, per-tenant БД телеметрии) создаются кодом при старте.
|
||||
|
||||
## 2. EMQX-контейнер (создаётся ПЕРВЫМ в deck, CPU ≥ 1000m)
|
||||
@@ -39,11 +40,11 @@ Env (все — при создании, потом не меняются):
|
||||
|---|---|
|
||||
| `EMQX_AUTHENTICATION__1__SERVER` | `postgresqlk8s-master.509145c3-ba71-4687-a084-d9dcbc88d3d2.svc.cluster.local:5432` |
|
||||
| `EMQX_AUTHENTICATION__1__DATABASE` | `iotdb` |
|
||||
| `EMQX_AUTHENTICATION__1__USERNAME` | `iot_service` |
|
||||
| `EMQX_AUTHENTICATION__1__USERNAME` | `iotservice` |
|
||||
| `EMQX_AUTHENTICATION__1__PASSWORD` | `<PG_PASS>` |
|
||||
| `EMQX_AUTHORIZATION__SOURCES__1__SERVER` | как AUTHENTICATION |
|
||||
| `EMQX_AUTHORIZATION__SOURCES__1__DATABASE` | `iotdb` |
|
||||
| `EMQX_AUTHORIZATION__SOURCES__1__USERNAME` | `iot_service` |
|
||||
| `EMQX_AUTHORIZATION__SOURCES__1__USERNAME` | `iotservice` |
|
||||
| `EMQX_AUTHORIZATION__SOURCES__1__PASSWORD` | `<PG_PASS>` |
|
||||
| `EMQX_LOG__CONSOLE_HANDLER__LEVEL` | `warning` |
|
||||
|
||||
@@ -59,7 +60,7 @@ Env (обязательные — секреты; необязательные
|
||||
|
||||
| Переменная | Значение |
|
||||
|---|---|
|
||||
| `IOT_PG_DSN` | `postgresql://iot_service:<PG_PASS>@postgresqlk8s-master.509145c3-ba71-4687-a084-d9dcbc88d3d2.svc.cluster.local:5432/iotdb?sslmode=require` |
|
||||
| `IOT_PG_DSN` | `postgresql://iotservice:<PG_PASS>@postgresqlk8s-master.509145c3-ba71-4687-a084-d9dcbc88d3d2.svc.cluster.local:5432/iotdb?sslmode=require` |
|
||||
| `SQS_ACCESS_KEY` | `SSAK-b8fb2b3000c178b865091686` |
|
||||
| `SQS_SECRET_KEY` | `<из Admin API / лога сервиса>` |
|
||||
| `MQTT_USERNAME` | `iot-bridge` (device_id строки бриджа) |
|
||||
|
||||
Reference in New Issue
Block a user