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

5.3 KiB
Raw Blame History

Отчёт: миграция 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 вручную:

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

Что нужно сделать

  1. Исправить helm/fission-values.yaml — заменить fetcherImage/fetcherImageTag на правильную секцию fetcher:
  2. Сделать helm upgrade (с предварительным удалением executor/router)
  3. Проверить что pool pods поднимаются без ImagePullBackOff
  4. Проверить что функции nubes1 (a1, c1) запускаются