- 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
5.3 KiB
Отчёт: миграция S3→PV + баги helm upgrade — 2026-05-19
Что делали
- Бенчмарк 3 хранилищ (local-path PV, vcd-disk-ext4 PV, S3)
- Переехали storagesvc с S3 на PV (vcd-disk-ext4, 2Gi)
- Обнаружили что S3 фактически не использовался (все Package URL — http://storagesvc..., не s3://)
- Миграция была 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 вручную:
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 имеет дефолтное значение:
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 (игнорируются чартом):
fetcherImage: naeel/fission-bundle # ← НЕПРАВИЛЬНО, такого ключа нет
fetcherImageTag: v1.23.0 # ← НЕПРАВИЛЬНО
Правильные ключи:
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 |
Что нужно сделать
- Исправить
helm/fission-values.yaml— заменитьfetcherImage/fetcherImageTagна правильную секциюfetcher: - Сделать helm upgrade (с предварительным удалением executor/router)
- Проверить что pool pods поднимаются без ImagePullBackOff
- Проверить что функции nubes1 (
a1,c1) запускаются