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
This commit is contained in:
@@ -0,0 +1,118 @@
|
||||
# Отчёт: миграция 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`) запускаются
|
||||
Reference in New Issue
Block a user