Files
fission-console/doc/report-2026-05-19-pv-migration-bugs.md
T
“Naeel” 3eb4f5669b feat: PV storage backend + fix fetcher image v1.23.0
- helm/fission-values.yaml: storagesvc на vcd-disk-ext4 PV 2Gi
  fetcher image: naeel/fetcher:v1.23.0 (собран из fission-src/cmd/fetcher)
- scripts/migrate_s3_to_pv.py: скрипт перелива S3→storagesvc (no-op: 0 пакетов с s3://)
- doc/report-2026-05-19-pv-migration-bugs.md: баги helm upgrade, FETCHER_IMAGE, field manager
2026-05-19 09:46:57 +04:00

119 lines
5.3 KiB
Markdown
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.
# Отчёт: миграция S3→PV + баги helm upgrade — 2026-05-19
## Что делали
1. Бенчмарк 3 хранилищ (local-path PV, vcd-disk-ext4 PV, S3)
2. Переехали storagesvc с S3 на PV (vcd-disk-ext4, 2Gi)
3. Обнаружили что S3 фактически не использовался (все Package URL — http://storagesvc..., не s3://)
4. Миграция была no-op: перенесено=0, пропущено=44
---
## Баги и ошибки
### БАГ 1: helm upgrade откатил executor/router с v1.23.0 → v1.22.1
**Причина:** в `helm/fission-values.yaml` был прописан `imageTag: v1.22.1` вместо `v1.23.0`.
До helm upgrade executor/router жили вне helm (задеплоены через `kubectl set image`).
**Симптом:** консоль не показывала функции.
**Исправление:** изменён `imageTag: v1.23.0` в values, пересоздан executor/router.
---
### БАГ 2: field manager конфликт — fission-console vs helm
**Причина:** fission-console патчит `FISSION_RESOURCE_NAMESPACES` в executor и router через server-side apply.
Когда helm пытается обновить те же deployment-ы — конфликт field manager.
**Симптом:**
```
conflict with "fission-console" using apps/v1:
.spec.template.spec.containers[name="executor"].env[name="FISSION_RESOURCE_NAMESPACES"].value
```
**Обход:** перед `helm upgrade` удалять executor и router вручную:
```bash
kubectl delete deploy executor router -n fission
helm upgrade fission fission-charts/fission-all --version 1.22.1 \
-n fission -f helm/fission-values.yaml --no-hooks --timeout 180s
```
**Системное решение:** нужно чтобы fission-console не трогал deployments executor/router напрямую (FISSION_RESOURCE_NAMESPACES должен читаться из ConfigMap или CRD, а не инжектироваться в deployment env).
---
### БАГ 3: FETCHER_IMAGE = fission/fetcher:v1.22.0 — образ не существует
**Причина:** helm chart `fission-all:1.22.1` имеет дефолтное значение:
```yaml
fetcher:
image: fission/fetcher
imageTag: v1.22.0
```
Этот образ на Docker Hub не существует (fission переехал на ghcr.io).
До наших helm upgrade executor не управлялся helm — FETCHER_IMAGE либо не был задан (код падал на дефолт `ghcr.io/fission/fetcher`), либо был задан правильно вручную.
После helm upgrade — chart прописал неправильный FETCHER_IMAGE.
**Симптом:**
- Pool pods: `ImagePullBackOff` на контейнере `fetcher`
- `fission/fetcher:v1.22.0: not found` на Docker Hub
- Функции не запускаются (504 при invoke)
**Правильное значение:** `naeel/fission-bundle:v1.23.0`
Fetcher — часть fission-bundle, отдельного образа нет.
Находится в: `fission-src/pkg/fetcher/`
**Неправильные ключи в values (игнорируются чартом):**
```yaml
fetcherImage: naeel/fission-bundle # ← НЕПРАВИЛЬНО, такого ключа нет
fetcherImageTag: v1.23.0 # ← НЕПРАВИЛЬНО
```
**Правильные ключи:**
```yaml
fetcher:
image: naeel/fission-bundle # ← ПРАВИЛЬНО
imageTag: v1.23.0 # ← ПРАВИЛЬНО
```
Шаблон чарта (`charts/fission-all/templates/_helpers.tpl`):
```
{{- define "fetcherImage" -}}
{{- $args := list (.Values.fetcher.repository | default .Values.repository) .Values.fetcher.image .Values.fetcher.imageTag -}}
```
---
### БАГ 4: router JWT пароль сменился при helm upgrade
**Причина:** helm upgrade пересоздал secret `router` с новым паролем.
| До | После |
|----|-------|
| `slxGj3G3FAD7l5ms2tJ9` | `58oKMuBIvmBBXHXqaLHw` |
fission-console читает пароль из secret динамически (`valueFrom: secretKeyRef`) — поэтому сам работает.
CLI-инструменты с сохранённым токеном требуют перегенерации токена.
---
## Текущее состояние (на момент отчёта)
| Компонент | Образ | Статус |
|-----------|-------|--------|
| executor, router, buildermgr, storagesvc, timer, webhook, kubewatcher | `naeel/fission-bundle:v1.23.0` | ✅ Running |
| fission-console | `naeel/fission-console:v1.3.92` | ✅ Running |
| FETCHER_IMAGE (env в executor) | `fission/fetcher:v1.22.0` | ❌ НЕПРАВИЛЬНО |
| fission-storage-pvc | 2Gi, vcd-disk-ext4, Bound | ✅ OK |
## Что нужно сделать
1. Исправить `helm/fission-values.yaml` — заменить `fetcherImage`/`fetcherImageTag` на правильную секцию `fetcher:`
2. Сделать helm upgrade (с предварительным удалением executor/router)
3. Проверить что pool pods поднимаются без ImagePullBackOff
4. Проверить что функции nubes1 (`a1`, `c1`) запускаются