docs: document session 2 — API testing, DELETE 404 fix, funcs-console, source for services

This commit is contained in:
Naeel
2026-03-21 07:31:23 +03:00
parent 50f24565ec
commit 37a50c23c0
3 changed files with 200 additions and 2 deletions
+91
View File
@@ -4,6 +4,97 @@
---
## 2026-03-21 — Баг: DELETE несуществующего ресурса → HTTP 204 вместо 404
### Симптом
```
DELETE /v1/namespaces/sless-xxx/functions/not-exists
→ HTTP 204 (пустой ответ, как будто удаление прошло успешно)
```
Аналогично для services, triggers, jobs.
### Причина
Все четыре `Delete*` хендлера при `errors.IsNotFound(err)` выполняли `w.WriteHeader(http.StatusNoContent)` вместо возврата 404.
```go
// БЫЛО (ошибочно):
if errors.IsNotFound(err) {
w.WriteHeader(http.StatusNoContent)
return
}
// СТАЛО (правильно):
if errors.IsNotFound(err) {
writeJSON(w, http.StatusNotFound, errResp("function not found"))
return
}
```
### Затронутые файлы
- `internal/api/handler/functions.go``DeleteFunction`
- `internal/api/handler/services.go``DeleteService`
- `internal/api/handler/triggers.go``DeleteTrigger`
- `internal/api/handler/jobs.go``DeleteJob`
### Фикс
Коммит `e8d0d78`, оператор `v0.1.44`.
---
## 2026-03-21 — Баг: funcs-service pod в ImagePullBackOff после обновления образа
### Симптом
После `kubectl set image deployment/sless-funcs-service funcs=pearlharbor…/sless-funcs-service:v0.2.1`:
```
Events:
Warning Failed kubelet Failed to pull image "...v0.2.1":
authorization failed: no basic auth credentials
```
Новый под застрял в `ImagePullBackOff`. Старый под продолжал работать с v0.2.0 (без services).
### Причина
`deployments/k8s/funcs-service.yaml` не содержал `imagePullSecrets`, а образ находится в приватном реестре Harbor (`pearlharbor.registryk8s.services.ngcloud.ru`).
Старый под (v0.2.0) работал с другой нодой, где уже был cached образ с credentials.
### Фикс
```yaml
spec:
imagePullSecrets:
- name: sless-registry-auth
containers:
- name: funcs
image: pearlharbor.registryk8s.services.ngcloud.ru/naeel/sless-funcs-service:v0.2.2
```
Коммит `09b3588`. Правило: все образы из pearlharbor требуют `imagePullSecrets: sless-registry-auth`.
---
## 2026-03-21 — Баг: /funcs/{ns}/source/{fn} → 404 для sless_service ресурсов
### Симптом
Клик на карточку `pg-info` (sless_service) в web-консоли → ошибка 404 при загрузке кода.
```
GET /funcs/sless-ffd1f598c169b0ae/source/pg-info → HTTP 404
{"error":"function not found"}
```
### Причина
`proxySourceGet` в funcs-service всегда обращался к оператору по пути:
```
/v1/namespaces/{ns}/functions/{fn}/source
```
`pg-info` — это `sless_service` (Kind=Service), а не `sless_function`. У оператора не было эндпоинта `/services/{name}/source`.
### Фикс
1. **Оператор** (`internal/api/handler/source.go`): добавлен `GetServiceSource` — делает то же что `GetSource`, но читает `Service` CRD вместо `Function`.
2. **Оператор** (`internal/api/router.go`): зарегистрирован маршрут `GET /v1/namespaces/{ns}/services/{name}/source`.
3. **funcs-service** (`services/funcs/main.go`): `proxySourceGet` принимает параметр `kind`; при `kind=service` обращается к `/services/…/source`.
4. **funcs-service** (`services/funcs/index.html`): `loadSource(body, ns, fnName, fnKind)` добавляет `?kind=service` в fetch URL для сервисов.
Коммит `50f2456`, оператор `v0.1.45`, funcs-service `v0.2.2`.
---
## 2026-03-20 — Баг: неверный hostname в api_endpoint провайдера nubes
### Симптом