docs: 2026-03-18 DNS incident — sless-api→sless.kube5s.ru, POSTGRES E2E PASS
This commit is contained in:
@@ -1,5 +1,63 @@
|
||||
# Решения и обоснования
|
||||
|
||||
## 2026-03-18 — Смена sless API endpoint: sless-api.kube5s.ru → sless.kube5s.ru
|
||||
|
||||
**Решение:** Оператор sless доступен по `https://sless.kube5s.ru` (не `sless-api.kube5s.ru`). Все examples, deployments и ConfigMap обновлены.
|
||||
|
||||
**Причина:** При пересоздании кластера DNS-запись `sless-api.kube5s.ru` не была обновлена — она указывала на IP `5.172.178.182` (старый, мёртвый кластер). Ingress нового кластера закреплён на `185.247.187.147`. Отдельная запись `sless.kube5s.ru` уже корректно указывала на `185.247.187.147`.
|
||||
TLS handshake timeout возникал потому что старый IP принимал TCP:443, но не завершал TLS (nginx жив, бэкенд мёртв). Go HTTP клиент ждал системный таймаут (~90s) и повторял бесконечно.
|
||||
|
||||
**Изменения:**
|
||||
- `deployments/k8s/operator.yaml`: `EXTERNAL_URL`, `INGRESS_HOST`, ingress host → `sless.kube5s.ru`
|
||||
- ConfigMap `sless-operator-config` в кластере: `EXTERNAL_URL` обновлён через `kubectl patch`
|
||||
- Ingress `sless-operator` в кластере: host + TLS secret → `sless.kube5s.ru`
|
||||
- Все `examples/**/main.tf`: `endpoint = "https://sless.kube5s.ru"`
|
||||
|
||||
**Правило:** При пересоздании кластера — первым делом проверять соответствие DNS → ingress IP.
|
||||
|
||||
---
|
||||
|
||||
## 2026-03-17 — Разделение prod/test endpoint'ов в examples/
|
||||
|
||||
**Решение:** Все `examples/` ОБЯЗАНЫ использовать `deck-api-test.ngcloud.ru` для обоих провайдеров: `nubes` и `sless` (`nubes_endpoint`). Продовый `deck-api.ngcloud.ru` — только для реальных клиентов.
|
||||
|
||||
**Причина:** Смешивание prod и test endpoint'ов в одном `terraform apply` приводит к тому что ресурсы создаются в разных средах. `sless_function`/`sless_job` могут получать данные (PGHOST, credentials) из прода, а pod запускается в тест-кластере — и не может достучаться до хоста.
|
||||
|
||||
**Правило для `main.tf` в examples:**
|
||||
```hcl
|
||||
provider "nubes" {
|
||||
api_endpoint = "https://deck-api-test.ngcloud.ru/api/v1/index.cfm"
|
||||
}
|
||||
provider "sless" {
|
||||
nubes_endpoint = "https://deck-api-test.ngcloud.ru/api/v1"
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 2026-03-17 — terraform apply только на удалённом сервере
|
||||
|
||||
**Решение:** `terraform init/plan/apply/destroy` для `examples/` — исключительно через SSH на сервере `naeel@5.172.178.213`. Локальный запуск запрещён.
|
||||
|
||||
**Причина:**
|
||||
1. Провайдер `terra.k8c.ru/naeel/sless` кэширован только на удалённом сервере
|
||||
2. Локальный terraform не имеет сетевого доступа к k8s кластеру и внутренним кластерным адресам (например PGHOST вида `*.svc.cluster.local`)
|
||||
3. Случайный локальный запуск с prod токенами может затронуть боевую среду
|
||||
|
||||
**Как запускать:**
|
||||
```bash
|
||||
# Сначала синхронизировать изменения:
|
||||
rsync -av -e "ssh -i /home/naeel/remote_dev/common/id_ed25519.txt" \
|
||||
/home/naeel/remote_dev/sless/examples/<example>/ \
|
||||
naeel@5.172.178.213:/home/naeel/terra/sless/examples/<example>/
|
||||
|
||||
# Затем запускать на remote:
|
||||
ssh -i /home/naeel/remote_dev/common/id_ed25519.txt naeel@5.172.178.213 \
|
||||
'cd /home/naeel/terra/sless/examples/<example> && terraform apply -auto-approve -no-color'
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 2026-03-06 — Отдельная репа для сервиса
|
||||
|
||||
**Решение:** Serverless service в отдельной репе, не вместе с Terraform provider.
|
||||
|
||||
Reference in New Issue
Block a user